{"version":3,"file":"vendor-9230fc61.js","sources":["../../../../../node_modules/@react-spring/shared/dist/react-spring-shared.esm.js","../../../../../node_modules/@react-spring/core/dist/react-spring-core.esm.js","../../../../../node_modules/dockview/dist/esm/react.js","../../../../../node_modules/@tanstack/react-query/build/modern/QueryErrorResetBoundary.js","../../../../../node_modules/@emotion/is-prop-valid/node_modules/@emotion/memoize/dist/emotion-memoize.browser.esm.js","../../../../../node_modules/lodash/_isMasked.js","../../../../../node_modules/lodash/_memoizeCapped.js","../../../../../node_modules/lodash/isBuffer.js","../../../../../node_modules/lodash/_nodeUtil.js","../../../../../node_modules/lodash/_basePropertyOf.js","../../../../../node_modules/@popperjs/core/lib/createPopper.js","../../../../../node_modules/use-sidecar/dist/es2015/medium.js","../../../../../node_modules/react-clientside-effect/lib/index.es.js","../../../../../node_modules/ag-grid-community/dist/package/main.esm.mjs","../../../../../node_modules/ag-charts-community/dist/package/main.esm.mjs","../../../../../node_modules/lodash-es/_isMasked.js","../../../../../node_modules/lodash-es/_shortOut.js","../../../../../node_modules/lodash-es/_overArg.js","../../../../../node_modules/lodash-es/_memoizeCapped.js","../../../../../node_modules/lodash-es/_flatRest.js","../../../../../node_modules/lodash-es/_overRest.js","../../../../../node_modules/mixpanel-browser/dist/mixpanel.cjs.js","../../../../../node_modules/lightweight-charts/dist/lightweight-charts.production.mjs","../../../../../node_modules/highcharts/highcharts-more.js","../../../../../node_modules/highcharts/highstock.js","../../../../../node_modules/highcharts/modules/boost.js","../../../../../node_modules/highcharts/modules/coloraxis.js","../../../../../node_modules/highcharts/modules/series-label.js","../../../../../node_modules/highcharts/modules/sunburst.js","../../../../../node_modules/highcharts/modules/treemap.js","../../../../../node_modules/highcharts/highcharts.js","../../../../../node_modules/dockview-core/dist/esm/lifecycle.js","../../../../../node_modules/dockview-core/dist/esm/splitview/splitview.js","../../../../../node_modules/lodash/_shortOut.js","../../../../../node_modules/react-dock/lib/esm/Dock.js","../../../../../node_modules/@reduxjs/toolkit/dist/query/rtk-query.modern.mjs","../../../../../node_modules/nanoclone/src/index.js","../../../../../packages/kyoko/node_modules/uuid/dist/esm-browser/rng.js","../../../../../packages/kyoko/node_modules/uuid/dist/esm-browser/v1.js","../../../../../node_modules/ag-grid-enterprise/dist/package/main.esm.mjs","../../../../../node_modules/immer/dist/immer.mjs","../../../../../node_modules/dockview-core/dist/esm/events.js","../../../node_modules/uuid/dist/esm-browser/rng.js","../../../node_modules/uuid/dist/esm-browser/v1.js","../../../../../node_modules/dom-scroll-into-view/lib/util.js","../../../../../node_modules/react/cjs/react.production.min.js","../../../../../node_modules/react/index.js","../../../../../node_modules/react/cjs/react-jsx-runtime.production.min.js","../../../../../node_modules/react/jsx-runtime.js","../../../../../node_modules/sugar-core/sugar-core.js","../../../../../node_modules/sugar/common/internal/isArrayIndex.js","../../../../../node_modules/sugar/common/internal/iterateOverSparseArray.js","../../../../../node_modules/sugar/common/internal/getSparseArrayIndexes.js","../../../../../node_modules/sugar/common/internal/forEach.js","../../../../../node_modules/sugar/common/var/NATIVE_TYPES.js","../../../../../node_modules/sugar/common/var/coreUtilityAliases.js","../../../../../node_modules/sugar/common/internal/isClass.js","../../../../../node_modules/sugar/common/internal/spaceSplit.js","../../../../../node_modules/sugar/common/internal/isObjectType.js","../../../../../node_modules/sugar/common/internal/hasOwnEnumeratedProperties.js","../../../../../node_modules/sugar/common/internal/hasValidPlainObjectPrototype.js","../../../../../node_modules/sugar/common/internal/isPlainObject.js","../../../../../node_modules/sugar/common/var/classChecks.js","../../../../../node_modules/sugar/common/internal/getNormalizedIndex.js","../../../../../node_modules/sugar/common/internal/getEntriesForIndexes.js","../../../../../node_modules/sugar/common/internal/entryAtIndex.js","../../../../../node_modules/sugar/string/at.js","../../../../../node_modules/sugar/common/var/Inflections.js","../../../../../node_modules/sugar/common/internal/getAcronym.js","../../../../../node_modules/sugar/string/internal/stringUnderscore.js","../../../../../node_modules/sugar/common/internal/simpleCapitalize.js","../../../../../node_modules/sugar/string/internal/stringCapitalize.js","../../../../../node_modules/sugar/string/var/CAPITALIZE_REG.js","../../../../../node_modules/sugar/string/internal/stringCamelize.js","../../../../../node_modules/sugar/string/var/CAMELIZE_REG.js","../../../../../node_modules/sugar/string/camelize.js","../../../../../node_modules/sugar/string/capitalize.js","../../../../../node_modules/sugar/common/internal/isDefined.js","../../../../../node_modules/sugar/common/internal/escapeRegExp.js","../../../../../node_modules/sugar/common/internal/getRegExpFlags.js","../../../../../node_modules/sugar/string/internal/stringEach.js","../../../../../node_modules/sugar/string/internal/runGlobalMatch.js","../../../../../node_modules/sugar/string/chars.js","../../../../../node_modules/sugar/string/internal/stringCodes.js","../../../../../node_modules/sugar/string/codes.js","../../../../../node_modules/sugar/common/internal/trim.js","../../../../../node_modules/sugar/string/compact.js","../../../../../node_modules/sugar/string/dasherize.js","../../../../../node_modules/sugar/common/var/chr.js","../../../../../node_modules/sugar/string/var/base64.js","../../../../../node_modules/sugar/string/decodeBase64.js","../../../../../node_modules/sugar/string/encodeBase64.js","../../../../../node_modules/sugar/string/var/HTMLFromEntityMap.js","../../../../../node_modules/sugar/string/var/HTMLToEntityMap.js","../../../../../node_modules/sugar/string/escapeHTML.js","../../../../../node_modules/sugar/string/var/HTML_ESCAPE_REG.js","../../../../../node_modules/sugar/string/escapeURL.js","../../../../../node_modules/sugar/common/internal/isUndefined.js","../../../../../node_modules/sugar/string/first.js","../../../../../node_modules/sugar/string/forEach.js","../../../../../node_modules/sugar/common/var/CommonChars.js","../../../../../node_modules/sugar/common/internal/map.js","../../../../../node_modules/sugar/common/internal/periodSplit.js","../../../../../node_modules/sugar/common/internal/assertArray.js","../../../../../node_modules/sugar/common/internal/isPrimitive.js","../../../../../node_modules/sugar/common/internal/handleDeepProperty.js","../../../../../node_modules/sugar/common/var/PROPERTY_RANGE_REG.js","../../../../../node_modules/sugar/common/internal/assertWritable.js","../../../../../node_modules/sugar/common/internal/deepGetProperty.js","../../../../../node_modules/sugar/common/internal/memoizeFunction.js","../../../../../node_modules/sugar/common/internal/createFormatMatcher.js","../../../../../node_modules/sugar/common/var/STRING_FORMAT_REG.js","../../../../../node_modules/sugar/common/var/INTERNAL_MEMOIZE_LIMIT.js","../../../../../node_modules/sugar/string/var/stringFormatMatcher.js","../../../../../node_modules/sugar/string/format.js","../../../../../node_modules/sugar/string/internal/numberOrIndex.js","../../../../../node_modules/sugar/string/from.js","../../../../../node_modules/sugar/common/var/ENHANCEMENTS_FLAG.js","../../../../../node_modules/sugar/common/internal/fixArgumentLength.js","../../../../../node_modules/sugar/string/var/nativeIncludes.js","../../../../../node_modules/sugar/string/internal/callIncludesWithRegexSupport.js","../../../../../node_modules/sugar/string/includes.js","../../../../../node_modules/sugar/string/var/STRING_ENHANCEMENTS_FLAG.js","../../../../../node_modules/sugar/string/insert.js","../../../../../node_modules/sugar/string/isBlank.js","../../../../../node_modules/sugar/string/isEmpty.js","../../../../../node_modules/sugar/string/last.js","../../../../../node_modules/sugar/string/lines.js","../../../../../node_modules/sugar/common/internal/repeatString.js","../../../../../node_modules/sugar/string/internal/padString.js","../../../../../node_modules/sugar/common/var/mathAliases.js","../../../../../node_modules/sugar/common/var/trunc.js","../../../../../node_modules/sugar/common/internal/coercePositiveInteger.js","../../../../../node_modules/sugar/string/pad.js","../../../../../node_modules/sugar/string/padLeft.js","../../../../../node_modules/sugar/string/padRight.js","../../../../../node_modules/sugar/string/parameterize.js","../../../../../node_modules/sugar/string/internal/stringParameterize.js","../../../../../node_modules/sugar/string/remove.js","../../../../../node_modules/sugar/string/internal/stringReplaceAll.js","../../../../../node_modules/sugar/string/removeAll.js","../../../../../node_modules/sugar/common/internal/indexOf.js","../../../../../node_modules/sugar/string/internal/tagIsVoid.js","../../../../../node_modules/sugar/string/var/HTML_VOID_ELEMENTS.js","../../../../../node_modules/sugar/string/internal/runTagReplacements.js","../../../../../node_modules/sugar/string/internal/replaceTags.js","../../../../../node_modules/sugar/string/removeTags.js","../../../../../node_modules/sugar/string/replaceAll.js","../../../../../node_modules/sugar/string/internal/reverseString.js","../../../../../node_modules/sugar/string/reverse.js","../../../../../node_modules/sugar/string/shift.js","../../../../../node_modules/sugar/string/internal/stringSpacify.js","../../../../../node_modules/sugar/string/spacify.js","../../../../../node_modules/sugar/string/stripTags.js","../../../../../node_modules/sugar/string/internal/stringTitleize.js","../../../../../node_modules/sugar/string/var/DOWNCASED_WORDS.js","../../../../../node_modules/sugar/string/titleize.js","../../../../../node_modules/sugar/common/internal/runHumanRules.js","../../../../../node_modules/sugar/string/internal/eachWord.js","../../../../../node_modules/sugar/common/internal/getHumanWord.js","../../../../../node_modules/sugar/string/to.js","../../../../../node_modules/sugar/common/internal/allCharsReg.js","../../../../../node_modules/sugar/common/var/fullwidthNumberHelpers.js","../../../../../node_modules/sugar/common/internal/stringToNumber.js","../../../../../node_modules/sugar/string/toNumber.js","../../../../../node_modules/sugar/common/var/TRIM_CHARS.js","../../../../../node_modules/sugar/string/var/LEFT_TRIM_REG.js","../../../../../node_modules/sugar/string/trimLeft.js","../../../../../node_modules/sugar/string/var/RIGHT_TRIM_REG.js","../../../../../node_modules/sugar/string/trimRight.js","../../../../../node_modules/sugar/string/var/TRUNC_REG.js","../../../../../node_modules/sugar/common/internal/filter.js","../../../../../node_modules/sugar/string/internal/truncateString.js","../../../../../node_modules/sugar/string/internal/truncateOnWord.js","../../../../../node_modules/sugar/string/truncate.js","../../../../../node_modules/sugar/string/truncateOnWord.js","../../../../../node_modules/sugar/string/underscore.js","../../../../../node_modules/sugar/string/internal/unescapeHTML.js","../../../../../node_modules/sugar/string/var/HTML_ENTITY_REG.js","../../../../../node_modules/sugar/string/unescapeHTML.js","../../../../../node_modules/sugar/string/unescapeURL.js","../../../../../node_modules/sugar/string/words.js","../../../../../node_modules/sugar/number/random.js","../../../../../node_modules/sugar/number/var/AbbreviationUnits.js","../../../../../node_modules/sugar/common/internal/commaSplit.js","../../../../../node_modules/sugar/common/internal/withPrecision.js","../../../../../node_modules/sugar/number/var/NUMBER_OPTIONS.js","../../../../../node_modules/sugar/common/var/namespaceAliases.js","../../../../../node_modules/sugar/common/internal/simpleMerge.js","../../../../../node_modules/sugar/common/internal/simpleClone.js","../../../../../node_modules/sugar/common/internal/defineAccessor.js","../../../../../node_modules/sugar/common/internal/defineOptionsAccessor.js","../../../../../node_modules/sugar/number/var/_numberOptions.js","../../../../../node_modules/sugar/number/internal/numberFormat.js","../../../../../node_modules/sugar/number/internal/abbreviateNumber.js","../../../../../node_modules/sugar/number/abbr.js","../../../../../node_modules/sugar/common/var/methodDefineAliases.js","../../../../../node_modules/sugar/common/internal/wrapNamespace.js","../../../../../node_modules/sugar/common/internal/collectSimilarMethods.js","../../../../../node_modules/sugar/common/internal/defineInstanceSimilar.js","../../../../../node_modules/sugar/number/internal/buildMathAliases.js","../../../../../node_modules/sugar/number/abs.js","../../../../../node_modules/sugar/number/acos.js","../../../../../node_modules/sugar/number/asin.js","../../../../../node_modules/sugar/number/atan.js","../../../../../node_modules/sugar/number/bytes.js","../../../../../node_modules/sugar/number/internal/createRoundingFunction.js","../../../../../node_modules/sugar/number/ceil.js","../../../../../node_modules/sugar/number/chr.js","../../../../../node_modules/sugar/number/cos.js","../../../../../node_modules/sugar/number/exp.js","../../../../../node_modules/sugar/number/floor.js","../../../../../node_modules/sugar/number/format.js","../../../../../node_modules/sugar/common/internal/padNumber.js","../../../../../node_modules/sugar/number/hex.js","../../../../../node_modules/sugar/number/internal/isMultipleOf.js","../../../../../node_modules/sugar/number/isEven.js","../../../../../node_modules/sugar/number/internal/isInteger.js","../../../../../node_modules/sugar/number/isInteger.js","../../../../../node_modules/sugar/number/isMultipleOf.js","../../../../../node_modules/sugar/number/isOdd.js","../../../../../node_modules/sugar/number/log.js","../../../../../node_modules/sugar/number/metric.js","../../../../../node_modules/sugar/common/internal/getOrdinalSuffix.js","../../../../../node_modules/sugar/number/ordinalize.js","../../../../../node_modules/sugar/number/pad.js","../../../../../node_modules/sugar/number/pow.js","../../../../../node_modules/sugar/number/round.js","../../../../../node_modules/sugar/number/sin.js","../../../../../node_modules/sugar/number/sqrt.js","../../../../../node_modules/sugar/number/tan.js","../../../../../node_modules/sugar/number/times.js","../../../../../node_modules/sugar/number/toNumber.js","../../../../../node_modules/sugar/number/getOption.js","../../../../../node_modules/sugar/number/setOption.js","../../../../../node_modules/sugar/array/construct.js","../../../../../node_modules/sugar/array/internal/arrayClone.js","../../../../../node_modules/sugar/array/internal/isArrayOrInherited.js","../../../../../node_modules/sugar/array/internal/arrayCreate.js","../../../../../node_modules/sugar/common/internal/setChainableConstructor.js","../../../../../node_modules/sugar/array/internal/setArrayChainableConstructor.js","../../../../../node_modules/sugar/array/create.js","../../../../../node_modules/sugar/array/internal/arrayAppend.js","../../../../../node_modules/sugar/array/add.js","../../../../../node_modules/sugar/array/append.js","../../../../../node_modules/sugar/array/at.js","../../../../../node_modules/sugar/array/clone.js","../../../../../node_modules/sugar/array/compact.js","../../../../../node_modules/sugar/array/internal/arrayCompact.js","../../../../../node_modules/sugar/common/internal/getKeys.js","../../../../../node_modules/sugar/common/internal/iterateWithCyclicCheck.js","../../../../../node_modules/sugar/common/internal/isEqual.js","../../../../../node_modules/sugar/common/internal/setToArray.js","../../../../../node_modules/sugar/common/internal/mapToArray.js","../../../../../node_modules/sugar/common/internal/getMatcher.js","../../../../../node_modules/sugar/common/internal/dateMatcher.js","../../../../../node_modules/sugar/common/internal/regexMatcher.js","../../../../../node_modules/sugar/common/internal/functionMatcher.js","../../../../../node_modules/sugar/common/internal/defaultMatcher.js","../../../../../node_modules/sugar/array/exclude.js","../../../../../node_modules/sugar/array/internal/arrayExclude.js","../../../../../node_modules/sugar/array/first.js","../../../../../node_modules/sugar/array/internal/arrayFlatten.js","../../../../../node_modules/sugar/array/flatten.js","../../../../../node_modules/sugar/array/from.js","../../../../../node_modules/sugar/common/internal/mapWithShortcuts.js","../../../../../node_modules/sugar/array/internal/arrayGroupBy.js","../../../../../node_modules/sugar/array/groupBy.js","../../../../../node_modules/sugar/common/internal/simpleRepeat.js","../../../../../node_modules/sugar/array/inGroups.js","../../../../../node_modules/sugar/array/inGroupsOf.js","../../../../../node_modules/sugar/common/internal/serializeInternal.js","../../../../../node_modules/sugar/common/internal/isRealNaN.js","../../../../../node_modules/sugar/array/internal/arrayIntersectOrSubtract.js","../../../../../node_modules/sugar/array/internal/arrayWrap.js","../../../../../node_modules/sugar/array/intersect.js","../../../../../node_modules/sugar/array/isEmpty.js","../../../../../node_modules/sugar/array/isEqual.js","../../../../../node_modules/sugar/array/last.js","../../../../../node_modules/sugar/array/remove.js","../../../../../node_modules/sugar/array/internal/arrayRemove.js","../../../../../node_modules/sugar/array/removeAt.js","../../../../../node_modules/sugar/array/sample.js","../../../../../node_modules/sugar/array/shuffle.js","../../../../../node_modules/sugar/array/internal/arrayShuffle.js","../../../../../node_modules/sugar/array/internal/codeIsNumeral.js","../../../../../node_modules/sugar/array/internal/getCollationCharacter.js","../../../../../node_modules/sugar/array/var/ARRAY_OPTIONS.js","../../../../../node_modules/sugar/array/var/HALF_WIDTH_NINE.js","../../../../../node_modules/sugar/array/var/FULL_WIDTH_NINE.js","../../../../../node_modules/sugar/array/internal/getSortOrderIndex.js","../../../../../node_modules/sugar/array/internal/getCollationReadyString.js","../../../../../node_modules/sugar/array/internal/getSortOrder.js","../../../../../node_modules/sugar/array/internal/getSortEquivalents.js","../../../../../node_modules/sugar/array/internal/compareValue.js","../../../../../node_modules/sugar/array/sortBy.js","../../../../../node_modules/sugar/array/subtract.js","../../../../../node_modules/sugar/array/to.js","../../../../../node_modules/sugar/array/internal/arrayUnique.js","../../../../../node_modules/sugar/array/var/HAS_CONCAT_BUG.js","../../../../../node_modules/sugar/array/internal/arraySafeConcat.js","../../../../../node_modules/sugar/array/internal/arrayConcat.js","../../../../../node_modules/sugar/array/union.js","../../../../../node_modules/sugar/array/unique.js","../../../../../node_modules/sugar/array/zip.js","../../../../../node_modules/sugar/array/insert.js","../../../../../node_modules/sugar/array/getOption.js","../../../../../node_modules/sugar/array/setOption.js","../../../../../node_modules/sugar/enumerable/internal/enumerateWithMapping.js","../../../../../node_modules/sugar/enumerable/internal/average.js","../../../../../node_modules/sugar/object/average.js","../../../../../node_modules/sugar/enumerable/internal/objectCount.js","../../../../../node_modules/sugar/object/count.js","../../../../../node_modules/sugar/enumerable/var/objectMatchers.js","../../../../../node_modules/sugar/enumerable/internal/wrapObjectMatcher.js","../../../../../node_modules/sugar/object/every.js","../../../../../node_modules/sugar/enumerable/internal/objectFilter.js","../../../../../node_modules/sugar/object/filter.js","../../../../../node_modules/sugar/object/find.js","../../../../../node_modules/sugar/common/internal/assertCallable.js","../../../../../node_modules/sugar/enumerable/internal/objectForEach.js","../../../../../node_modules/sugar/object/forEach.js","../../../../../node_modules/sugar/enumerable/internal/getReducedMinMaxResult.js","../../../../../node_modules/sugar/enumerable/internal/getMinOrMax.js","../../../../../node_modules/sugar/enumerable/internal/getLeastOrMost.js","../../../../../node_modules/sugar/object/least.js","../../../../../node_modules/sugar/enumerable/internal/objectMap.js","../../../../../node_modules/sugar/object/map.js","../../../../../node_modules/sugar/object/max.js","../../../../../node_modules/sugar/enumerable/internal/median.js","../../../../../node_modules/sugar/object/median.js","../../../../../node_modules/sugar/object/min.js","../../../../../node_modules/sugar/object/most.js","../../../../../node_modules/sugar/enumerable/internal/objectNone.js","../../../../../node_modules/sugar/object/none.js","../../../../../node_modules/sugar/enumerable/internal/objectReduce.js","../../../../../node_modules/sugar/object/reduce.js","../../../../../node_modules/sugar/object/some.js","../../../../../node_modules/sugar/enumerable/internal/sum.js","../../../../../node_modules/sugar/object/sum.js","../../../../../node_modules/sugar/array/average.js","../../../../../node_modules/sugar/enumerable/internal/enhancedMatching.js","../../../../../node_modules/sugar/common/internal/assertArgument.js","../../../../../node_modules/sugar/enumerable/internal/wrapNativeArrayMethod.js","../../../../../node_modules/sugar/enumerable/var/enhancedMatcherMethods.js","../../../../../node_modules/sugar/enumerable/internal/buildEnhancedMatching.js","../../../../../node_modules/sugar/enumerable/internal/arrayCount.js","../../../../../node_modules/sugar/array/count.js","../../../../../node_modules/sugar/enumerable/var/ARRAY_ENHANCEMENTS_FLAG.js","../../../../../node_modules/sugar/array/every.js","../../../../../node_modules/sugar/enumerable/internal/enhancedMapping.js","../../../../../node_modules/sugar/enumerable/internal/buildFromIndexMethods.js","../../../../../node_modules/sugar/enumerable/build/buildFromIndexMethodsCall.js","../../../../../node_modules/sugar/array/everyFromIndex.js","../../../../../node_modules/sugar/array/filter.js","../../../../../node_modules/sugar/array/filterFromIndex.js","../../../../../node_modules/sugar/array/find.js","../../../../../node_modules/sugar/array/findFromIndex.js","../../../../../node_modules/sugar/array/findIndex.js","../../../../../node_modules/sugar/array/findIndexFromIndex.js","../../../../../node_modules/sugar/array/forEachFromIndex.js","../../../../../node_modules/sugar/array/least.js","../../../../../node_modules/sugar/enumerable/var/enhancedMap.js","../../../../../node_modules/sugar/enumerable/internal/buildEnhancedMapping.js","../../../../../node_modules/sugar/array/map.js","../../../../../node_modules/sugar/array/mapFromIndex.js","../../../../../node_modules/sugar/array/max.js","../../../../../node_modules/sugar/array/median.js","../../../../../node_modules/sugar/array/min.js","../../../../../node_modules/sugar/array/most.js","../../../../../node_modules/sugar/enumerable/internal/arrayNone.js","../../../../../node_modules/sugar/array/none.js","../../../../../node_modules/sugar/array/reduceFromIndex.js","../../../../../node_modules/sugar/array/reduceRightFromIndex.js","../../../../../node_modules/sugar/array/some.js","../../../../../node_modules/sugar/array/someFromIndex.js","../../../../../node_modules/sugar/array/sum.js","../../../../../node_modules/sugar/object/var/getOwnPropertyNames.js","../../../../../node_modules/sugar/object/internal/getNewObjectForMerge.js","../../../../../node_modules/sugar/object/var/getOwnPropertyDescriptor.js","../../../../../node_modules/sugar/object/var/getOwnPropertySymbols.js","../../../../../node_modules/sugar/object/internal/iterateOverProperties.js","../../../../../node_modules/sugar/object/internal/iterateOverKeys.js","../../../../../node_modules/sugar/common/var/NO_KEYS_IN_STRING_OBJECTS.js","../../../../../node_modules/sugar/common/internal/coercePrimitiveToObject.js","../../../../../node_modules/sugar/common/internal/forceStringCoercion.js","../../../../../node_modules/sugar/object/internal/mergeByPropertyDescriptor.js","../../../../../node_modules/sugar/object/internal/objectMerge.js","../../../../../node_modules/sugar/object/internal/clone.js","../../../../../node_modules/sugar/object/internal/mergeWithOptions.js","../../../../../node_modules/sugar/object/add.js","../../../../../node_modules/sugar/object/internal/mergeAll.js","../../../../../node_modules/sugar/object/addAll.js","../../../../../node_modules/sugar/object/clone.js","../../../../../node_modules/sugar/object/defaults.js","../../../../../node_modules/sugar/object/internal/defaults.js","../../../../../node_modules/sugar/object/internal/objectExclude.js","../../../../../node_modules/sugar/object/exclude.js","../../../../../node_modules/sugar/object/internal/stringIsDecimal.js","../../../../../node_modules/sugar/object/var/NON_DECIMAL_REG.js","../../../../../node_modules/sugar/object/internal/getQueryValueAuto.js","../../../../../node_modules/sugar/object/internal/setQueryProperty.js","../../../../../node_modules/sugar/object/internal/parseDeepQueryComponent.js","../../../../../node_modules/sugar/object/internal/parseQueryComponent.js","../../../../../node_modules/sugar/object/var/DEEP_QUERY_STRING_REG.js","../../../../../node_modules/sugar/object/internal/mapQuerySeparatorToKeys.js","../../../../../node_modules/sugar/object/internal/fromQueryStringWithOptions.js","../../../../../node_modules/sugar/object/fromQueryString.js","../../../../../node_modules/sugar/object/get.js","../../../../../node_modules/sugar/object/has.js","../../../../../node_modules/sugar/common/internal/deepHasProperty.js","../../../../../node_modules/sugar/object/internal/objectIntersectOrSubtract.js","../../../../../node_modules/sugar/object/intersect.js","../../../../../node_modules/sugar/object/invert.js","../../../../../node_modules/sugar/object/internal/isArguments.js","../../../../../node_modules/sugar/object/isArguments.js","../../../../../node_modules/sugar/common/internal/hasProperty.js","../../../../../node_modules/sugar/common/internal/defineInstanceAndStaticSimilar.js","../../../../../node_modules/sugar/object/internal/buildClassCheckMethods.js","../../../../../node_modules/sugar/object/isArray.js","../../../../../node_modules/sugar/object/isBoolean.js","../../../../../node_modules/sugar/object/isDate.js","../../../../../node_modules/sugar/object/internal/objectSize.js","../../../../../node_modules/sugar/object/internal/getKeysWithObjectCoercion.js","../../../../../node_modules/sugar/object/isEmpty.js","../../../../../node_modules/sugar/object/isEqual.js","../../../../../node_modules/sugar/object/isError.js","../../../../../node_modules/sugar/object/isFunction.js","../../../../../node_modules/sugar/object/isMap.js","../../../../../node_modules/sugar/object/isNumber.js","../../../../../node_modules/sugar/object/isObject.js","../../../../../node_modules/sugar/object/isRegExp.js","../../../../../node_modules/sugar/object/isSet.js","../../../../../node_modules/sugar/object/isString.js","../../../../../node_modules/sugar/object/merge.js","../../../../../node_modules/sugar/object/mergeAll.js","../../../../../node_modules/sugar/object/internal/matchInObject.js","../../../../../node_modules/sugar/object/internal/selectFromObject.js","../../../../../node_modules/sugar/object/reject.js","../../../../../node_modules/sugar/object/internal/objectReject.js","../../../../../node_modules/sugar/object/internal/objectRemove.js","../../../../../node_modules/sugar/object/remove.js","../../../../../node_modules/sugar/object/select.js","../../../../../node_modules/sugar/object/internal/objectSelect.js","../../../../../node_modules/sugar/object/set.js","../../../../../node_modules/sugar/common/internal/deepSetProperty.js","../../../../../node_modules/sugar/object/size.js","../../../../../node_modules/sugar/object/subtract.js","../../../../../node_modules/sugar/object/internal/tap.js","../../../../../node_modules/sugar/object/tap.js","../../../../../node_modules/sugar/object/var/internalToString.js","../../../../../node_modules/sugar/object/internal/sanitizeURIComponent.js","../../../../../node_modules/sugar/object/internal/getURIComponentValue.js","../../../../../node_modules/sugar/object/internal/toQueryString.js","../../../../../node_modules/sugar/object/toQueryString.js","../../../../../node_modules/sugar/object/internal/toQueryStringWithOptions.js","../../../../../node_modules/sugar/object/internal/getValues.js","../../../../../node_modules/sugar/object/values.js","../../../../../node_modules/sugar/object/keys.js","../../../../../node_modules/sugar/date/internal/getEnglishVariant.js","../../../../../node_modules/sugar/date/var/EnglishLocaleBaseDefinition.js","../../../../../node_modules/sugar/date/var/BritishEnglishDefinition.js","../../../../../node_modules/sugar/date/var/AmericanEnglishDefinition.js","../../../../../node_modules/sugar/date/var/CanadianEnglishDefinition.js","../../../../../node_modules/sugar/date/var/ISODefaults.js","../../../../../node_modules/sugar/date/var/LocalizedParsingTokens.js","../../../../../node_modules/sugar/date/internal/getRegNonCapturing.js","../../../../../node_modules/sugar/common/internal/privatePropertyAccessor.js","../../../../../node_modules/sugar/common/var/PRIVATE_PROP_PREFIX.js","../../../../../node_modules/sugar/common/var/_utc.js","../../../../../node_modules/sugar/common/internal/callDateGet.js","../../../../../node_modules/sugar/date/internal/getYear.js","../../../../../node_modules/sugar/date/internal/getMonth.js","../../../../../node_modules/sugar/date/internal/getDaysInMonth.js","../../../../../node_modules/sugar/date/var/DateUnits.js","../../../../../node_modules/sugar/date/var/DateUnitIndexes.js","../../../../../node_modules/sugar/date/internal/iterateOverDateUnits.js","../../../../../node_modules/sugar/date/internal/getAdjustedUnit.js","../../../../../node_modules/sugar/date/internal/getNewLocale.js","../../../../../node_modules/sugar/date/var/LOCALE_ARRAY_FIELDS.js","../../../../../node_modules/sugar/date/var/CoreParsingTokens.js","../../../../../node_modules/sugar/date/var/CoreParsingFormats.js","../../../../../node_modules/sugar/date/internal/getArrayWithOffset.js","../../../../../node_modules/sugar/date/internal/arrayToRegAlternates.js","../../../../../node_modules/sugar/date/internal/getParsingTokenWithSuffix.js","../../../../../node_modules/sugar/date/var/LocaleHelpers.js","../../../../../node_modules/sugar/date/var/LazyLoadedLocales.js","../../../../../node_modules/sugar/date/internal/getAdjustedUnitForNumber.js","../../../../../node_modules/sugar/date/addLocale.js","../../../../../node_modules/sugar/date/internal/tzOffset.js","../../../../../node_modules/sugar/common/internal/callDateSet.js","../../../../../node_modules/sugar/date/internal/getLowerUnitIndex.js","../../../../../node_modules/sugar/date/internal/walkUnitDown.js","../../../../../node_modules/sugar/date/internal/setUnitAndLowerToEdge.js","../../../../../node_modules/sugar/date/internal/resetTime.js","../../../../../node_modules/sugar/date/var/_dateOptions.js","../../../../../node_modules/sugar/date/var/DATE_OPTIONS.js","../../../../../node_modules/sugar/date/internal/defaultNewDate.js","../../../../../node_modules/sugar/date/internal/getNewDate.js","../../../../../node_modules/sugar/date/internal/setDate.js","../../../../../node_modules/sugar/date/internal/getDate.js","../../../../../node_modules/sugar/date/internal/getWeekday.js","../../../../../node_modules/sugar/date/internal/setWeekday.js","../../../../../node_modules/sugar/date/internal/getHigherUnitIndex.js","../../../../../node_modules/sugar/date/internal/cloneDate.js","../../../../../node_modules/sugar/date/internal/moveToBeginningOfWeek.js","../../../../../node_modules/sugar/date/internal/moveToFirstDayOfWeekYear.js","../../../../../node_modules/sugar/date/internal/setISOWeekNumber.js","../../../../../node_modules/sugar/date/internal/setYear.js","../../../../../node_modules/sugar/date/internal/setMonth.js","../../../../../node_modules/sugar/common/internal/getOwnKey.js","../../../../../node_modules/sugar/date/internal/getDateParamKey.js","../../../../../node_modules/sugar/date/internal/getDateParam.js","../../../../../node_modules/sugar/date/internal/iterateOverDateParams.js","../../../../../node_modules/sugar/date/internal/updateDate.js","../../../../../node_modules/sugar/date/internal/callDateSetWithWeek.js","../../../../../node_modules/sugar/date/internal/resetLowerUnits.js","../../../../../node_modules/sugar/date/internal/advanceDate.js","../../../../../node_modules/sugar/date/internal/dateIsValid.js","../../../../../node_modules/sugar/date/internal/moveToEndOfWeek.js","../../../../../node_modules/sugar/date/internal/moveToEndOfUnit.js","../../../../../node_modules/sugar/date/internal/moveToBeginningOfUnit.js","../../../../../node_modules/sugar/date/internal/getYearFromAbbreviation.js","../../../../../node_modules/sugar/date/internal/iterateOverHigherDateParams.js","../../../../../node_modules/sugar/date/internal/getExtendedDate.js","../../../../../node_modules/sugar/date/var/ABBREVIATED_YEAR_REG.js","../../../../../node_modules/sugar/date/internal/deleteDateParam.js","../../../../../node_modules/sugar/date/var/MINUTES.js","../../../../../node_modules/sugar/date/internal/createDate.js","../../../../../node_modules/sugar/date/internal/setDateChainableConstructor.js","../../../../../node_modules/sugar/date/create.js","../../../../../node_modules/sugar/date/getAllLocaleCodes.js","../../../../../node_modules/sugar/date/getAllLocales.js","../../../../../node_modules/sugar/date/getLocale.js","../../../../../node_modules/sugar/date/removeLocale.js","../../../../../node_modules/sugar/date/setLocale.js","../../../../../node_modules/sugar/date/internal/buildNumberUnitMethods.js","../../../../../node_modules/sugar/number/day.js","../../../../../node_modules/sugar/number/dayAfter.js","../../../../../node_modules/sugar/number/dayAgo.js","../../../../../node_modules/sugar/number/dayBefore.js","../../../../../node_modules/sugar/number/dayFromNow.js","../../../../../node_modules/sugar/number/days.js","../../../../../node_modules/sugar/number/daysAfter.js","../../../../../node_modules/sugar/number/daysAgo.js","../../../../../node_modules/sugar/number/daysBefore.js","../../../../../node_modules/sugar/number/daysFromNow.js","../../../../../node_modules/sugar/number/duration.js","../../../../../node_modules/sugar/number/hour.js","../../../../../node_modules/sugar/number/hourAfter.js","../../../../../node_modules/sugar/number/hourAgo.js","../../../../../node_modules/sugar/number/hourBefore.js","../../../../../node_modules/sugar/number/hourFromNow.js","../../../../../node_modules/sugar/number/hours.js","../../../../../node_modules/sugar/number/hoursAfter.js","../../../../../node_modules/sugar/number/hoursAgo.js","../../../../../node_modules/sugar/number/hoursBefore.js","../../../../../node_modules/sugar/number/hoursFromNow.js","../../../../../node_modules/sugar/number/millisecond.js","../../../../../node_modules/sugar/number/millisecondAfter.js","../../../../../node_modules/sugar/number/millisecondAgo.js","../../../../../node_modules/sugar/number/millisecondBefore.js","../../../../../node_modules/sugar/number/millisecondFromNow.js","../../../../../node_modules/sugar/number/milliseconds.js","../../../../../node_modules/sugar/number/millisecondsAfter.js","../../../../../node_modules/sugar/number/millisecondsAgo.js","../../../../../node_modules/sugar/number/millisecondsBefore.js","../../../../../node_modules/sugar/number/millisecondsFromNow.js","../../../../../node_modules/sugar/number/minute.js","../../../../../node_modules/sugar/number/minuteAfter.js","../../../../../node_modules/sugar/number/minuteAgo.js","../../../../../node_modules/sugar/number/minuteBefore.js","../../../../../node_modules/sugar/number/minuteFromNow.js","../../../../../node_modules/sugar/number/minutes.js","../../../../../node_modules/sugar/number/minutesAfter.js","../../../../../node_modules/sugar/number/minutesAgo.js","../../../../../node_modules/sugar/number/minutesBefore.js","../../../../../node_modules/sugar/number/minutesFromNow.js","../../../../../node_modules/sugar/number/month.js","../../../../../node_modules/sugar/number/monthAfter.js","../../../../../node_modules/sugar/number/monthAgo.js","../../../../../node_modules/sugar/number/monthBefore.js","../../../../../node_modules/sugar/number/monthFromNow.js","../../../../../node_modules/sugar/number/months.js","../../../../../node_modules/sugar/number/monthsAfter.js","../../../../../node_modules/sugar/number/monthsAgo.js","../../../../../node_modules/sugar/number/monthsBefore.js","../../../../../node_modules/sugar/number/monthsFromNow.js","../../../../../node_modules/sugar/number/second.js","../../../../../node_modules/sugar/number/secondAfter.js","../../../../../node_modules/sugar/number/secondAgo.js","../../../../../node_modules/sugar/number/secondBefore.js","../../../../../node_modules/sugar/number/secondFromNow.js","../../../../../node_modules/sugar/number/seconds.js","../../../../../node_modules/sugar/number/secondsAfter.js","../../../../../node_modules/sugar/number/secondsAgo.js","../../../../../node_modules/sugar/number/secondsBefore.js","../../../../../node_modules/sugar/number/secondsFromNow.js","../../../../../node_modules/sugar/number/week.js","../../../../../node_modules/sugar/number/weekAfter.js","../../../../../node_modules/sugar/number/weekAgo.js","../../../../../node_modules/sugar/number/weekBefore.js","../../../../../node_modules/sugar/number/weekFromNow.js","../../../../../node_modules/sugar/number/weeks.js","../../../../../node_modules/sugar/number/weeksAfter.js","../../../../../node_modules/sugar/number/weeksAgo.js","../../../../../node_modules/sugar/number/weeksBefore.js","../../../../../node_modules/sugar/number/weeksFromNow.js","../../../../../node_modules/sugar/number/year.js","../../../../../node_modules/sugar/number/yearAfter.js","../../../../../node_modules/sugar/number/yearAgo.js","../../../../../node_modules/sugar/number/yearBefore.js","../../../../../node_modules/sugar/number/yearFromNow.js","../../../../../node_modules/sugar/number/years.js","../../../../../node_modules/sugar/number/yearsAfter.js","../../../../../node_modules/sugar/number/yearsAgo.js","../../../../../node_modules/sugar/number/yearsBefore.js","../../../../../node_modules/sugar/number/yearsFromNow.js","../../../../../node_modules/sugar/date/internal/compareDate.js","../../../../../node_modules/sugar/date/internal/getTimeDistanceForUnit.js","../../../../../node_modules/sugar/date/internal/buildDateUnitMethods.js","../../../../../node_modules/sugar/date/addDays.js","../../../../../node_modules/sugar/date/addHours.js","../../../../../node_modules/sugar/date/addMilliseconds.js","../../../../../node_modules/sugar/date/addMinutes.js","../../../../../node_modules/sugar/date/addMonths.js","../../../../../node_modules/sugar/date/addSeconds.js","../../../../../node_modules/sugar/date/addWeeks.js","../../../../../node_modules/sugar/date/addYears.js","../../../../../node_modules/sugar/date/internal/collectDateParamsFromArguments.js","../../../../../node_modules/sugar/date/internal/collectUpdateDateArguments.js","../../../../../node_modules/sugar/date/internal/getDateParamsFromString.js","../../../../../node_modules/sugar/date/internal/advanceDateWithArgs.js","../../../../../node_modules/sugar/date/advance.js","../../../../../node_modules/sugar/date/beginningOfDay.js","../../../../../node_modules/sugar/date/beginningOfISOWeek.js","../../../../../node_modules/sugar/date/beginningOfMonth.js","../../../../../node_modules/sugar/date/beginningOfWeek.js","../../../../../node_modules/sugar/date/beginningOfYear.js","../../../../../node_modules/sugar/date/clone.js","../../../../../node_modules/sugar/date/daysAgo.js","../../../../../node_modules/sugar/date/daysFromNow.js","../../../../../node_modules/sugar/date/daysInMonth.js","../../../../../node_modules/sugar/date/daysSince.js","../../../../../node_modules/sugar/date/daysUntil.js","../../../../../node_modules/sugar/date/endOfDay.js","../../../../../node_modules/sugar/date/endOfISOWeek.js","../../../../../node_modules/sugar/date/endOfMonth.js","../../../../../node_modules/sugar/date/endOfWeek.js","../../../../../node_modules/sugar/date/endOfYear.js","../../../../../node_modules/sugar/date/var/CoreOutputFormats.js","../../../../../node_modules/sugar/date/internal/getHours.js","../../../../../node_modules/sugar/date/internal/getWeekNumber.js","../../../../../node_modules/sugar/date/internal/getWeekYear.js","../../../../../node_modules/sugar/date/internal/getUTCOffset.js","../../../../../node_modules/sugar/date/internal/getDaysSince.js","../../../../../node_modules/sugar/date/internal/getMeridiemToken.js","../../../../../node_modules/sugar/date/var/FormatTokensBase.js","../../../../../node_modules/sugar/date/var/TIMEZONE_ABBREVIATION_REG.js","../../../../../node_modules/sugar/date/var/formattingTokens.js","../../../../../node_modules/sugar/date/internal/assertDateIsValid.js","../../../../../node_modules/sugar/date/internal/dateFormat.js","../../../../../node_modules/sugar/date/format.js","../../../../../node_modules/sugar/date/get.js","../../../../../node_modules/sugar/date/internal/createDateWithContext.js","../../../../../node_modules/sugar/date/getISOWeek.js","../../../../../node_modules/sugar/date/getUTCOffset.js","../../../../../node_modules/sugar/date/getUTCWeekday.js","../../../../../node_modules/sugar/date/getWeekday.js","../../../../../node_modules/sugar/date/hoursAgo.js","../../../../../node_modules/sugar/date/hoursFromNow.js","../../../../../node_modules/sugar/date/hoursSince.js","../../../../../node_modules/sugar/date/hoursUntil.js","../../../../../node_modules/sugar/date/internal/fullCompareDate.js","../../../../../node_modules/sugar/date/internal/compareDay.js","../../../../../node_modules/sugar/date/is.js","../../../../../node_modules/sugar/date/isAfter.js","../../../../../node_modules/sugar/date/isBefore.js","../../../../../node_modules/sugar/date/isBetween.js","../../../../../node_modules/sugar/date/internal/buildRelativeAliases.js","../../../../../node_modules/sugar/date/isFriday.js","../../../../../node_modules/sugar/date/isFuture.js","../../../../../node_modules/sugar/date/isLastMonth.js","../../../../../node_modules/sugar/date/isLastWeek.js","../../../../../node_modules/sugar/date/isLastYear.js","../../../../../node_modules/sugar/date/isLeapYear.js","../../../../../node_modules/sugar/date/isMonday.js","../../../../../node_modules/sugar/date/isNextMonth.js","../../../../../node_modules/sugar/date/isNextWeek.js","../../../../../node_modules/sugar/date/isNextYear.js","../../../../../node_modules/sugar/date/isPast.js","../../../../../node_modules/sugar/date/isSaturday.js","../../../../../node_modules/sugar/date/isSunday.js","../../../../../node_modules/sugar/date/isThisMonth.js","../../../../../node_modules/sugar/date/isThisWeek.js","../../../../../node_modules/sugar/date/isThisYear.js","../../../../../node_modules/sugar/date/isThursday.js","../../../../../node_modules/sugar/date/isToday.js","../../../../../node_modules/sugar/date/isTomorrow.js","../../../../../node_modules/sugar/date/isTuesday.js","../../../../../node_modules/sugar/date/isUTC.js","../../../../../node_modules/sugar/date/internal/isUTC.js","../../../../../node_modules/sugar/date/isValid.js","../../../../../node_modules/sugar/date/isWednesday.js","../../../../../node_modules/sugar/date/isWeekday.js","../../../../../node_modules/sugar/date/isWeekend.js","../../../../../node_modules/sugar/date/isYesterday.js","../../../../../node_modules/sugar/date/iso.js","../../../../../node_modules/sugar/date/millisecondsAgo.js","../../../../../node_modules/sugar/date/millisecondsFromNow.js","../../../../../node_modules/sugar/date/millisecondsSince.js","../../../../../node_modules/sugar/date/millisecondsUntil.js","../../../../../node_modules/sugar/date/minutesAgo.js","../../../../../node_modules/sugar/date/minutesFromNow.js","../../../../../node_modules/sugar/date/minutesSince.js","../../../../../node_modules/sugar/date/minutesUntil.js","../../../../../node_modules/sugar/date/monthsAgo.js","../../../../../node_modules/sugar/date/monthsFromNow.js","../../../../../node_modules/sugar/date/monthsSince.js","../../../../../node_modules/sugar/date/monthsUntil.js","../../../../../node_modules/sugar/date/internal/getAdjustedUnitForDate.js","../../../../../node_modules/sugar/date/internal/dateRelative.js","../../../../../node_modules/sugar/date/relative.js","../../../../../node_modules/sugar/date/relativeTo.js","../../../../../node_modules/sugar/date/reset.js","../../../../../node_modules/sugar/date/internal/getUnitIndexForParamName.js","../../../../../node_modules/sugar/date/rewind.js","../../../../../node_modules/sugar/date/secondsAgo.js","../../../../../node_modules/sugar/date/secondsFromNow.js","../../../../../node_modules/sugar/date/secondsSince.js","../../../../../node_modules/sugar/date/secondsUntil.js","../../../../../node_modules/sugar/date/set.js","../../../../../node_modules/sugar/date/setISOWeek.js","../../../../../node_modules/sugar/date/setUTC.js","../../../../../node_modules/sugar/date/setWeekday.js","../../../../../node_modules/sugar/date/weeksAgo.js","../../../../../node_modules/sugar/date/weeksFromNow.js","../../../../../node_modules/sugar/date/weeksSince.js","../../../../../node_modules/sugar/date/weeksUntil.js","../../../../../node_modules/sugar/date/yearsAgo.js","../../../../../node_modules/sugar/date/yearsFromNow.js","../../../../../node_modules/sugar/date/yearsSince.js","../../../../../node_modules/sugar/date/yearsUntil.js","../../../../../node_modules/sugar/date/getOption.js","../../../../../node_modules/sugar/date/setOption.js","../../../../../node_modules/sugar/range/internal/getRangeMemberPrimitiveValue.js","../../../../../node_modules/sugar/range/internal/cloneRangeMember.js","../../../../../node_modules/sugar/range/internal/Range.js","../../../../../node_modules/sugar/range/internal/getDateForRange.js","../../../../../node_modules/sugar/range/var/DURATION_UNITS.js","../../../../../node_modules/sugar/range/var/DurationTextFormats.js","../../../../../node_modules/sugar/range/var/FULL_CAPTURED_DURATION.js","../../../../../node_modules/sugar/range/var/MULTIPLIERS.js","../../../../../node_modules/sugar/range/internal/incrementDate.js","../../../../../node_modules/sugar/range/var/DURATION_REG.js","../../../../../node_modules/sugar/range/internal/getDateIncrementObject.js","../../../../../node_modules/sugar/range/internal/createDateRangeFromString.js","../../../../../node_modules/sugar/range/var/DateRangeConstructor.js","../../../../../node_modules/sugar/date/range.js","../../../../../node_modules/sugar/range/var/PrimitiveRangeConstructor.js","../../../../../node_modules/sugar/number/range.js","../../../../../node_modules/sugar/string/range.js","../../../../../node_modules/sugar/range/internal/rangeClamp.js","../../../../../node_modules/sugar/number/cap.js","../../../../../node_modules/sugar/number/clamp.js","../../../../../node_modules/sugar/range/internal/rangeIsValid.js","../../../../../node_modules/sugar/range/internal/isValidRangeMember.js","../../../../../node_modules/sugar/range/internal/valueIsNotInfinite.js","../../../../../node_modules/sugar/range/internal/getGreaterPrecision.js","../../../../../node_modules/sugar/range/internal/getPrecision.js","../../../../../node_modules/sugar/range/internal/rangeEvery.js","../../../../../node_modules/sugar/range/internal/incrementNumber.js","../../../../../node_modules/sugar/range/internal/incrementString.js","../../../../../node_modules/sugar/number/upto.js","../../../../../node_modules/sugar/common/internal/defineOnPrototype.js","../../../../../node_modules/sugar/range/clamp.js","../../../../../node_modules/sugar/range/clone.js","../../../../../node_modules/sugar/range/contains.js","../../../../../node_modules/sugar/range/internal/buildDateRangeUnits.js","../../../../../node_modules/sugar/range/every.js","../../../../../node_modules/sugar/range/intersect.js","../../../../../node_modules/sugar/range/isValid.js","../../../../../node_modules/sugar/range/internal/getRangeMemberNumericValue.js","../../../../../node_modules/sugar/range/span.js","../../../../../node_modules/sugar/range/toArray.js","../../../../../node_modules/sugar/range/toString.js","../../../../../node_modules/sugar/range/union.js","../../../../../node_modules/sugar/number/downto.js","../../../../../node_modules/sugar/function/after.js","../../../../../node_modules/sugar/function/var/_timers.js","../../../../../node_modules/sugar/function/var/_canceled.js","../../../../../node_modules/sugar/function/internal/cancelFunction.js","../../../../../node_modules/sugar/function/cancel.js","../../../../../node_modules/sugar/function/internal/setDelay.js","../../../../../node_modules/sugar/function/debounce.js","../../../../../node_modules/sugar/function/delay.js","../../../../../node_modules/sugar/function/every.js","../../../../../node_modules/sugar/function/internal/createLazyFunction.js","../../../../../node_modules/sugar/function/lazy.js","../../../../../node_modules/sugar/function/var/_lock.js","../../../../../node_modules/sugar/function/var/_partial.js","../../../../../node_modules/sugar/function/lock.js","../../../../../node_modules/sugar/function/internal/createHashedMemoizeFunction.js","../../../../../node_modules/sugar/function/memoize.js","../../../../../node_modules/sugar/function/internal/collectArguments.js","../../../../../node_modules/sugar/function/once.js","../../../../../node_modules/sugar/function/var/createInstanceFromPrototype.js","../../../../../node_modules/sugar/function/partial.js","../../../../../node_modules/sugar/function/throttle.js","../../../../../node_modules/sugar/regexp/escape.js","../../../../../node_modules/sugar/regexp/addFlags.js","../../../../../node_modules/sugar/regexp/getFlags.js","../../../../../node_modules/sugar/regexp/removeFlags.js","../../../../../node_modules/sugar/regexp/setFlags.js","../../../../../node_modules/sugar/index.js","../../../../../node_modules/use-sync-external-store/cjs/use-sync-external-store-with-selector.production.min.js","../../../../../node_modules/use-sync-external-store/with-selector.js","../../../../../node_modules/react-redux/dist/react-redux.mjs","../../../../../node_modules/lodash/lodash.js","../../../../../node_modules/big.js/big.mjs","../../../../../node_modules/@datadog/browser-core/esm/tools/display.js","../../../../../node_modules/@datadog/browser-core/esm/tools/catchUserErrors.js","../../../../../node_modules/@datadog/browser-core/esm/tools/utils/numberUtils.js","../../../../../node_modules/@datadog/browser-core/esm/tools/utils/timeUtils.js","../../../../../node_modules/@datadog/browser-core/esm/tools/utils/byteUtils.js","../../../../../node_modules/@datadog/browser-core/esm/tools/utils/polyfills.js","../../../../../node_modules/@datadog/browser-core/esm/tools/utils/objectUtils.js","../../../../../node_modules/@datadog/browser-core/esm/tools/getGlobalObject.js","../../../../../node_modules/@datadog/browser-core/esm/tools/getZoneJsOriginalValue.js","../../../../../node_modules/@datadog/browser-core/esm/tools/monitor.js","../../../../../node_modules/@datadog/browser-core/esm/tools/timer.js","../../../../../node_modules/@datadog/browser-core/esm/tools/observable.js","../../../../../node_modules/@datadog/browser-core/esm/tools/utils/functionUtils.js","../../../../../node_modules/@datadog/browser-core/esm/tools/utils/stringUtils.js","../../../../../node_modules/@datadog/browser-core/esm/tools/utils/browserDetection.js","../../../../../node_modules/@datadog/browser-core/esm/browser/cookie.js","../../../../../node_modules/@datadog/browser-core/esm/domain/session/storeStrategies/sessionStoreStrategy.js","../../../../../node_modules/@datadog/browser-core/esm/domain/session/sessionState.js","../../../../../node_modules/@datadog/browser-core/esm/domain/session/sessionConstants.js","../../../../../node_modules/@datadog/browser-core/esm/domain/session/storeStrategies/sessionInCookie.js","../../../../../node_modules/@datadog/browser-core/esm/domain/session/storeStrategies/sessionInLocalStorage.js","../../../../../node_modules/@datadog/browser-core/esm/domain/session/sessionStoreOperations.js","../../../../../node_modules/@datadog/browser-core/esm/domain/trackingConsent.js","../../../../../node_modules/@datadog/browser-core/esm/tools/serialisation/jsonStringify.js","../../../../../node_modules/@datadog/browser-core/esm/tools/utils/urlPolyfill.js","../../../../../node_modules/@datadog/browser-core/esm/domain/configuration/intakeSites.js","../../../../../node_modules/@datadog/browser-core/esm/domain/configuration/endpointBuilder.js","../../../../../node_modules/@datadog/browser-core/esm/domain/configuration/tags.js","../../../../../node_modules/@datadog/browser-core/esm/domain/configuration/transportConfiguration.js","../../../../../node_modules/@datadog/browser-core/esm/domain/configuration/configuration.js","../../../../../node_modules/@datadog/browser-core/esm/domain/session/sessionStore.js","../../../../../node_modules/@datadog/browser-core/esm/tools/experimentalFeatures.js","../../../../../node_modules/@datadog/browser-core/esm/tools/stackTrace/computeStackTrace.js","../../../../../node_modules/@datadog/browser-core/esm/tools/stackTrace/handlingStack.js","../../../../../node_modules/@datadog/browser-core/esm/tools/instrumentMethod.js","../../../../../node_modules/@datadog/browser-core/esm/tools/serialisation/sanitize.js","../../../../../node_modules/@datadog/browser-core/esm/domain/error/error.js","../../../../../node_modules/@datadog/browser-core/esm/domain/error/error.types.js","../../../../../node_modules/@datadog/browser-core/esm/domain/error/trackRuntimeError.js","../../../../../node_modules/@datadog/browser-core/esm/boot/init.js","../../../../../node_modules/@datadog/browser-core/esm/boot/displayAlreadyInitializedError.js","../../../../../node_modules/@datadog/browser-core/esm/browser/addEventListener.js","../../../../../node_modules/@datadog/browser-core/esm/domain/report/reportObservable.js","../../../../../node_modules/@datadog/browser-core/esm/tools/sendToExtension.js","../../../../../node_modules/@datadog/browser-core/esm/tools/utils/typeUtils.js","../../../../../node_modules/@datadog/browser-core/esm/tools/mergeInto.js","../../../../../node_modules/@datadog/browser-core/esm/domain/connectivity/connectivity.js","../../../../../node_modules/@datadog/browser-core/esm/tools/utils/arrayUtils.js","../../../../../node_modules/@datadog/browser-core/esm/tools/boundedBuffer.js","../../../../../node_modules/@datadog/browser-core/esm/domain/telemetry/rawTelemetryEvent.types.js","../../../../../node_modules/@datadog/browser-core/esm/domain/telemetry/telemetry.js","../../../../../node_modules/@datadog/browser-core/esm/tools/valueHistory.js","../../../../../node_modules/@datadog/browser-core/esm/domain/session/sessionManager.js","../../../../../node_modules/@datadog/browser-core/esm/domain/session/oldCookiesMigration.js","../../../../../node_modules/@datadog/browser-core/esm/tools/utils/responseUtils.js","../../../../../node_modules/@datadog/browser-core/esm/transport/sendWithRetryStrategy.js","../../../../../node_modules/@datadog/browser-core/esm/transport/httpRequest.js","../../../../../node_modules/@datadog/browser-core/esm/transport/eventBridge.js","../../../../../node_modules/@datadog/browser-core/esm/browser/pageExitObservable.js","../../../../../node_modules/@datadog/browser-core/esm/transport/batch.js","../../../../../node_modules/@datadog/browser-core/esm/transport/startBatchWithReplica.js","../../../../../node_modules/@datadog/browser-core/esm/transport/flushController.js","../../../../../node_modules/@datadog/browser-core/esm/tools/encoder.js","../../../../../node_modules/@datadog/browser-core/esm/tools/abstractLifeCycle.js","../../../../../node_modules/@datadog/browser-core/esm/domain/eventRateLimiter/createEventRateLimiter.js","../../../../../node_modules/@datadog/browser-core/esm/browser/runOnReadyState.js","../../../../../node_modules/@datadog/browser-core/esm/browser/xhrObservable.js","../../../../../node_modules/@datadog/browser-core/esm/browser/fetchObservable.js","../../../../../node_modules/@datadog/browser-core/esm/tools/requestIdleCallback.js","../../../../../node_modules/@datadog/browser-core/esm/domain/console/consoleObservable.js","../../../../../node_modules/@datadog/browser-core/esm/domain/context/contextManager.js","../../../../../node_modules/@datadog/browser-core/esm/domain/context/storeContextManager.js","../../../../../node_modules/@datadog/browser-core/esm/domain/context/customerDataTracker.js","../../../../../node_modules/@datadog/browser-core/esm/tools/readBytesFromStream.js","../../../../../node_modules/@datadog/browser-core/esm/domain/synthetics/syntheticsWorkerValues.js","../../../../../node_modules/@datadog/browser-core/esm/domain/user/user.js","../../../../../node_modules/@datadog/browser-core/esm/tools/matchOption.js","../../../../../node_modules/@datadog/browser-logs/esm/domain/logger/isAuthorized.js","../../../../../node_modules/@datadog/browser-logs/esm/domain/createErrorFieldFromRawError.js","../../../../../node_modules/@datadog/browser-logs/esm/domain/logger.js","../../../../../node_modules/@datadog/browser-logs/esm/domain/configuration.js","../../../../../node_modules/@datadog/browser-logs/esm/boot/logsPublicApi.js","../../../../../node_modules/@datadog/browser-logs/esm/domain/logsSessionManager.js","../../../../../node_modules/@datadog/browser-logs/esm/domain/contexts/rumInternalContext.js","../../../../../node_modules/@datadog/browser-logs/esm/domain/console/consoleCollection.js","../../../../../node_modules/@datadog/browser-logs/esm/domain/networkError/networkErrorCollection.js","../../../../../node_modules/@datadog/browser-logs/esm/domain/logger/loggerCollection.js","../../../../../node_modules/@datadog/browser-logs/esm/entries/main.js","../../../../../node_modules/@datadog/browser-logs/esm/domain/contexts/commonContext.js","../../../../../node_modules/@datadog/browser-logs/esm/boot/preStartLogs.js","../../../../../node_modules/@datadog/browser-logs/esm/boot/startLogs.js","../../../../../node_modules/@datadog/browser-logs/esm/domain/lifeCycle.js","../../../../../node_modules/@datadog/browser-logs/esm/domain/reportError.js","../../../../../node_modules/@datadog/browser-logs/esm/domain/logsTelemetry.js","../../../../../node_modules/@datadog/browser-logs/esm/domain/runtimeError/runtimeErrorCollection.js","../../../../../node_modules/@datadog/browser-logs/esm/domain/report/reportCollection.js","../../../../../node_modules/@datadog/browser-logs/esm/domain/assembly.js","../../../../../node_modules/@datadog/browser-logs/esm/transport/startLogsBridge.js","../../../../../node_modules/@datadog/browser-logs/esm/transport/startLogsBatch.js","../../../../../node_modules/@datadog/browser-logs/esm/domain/contexts/internalContext.js","../../../../../node_modules/@datadog/browser-rum-core/esm/domain/vital/vitalCollection.js","../../../../../node_modules/@datadog/browser-rum-core/esm/domain/tracing/tracer.js","../../../../../node_modules/@datadog/browser-rum-core/esm/domain/configuration/configuration.js","../../../../../node_modules/@datadog/browser-rum-core/esm/domain/configuration/remoteConfiguration.js","../../../../../node_modules/@datadog/browser-rum-core/esm/browser/domMutationObservable.js","../../../../../node_modules/@datadog/browser-rum-core/esm/domain/limitModification.js","../../../../../node_modules/@datadog/browser-rum-core/esm/domain/assembly.js","../../../../../node_modules/@datadog/browser-rum-core/esm/domain/resource/resourceUtils.js","../../../../../node_modules/@datadog/browser-rum-core/esm/domain/requestCollection.js","../../../../../node_modules/@datadog/browser-rum-core/esm/domain/discardNegativeDuration.js","../../../../../node_modules/@datadog/browser-rum-core/esm/domain/trackEventCounts.js","../../../../../node_modules/@datadog/browser-rum-core/esm/browser/performanceObservable.js","../../../../../node_modules/@datadog/browser-rum-core/esm/browser/firstInputPolyfill.js","../../../../../node_modules/@datadog/browser-rum-core/esm/domain/waitPageActivityEnd.js","../../../../../node_modules/@datadog/browser-rum-core/esm/browser/polyfills.js","../../../../../node_modules/@datadog/browser-rum-core/esm/browser/htmlDomUtils.js","../../../../../node_modules/@datadog/browser-rum-core/esm/domain/privacy.js","../../../../../node_modules/@datadog/browser-rum-core/esm/domain/action/getActionNameFromElement.js","../../../../../node_modules/@datadog/browser-rum-core/esm/domain/getSelectorFromElement.js","../../../../../node_modules/@datadog/browser-rum-core/esm/domain/action/listenActionEvents.js","../../../../../node_modules/@datadog/browser-rum-core/esm/domain/action/computeFrustration.js","../../../../../node_modules/@datadog/browser-rum-core/esm/domain/action/interactionSelectorCache.js","../../../../../node_modules/@datadog/browser-rum-core/esm/domain/action/actionCollection.js","../../../../../node_modules/@datadog/browser-rum-core/esm/domain/resource/matchRequestResourceEntry.js","../../../../../node_modules/@datadog/browser-rum-core/esm/domain/tracing/getDocumentTraceId.js","../../../../../node_modules/@datadog/browser-rum-core/esm/browser/performanceUtils.js","../../../../../node_modules/@datadog/browser-rum-core/esm/domain/resource/retrieveInitialDocumentResourceTiming.js","../../../../../node_modules/@datadog/browser-rum-core/esm/domain/resource/resourceCollection.js","../../../../../node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackFirstHidden.js","../../../../../node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackCumulativeLayoutShift.js","../../../../../node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/interactionCountPolyfill.js","../../../../../node_modules/@datadog/browser-rum-core/esm/browser/scroll.js","../../../../../node_modules/@datadog/browser-rum-core/esm/browser/viewportObservable.js","../../../../../node_modules/@datadog/browser-rum-core/esm/domain/view/trackViews.js","../../../../../node_modules/@datadog/browser-rum-core/esm/domain/rumSessionManager.js","../../../../../node_modules/@datadog/browser-rum-core/esm/browser/locationChangeObservable.js","../../../../../node_modules/@datadog/browser-rum-core/esm/domain/startCustomerDataTelemetry.js","../../../../../node_modules/@datadog/browser-rum-core/esm/domain/contexts/pageStateHistory.js","../../../../../node_modules/@datadog/browser-rum-core/esm/browser/cookieObservable.js","../../../../../node_modules/@datadog/browser-rum-core/esm/domain/contexts/ciVisibilityContext.js","../../../../../node_modules/@datadog/browser-rum/esm/domain/replayStats.js","../../../../../node_modules/@datadog/browser-rum/esm/domain/record/serialization/serializationUtils.js","../../../../../node_modules/@datadog/browser-rum/esm/types/sessionReplayConstants.js","../../../../../node_modules/@datadog/browser-rum/esm/domain/record/serialization/serializeStyleSheets.js","../../../../../node_modules/@datadog/browser-rum/esm/domain/record/serialization/serializeAttribute.js","../../../../../node_modules/@datadog/browser-rum/esm/domain/record/serialization/serializeAttributes.js","../../../../../node_modules/@datadog/browser-rum/esm/domain/record/serialization/serializeNode.js","../../../../../node_modules/@datadog/browser-rum/esm/domain/record/eventsUtils.js","../../../../../node_modules/@datadog/browser-rum/esm/domain/record/viewports.js","../../../../../node_modules/@datadog/browser-rum/esm/domain/record/assembly.js","../../../../../node_modules/@datadog/browser-rum/esm/domain/record/trackers/trackMove.js","../../../../../node_modules/@datadog/browser-rum/esm/domain/record/trackers/trackMouseInteraction.js","../../../../../node_modules/@datadog/browser-rum/esm/domain/record/trackers/trackScroll.js","../../../../../node_modules/@datadog/browser-rum/esm/domain/record/trackers/trackStyleSheet.js","../../../../../node_modules/@datadog/browser-rum/esm/domain/record/trackers/trackInput.js","../../../../../node_modules/@datadog/browser-rum/esm/domain/record/trackers/trackMutation.js","../../../../../node_modules/@datadog/browser-rum/esm/domain/record/mutationBatch.js","../../../../../node_modules/@datadog/browser-rum/esm/domain/record/shadowRootsController.js","../../../../../node_modules/@datadog/browser-rum/esm/domain/deflate/deflateEncoder.js","../../../../../node_modules/@datadog/browser-rum/esm/domain/deflate/deflateWorker.js","../../../../../node_modules/@datadog/browser-rum/esm/boot/isBrowserSupported.js","../../../../../node_modules/@datadog/browser-rum/esm/entries/main.js","../../../../../node_modules/@datadog/browser-rum-core/esm/boot/rumPublicApi.js","../../../../../node_modules/@datadog/browser-rum-core/esm/domain/contexts/commonContext.js","../../../../../node_modules/@datadog/browser-rum-core/esm/boot/preStartRum.js","../../../../../node_modules/@datadog/browser-rum-core/esm/domain/plugins.js","../../../../../node_modules/@datadog/browser-rum-core/esm/boot/startRum.js","../../../../../node_modules/@datadog/browser-rum-core/esm/domain/error/errorCollection.js","../../../../../node_modules/@datadog/browser-rum-core/esm/domain/error/trackConsoleError.js","../../../../../node_modules/@datadog/browser-rum-core/esm/domain/contexts/internalContext.js","../../../../../node_modules/@datadog/browser-rum-core/esm/domain/lifeCycle.js","../../../../../node_modules/@datadog/browser-rum-core/esm/domain/contexts/featureFlagContext.js","../../../../../node_modules/@datadog/browser-rum-core/esm/transport/startRumEventBridge.js","../../../../../node_modules/@datadog/browser-rum-core/esm/transport/startRumBatch.js","../../../../../node_modules/@datadog/browser-rum-core/esm/domain/contexts/viewHistory.js","../../../../../node_modules/@datadog/browser-rum-core/esm/domain/contexts/urlContexts.js","../../../../../node_modules/@datadog/browser-rum-core/esm/domain/action/trackClickActions.js","../../../../../node_modules/@datadog/browser-rum-core/esm/domain/action/clickChain.js","../../../../../node_modules/@datadog/browser-rum-core/esm/domain/contexts/displayContext.js","../../../../../node_modules/@datadog/browser-rum-core/esm/domain/contexts/syntheticsContext.js","../../../../../node_modules/@datadog/browser-rum-core/esm/domain/view/viewCollection.js","../../../../../node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackScrollMetrics.js","../../../../../node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackNavigationTimings.js","../../../../../node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackCommonViewMetrics.js","../../../../../node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackInitialViewMetrics.js","../../../../../node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackFirstContentfulPaint.js","../../../../../node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackLargestContentfulPaint.js","../../../../../node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackFirstInput.js","../../../../../node_modules/@datadog/browser-rum-core/esm/domain/view/trackViewEventCounts.js","../../../../../node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackLoadingTime.js","../../../../../node_modules/@datadog/browser-rum-core/esm/domain/view/viewMetrics/trackInteractionToNextPaint.js","../../../../../node_modules/@datadog/browser-core/esm/tools/taskQueue.js","../../../../../node_modules/@datadog/browser-rum-core/esm/domain/longAnimationFrame/longAnimationFrameCollection.js","../../../../../node_modules/@datadog/browser-rum-core/esm/domain/longTask/longTaskCollection.js","../../../../../node_modules/@datadog/browser-rum-core/esm/domain/error/trackReportError.js","../../../../../node_modules/@datadog/browser-rum/esm/boot/recorderApi.js","../../../../../node_modules/@datadog/browser-rum/esm/boot/preStartStrategy.js","../../../../../node_modules/@datadog/browser-rum/esm/boot/postStartStrategy.js","../../../../../node_modules/@datadog/browser-rum/esm/domain/getSessionReplayLink.js","../../../../../node_modules/@datadog/browser-rum-core/esm/domain/getSessionReplayUrl.js","../../../../../node_modules/@datadog/browser-rum/esm/boot/startRecording.js","../../../../../node_modules/@datadog/browser-rum/esm/domain/segmentCollection/segmentCollection.js","../../../../../node_modules/@datadog/browser-rum/esm/domain/startRecordBridge.js","../../../../../node_modules/@datadog/browser-rum/esm/domain/segmentCollection/buildReplayPayload.js","../../../../../node_modules/@datadog/browser-rum/esm/domain/segmentCollection/segment.js","../../../../../node_modules/@datadog/browser-rum/esm/domain/record/record.js","../../../../../node_modules/@datadog/browser-rum/esm/domain/record/elementsScrollPositions.js","../../../../../node_modules/@datadog/browser-rum/esm/domain/record/startFullSnapshots.js","../../../../../node_modules/@datadog/browser-rum/esm/domain/record/recordIds.js","../../../../../node_modules/@datadog/browser-rum/esm/domain/record/trackers/trackViewportResize.js","../../../../../node_modules/@datadog/browser-rum/esm/domain/record/trackers/trackFrustration.js","../../../../../node_modules/@datadog/browser-rum/esm/domain/record/trackers/trackViewEnd.js","../../../../../node_modules/@datadog/browser-rum/esm/domain/record/serialization/serializeDocument.js","../../../../../node_modules/@datadog/browser-rum/esm/domain/record/trackers/trackMediaInteraction.js","../../../../../node_modules/@datadog/browser-rum/esm/domain/record/trackers/trackFocus.js","../../../../../node_modules/tslib/tslib.es6.mjs","../../../../../node_modules/rxjs/dist/esm5/internal/util/isFunction.js","../../../../../node_modules/rxjs/dist/esm5/internal/util/createErrorClass.js","../../../../../node_modules/rxjs/dist/esm5/internal/util/UnsubscriptionError.js","../../../../../node_modules/rxjs/dist/esm5/internal/util/arrRemove.js","../../../../../node_modules/rxjs/dist/esm5/internal/Subscription.js","../../../../../node_modules/rxjs/dist/esm5/internal/config.js","../../../../../node_modules/rxjs/dist/esm5/internal/scheduler/timeoutProvider.js","../../../../../node_modules/rxjs/dist/esm5/internal/util/reportUnhandledError.js","../../../../../node_modules/rxjs/dist/esm5/internal/util/noop.js","../../../../../node_modules/rxjs/dist/esm5/internal/Subscriber.js","../../../../../node_modules/rxjs/dist/esm5/internal/symbol/observable.js","../../../../../node_modules/rxjs/dist/esm5/internal/util/identity.js","../../../../../node_modules/rxjs/dist/esm5/internal/util/pipe.js","../../../../../node_modules/rxjs/dist/esm5/internal/Observable.js","../../../../../node_modules/rxjs/dist/esm5/internal/util/lift.js","../../../../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js","../../../../../node_modules/rxjs/dist/esm5/internal/util/ObjectUnsubscribedError.js","../../../../../node_modules/rxjs/dist/esm5/internal/Subject.js","../../../../../node_modules/rxjs/dist/esm5/internal/util/errorContext.js","../../../../../node_modules/rxjs/dist/esm5/internal/BehaviorSubject.js","../../../../../node_modules/rxjs/dist/esm5/internal/scheduler/dateTimestampProvider.js","../../../../../node_modules/rxjs/dist/esm5/internal/ReplaySubject.js","../../../../../node_modules/rxjs/dist/esm5/internal/scheduler/Action.js","../../../../../node_modules/rxjs/dist/esm5/internal/scheduler/intervalProvider.js","../../../../../node_modules/rxjs/dist/esm5/internal/scheduler/AsyncAction.js","../../../../../node_modules/rxjs/dist/esm5/internal/Scheduler.js","../../../../../node_modules/rxjs/dist/esm5/internal/scheduler/async.js","../../../../../node_modules/rxjs/dist/esm5/internal/scheduler/AsyncScheduler.js","../../../../../node_modules/rxjs/dist/esm5/internal/observable/empty.js","../../../../../node_modules/rxjs/dist/esm5/internal/util/isScheduler.js","../../../../../node_modules/rxjs/dist/esm5/internal/util/args.js","../../../../../node_modules/rxjs/dist/esm5/internal/util/isArrayLike.js","../../../../../node_modules/rxjs/dist/esm5/internal/util/isPromise.js","../../../../../node_modules/rxjs/dist/esm5/internal/util/isAsyncIterable.js","../../../../../node_modules/rxjs/dist/esm5/internal/util/throwUnobservableError.js","../../../../../node_modules/rxjs/dist/esm5/internal/symbol/iterator.js","../../../../../node_modules/rxjs/dist/esm5/internal/util/isIterable.js","../../../../../node_modules/rxjs/dist/esm5/internal/util/isReadableStreamLike.js","../../../../../node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js","../../../../../node_modules/rxjs/dist/esm5/internal/util/isInteropObservable.js","../../../../../node_modules/rxjs/dist/esm5/internal/util/executeSchedule.js","../../../../../node_modules/rxjs/dist/esm5/internal/operators/observeOn.js","../../../../../node_modules/rxjs/dist/esm5/internal/operators/subscribeOn.js","../../../../../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleAsyncIterable.js","../../../../../node_modules/rxjs/dist/esm5/internal/observable/from.js","../../../../../node_modules/rxjs/dist/esm5/internal/scheduled/scheduled.js","../../../../../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleObservable.js","../../../../../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleArray.js","../../../../../node_modules/rxjs/dist/esm5/internal/scheduled/schedulePromise.js","../../../../../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleIterable.js","../../../../../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleReadableStreamLike.js","../../../../../node_modules/rxjs/dist/esm5/internal/observable/of.js","../../../../../node_modules/rxjs/dist/esm5/internal/observable/throwError.js","../../../../../node_modules/rxjs/dist/esm5/internal/util/isObservable.js","../../../../../node_modules/rxjs/dist/esm5/internal/util/EmptyError.js","../../../../../node_modules/rxjs/dist/esm5/internal/firstValueFrom.js","../../../../../node_modules/rxjs/dist/esm5/internal/util/isDate.js","../../../../../node_modules/rxjs/dist/esm5/internal/operators/timeout.js","../../../../../node_modules/rxjs/dist/esm5/internal/operators/map.js","../../../../../node_modules/rxjs/dist/esm5/internal/util/mapOneOrManyArgs.js","../../../../../node_modules/rxjs/dist/esm5/internal/util/argsArgArrayOrObject.js","../../../../../node_modules/rxjs/dist/esm5/internal/observable/combineLatest.js","../../../../../node_modules/rxjs/dist/esm5/internal/util/createObject.js","../../../../../node_modules/rxjs/dist/esm5/internal/operators/mergeMap.js","../../../../../node_modules/rxjs/dist/esm5/internal/operators/mergeInternals.js","../../../../../node_modules/rxjs/dist/esm5/internal/operators/mergeAll.js","../../../../../node_modules/rxjs/dist/esm5/internal/observable/concat.js","../../../../../node_modules/rxjs/dist/esm5/internal/operators/concatAll.js","../../../../../node_modules/rxjs/dist/esm5/internal/observable/iif.js","../../../../../node_modules/rxjs/dist/esm5/internal/observable/defer.js","../../../../../node_modules/rxjs/dist/esm5/internal/observable/timer.js","../../../../../node_modules/rxjs/dist/esm5/internal/observable/interval.js","../../../../../node_modules/rxjs/dist/esm5/internal/observable/merge.js","../../../../../node_modules/rxjs/dist/esm5/internal/observable/never.js","../../../../../node_modules/rxjs/dist/esm5/internal/util/argsOrArgArray.js","../../../../../node_modules/rxjs/dist/esm5/internal/operators/filter.js","../../../../../node_modules/rxjs/dist/esm5/internal/operators/catchError.js","../../../../../node_modules/rxjs/dist/esm5/internal/operators/combineLatest.js","../../../../../node_modules/rxjs/dist/esm5/internal/operators/combineLatestWith.js","../../../../../node_modules/rxjs/dist/esm5/internal/operators/concatMap.js","../../../../../node_modules/rxjs/dist/esm5/internal/operators/debounceTime.js","../../../../../node_modules/rxjs/dist/esm5/internal/operators/take.js","../../../../../node_modules/rxjs/dist/esm5/internal/operators/delay.js","../../../../../node_modules/rxjs/dist/esm5/internal/operators/delayWhen.js","../../../../../node_modules/rxjs/dist/esm5/internal/operators/ignoreElements.js","../../../../../node_modules/rxjs/dist/esm5/internal/operators/mapTo.js","../../../../../node_modules/rxjs/dist/esm5/internal/operators/distinctUntilChanged.js","../../../../../node_modules/rxjs/dist/esm5/internal/operators/pairwise.js","../../../../../node_modules/rxjs/dist/esm5/internal/operators/repeat.js","../../../../../node_modules/rxjs/dist/esm5/internal/operators/retry.js","../../../../../node_modules/rxjs/dist/esm5/internal/operators/scan.js","../../../../../node_modules/rxjs/dist/esm5/internal/operators/scanInternals.js","../../../../../node_modules/rxjs/dist/esm5/internal/operators/share.js","../../../../../node_modules/rxjs/dist/esm5/internal/operators/shareReplay.js","../../../../../node_modules/rxjs/dist/esm5/internal/operators/skip.js","../../../../../node_modules/rxjs/dist/esm5/internal/operators/startWith.js","../../../../../node_modules/rxjs/dist/esm5/internal/operators/switchMap.js","../../../../../node_modules/rxjs/dist/esm5/internal/operators/takeUntil.js","../../../../../node_modules/rxjs/dist/esm5/internal/operators/tap.js","../../../../../node_modules/rxjs/dist/esm5/internal/operators/throttleTime.js","../../../../../node_modules/rxjs/dist/esm5/internal/operators/throttle.js","../../../../../node_modules/rxjs/dist/esm5/internal/operators/withLatestFrom.js","../../../../../node_modules/@babel/runtime/helpers/esm/typeof.js","../../../../../node_modules/date-fns/esm/_lib/toInteger/index.js","../../../../../node_modules/date-fns/esm/_lib/requiredArgs/index.js","../../../../../node_modules/date-fns/esm/toDate/index.js","../../../../../node_modules/date-fns/esm/addDays/index.js","../../../../../node_modules/date-fns/esm/addMonths/index.js","../../../../../node_modules/date-fns/esm/add/index.js","../../../../../node_modules/date-fns/esm/addMilliseconds/index.js","../../../../../node_modules/date-fns/esm/addHours/index.js","../../../../../node_modules/date-fns/esm/_lib/defaultOptions/index.js","../../../../../node_modules/date-fns/esm/startOfWeek/index.js","../../../../../node_modules/date-fns/esm/_lib/getTimezoneOffsetInMilliseconds/index.js","../../../../../node_modules/date-fns/esm/startOfDay/index.js","../../../../../node_modules/date-fns/esm/differenceInCalendarDays/index.js","../../../../../node_modules/date-fns/esm/addMinutes/index.js","../../../../../node_modules/date-fns/esm/addSeconds/index.js","../../../../../node_modules/date-fns/esm/addYears/index.js","../../../../../node_modules/date-fns/esm/compareAsc/index.js","../../../../../node_modules/date-fns/esm/isSameDay/index.js","../../../../../node_modules/date-fns/esm/isValid/index.js","../../../../../node_modules/date-fns/esm/isDate/index.js","../../../../../node_modules/date-fns/esm/differenceInDays/index.js","../../../../../node_modules/date-fns/esm/differenceInMilliseconds/index.js","../../../../../node_modules/date-fns/esm/_lib/roundingMethods/index.js","../../../../../node_modules/date-fns/esm/differenceInHours/index.js","../../../../../node_modules/date-fns/esm/constants/index.js","../../../../../node_modules/date-fns/esm/differenceInMinutes/index.js","../../../../../node_modules/date-fns/esm/differenceInSeconds/index.js","../../../../../node_modules/date-fns/esm/startOfMinute/index.js","../../../../../node_modules/date-fns/esm/startOfMonth/index.js","../../../../../node_modules/date-fns/esm/startOfYear/index.js","../../../../../node_modules/date-fns/esm/subMilliseconds/index.js","../../../../../node_modules/date-fns/esm/_lib/startOfUTCISOWeek/index.js","../../../../../node_modules/date-fns/esm/_lib/getUTCISOWeekYear/index.js","../../../../../node_modules/date-fns/esm/_lib/getUTCISOWeek/index.js","../../../../../node_modules/date-fns/esm/_lib/startOfUTCISOWeekYear/index.js","../../../../../node_modules/date-fns/esm/_lib/startOfUTCWeek/index.js","../../../../../node_modules/date-fns/esm/_lib/getUTCWeekYear/index.js","../../../../../node_modules/date-fns/esm/_lib/getUTCWeek/index.js","../../../../../node_modules/date-fns/esm/_lib/startOfUTCWeekYear/index.js","../../../../../node_modules/date-fns/esm/_lib/addLeadingZeros/index.js","../../../../../node_modules/date-fns/esm/_lib/format/lightFormatters/index.js","../../../../../node_modules/date-fns/esm/_lib/format/formatters/index.js","../../../../../node_modules/date-fns/esm/_lib/getUTCDayOfYear/index.js","../../../../../node_modules/date-fns/esm/_lib/format/longFormatters/index.js","../../../../../node_modules/date-fns/esm/_lib/protectedTokens/index.js","../../../../../node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js","../../../../../node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js","../../../../../node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js","../../../../../node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js","../../../../../node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js","../../../../../node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js","../../../../../node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js","../../../../../node_modules/date-fns/esm/locale/en-US/_lib/match/index.js","../../../../../node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js","../../../../../node_modules/date-fns/esm/locale/en-US/index.js","../../../../../node_modules/date-fns/esm/format/index.js","../../../../../node_modules/date-fns/esm/_lib/assign/index.js","../../../../../node_modules/date-fns/esm/formatDistanceStrict/index.js","../../../../../node_modules/date-fns/esm/_lib/cloneObject/index.js","../../../../../node_modules/date-fns/esm/formatDistanceToNow/index.js","../../../../../node_modules/date-fns/esm/formatDistance/index.js","../../../../../node_modules/date-fns/esm/differenceInMonths/index.js","../../../../../node_modules/date-fns/esm/differenceInCalendarMonths/index.js","../../../../../node_modules/date-fns/esm/isLastDayOfMonth/index.js","../../../../../node_modules/date-fns/esm/endOfDay/index.js","../../../../../node_modules/date-fns/esm/endOfMonth/index.js","../../../../../node_modules/date-fns/esm/formatDistanceToNowStrict/index.js","../../../../../node_modules/date-fns/esm/formatDuration/index.js","../../../../../node_modules/date-fns/esm/getHours/index.js","../../../../../node_modules/date-fns/esm/getMilliseconds/index.js","../../../../../node_modules/date-fns/esm/getMinutes/index.js","../../../../../node_modules/date-fns/esm/getSeconds/index.js","../../../../../node_modules/date-fns/esm/isAfter/index.js","../../../../../node_modules/date-fns/esm/isBefore/index.js","../../../../../node_modules/date-fns/esm/isEqual/index.js","../../../../../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../../../../../node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","../../../../../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../../../../../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../../../../../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../../../../../node_modules/@babel/runtime/helpers/esm/inherits.js","../../../../../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../../../../../node_modules/@babel/runtime/helpers/esm/createSuper.js","../../../../../node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../../../../../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../../../../../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../../../../../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../../../../../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../../../../../node_modules/@babel/runtime/helpers/esm/createClass.js","../../../../../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../../../../../node_modules/date-fns/esm/parse/_lib/Setter.js","../../../../../node_modules/date-fns/esm/parse/_lib/Parser.js","../../../../../node_modules/date-fns/esm/parse/_lib/parsers/EraParser.js","../../../../../node_modules/date-fns/esm/parse/_lib/constants.js","../../../../../node_modules/date-fns/esm/parse/_lib/utils.js","../../../../../node_modules/date-fns/esm/parse/_lib/parsers/YearParser.js","../../../../../node_modules/date-fns/esm/parse/_lib/parsers/LocalWeekYearParser.js","../../../../../node_modules/date-fns/esm/parse/_lib/parsers/ISOWeekYearParser.js","../../../../../node_modules/date-fns/esm/parse/_lib/parsers/ExtendedYearParser.js","../../../../../node_modules/date-fns/esm/parse/_lib/parsers/QuarterParser.js","../../../../../node_modules/date-fns/esm/parse/_lib/parsers/StandAloneQuarterParser.js","../../../../../node_modules/date-fns/esm/parse/_lib/parsers/MonthParser.js","../../../../../node_modules/date-fns/esm/parse/_lib/parsers/StandAloneMonthParser.js","../../../../../node_modules/date-fns/esm/parse/_lib/parsers/LocalWeekParser.js","../../../../../node_modules/date-fns/esm/_lib/setUTCWeek/index.js","../../../../../node_modules/date-fns/esm/parse/_lib/parsers/ISOWeekParser.js","../../../../../node_modules/date-fns/esm/_lib/setUTCISOWeek/index.js","../../../../../node_modules/date-fns/esm/parse/_lib/parsers/DateParser.js","../../../../../node_modules/date-fns/esm/parse/_lib/parsers/DayOfYearParser.js","../../../../../node_modules/date-fns/esm/_lib/setUTCDay/index.js","../../../../../node_modules/date-fns/esm/parse/_lib/parsers/DayParser.js","../../../../../node_modules/date-fns/esm/parse/_lib/parsers/LocalDayParser.js","../../../../../node_modules/date-fns/esm/parse/_lib/parsers/StandAloneLocalDayParser.js","../../../../../node_modules/date-fns/esm/parse/_lib/parsers/ISODayParser.js","../../../../../node_modules/date-fns/esm/_lib/setUTCISODay/index.js","../../../../../node_modules/date-fns/esm/parse/_lib/parsers/AMPMParser.js","../../../../../node_modules/date-fns/esm/parse/_lib/parsers/AMPMMidnightParser.js","../../../../../node_modules/date-fns/esm/parse/_lib/parsers/DayPeriodParser.js","../../../../../node_modules/date-fns/esm/parse/_lib/parsers/Hour1to12Parser.js","../../../../../node_modules/date-fns/esm/parse/_lib/parsers/Hour0to23Parser.js","../../../../../node_modules/date-fns/esm/parse/_lib/parsers/Hour0To11Parser.js","../../../../../node_modules/date-fns/esm/parse/_lib/parsers/Hour1To24Parser.js","../../../../../node_modules/date-fns/esm/parse/_lib/parsers/MinuteParser.js","../../../../../node_modules/date-fns/esm/parse/_lib/parsers/SecondParser.js","../../../../../node_modules/date-fns/esm/parse/_lib/parsers/FractionOfSecondParser.js","../../../../../node_modules/date-fns/esm/parse/_lib/parsers/ISOTimezoneWithZParser.js","../../../../../node_modules/date-fns/esm/parse/_lib/parsers/ISOTimezoneParser.js","../../../../../node_modules/date-fns/esm/parse/_lib/parsers/TimestampSecondsParser.js","../../../../../node_modules/date-fns/esm/parse/_lib/parsers/TimestampMillisecondsParser.js","../../../../../node_modules/date-fns/esm/parse/_lib/parsers/index.js","../../../../../node_modules/date-fns/esm/parse/index.js","../../../../../node_modules/date-fns/esm/isPast/index.js","../../../../../node_modules/date-fns/esm/isWithinInterval/index.js","../../../../../node_modules/date-fns/esm/subDays/index.js","../../../../../node_modules/date-fns/esm/roundToNearestMinutes/index.js","../../../../../node_modules/date-fns/esm/setHours/index.js","../../../../../node_modules/date-fns/esm/setMilliseconds/index.js","../../../../../node_modules/date-fns/esm/setMinutes/index.js","../../../../../node_modules/date-fns/esm/setSeconds/index.js","../../../../../node_modules/date-fns/esm/startOfToday/index.js","../../../../../node_modules/date-fns/esm/subMonths/index.js","../../../../../node_modules/date-fns/esm/sub/index.js","../../../../../node_modules/date-fns/esm/subHours/index.js","../../../../../node_modules/date-fns/esm/subMinutes/index.js","../../../../../node_modules/date-fns/esm/subWeeks/index.js","../../../../../node_modules/date-fns/esm/addWeeks/index.js","../../../../../node_modules/date-fns/esm/subYears/index.js","../../../../../node_modules/parse-duration/index.mjs","../../../../../node_modules/sugar/locales/de.js","../../../../../node_modules/sugar/locales/es.js","../../../../../node_modules/sugar/locales/fr.js","../../../../../node_modules/sugar/locales/it.js","../../../../../node_modules/sugar/locales/pl.js","../../../../../node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.production.min.js","../../../../../node_modules/hoist-non-react-statics/node_modules/react-is/index.js","../../../../../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../../../../../node_modules/@formatjs/ecma402-abstract/lib/utils.js","../../../../../node_modules/@formatjs/icu-messageformat-parser/lib/types.js","../../../../../node_modules/@formatjs/icu-messageformat-parser/lib/error.js","../../../../../node_modules/@formatjs/icu-messageformat-parser/lib/regex.generated.js","../../../../../node_modules/@formatjs/icu-messageformat-parser/node_modules/@formatjs/icu-skeleton-parser/lib/date-time.js","../../../../../node_modules/@formatjs/icu-messageformat-parser/node_modules/@formatjs/icu-skeleton-parser/lib/regex.generated.js","../../../../../node_modules/@formatjs/icu-messageformat-parser/node_modules/@formatjs/icu-skeleton-parser/lib/number.js","../../../../../node_modules/@formatjs/icu-messageformat-parser/lib/time-data.generated.js","../../../../../node_modules/@formatjs/icu-messageformat-parser/lib/parser.js","../../../../../node_modules/@formatjs/icu-messageformat-parser/lib/date-time-pattern-generator.js","../../../../../node_modules/@formatjs/icu-messageformat-parser/lib/index.js","../../../../../node_modules/@formatjs/fast-memoize/lib/index.js","../../../../../node_modules/intl-messageformat/lib/src/error.js","../../../../../node_modules/intl-messageformat/lib/src/formatters.js","../../../../../node_modules/intl-messageformat/lib/src/core.js","../../../../../node_modules/@formatjs/intl/lib/src/error.js","../../../../../node_modules/@formatjs/intl/lib/src/utils.js","../../../../../node_modules/@formatjs/intl/lib/src/message.js","../../../../../node_modules/@formatjs/intl/lib/src/dateTime.js","../../../../../node_modules/@formatjs/intl/lib/src/displayName.js","../../../../../node_modules/@formatjs/intl/lib/src/list.js","../../../../../node_modules/@formatjs/intl/lib/src/plural.js","../../../../../node_modules/@formatjs/intl/lib/src/relativeTime.js","../../../../../node_modules/@formatjs/intl/lib/src/number.js","../../../../../node_modules/react-intl/lib/src/utils.js","../../../../../node_modules/react-intl/lib/src/components/injectIntl.js","../../../../../node_modules/react-intl/lib/src/components/useIntl.js","../../../../../node_modules/react-intl/lib/src/components/createFormattedComponent.js","../../../../../node_modules/react-intl/lib/src/components/provider.js","../../../../../node_modules/@formatjs/intl/lib/src/create-intl.js","../../../../../node_modules/react-intl/lib/src/components/message.js","../../../../../node_modules/react-intl/lib/index.js","../../../../../node_modules/scheduler/cjs/scheduler.production.min.js","../../../../../node_modules/scheduler/index.js","../../../../../node_modules/react-dom/cjs/react-dom.production.min.js","../../../../../node_modules/react-dom/index.js","../../../../../node_modules/react-dom/client.js","../../../../../node_modules/react-is/cjs/react-is.production.min.js","../../../../../node_modules/react-is/index.js","../../../../../node_modules/@emotion/stylis/dist/stylis.browser.esm.js","../../../../../node_modules/@emotion/unitless/dist/unitless.browser.esm.js","../../../../../node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.browser.esm.js","../../../../../node_modules/styled-components/dist/styled-components.browser.esm.js","../../../../../node_modules/yup/es/util/printValue.js","../../../../../node_modules/yup/es/locale.js","../../../../../node_modules/lodash/_baseHas.js","../../../../../node_modules/lodash/isArray.js","../../../../../node_modules/lodash/_freeGlobal.js","../../../../../node_modules/lodash/_root.js","../../../../../node_modules/lodash/_Symbol.js","../../../../../node_modules/lodash/_getRawTag.js","../../../../../node_modules/lodash/_objectToString.js","../../../../../node_modules/lodash/_baseGetTag.js","../../../../../node_modules/lodash/isObjectLike.js","../../../../../node_modules/lodash/isSymbol.js","../../../../../node_modules/lodash/_isKey.js","../../../../../node_modules/lodash/isObject.js","../../../../../node_modules/lodash/isFunction.js","../../../../../node_modules/lodash/_coreJsData.js","../../../../../node_modules/lodash/_toSource.js","../../../../../node_modules/lodash/_baseIsNative.js","../../../../../node_modules/lodash/_getNative.js","../../../../../node_modules/lodash/_getValue.js","../../../../../node_modules/lodash/_nativeCreate.js","../../../../../node_modules/lodash/_hashGet.js","../../../../../node_modules/lodash/_hashHas.js","../../../../../node_modules/lodash/_Hash.js","../../../../../node_modules/lodash/_hashClear.js","../../../../../node_modules/lodash/_hashDelete.js","../../../../../node_modules/lodash/_hashSet.js","../../../../../node_modules/lodash/eq.js","../../../../../node_modules/lodash/_assocIndexOf.js","../../../../../node_modules/lodash/_listCacheDelete.js","../../../../../node_modules/lodash/_ListCache.js","../../../../../node_modules/lodash/_listCacheClear.js","../../../../../node_modules/lodash/_listCacheGet.js","../../../../../node_modules/lodash/_listCacheHas.js","../../../../../node_modules/lodash/_listCacheSet.js","../../../../../node_modules/lodash/_Map.js","../../../../../node_modules/lodash/_getMapData.js","../../../../../node_modules/lodash/_isKeyable.js","../../../../../node_modules/lodash/_MapCache.js","../../../../../node_modules/lodash/memoize.js","../../../../../node_modules/lodash/_mapCacheClear.js","../../../../../node_modules/lodash/_mapCacheDelete.js","../../../../../node_modules/lodash/_mapCacheGet.js","../../../../../node_modules/lodash/_mapCacheHas.js","../../../../../node_modules/lodash/_mapCacheSet.js","../../../../../node_modules/lodash/_stringToPath.js","../../../../../node_modules/lodash/_arrayMap.js","../../../../../node_modules/lodash/_baseToString.js","../../../../../node_modules/lodash/toString.js","../../../../../node_modules/lodash/_castPath.js","../../../../../node_modules/lodash/isArguments.js","../../../../../node_modules/lodash/_baseIsArguments.js","../../../../../node_modules/lodash/_isIndex.js","../../../../../node_modules/lodash/isLength.js","../../../../../node_modules/lodash/_toKey.js","../../../../../node_modules/lodash/_hasPath.js","../../../../../node_modules/lodash/has.js","../../../../../node_modules/yup/es/util/isSchema.js","../../../../../node_modules/yup/es/Condition.js","../../../../../node_modules/yup/es/util/toArray.js","../../../../../node_modules/yup/es/ValidationError.js","../../../../../node_modules/yup/es/util/runTests.js","../../../../../node_modules/lodash/_defineProperty.js","../../../../../node_modules/lodash/_baseAssignValue.js","../../../../../node_modules/lodash/stubFalse.js","../../../../../node_modules/lodash/_baseIsTypedArray.js","../../../../../node_modules/lodash/_baseUnary.js","../../../../../node_modules/lodash/isTypedArray.js","../../../../../node_modules/lodash/_arrayLikeKeys.js","../../../../../node_modules/lodash/_baseTimes.js","../../../../../node_modules/lodash/_isPrototype.js","../../../../../node_modules/lodash/_overArg.js","../../../../../node_modules/lodash/_nativeKeys.js","../../../../../node_modules/lodash/_baseKeys.js","../../../../../node_modules/lodash/isArrayLike.js","../../../../../node_modules/lodash/keys.js","../../../../../node_modules/lodash/_baseForOwn.js","../../../../../node_modules/lodash/_createBaseFor.js","../../../../../node_modules/lodash/_Stack.js","../../../../../node_modules/lodash/_SetCache.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/_setCacheAdd.js","../../../../../node_modules/lodash/_setCacheHas.js","../../../../../node_modules/lodash/_cacheHas.js","../../../../../node_modules/lodash/_equalArrays.js","../../../../../node_modules/lodash/_arraySome.js","../../../../../node_modules/lodash/_Uint8Array.js","../../../../../node_modules/lodash/_setToArray.js","../../../../../node_modules/lodash/_equalByTag.js","../../../../../node_modules/lodash/_mapToArray.js","../../../../../node_modules/lodash/_arrayPush.js","../../../../../node_modules/lodash/_getSymbols.js","../../../../../node_modules/lodash/_arrayFilter.js","../../../../../node_modules/lodash/stubArray.js","../../../../../node_modules/lodash/_getAllKeys.js","../../../../../node_modules/lodash/_baseGetAllKeys.js","../../../../../node_modules/lodash/_equalObjects.js","../../../../../node_modules/lodash/_DataView.js","../../../../../node_modules/lodash/_Promise.js","../../../../../node_modules/lodash/_Set.js","../../../../../node_modules/lodash/_WeakMap.js","../../../../../node_modules/lodash/_getTag.js","../../../../../node_modules/lodash/_baseIsEqualDeep.js","../../../../../node_modules/lodash/_baseIsEqual.js","../../../../../node_modules/lodash/_isStrictComparable.js","../../../../../node_modules/lodash/_matchesStrictComparable.js","../../../../../node_modules/lodash/_baseMatches.js","../../../../../node_modules/lodash/_baseIsMatch.js","../../../../../node_modules/lodash/_getMatchData.js","../../../../../node_modules/lodash/_baseGet.js","../../../../../node_modules/lodash/hasIn.js","../../../../../node_modules/lodash/_baseHasIn.js","../../../../../node_modules/lodash/_baseMatchesProperty.js","../../../../../node_modules/lodash/get.js","../../../../../node_modules/lodash/identity.js","../../../../../node_modules/lodash/_baseIteratee.js","../../../../../node_modules/lodash/property.js","../../../../../node_modules/lodash/_baseProperty.js","../../../../../node_modules/lodash/_basePropertyDeep.js","../../../../../node_modules/lodash/mapValues.js","../../../../../node_modules/property-expr/index.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/util/ReferenceSet.js","../../../../../node_modules/yup/es/schema.js","../../../../../node_modules/yup/es/mixed.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/lodash/_deburrLetter.js","../../../../../node_modules/lodash/deburr.js","../../../../../node_modules/lodash/_asciiWords.js","../../../../../node_modules/lodash/_hasUnicodeWord.js","../../../../../node_modules/lodash/_unicodeWords.js","../../../../../node_modules/lodash/_createCompounder.js","../../../../../node_modules/lodash/_arrayReduce.js","../../../../../node_modules/lodash/words.js","../../../../../node_modules/lodash/snakeCase.js","../../../../../node_modules/lodash/_castSlice.js","../../../../../node_modules/lodash/_baseSlice.js","../../../../../node_modules/lodash/_hasUnicode.js","../../../../../node_modules/lodash/_unicodeToArray.js","../../../../../node_modules/lodash/_createCaseFirst.js","../../../../../node_modules/lodash/capitalize.js","../../../../../node_modules/lodash/_stringToArray.js","../../../../../node_modules/lodash/_asciiToArray.js","../../../../../node_modules/lodash/upperFirst.js","../../../../../node_modules/lodash/camelCase.js","../../../../../node_modules/lodash/mapKeys.js","../../../../../node_modules/toposort/index.js","../../../../../node_modules/yup/es/util/sortByKeyOrder.js","../../../../../node_modules/yup/es/object.js","../../../../../node_modules/yup/es/util/sortFields.js","../../../../../node_modules/yup/es/array.js","../../../../../node_modules/@babel/runtime/helpers/esm/extends.js","../../../../../node_modules/polished/dist/polished.es.js","../../../../../node_modules/@react-spring/rafz/dist/react-spring-rafz.esm.js","../../../../../node_modules/@react-spring/animated/dist/react-spring-animated.esm.js","../../../../../node_modules/@react-spring/web/dist/react-spring-web.esm.js","../../../../../node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js","../../../../../node_modules/@popperjs/core/lib/enums.js","../../../../../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../../../../../node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../../../../../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../../../../../node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../../../../../node_modules/@popperjs/core/lib/utils/math.js","../../../../../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","../../../../../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","../../../../../node_modules/@popperjs/core/lib/dom-utils/contains.js","../../../../../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","../../../../../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","../../../../../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","../../../../../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","../../../../../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","../../../../../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","../../../../../node_modules/@popperjs/core/lib/utils/within.js","../../../../../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","../../../../../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","../../../../../node_modules/@popperjs/core/lib/utils/expandToHashMap.js","../../../../../node_modules/@popperjs/core/lib/utils/getVariation.js","../../../../../node_modules/@popperjs/core/lib/modifiers/computeStyles.js","../../../../../node_modules/@popperjs/core/lib/modifiers/eventListeners.js","../../../../../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","../../../../../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","../../../../../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","../../../../../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","../../../../../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","../../../../../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","../../../../../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","../../../../../node_modules/@popperjs/core/lib/utils/rectToClientRect.js","../../../../../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","../../../../../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","../../../../../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","../../../../../node_modules/@popperjs/core/lib/utils/computeOffsets.js","../../../../../node_modules/@popperjs/core/lib/utils/detectOverflow.js","../../../../../node_modules/@popperjs/core/lib/modifiers/hide.js","../../../../../node_modules/@popperjs/core/lib/popper.js","../../../../../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","../../../../../node_modules/@popperjs/core/lib/modifiers/applyStyles.js","../../../../../node_modules/@popperjs/core/lib/modifiers/offset.js","../../../../../node_modules/@popperjs/core/lib/modifiers/flip.js","../../../../../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","../../../../../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","../../../../../node_modules/@popperjs/core/lib/utils/getAltAxis.js","../../../../../node_modules/@popperjs/core/lib/modifiers/arrow.js","../../../../../node_modules/@popperjs/core/lib/utils/debounce.js","../../../../../node_modules/@popperjs/core/lib/utils/mergeByName.js","../../../../../node_modules/@popperjs/core/lib/utils/orderModifiers.js","../../../../../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","../../../../../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","../../../../../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","../../../../../node_modules/react-popper/lib/esm/utils.js","../../../../../node_modules/react-fast-compare/index.js","../../../../../node_modules/react-popper/lib/esm/usePopper.js","../../../../../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../../../../../node_modules/prop-types/factoryWithThrowingShims.js","../../../../../node_modules/prop-types/index.js","../../../../../node_modules/prop-types/lib/ReactPropTypesSecret.js","../../../../../node_modules/focus-lock/dist/es2015/constants.js","../../../../../node_modules/react-focus-lock/dist/es2015/FocusGuard.js","../../../../../node_modules/use-sidecar/node_modules/tslib/tslib.es6.js","../../../../../node_modules/react-focus-lock/dist/es2015/medium.js","../../../../../node_modules/react-focus-lock/dist/es2015/Lock.js","../../../../../node_modules/use-callback-ref/dist/es2015/useMergeRef.js","../../../../../node_modules/use-callback-ref/dist/es2015/useRef.js","../../../../../node_modules/use-callback-ref/dist/es2015/assignRef.js","../../../../../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../../../../../node_modules/focus-lock/dist/es2015/utils/array.js","../../../../../node_modules/focus-lock/dist/es2015/utils/all-affected.js","../../../../../node_modules/focus-lock/dist/es2015/utils/getActiveElement.js","../../../../../node_modules/focus-lock/dist/es2015/focusInside.js","../../../../../node_modules/focus-lock/dist/es2015/focusIsHidden.js","../../../../../node_modules/focus-lock/dist/es2015/utils/is.js","../../../../../node_modules/focus-lock/dist/es2015/utils/correctFocus.js","../../../../../node_modules/focus-lock/dist/es2015/utils/firstFocus.js","../../../../../node_modules/focus-lock/dist/es2015/solver.js","../../../../../node_modules/focus-lock/dist/es2015/utils/tabOrder.js","../../../../../node_modules/focus-lock/dist/es2015/utils/tabUtils.js","../../../../../node_modules/focus-lock/dist/es2015/utils/DOMutils.js","../../../../../node_modules/focus-lock/dist/es2015/utils/parenting.js","../../../../../node_modules/focus-lock/dist/es2015/focusMerge.js","../../../../../node_modules/focus-lock/dist/es2015/focusables.js","../../../../../node_modules/focus-lock/dist/es2015/setFocus.js","../../../../../node_modules/react-focus-lock/dist/es2015/util.js","../../../../../node_modules/react-focus-lock/dist/es2015/Trap.js","../../../../../node_modules/react-focus-lock/dist/es2015/Combination.js","../../../../../node_modules/react-use/esm/useUpdateEffect.js","../../../../../node_modules/react-use/esm/useFirstMountState.js","../../../../../node_modules/react-use/esm/useMountedState.js","../../../../../node_modules/react-use/esm/useAsyncFn.js","../../../../../node_modules/react-use/esm/useAsync.js","../../../../../node_modules/react-use/esm/useSetState.js","../../../../../node_modules/react-use/esm/misc/util.js","../../../../../node_modules/react-use/esm/useToggle.js","../../../../../node_modules/copy-to-clipboard/index.js","../../../../../node_modules/toggle-selection/index.js","../../../../../node_modules/react-use/esm/useCopyToClipboard.js","../../../../../node_modules/react-use/esm/useIsomorphicLayoutEffect.js","../../../../../node_modules/react-use/esm/useCustomCompareEffect.js","../../../../../node_modules/react-use/esm/useDebounce.js","../../../../../node_modules/react-use/esm/useTimeoutFn.js","../../../../../node_modules/react-use/esm/useEffectOnce.js","../../../../../node_modules/react-use/esm/useEvent.js","../../../../../node_modules/react-use/esm/useInterval.js","../../../../../node_modules/react-use/esm/useLocation.js","../../../../../node_modules/react-use/esm/useMethods.js","../../../../../node_modules/react-use/esm/useMount.js","../../../../../node_modules/react-use/esm/useUnmount.js","../../../../../node_modules/react-use/esm/usePrevious.js","../../../../../node_modules/fast-shallow-equal/index.js","../../../../../node_modules/react-use/esm/useShallowCompareEffect.js","../../../../../node_modules/react-use/esm/useMeasure.js","../../../../../node_modules/react-use/esm/factory/createGlobalState.js","../../../../../node_modules/react-use/esm/misc/hookState.js","../../../../../node_modules/resolve-pathname/esm/resolve-pathname.js","../../../../../node_modules/value-equal/esm/value-equal.js","../../../../../node_modules/tiny-invariant/dist/tiny-invariant.esm.js","../../../../../node_modules/history/esm/history.js","../../../../../node_modules/react-router/node_modules/isarray/index.js","../../../../../node_modules/react-router/node_modules/path-to-regexp/index.js","../../../../../node_modules/react-router/node_modules/react-is/cjs/react-is.production.min.js","../../../../../node_modules/react-router/esm/react-router.js","../../../../../node_modules/react-router-dom/esm/react-router-dom.js","../../../../../packages/kyoko/node_modules/uuid/dist/esm-browser/regex.js","../../../../../packages/kyoko/node_modules/uuid/dist/esm-browser/validate.js","../../../../../packages/kyoko/node_modules/uuid/dist/esm-browser/stringify.js","../../../../../packages/kyoko/node_modules/uuid/dist/esm-browser/v4.js","../../../../../node_modules/rifm/dist/rifm.esm.js","../../../../../node_modules/react-window/node_modules/memoize-one/dist/memoize-one.esm.js","../../../../../node_modules/react-window/dist/index.esm.js","../../../../../node_modules/downshift/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../../../../../node_modules/downshift/node_modules/@babel/runtime/helpers/esm/extends.js","../../../../../node_modules/compute-scroll-into-view/dist/index.js","../../../../../node_modules/downshift/dist/downshift.esm.js","../../../../../node_modules/fuse.js/dist/fuse.esm.js","../../../../../node_modules/rxjs/dist/esm5/internal/observable/dom/WebSocketSubject.js","../../../../../node_modules/rxjs/dist/esm5/internal/observable/dom/webSocket.js","../../../../../node_modules/react-intersection-observer/index.mjs","../../../../../node_modules/lru-cache/dist/esm/index.js","../../../../../node_modules/redux/dist/redux.mjs","../../../../../node_modules/use-memo-one/dist/use-memo-one.esm.js","../../../../../node_modules/css-box-model/dist/css-box-model.esm.js","../../../../../node_modules/memoize-one/dist/memoize-one.esm.js","../../../../../node_modules/raf-schd/dist/raf-schd.esm.js","../../../../../node_modules/@hello-pangea/dnd/node_modules/@babel/runtime/helpers/esm/extends.js","../../../../../node_modules/@hello-pangea/dnd/dist/dnd.esm.js","../../../../../node_modules/@ag-grid-community/locale/dist/package/main.esm.mjs","../../../../../node_modules/react-day-picker/lib/react-day-picker.min.js","../../../../../node_modules/react-virtualized-auto-sizer/dist/index.esm.js","../../../../../node_modules/ag-grid-react/dist/package/index.esm.mjs","../../../../../node_modules/lodash-es/_freeGlobal.js","../../../../../node_modules/lodash-es/_root.js","../../../../../node_modules/lodash-es/_Symbol.js","../../../../../node_modules/lodash-es/_getRawTag.js","../../../../../node_modules/lodash-es/_objectToString.js","../../../../../node_modules/lodash-es/_baseGetTag.js","../../../../../node_modules/lodash-es/isObjectLike.js","../../../../../node_modules/lodash-es/isSymbol.js","../../../../../node_modules/lodash-es/_arrayMap.js","../../../../../node_modules/lodash-es/isArray.js","../../../../../node_modules/lodash-es/_baseToString.js","../../../../../node_modules/lodash-es/isObject.js","../../../../../node_modules/lodash-es/isFunction.js","../../../../../node_modules/lodash-es/_coreJsData.js","../../../../../node_modules/lodash-es/_toSource.js","../../../../../node_modules/lodash-es/_baseIsNative.js","../../../../../node_modules/lodash-es/_getNative.js","../../../../../node_modules/lodash-es/_getValue.js","../../../../../node_modules/lodash-es/_WeakMap.js","../../../../../node_modules/lodash-es/_defineProperty.js","../../../../../node_modules/lodash-es/_setToString.js","../../../../../node_modules/lodash-es/_baseSetToString.js","../../../../../node_modules/lodash-es/constant.js","../../../../../node_modules/lodash-es/identity.js","../../../../../node_modules/lodash-es/_isIndex.js","../../../../../node_modules/lodash-es/eq.js","../../../../../node_modules/lodash-es/_assignValue.js","../../../../../node_modules/lodash-es/isLength.js","../../../../../node_modules/lodash-es/_isPrototype.js","../../../../../node_modules/lodash-es/_baseIsArguments.js","../../../../../node_modules/lodash-es/isArguments.js","../../../../../node_modules/lodash-es/isBuffer.js","../../../../../node_modules/lodash-es/stubFalse.js","../../../../../node_modules/lodash-es/_baseIsTypedArray.js","../../../../../node_modules/lodash-es/_nodeUtil.js","../../../../../node_modules/lodash-es/isTypedArray.js","../../../../../node_modules/lodash-es/_baseUnary.js","../../../../../node_modules/lodash-es/_arrayLikeKeys.js","../../../../../node_modules/lodash-es/_nativeKeys.js","../../../../../node_modules/lodash-es/_baseKeys.js","../../../../../node_modules/lodash-es/keys.js","../../../../../node_modules/lodash-es/isArrayLike.js","../../../../../node_modules/lodash-es/_baseTimes.js","../../../../../node_modules/lodash-es/_isKey.js","../../../../../node_modules/lodash-es/_nativeCreate.js","../../../../../node_modules/lodash-es/_hashGet.js","../../../../../node_modules/lodash-es/_hashHas.js","../../../../../node_modules/lodash-es/_Hash.js","../../../../../node_modules/lodash-es/_assocIndexOf.js","../../../../../node_modules/lodash-es/_hashClear.js","../../../../../node_modules/lodash-es/_hashDelete.js","../../../../../node_modules/lodash-es/_hashSet.js","../../../../../node_modules/lodash-es/_listCacheDelete.js","../../../../../node_modules/lodash-es/_ListCache.js","../../../../../node_modules/lodash-es/_listCacheClear.js","../../../../../node_modules/lodash-es/_listCacheGet.js","../../../../../node_modules/lodash-es/_listCacheHas.js","../../../../../node_modules/lodash-es/_listCacheSet.js","../../../../../node_modules/lodash-es/_Map.js","../../../../../node_modules/lodash-es/_getMapData.js","../../../../../node_modules/lodash-es/_isKeyable.js","../../../../../node_modules/lodash-es/_MapCache.js","../../../../../node_modules/lodash-es/memoize.js","../../../../../node_modules/lodash-es/_mapCacheClear.js","../../../../../node_modules/lodash-es/_mapCacheDelete.js","../../../../../node_modules/lodash-es/_mapCacheGet.js","../../../../../node_modules/lodash-es/_mapCacheHas.js","../../../../../node_modules/lodash-es/_mapCacheSet.js","../../../../../node_modules/lodash-es/_stringToPath.js","../../../../../node_modules/lodash-es/_castPath.js","../../../../../node_modules/lodash-es/toString.js","../../../../../node_modules/lodash-es/_toKey.js","../../../../../node_modules/lodash-es/_baseGet.js","../../../../../node_modules/lodash-es/get.js","../../../../../node_modules/lodash-es/_arrayPush.js","../../../../../node_modules/lodash-es/_isFlattenable.js","../../../../../node_modules/lodash-es/_Stack.js","../../../../../node_modules/lodash-es/_stackClear.js","../../../../../node_modules/lodash-es/_stackDelete.js","../../../../../node_modules/lodash-es/_stackGet.js","../../../../../node_modules/lodash-es/_stackHas.js","../../../../../node_modules/lodash-es/_stackSet.js","../../../../../node_modules/lodash-es/_getSymbols.js","../../../../../node_modules/lodash-es/_arrayFilter.js","../../../../../node_modules/lodash-es/stubArray.js","../../../../../node_modules/lodash-es/_getAllKeys.js","../../../../../node_modules/lodash-es/_baseGetAllKeys.js","../../../../../node_modules/lodash-es/_DataView.js","../../../../../node_modules/lodash-es/_Promise.js","../../../../../node_modules/lodash-es/_Set.js","../../../../../node_modules/lodash-es/_getTag.js","../../../../../node_modules/lodash-es/_Uint8Array.js","../../../../../node_modules/lodash-es/_SetCache.js","../../../../../node_modules/lodash-es/_equalArrays.js","../../../../../node_modules/lodash-es/_arraySome.js","../../../../../node_modules/lodash-es/_cacheHas.js","../../../../../node_modules/lodash-es/_mapToArray.js","../../../../../node_modules/lodash-es/_setToArray.js","../../../../../node_modules/lodash-es/_setCacheAdd.js","../../../../../node_modules/lodash-es/_setCacheHas.js","../../../../../node_modules/lodash-es/_equalByTag.js","../../../../../node_modules/lodash-es/_equalObjects.js","../../../../../node_modules/lodash-es/_baseIsEqualDeep.js","../../../../../node_modules/lodash-es/_baseHasIn.js","../../../../../node_modules/lodash-es/values.js","../../../../../node_modules/lodash-es/_baseValues.js","../../../../../node_modules/lodash-es/isEqual.js","../../../../../node_modules/lodash-es/_baseIsEqual.js","../../../../../node_modules/lodash-es/pick.js","../../../../../node_modules/lodash-es/_basePick.js","../../../../../node_modules/lodash-es/_basePickBy.js","../../../../../node_modules/lodash-es/_baseSet.js","../../../../../node_modules/lodash-es/_baseAssignValue.js","../../../../../node_modules/lodash-es/hasIn.js","../../../../../node_modules/lodash-es/_hasPath.js","../../../../../node_modules/lodash-es/flatten.js","../../../../../node_modules/lodash-es/_baseFlatten.js","../../../../../node_modules/lodash-es/_apply.js","../../../../../node_modules/reselect/dist/reselect.mjs","../../../../../node_modules/redux-thunk/dist/redux-thunk.mjs","../../../../../node_modules/@reduxjs/toolkit/dist/redux-toolkit.modern.mjs","../../../../../node_modules/react-sparklines/build/index.js","../../../../../node_modules/chroma-js/chroma.js","../../../../../node_modules/fancy-canvas/size.mjs","../../../../../node_modules/fancy-canvas/device-pixel-ratio.mjs","../../../../../node_modules/fancy-canvas/canvas-element-bitmap-size.mjs","../../../../../node_modules/fancy-canvas/canvas-rendering-target.mjs","../../../../../node_modules/highcharts-react-official/dist/highcharts-react.min.js","../../../../../node_modules/deepmerge/dist/cjs.js","../../../../../node_modules/react-markdown/lib/uri-transformer.js","../../../../../node_modules/is-buffer/index.js","../../../../../node_modules/unist-util-stringify-position/index.js","../../../../../node_modules/vfile-message/index.js","../../../../../node_modules/vfile/lib/minpath.browser.js","../../../../../node_modules/vfile/lib/minurl.shared.js","../../../../../node_modules/vfile/lib/index.js","../../../../../node_modules/vfile/lib/minproc.browser.js","../../../../../node_modules/vfile/lib/minurl.browser.js","../../../../../node_modules/bail/index.js","../../../../../node_modules/extend/index.js","../../../../../node_modules/unified/node_modules/is-plain-obj/index.js","../../../../../node_modules/unified/lib/index.js","../../../../../node_modules/trough/index.js","../../../../../node_modules/mdast-util-to-string/index.js","../../../../../node_modules/micromark-util-chunked/index.js","../../../../../node_modules/micromark-util-combine-extensions/index.js","../../../../../node_modules/micromark-util-character/index.js","../../../../../node_modules/micromark-util-character/lib/unicode-punctuation-regex.js","../../../../../node_modules/micromark-factory-space/index.js","../../../../../node_modules/micromark/lib/initialize/content.js","../../../../../node_modules/micromark/lib/initialize/document.js","../../../../../node_modules/micromark-util-classify-character/index.js","../../../../../node_modules/micromark-util-resolve-all/index.js","../../../../../node_modules/micromark-core-commonmark/lib/attention.js","../../../../../node_modules/micromark-core-commonmark/lib/blank-line.js","../../../../../node_modules/micromark-core-commonmark/lib/block-quote.js","../../../../../node_modules/micromark-core-commonmark/lib/character-escape.js","../../../../../node_modules/decode-named-character-reference/index.dom.js","../../../../../node_modules/micromark-core-commonmark/lib/character-reference.js","../../../../../node_modules/micromark-core-commonmark/lib/code-fenced.js","../../../../../node_modules/micromark-core-commonmark/lib/code-indented.js","../../../../../node_modules/micromark-util-subtokenize/index.js","../../../../../node_modules/micromark-core-commonmark/lib/content.js","../../../../../node_modules/micromark-factory-destination/index.js","../../../../../node_modules/micromark-factory-label/index.js","../../../../../node_modules/micromark-factory-title/index.js","../../../../../node_modules/micromark-factory-whitespace/index.js","../../../../../node_modules/micromark-util-normalize-identifier/index.js","../../../../../node_modules/micromark-core-commonmark/lib/definition.js","../../../../../node_modules/micromark-util-html-tag-name/index.js","../../../../../node_modules/micromark-core-commonmark/lib/html-flow.js","../../../../../node_modules/micromark-core-commonmark/lib/label-end.js","../../../../../node_modules/micromark-core-commonmark/lib/label-start-image.js","../../../../../node_modules/micromark-core-commonmark/lib/label-start-link.js","../../../../../node_modules/micromark-core-commonmark/lib/line-ending.js","../../../../../node_modules/micromark-core-commonmark/lib/thematic-break.js","../../../../../node_modules/micromark-core-commonmark/lib/list.js","../../../../../node_modules/micromark-core-commonmark/lib/setext-underline.js","../../../../../node_modules/micromark/lib/initialize/flow.js","../../../../../node_modules/micromark/lib/initialize/text.js","../../../../../node_modules/micromark/lib/constructs.js","../../../../../node_modules/micromark-core-commonmark/lib/heading-atx.js","../../../../../node_modules/micromark-core-commonmark/lib/autolink.js","../../../../../node_modules/micromark-core-commonmark/lib/html-text.js","../../../../../node_modules/micromark-core-commonmark/lib/hard-break-escape.js","../../../../../node_modules/micromark-core-commonmark/lib/code-text.js","../../../../../node_modules/micromark/lib/preprocess.js","../../../../../node_modules/micromark-util-decode-numeric-character-reference/index.js","../../../../../node_modules/micromark-util-decode-string/index.js","../../../../../node_modules/mdast-util-from-markdown/lib/index.js","../../../../../node_modules/micromark/lib/postprocess.js","../../../../../node_modules/micromark/lib/parse.js","../../../../../node_modules/micromark/lib/create-tokenizer.js","../../../../../node_modules/remark-parse/lib/index.js","../../../../../node_modules/unist-builder/index.js","../../../../../node_modules/mdast-util-to-hast/lib/traverse.js","../../../../../node_modules/unist-util-is/index.js","../../../../../node_modules/unist-util-visit-parents/index.js","../../../../../node_modules/unist-util-visit/index.js","../../../../../node_modules/unist-util-position/index.js","../../../../../node_modules/mdast-util-definitions/index.js","../../../../../node_modules/micromark-util-sanitize-uri/index.js","../../../../../node_modules/mdast-util-to-hast/lib/wrap.js","../../../../../node_modules/mdast-util-to-hast/lib/handlers/footnote-reference.js","../../../../../node_modules/mdast-util-to-hast/lib/revert.js","../../../../../node_modules/mdast-util-to-hast/lib/handlers/list-item.js","../../../../../node_modules/trim-lines/index.js","../../../../../node_modules/mdast-util-to-hast/lib/handlers/index.js","../../../../../node_modules/mdast-util-to-hast/lib/handlers/blockquote.js","../../../../../node_modules/mdast-util-to-hast/lib/handlers/break.js","../../../../../node_modules/mdast-util-to-hast/lib/handlers/code.js","../../../../../node_modules/mdast-util-to-hast/lib/handlers/delete.js","../../../../../node_modules/mdast-util-to-hast/lib/handlers/emphasis.js","../../../../../node_modules/mdast-util-to-hast/lib/handlers/footnote.js","../../../../../node_modules/mdast-util-to-hast/lib/handlers/heading.js","../../../../../node_modules/mdast-util-to-hast/lib/handlers/html.js","../../../../../node_modules/mdast-util-to-hast/lib/handlers/image-reference.js","../../../../../node_modules/mdast-util-to-hast/lib/handlers/image.js","../../../../../node_modules/mdast-util-to-hast/lib/handlers/inline-code.js","../../../../../node_modules/mdast-util-to-hast/lib/handlers/link-reference.js","../../../../../node_modules/mdast-util-to-hast/lib/handlers/link.js","../../../../../node_modules/mdast-util-to-hast/lib/handlers/list.js","../../../../../node_modules/mdast-util-to-hast/lib/handlers/paragraph.js","../../../../../node_modules/mdast-util-to-hast/lib/handlers/root.js","../../../../../node_modules/mdast-util-to-hast/lib/handlers/strong.js","../../../../../node_modules/mdast-util-to-hast/lib/handlers/table.js","../../../../../node_modules/mdast-util-to-hast/lib/handlers/text.js","../../../../../node_modules/mdast-util-to-hast/lib/handlers/thematic-break.js","../../../../../node_modules/mdast-util-to-hast/lib/index.js","../../../../../node_modules/unist-util-generated/index.js","../../../../../node_modules/mdast-util-to-hast/lib/footer.js","../../../../../node_modules/remark-rehype/lib/index.js","../../../../../node_modules/property-information/lib/util/schema.js","../../../../../node_modules/property-information/lib/util/merge.js","../../../../../node_modules/property-information/lib/normalize.js","../../../../../node_modules/property-information/lib/util/info.js","../../../../../node_modules/property-information/lib/util/types.js","../../../../../node_modules/property-information/lib/util/defined-info.js","../../../../../node_modules/property-information/lib/util/create.js","../../../../../node_modules/property-information/lib/xlink.js","../../../../../node_modules/property-information/lib/xml.js","../../../../../node_modules/property-information/lib/util/case-sensitive-transform.js","../../../../../node_modules/property-information/lib/util/case-insensitive-transform.js","../../../../../node_modules/property-information/lib/xmlns.js","../../../../../node_modules/property-information/lib/aria.js","../../../../../node_modules/property-information/lib/html.js","../../../../../node_modules/property-information/lib/svg.js","../../../../../node_modules/property-information/lib/find.js","../../../../../node_modules/property-information/lib/hast-to-react.js","../../../../../node_modules/property-information/index.js","../../../../../node_modules/react-markdown/lib/rehype-filter.js","../../../../../node_modules/inline-style-parser/index.js","../../../../../node_modules/style-to-object/index.js","../../../../../node_modules/react-markdown/lib/ast-to-react.js","../../../../../node_modules/react-markdown/lib/react-markdown.js","../../../../../node_modules/comma-separated-tokens/index.js","../../../../../node_modules/space-separated-tokens/index.js","../../../../../node_modules/hast-util-whitespace/index.js","../../../../../node_modules/rc-slider/node_modules/@babel/runtime/helpers/esm/typeof.js","../../../../../node_modules/rc-slider/node_modules/@babel/runtime/helpers/esm/defineProperty.js","../../../../../node_modules/rc-slider/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../../../../../node_modules/rc-slider/node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../../../../../node_modules/rc-slider/node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../../../../../node_modules/rc-slider/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../../../../../node_modules/rc-slider/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../../../../../node_modules/rc-slider/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../../../../../node_modules/rc-slider/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../../../../../node_modules/rc-slider/node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../../../../../node_modules/rc-slider/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../../../../../node_modules/rc-slider/node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../../../../../node_modules/rc-slider/node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../../../../../node_modules/rc-slider/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../../../../../node_modules/rc-slider/node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../../../../../node_modules/classnames/index.js","../../../../../node_modules/rc-util/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../../../../../node_modules/rc-util/node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../../../../../node_modules/rc-util/node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../../../../../node_modules/rc-util/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../../../../../node_modules/rc-util/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../../../../../node_modules/rc-util/node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../../../../../node_modules/rc-util/es/hooks/useEvent.js","../../../../../node_modules/rc-util/es/hooks/useLayoutEffect.js","../../../../../node_modules/rc-util/es/Dom/canUseDom.js","../../../../../node_modules/rc-util/es/hooks/useState.js","../../../../../node_modules/rc-util/es/hooks/useMergedState.js","../../../../../node_modules/rc-util/node_modules/@babel/runtime/helpers/esm/typeof.js","../../../../../node_modules/rc-util/es/warning.js","../../../../../node_modules/rc-slider/es/context.js","../../../../../node_modules/rc-slider/node_modules/@babel/runtime/helpers/esm/extends.js","../../../../../node_modules/rc-slider/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../../../../../node_modules/rc-slider/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../../../../../node_modules/rc-util/es/KeyCode.js","../../../../../node_modules/rc-slider/es/util.js","../../../../../node_modules/rc-slider/es/Handles/Handle.js","../../../../../node_modules/rc-slider/es/Handles/index.js","../../../../../node_modules/rc-slider/es/hooks/useDrag.js","../../../../../node_modules/rc-slider/es/Marks/Mark.js","../../../../../node_modules/rc-slider/es/Marks/index.js","../../../../../node_modules/rc-slider/es/Steps/Dot.js","../../../../../node_modules/rc-slider/es/Steps/index.js","../../../../../node_modules/rc-slider/es/Tracks/Track.js","../../../../../node_modules/rc-slider/es/Tracks/index.js","../../../../../node_modules/rc-slider/es/Slider.js","../../../../../node_modules/rc-slider/es/hooks/useOffset.js","../../../../../node_modules/rc-util/es/isEqual.js","../../../../../node_modules/@epic-web/invariant/dist/index.js","../../../../../node_modules/dockview-core/dist/esm/dnd/dataTransfer.js","../../../../../node_modules/dockview-core/dist/esm/dom.js","../../../../../node_modules/dockview-core/dist/esm/array.js","../../../../../node_modules/dockview-core/dist/esm/math.js","../../../../../node_modules/dockview-core/dist/esm/splitview/viewItem.js","../../../../../node_modules/dockview-core/dist/esm/paneview/paneview.js","../../../../../node_modules/dockview-core/dist/esm/gridview/leafNode.js","../../../../../node_modules/dockview-core/dist/esm/gridview/branchNode.js","../../../../../node_modules/dockview-core/dist/esm/gridview/gridview.js","../../../../../node_modules/dockview-core/dist/esm/resizable.js","../../../../../node_modules/dockview-core/dist/esm/gridview/baseComponentGridview.js","../../../../../node_modules/dockview-core/dist/esm/api/component.api.js","../../../../../node_modules/dockview-core/dist/esm/dnd/abstractDragHandler.js","../../../../../node_modules/dockview-core/dist/esm/dnd/dnd.js","../../../../../node_modules/dockview-core/dist/esm/dnd/droptarget.js","../../../../../node_modules/dockview-core/dist/esm/api/panelApi.js","../../../../../node_modules/dockview-core/dist/esm/api/splitviewPanelApi.js","../../../../../node_modules/dockview-core/dist/esm/api/paneviewPanelApi.js","../../../../../node_modules/dockview-core/dist/esm/gridview/basePanelView.js","../../../../../node_modules/dockview-core/dist/esm/paneview/paneviewPanel.js","../../../../../node_modules/dockview-core/dist/esm/paneview/draggablePaneviewPanel.js","../../../../../node_modules/dockview-core/dist/esm/dockview/components/panel/content.js","../../../../../node_modules/dockview-core/dist/esm/dockview/components/tab/tab.js","../../../../../node_modules/dockview-core/dist/esm/dnd/groupDragHandler.js","../../../../../node_modules/dockview-core/dist/esm/dnd/ghost.js","../../../../../node_modules/dockview-core/dist/esm/dockview/components/titlebar/voidContainer.js","../../../../../node_modules/dockview-core/dist/esm/dockview/components/titlebar/tabsContainer.js","../../../../../node_modules/dockview-core/dist/esm/dockview/options.js","../../../../../node_modules/dockview-core/dist/esm/dockview/dockviewGroupPanelModel.js","../../../../../node_modules/dockview-core/dist/esm/api/gridviewPanelApi.js","../../../../../node_modules/dockview-core/dist/esm/gridview/gridviewPanel.js","../../../../../node_modules/dockview-core/dist/esm/api/dockviewGroupPanelApi.js","../../../../../node_modules/dockview-core/dist/esm/dockview/dockviewGroupPanel.js","../../../../../node_modules/dockview-core/dist/esm/api/dockviewPanelApi.js","../../../../../node_modules/dockview-core/dist/esm/dockview/dockviewPanel.js","../../../../../node_modules/dockview-core/dist/esm/svg.js","../../../../../node_modules/dockview-core/dist/esm/dockview/components/tab/defaultTab.js","../../../../../node_modules/dockview-core/dist/esm/dockview/dockviewPanelModel.js","../../../../../node_modules/dockview-core/dist/esm/dockview/deserializer.js","../../../../../node_modules/dockview-core/dist/esm/dockview/components/watermark/watermark.js","../../../../../node_modules/dockview-core/dist/esm/overlay/overlay.js","../../../../../node_modules/dockview-core/dist/esm/dockview/dockviewFloatingGroupPanel.js","../../../../../node_modules/dockview-core/dist/esm/constants.js","../../../../../node_modules/dockview-core/dist/esm/overlay/overlayRenderContainer.js","../../../../../node_modules/dockview-core/dist/esm/popoutWindow.js","../../../../../node_modules/dockview-core/dist/esm/dockview/dockviewComponent.js","../../../../../node_modules/dockview-core/dist/esm/panel/componentFactory.js","../../../../../node_modules/dockview-core/dist/esm/gridview/gridviewComponent.js","../../../../../node_modules/dockview-core/dist/esm/splitview/splitviewComponent.js","../../../../../node_modules/dockview-core/dist/esm/paneview/defaultPaneviewHeader.js","../../../../../node_modules/dockview-core/dist/esm/paneview/paneviewComponent.js","../../../../../node_modules/dockview-core/dist/esm/splitview/splitviewPanel.js","../../../../../node_modules/dockview/dist/esm/dockview/reactContentPart.js","../../../../../node_modules/dockview/dist/esm/dockview/reactHeaderPart.js","../../../../../node_modules/dockview/dist/esm/dockview/reactWatermarkPart.js","../../../../../node_modules/dockview/dist/esm/dockview/headerActionsRenderer.js","../../../../../node_modules/dockview/dist/esm/dockview/dockview.js","../../../../../node_modules/dockview-core/dist/esm/api/entryPoints.js","../../../../../node_modules/dockview/dist/esm/svg.js","../../../../../node_modules/dockview/dist/esm/dockview/defaultTab.js","../../../../../node_modules/dockview/dist/esm/splitview/view.js","../../../../../node_modules/dockview/dist/esm/splitview/splitview.js","../../../../../node_modules/dockview/dist/esm/gridview/view.js","../../../../../node_modules/dockview/dist/esm/gridview/gridview.js","../../../../../node_modules/dockview/dist/esm/paneview/view.js","../../../../../node_modules/dockview/dist/esm/paneview/paneview.js","../../../../../node_modules/lodash/_baseIndexOf.js","../../../../../node_modules/lodash/_baseFindIndex.js","../../../../../node_modules/lodash/_baseIsNaN.js","../../../../../node_modules/lodash/_strictIndexOf.js","../../../../../node_modules/lodash/_arrayIncludes.js","../../../../../node_modules/lodash/_arrayIncludesWith.js","../../../../../node_modules/lodash/_isFlattenable.js","../../../../../node_modules/lodash/_baseFlatten.js","../../../../../node_modules/lodash/_overRest.js","../../../../../node_modules/lodash/_apply.js","../../../../../node_modules/lodash/_baseSetToString.js","../../../../../node_modules/lodash/constant.js","../../../../../node_modules/lodash/_setToString.js","../../../../../node_modules/lodash/_baseRest.js","../../../../../node_modules/lodash/isArrayLikeObject.js","../../../../../node_modules/lodash/difference.js","../../../../../node_modules/lodash/_baseDifference.js","../../../../../node_modules/lodash/_createSet.js","../../../../../node_modules/lodash/noop.js","../../../../../node_modules/lodash/union.js","../../../../../node_modules/lodash/_baseUniq.js","../../../../../node_modules/lodash/_getPrototype.js","../../../../../node_modules/lodash/isPlainObject.js","../../../../../node_modules/@redux-devtools/instrument/lib/esm/instrument.js","../../../../../node_modules/@redux-devtools/core/node_modules/@babel/runtime/helpers/esm/extends.js","../../../../../node_modules/@redux-devtools/core/lib/esm/createDevTools.js","../../../../../node_modules/@redux-devtools/instrument/lib/esm/getSymbolObservable.js","../../../../../node_modules/react-dock/node_modules/@babel/runtime/helpers/esm/typeof.js","../../../../../node_modules/react-dock/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../../../../../node_modules/react-dock/node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../../../../../node_modules/react-dock/node_modules/@babel/runtime/helpers/esm/createClass.js","../../../../../node_modules/react-dock/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../../../../../node_modules/react-dock/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../../../../../node_modules/react-dock/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../../../../../node_modules/react-dock/node_modules/@babel/runtime/helpers/esm/defineProperty.js","../../../../../node_modules/react-dock/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../../../../../node_modules/react-dock/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../../../../../node_modules/react-dock/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../../../../../node_modules/react-dock/node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../../../../../node_modules/react-dock/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../../../../../node_modules/react-dock/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../../../../../node_modules/lodash.debounce/index.js","../../../../../node_modules/react-dock/lib/esm/autoprefix.js","../../../../../node_modules/react-dock/node_modules/@babel/runtime/helpers/esm/inherits.js","../../../../../node_modules/react-dock/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../../../../../node_modules/react-dock/node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../../../../../node_modules/@redux-devtools/dock-monitor/lib/esm/actions.js","../../../../../node_modules/@redux-devtools/dock-monitor/lib/esm/constants.js","../../../../../node_modules/@redux-devtools/dock-monitor/lib/esm/reducers.js","../../../../../node_modules/parse-key/parse-key.js","../../../../../node_modules/parse-key/keycodes.js","../../../../../node_modules/@redux-devtools/dock-monitor/lib/esm/DockMonitor.js","../../../../../node_modules/redux-devtools-themes/src/nicinabox.js","../../../../../node_modules/base16/src/apathy.js","../../../../../node_modules/base16/src/ashes.js","../../../../../node_modules/base16/src/atelier-dune.js","../../../../../node_modules/base16/src/atelier-forest.js","../../../../../node_modules/base16/src/atelier-heath.js","../../../../../node_modules/base16/src/atelier-lakeside.js","../../../../../node_modules/base16/src/atelier-seaside.js","../../../../../node_modules/base16/src/bespin.js","../../../../../node_modules/base16/src/brewer.js","../../../../../node_modules/base16/src/bright.js","../../../../../node_modules/base16/src/chalk.js","../../../../../node_modules/base16/src/codeschool.js","../../../../../node_modules/base16/src/colors.js","../../../../../node_modules/base16/src/eighties.js","../../../../../node_modules/base16/src/embers.js","../../../../../node_modules/base16/src/flat.js","../../../../../node_modules/base16/src/google.js","../../../../../node_modules/base16/src/grayscale.js","../../../../../node_modules/base16/src/greenscreen.js","../../../../../node_modules/base16/src/harmonic.js","../../../../../node_modules/base16/src/hopscotch.js","../../../../../node_modules/base16/src/isotope.js","../../../../../node_modules/base16/src/marrakesh.js","../../../../../node_modules/base16/src/mocha.js","../../../../../node_modules/base16/src/monokai.js","../../../../../node_modules/base16/src/ocean.js","../../../../../node_modules/base16/src/paraiso.js","../../../../../node_modules/base16/src/pop.js","../../../../../node_modules/base16/src/railscasts.js","../../../../../node_modules/base16/src/shapeshifter.js","../../../../../node_modules/base16/src/solarized.js","../../../../../node_modules/base16/src/summerfruit.js","../../../../../node_modules/base16/src/threezerotwofour.js","../../../../../node_modules/base16/src/tomorrow.js","../../../../../node_modules/base16/src/tube.js","../../../../../node_modules/base16/src/twilight.js","../../../../../node_modules/@redux-devtools/ui/lib/esm/themes/default.js","../../../../../node_modules/color-name/index.js","../../../../../node_modules/simple-swizzle/index.js","../../../../../node_modules/simple-swizzle/node_modules/is-arrayish/index.js","../../../../../node_modules/color-string/index.js","../../../../../node_modules/color-convert/conversions.js","../../../../../node_modules/color-convert/index.js","../../../../../node_modules/color-convert/route.js","../../../../../node_modules/@redux-devtools/ui/node_modules/color/index.js","../../../../../node_modules/@redux-devtools/ui/lib/esm/utils/color.js","../../../../../node_modules/@redux-devtools/ui/lib/esm/utils/createStyledComponent.js","../../../../../node_modules/@redux-devtools/ui/lib/esm/utils/animations.js","../../../../../node_modules/@redux-devtools/ui/lib/esm/Button/styles/default.js","../../../../../node_modules/@redux-devtools/ui/lib/esm/Button/styles/material.js","../../../../../node_modules/@redux-devtools/ui/lib/esm/Button/styles/common.js","../../../../../node_modules/@redux-devtools/ui/lib/esm/Button/Button.js","../../../../../node_modules/@redux-devtools/ui/lib/esm/utils/autoPrefix.js","../../../../../node_modules/@redux-devtools/ui/lib/esm/Slider/styles/default.js","../../../../../node_modules/@redux-devtools/ui/lib/esm/Slider/styles/material.js","../../../../../node_modules/@redux-devtools/ui/lib/esm/Slider/Slider.js","../../../../../node_modules/@redux-devtools/ui/lib/esm/Slider/styles/common.js","../../../../../node_modules/@redux-devtools/ui/lib/esm/SegmentedControl/SegmentedControl.js","../../../../../node_modules/@redux-devtools/ui/lib/esm/SegmentedControl/styles/index.js","../../../../../node_modules/@redux-devtools/ui/lib/esm/Toolbar/styles/Toolbar.js","../../../../../node_modules/@redux-devtools/ui/lib/esm/Toolbar/styles/Divider.js","../../../../../node_modules/@redux-devtools/slider-monitor/lib/esm/reducers.js","../../../../../node_modules/@redux-devtools/slider-monitor/lib/esm/SliderButton.js","../../../../../node_modules/@redux-devtools/slider-monitor/lib/esm/SliderMonitor.js","../../../node_modules/uuid/dist/esm-browser/regex.js","../../../node_modules/uuid/dist/esm-browser/validate.js","../../../node_modules/uuid/dist/esm-browser/stringify.js","../../../node_modules/uuid/dist/esm-browser/v4.js","../../../node_modules/uuid/dist/esm-browser/version.js","../../../../../node_modules/@reduxjs/toolkit/dist/query/react/rtk-query-react.modern.mjs","../../../../../node_modules/inherits/inherits_browser.js","../../../../../node_modules/base64-js/index.js","../../../../../node_modules/ieee754/index.js","../../../../../node_modules/buffer/index.js","../../../../../node_modules/safe-buffer/index.js","../../../../../node_modules/sha.js/hash.js","../../../../../node_modules/sha.js/sha.js","../../../../../node_modules/sha.js/sha1.js","../../../../../node_modules/sha.js/sha256.js","../../../../../node_modules/sha.js/sha224.js","../../../../../node_modules/sha.js/sha512.js","../../../../../node_modules/sha.js/sha384.js","../../../../../node_modules/sha.js/index.js","../../../../../node_modules/@tanstack/query-core/build/modern/subscribable.js","../../../../../node_modules/@tanstack/query-core/build/modern/utils.js","../../../../../node_modules/@tanstack/query-core/build/modern/focusManager.js","../../../../../node_modules/@tanstack/query-core/build/modern/onlineManager.js","../../../../../node_modules/@tanstack/query-core/build/modern/retryer.js","../../../../../node_modules/@tanstack/query-core/build/modern/notifyManager.js","../../../../../node_modules/@tanstack/query-core/build/modern/removable.js","../../../../../node_modules/@tanstack/query-core/build/modern/query.js","../../../../../node_modules/@tanstack/query-core/build/modern/queryCache.js","../../../../../node_modules/@tanstack/query-core/build/modern/mutation.js","../../../../../node_modules/@tanstack/query-core/build/modern/mutationCache.js","../../../../../node_modules/@tanstack/query-core/build/modern/infiniteQueryBehavior.js","../../../../../node_modules/@tanstack/query-core/build/modern/queryClient.js","../../../../../node_modules/@tanstack/query-core/build/modern/queryObserver.js","../../../../../node_modules/@tanstack/query-core/build/modern/mutationObserver.js","../../../../../node_modules/@tanstack/react-query/build/modern/QueryClientProvider.js","../../../../../node_modules/@tanstack/react-query/build/modern/isRestoring.js","../../../../../node_modules/@tanstack/react-query/build/modern/utils.js","../../../../../node_modules/@tanstack/react-query/build/modern/errorBoundaryUtils.js","../../../../../node_modules/@tanstack/react-query/build/modern/suspense.js","../../../../../node_modules/@tanstack/react-query/build/modern/useQuery.js","../../../../../node_modules/@tanstack/react-query/build/modern/useBaseQuery.js","../../../../../node_modules/@tanstack/react-query/build/modern/useMutation.js","../../../../../node_modules/papaparse/papaparse.min.js","../../../../../node_modules/react-autocomplete/build/lib/Autocomplete.js","../../../../../node_modules/dom-scroll-into-view/lib/dom-scroll-into-view.js","../../../../../node_modules/react-dom/cjs/react-dom-server-legacy.browser.production.min.js","../../../../../node_modules/react-dom/cjs/react-dom-server.browser.production.min.js","../../../../../node_modules/react-dom/server.browser.js"],"sourcesContent":["import { raf } from '@react-spring/rafz';\nexport { raf } from '@react-spring/rafz';\nimport * as React from 'react';\nimport { useRef, useState, useEffect } from 'react';\n\nfunction noop() {}\nconst defineHidden = (obj, key, value) => Object.defineProperty(obj, key, {\n value,\n writable: true,\n configurable: true\n});\nconst is = {\n arr: Array.isArray,\n obj: a => !!a && a.constructor.name === 'Object',\n fun: a => typeof a === 'function',\n str: a => typeof a === 'string',\n num: a => typeof a === 'number',\n und: a => a === undefined\n};\nfunction isEqual(a, b) {\n if (is.arr(a)) {\n if (!is.arr(b) || a.length !== b.length) return false;\n\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) return false;\n }\n\n return true;\n }\n\n return a === b;\n}\nconst each = (obj, fn) => obj.forEach(fn);\nfunction eachProp(obj, fn, ctx) {\n if (is.arr(obj)) {\n for (let i = 0; i < obj.length; i++) {\n fn.call(ctx, obj[i], `${i}`);\n }\n\n return;\n }\n\n for (const key in obj) {\n if (obj.hasOwnProperty(key)) {\n fn.call(ctx, obj[key], key);\n }\n }\n}\nconst toArray = a => is.und(a) ? [] : is.arr(a) ? a : [a];\nfunction flush(queue, iterator) {\n if (queue.size) {\n const items = Array.from(queue);\n queue.clear();\n each(items, iterator);\n }\n}\nconst flushCalls = (queue, ...args) => flush(queue, fn => fn(...args));\nconst isSSR = () => typeof window === 'undefined' || !window.navigator || /ServerSideRendering|^Deno\\//.test(window.navigator.userAgent);\n\nlet createStringInterpolator$1;\nlet to;\nlet colors$1 = null;\nlet skipAnimation = false;\nlet willAdvance = noop;\nconst assign = globals => {\n if (globals.to) to = globals.to;\n if (globals.now) raf.now = globals.now;\n if (globals.colors !== undefined) colors$1 = globals.colors;\n if (globals.skipAnimation != null) skipAnimation = globals.skipAnimation;\n if (globals.createStringInterpolator) createStringInterpolator$1 = globals.createStringInterpolator;\n if (globals.requestAnimationFrame) raf.use(globals.requestAnimationFrame);\n if (globals.batchedUpdates) raf.batchedUpdates = globals.batchedUpdates;\n if (globals.willAdvance) willAdvance = globals.willAdvance;\n if (globals.frameLoop) raf.frameLoop = globals.frameLoop;\n};\n\nvar globals = /*#__PURE__*/Object.freeze({\n __proto__: null,\n get createStringInterpolator () { return createStringInterpolator$1; },\n get to () { return to; },\n get colors () { return colors$1; },\n get skipAnimation () { return skipAnimation; },\n get willAdvance () { return willAdvance; },\n assign: assign\n});\n\nconst startQueue = new Set();\nlet currentFrame = [];\nlet prevFrame = [];\nlet priority = 0;\nconst frameLoop = {\n get idle() {\n return !startQueue.size && !currentFrame.length;\n },\n\n start(animation) {\n if (priority > animation.priority) {\n startQueue.add(animation);\n raf.onStart(flushStartQueue);\n } else {\n startSafely(animation);\n raf(advance);\n }\n },\n\n advance,\n\n sort(animation) {\n if (priority) {\n raf.onFrame(() => frameLoop.sort(animation));\n } else {\n const prevIndex = currentFrame.indexOf(animation);\n\n if (~prevIndex) {\n currentFrame.splice(prevIndex, 1);\n startUnsafely(animation);\n }\n }\n },\n\n clear() {\n currentFrame = [];\n startQueue.clear();\n }\n\n};\n\nfunction flushStartQueue() {\n startQueue.forEach(startSafely);\n startQueue.clear();\n raf(advance);\n}\n\nfunction startSafely(animation) {\n if (!currentFrame.includes(animation)) startUnsafely(animation);\n}\n\nfunction startUnsafely(animation) {\n currentFrame.splice(findIndex(currentFrame, other => other.priority > animation.priority), 0, animation);\n}\n\nfunction advance(dt) {\n const nextFrame = prevFrame;\n\n for (let i = 0; i < currentFrame.length; i++) {\n const animation = currentFrame[i];\n priority = animation.priority;\n\n if (!animation.idle) {\n willAdvance(animation);\n animation.advance(dt);\n\n if (!animation.idle) {\n nextFrame.push(animation);\n }\n }\n }\n\n priority = 0;\n prevFrame = currentFrame;\n prevFrame.length = 0;\n currentFrame = nextFrame;\n return currentFrame.length > 0;\n}\n\nfunction findIndex(arr, test) {\n const index = arr.findIndex(test);\n return index < 0 ? arr.length : index;\n}\n\nconst colors = {\n transparent: 0x00000000,\n aliceblue: 0xf0f8ffff,\n antiquewhite: 0xfaebd7ff,\n aqua: 0x00ffffff,\n aquamarine: 0x7fffd4ff,\n azure: 0xf0ffffff,\n beige: 0xf5f5dcff,\n bisque: 0xffe4c4ff,\n black: 0x000000ff,\n blanchedalmond: 0xffebcdff,\n blue: 0x0000ffff,\n blueviolet: 0x8a2be2ff,\n brown: 0xa52a2aff,\n burlywood: 0xdeb887ff,\n burntsienna: 0xea7e5dff,\n cadetblue: 0x5f9ea0ff,\n chartreuse: 0x7fff00ff,\n chocolate: 0xd2691eff,\n coral: 0xff7f50ff,\n cornflowerblue: 0x6495edff,\n cornsilk: 0xfff8dcff,\n crimson: 0xdc143cff,\n cyan: 0x00ffffff,\n darkblue: 0x00008bff,\n darkcyan: 0x008b8bff,\n darkgoldenrod: 0xb8860bff,\n darkgray: 0xa9a9a9ff,\n darkgreen: 0x006400ff,\n darkgrey: 0xa9a9a9ff,\n darkkhaki: 0xbdb76bff,\n darkmagenta: 0x8b008bff,\n darkolivegreen: 0x556b2fff,\n darkorange: 0xff8c00ff,\n darkorchid: 0x9932ccff,\n darkred: 0x8b0000ff,\n darksalmon: 0xe9967aff,\n darkseagreen: 0x8fbc8fff,\n darkslateblue: 0x483d8bff,\n darkslategray: 0x2f4f4fff,\n darkslategrey: 0x2f4f4fff,\n darkturquoise: 0x00ced1ff,\n darkviolet: 0x9400d3ff,\n deeppink: 0xff1493ff,\n deepskyblue: 0x00bfffff,\n dimgray: 0x696969ff,\n dimgrey: 0x696969ff,\n dodgerblue: 0x1e90ffff,\n firebrick: 0xb22222ff,\n floralwhite: 0xfffaf0ff,\n forestgreen: 0x228b22ff,\n fuchsia: 0xff00ffff,\n gainsboro: 0xdcdcdcff,\n ghostwhite: 0xf8f8ffff,\n gold: 0xffd700ff,\n goldenrod: 0xdaa520ff,\n gray: 0x808080ff,\n green: 0x008000ff,\n greenyellow: 0xadff2fff,\n grey: 0x808080ff,\n honeydew: 0xf0fff0ff,\n hotpink: 0xff69b4ff,\n indianred: 0xcd5c5cff,\n indigo: 0x4b0082ff,\n ivory: 0xfffff0ff,\n khaki: 0xf0e68cff,\n lavender: 0xe6e6faff,\n lavenderblush: 0xfff0f5ff,\n lawngreen: 0x7cfc00ff,\n lemonchiffon: 0xfffacdff,\n lightblue: 0xadd8e6ff,\n lightcoral: 0xf08080ff,\n lightcyan: 0xe0ffffff,\n lightgoldenrodyellow: 0xfafad2ff,\n lightgray: 0xd3d3d3ff,\n lightgreen: 0x90ee90ff,\n lightgrey: 0xd3d3d3ff,\n lightpink: 0xffb6c1ff,\n lightsalmon: 0xffa07aff,\n lightseagreen: 0x20b2aaff,\n lightskyblue: 0x87cefaff,\n lightslategray: 0x778899ff,\n lightslategrey: 0x778899ff,\n lightsteelblue: 0xb0c4deff,\n lightyellow: 0xffffe0ff,\n lime: 0x00ff00ff,\n limegreen: 0x32cd32ff,\n linen: 0xfaf0e6ff,\n magenta: 0xff00ffff,\n maroon: 0x800000ff,\n mediumaquamarine: 0x66cdaaff,\n mediumblue: 0x0000cdff,\n mediumorchid: 0xba55d3ff,\n mediumpurple: 0x9370dbff,\n mediumseagreen: 0x3cb371ff,\n mediumslateblue: 0x7b68eeff,\n mediumspringgreen: 0x00fa9aff,\n mediumturquoise: 0x48d1ccff,\n mediumvioletred: 0xc71585ff,\n midnightblue: 0x191970ff,\n mintcream: 0xf5fffaff,\n mistyrose: 0xffe4e1ff,\n moccasin: 0xffe4b5ff,\n navajowhite: 0xffdeadff,\n navy: 0x000080ff,\n oldlace: 0xfdf5e6ff,\n olive: 0x808000ff,\n olivedrab: 0x6b8e23ff,\n orange: 0xffa500ff,\n orangered: 0xff4500ff,\n orchid: 0xda70d6ff,\n palegoldenrod: 0xeee8aaff,\n palegreen: 0x98fb98ff,\n paleturquoise: 0xafeeeeff,\n palevioletred: 0xdb7093ff,\n papayawhip: 0xffefd5ff,\n peachpuff: 0xffdab9ff,\n peru: 0xcd853fff,\n pink: 0xffc0cbff,\n plum: 0xdda0ddff,\n powderblue: 0xb0e0e6ff,\n purple: 0x800080ff,\n rebeccapurple: 0x663399ff,\n red: 0xff0000ff,\n rosybrown: 0xbc8f8fff,\n royalblue: 0x4169e1ff,\n saddlebrown: 0x8b4513ff,\n salmon: 0xfa8072ff,\n sandybrown: 0xf4a460ff,\n seagreen: 0x2e8b57ff,\n seashell: 0xfff5eeff,\n sienna: 0xa0522dff,\n silver: 0xc0c0c0ff,\n skyblue: 0x87ceebff,\n slateblue: 0x6a5acdff,\n slategray: 0x708090ff,\n slategrey: 0x708090ff,\n snow: 0xfffafaff,\n springgreen: 0x00ff7fff,\n steelblue: 0x4682b4ff,\n tan: 0xd2b48cff,\n teal: 0x008080ff,\n thistle: 0xd8bfd8ff,\n tomato: 0xff6347ff,\n turquoise: 0x40e0d0ff,\n violet: 0xee82eeff,\n wheat: 0xf5deb3ff,\n white: 0xffffffff,\n whitesmoke: 0xf5f5f5ff,\n yellow: 0xffff00ff,\n yellowgreen: 0x9acd32ff\n};\n\nconst NUMBER = '[-+]?\\\\d*\\\\.?\\\\d+';\nconst PERCENTAGE = NUMBER + '%';\n\nfunction call(...parts) {\n return '\\\\(\\\\s*(' + parts.join(')\\\\s*,\\\\s*(') + ')\\\\s*\\\\)';\n}\n\nconst rgb = new RegExp('rgb' + call(NUMBER, NUMBER, NUMBER));\nconst rgba = new RegExp('rgba' + call(NUMBER, NUMBER, NUMBER, NUMBER));\nconst hsl = new RegExp('hsl' + call(NUMBER, PERCENTAGE, PERCENTAGE));\nconst hsla = new RegExp('hsla' + call(NUMBER, PERCENTAGE, PERCENTAGE, NUMBER));\nconst hex3 = /^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/;\nconst hex4 = /^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/;\nconst hex6 = /^#([0-9a-fA-F]{6})$/;\nconst hex8 = /^#([0-9a-fA-F]{8})$/;\n\nfunction normalizeColor(color) {\n let match;\n\n if (typeof color === 'number') {\n return color >>> 0 === color && color >= 0 && color <= 0xffffffff ? color : null;\n }\n\n if (match = hex6.exec(color)) return parseInt(match[1] + 'ff', 16) >>> 0;\n\n if (colors$1 && colors$1[color] !== undefined) {\n return colors$1[color];\n }\n\n if (match = rgb.exec(color)) {\n return (parse255(match[1]) << 24 | parse255(match[2]) << 16 | parse255(match[3]) << 8 | 0x000000ff) >>> 0;\n }\n\n if (match = rgba.exec(color)) {\n return (parse255(match[1]) << 24 | parse255(match[2]) << 16 | parse255(match[3]) << 8 | parse1(match[4])) >>> 0;\n }\n\n if (match = hex3.exec(color)) {\n return parseInt(match[1] + match[1] + match[2] + match[2] + match[3] + match[3] + 'ff', 16) >>> 0;\n }\n\n if (match = hex8.exec(color)) return parseInt(match[1], 16) >>> 0;\n\n if (match = hex4.exec(color)) {\n return parseInt(match[1] + match[1] + match[2] + match[2] + match[3] + match[3] + match[4] + match[4], 16) >>> 0;\n }\n\n if (match = hsl.exec(color)) {\n return (hslToRgb(parse360(match[1]), parsePercentage(match[2]), parsePercentage(match[3])) | 0x000000ff) >>> 0;\n }\n\n if (match = hsla.exec(color)) {\n return (hslToRgb(parse360(match[1]), parsePercentage(match[2]), parsePercentage(match[3])) | parse1(match[4])) >>> 0;\n }\n\n return null;\n}\n\nfunction hue2rgb(p, q, t) {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n}\n\nfunction hslToRgb(h, s, l) {\n const q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n const p = 2 * l - q;\n const r = hue2rgb(p, q, h + 1 / 3);\n const g = hue2rgb(p, q, h);\n const b = hue2rgb(p, q, h - 1 / 3);\n return Math.round(r * 255) << 24 | Math.round(g * 255) << 16 | Math.round(b * 255) << 8;\n}\n\nfunction parse255(str) {\n const int = parseInt(str, 10);\n if (int < 0) return 0;\n if (int > 255) return 255;\n return int;\n}\n\nfunction parse360(str) {\n const int = parseFloat(str);\n return (int % 360 + 360) % 360 / 360;\n}\n\nfunction parse1(str) {\n const num = parseFloat(str);\n if (num < 0) return 0;\n if (num > 1) return 255;\n return Math.round(num * 255);\n}\n\nfunction parsePercentage(str) {\n const int = parseFloat(str);\n if (int < 0) return 0;\n if (int > 100) return 1;\n return int / 100;\n}\n\nfunction colorToRgba(input) {\n let int32Color = normalizeColor(input);\n if (int32Color === null) return input;\n int32Color = int32Color || 0;\n let r = (int32Color & 0xff000000) >>> 24;\n let g = (int32Color & 0x00ff0000) >>> 16;\n let b = (int32Color & 0x0000ff00) >>> 8;\n let a = (int32Color & 0x000000ff) / 255;\n return `rgba(${r}, ${g}, ${b}, ${a})`;\n}\n\nconst createInterpolator = (range, output, extrapolate) => {\n if (is.fun(range)) {\n return range;\n }\n\n if (is.arr(range)) {\n return createInterpolator({\n range,\n output: output,\n extrapolate\n });\n }\n\n if (is.str(range.output[0])) {\n return createStringInterpolator$1(range);\n }\n\n const config = range;\n const outputRange = config.output;\n const inputRange = config.range || [0, 1];\n const extrapolateLeft = config.extrapolateLeft || config.extrapolate || 'extend';\n const extrapolateRight = config.extrapolateRight || config.extrapolate || 'extend';\n\n const easing = config.easing || (t => t);\n\n return input => {\n const range = findRange(input, inputRange);\n return interpolate(input, inputRange[range], inputRange[range + 1], outputRange[range], outputRange[range + 1], easing, extrapolateLeft, extrapolateRight, config.map);\n };\n};\n\nfunction interpolate(input, inputMin, inputMax, outputMin, outputMax, easing, extrapolateLeft, extrapolateRight, map) {\n let result = map ? map(input) : input;\n\n if (result < inputMin) {\n if (extrapolateLeft === 'identity') return result;else if (extrapolateLeft === 'clamp') result = inputMin;\n }\n\n if (result > inputMax) {\n if (extrapolateRight === 'identity') return result;else if (extrapolateRight === 'clamp') result = inputMax;\n }\n\n if (outputMin === outputMax) return outputMin;\n if (inputMin === inputMax) return input <= inputMin ? outputMin : outputMax;\n if (inputMin === -Infinity) result = -result;else if (inputMax === Infinity) result = result - inputMin;else result = (result - inputMin) / (inputMax - inputMin);\n result = easing(result);\n if (outputMin === -Infinity) result = -result;else if (outputMax === Infinity) result = result + outputMin;else result = result * (outputMax - outputMin) + outputMin;\n return result;\n}\n\nfunction findRange(input, inputRange) {\n for (var i = 1; i < inputRange.length - 1; ++i) if (inputRange[i] >= input) break;\n\n return i - 1;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nconst $get = Symbol.for('FluidValue.get');\nconst $observers = Symbol.for('FluidValue.observers');\n\nconst hasFluidValue = arg => Boolean(arg && arg[$get]);\n\nconst getFluidValue = arg => arg && arg[$get] ? arg[$get]() : arg;\n\nconst getFluidObservers = target => target[$observers] || null;\n\nfunction callFluidObserver(observer, event) {\n if (observer.eventObserved) {\n observer.eventObserved(event);\n } else {\n observer(event);\n }\n}\n\nfunction callFluidObservers(target, event) {\n let observers = target[$observers];\n\n if (observers) {\n observers.forEach(observer => {\n callFluidObserver(observer, event);\n });\n }\n}\n\nclass FluidValue {\n constructor(get) {\n this[$get] = void 0;\n this[$observers] = void 0;\n\n if (!get && !(get = this.get)) {\n throw Error('Unknown getter');\n }\n\n setFluidGetter(this, get);\n }\n\n}\n\nconst setFluidGetter = (target, get) => setHidden(target, $get, get);\n\nfunction addFluidObserver(target, observer) {\n if (target[$get]) {\n let observers = target[$observers];\n\n if (!observers) {\n setHidden(target, $observers, observers = new Set());\n }\n\n if (!observers.has(observer)) {\n observers.add(observer);\n\n if (target.observerAdded) {\n target.observerAdded(observers.size, observer);\n }\n }\n }\n\n return observer;\n}\n\nfunction removeFluidObserver(target, observer) {\n let observers = target[$observers];\n\n if (observers && observers.has(observer)) {\n const count = observers.size - 1;\n\n if (count) {\n observers.delete(observer);\n } else {\n target[$observers] = null;\n }\n\n if (target.observerRemoved) {\n target.observerRemoved(count, observer);\n }\n }\n}\n\nconst setHidden = (target, key, value) => Object.defineProperty(target, key, {\n value,\n writable: true,\n configurable: true\n});\n\nconst numberRegex = /[+\\-]?(?:0|[1-9]\\d*)(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?/g;\nconst colorRegex = /(#(?:[0-9a-f]{2}){2,4}|(#[0-9a-f]{3})|(rgb|hsl)a?\\((-?\\d+%?[,\\s]+){2,3}\\s*[\\d\\.]+%?\\))/gi;\nconst unitRegex = new RegExp(`(${numberRegex.source})(%|[a-z]+)`, 'i');\nconst rgbaRegex = /rgba\\(([0-9\\.-]+), ([0-9\\.-]+), ([0-9\\.-]+), ([0-9\\.-]+)\\)/gi;\nconst cssVariableRegex = /var\\((--[a-zA-Z0-9-_]+),? ?([a-zA-Z0-9 ()%#.,-]+)?\\)/;\n\nconst variableToRgba = input => {\n const [token, fallback] = parseCSSVariable(input);\n\n if (!token || isSSR()) {\n return input;\n }\n\n const value = window.getComputedStyle(document.documentElement).getPropertyValue(token);\n\n if (value) {\n return value.trim();\n } else if (fallback && fallback.startsWith('--')) {\n const _value = window.getComputedStyle(document.documentElement).getPropertyValue(fallback);\n\n if (_value) {\n return _value;\n } else {\n return input;\n }\n } else if (fallback && cssVariableRegex.test(fallback)) {\n return variableToRgba(fallback);\n } else if (fallback) {\n return fallback;\n }\n\n return input;\n};\n\nconst parseCSSVariable = current => {\n const match = cssVariableRegex.exec(current);\n if (!match) return [,];\n const [, token, fallback] = match;\n return [token, fallback];\n};\n\nlet namedColorRegex;\n\nconst rgbaRound = (_, p1, p2, p3, p4) => `rgba(${Math.round(p1)}, ${Math.round(p2)}, ${Math.round(p3)}, ${p4})`;\n\nconst createStringInterpolator = config => {\n if (!namedColorRegex) namedColorRegex = colors$1 ? new RegExp(`(${Object.keys(colors$1).join('|')})(?!\\\\w)`, 'g') : /^\\b$/;\n const output = config.output.map(value => {\n return getFluidValue(value).replace(cssVariableRegex, variableToRgba).replace(colorRegex, colorToRgba).replace(namedColorRegex, colorToRgba);\n });\n const keyframes = output.map(value => value.match(numberRegex).map(Number));\n const outputRanges = keyframes[0].map((_, i) => keyframes.map(values => {\n if (!(i in values)) {\n throw Error('The arity of each \"output\" value must be equal');\n }\n\n return values[i];\n }));\n const interpolators = outputRanges.map(output => createInterpolator(_extends({}, config, {\n output\n })));\n return input => {\n var _output$find;\n\n const missingUnit = !unitRegex.test(output[0]) && ((_output$find = output.find(value => unitRegex.test(value))) == null ? void 0 : _output$find.replace(numberRegex, ''));\n let i = 0;\n return output[0].replace(numberRegex, () => `${interpolators[i++](input)}${missingUnit || ''}`).replace(rgbaRegex, rgbaRound);\n };\n};\n\nconst prefix = 'react-spring: ';\n\nconst once = fn => {\n const func = fn;\n let called = false;\n\n if (typeof func != 'function') {\n throw new TypeError(`${prefix}once requires a function parameter`);\n }\n\n return (...args) => {\n if (!called) {\n func(...args);\n called = true;\n }\n };\n};\n\nconst warnInterpolate = once(console.warn);\nfunction deprecateInterpolate() {\n warnInterpolate(`${prefix}The \"interpolate\" function is deprecated in v9 (use \"to\" instead)`);\n}\nconst warnDirectCall = once(console.warn);\nfunction deprecateDirectCall() {\n warnDirectCall(`${prefix}Directly calling start instead of using the api object is deprecated in v9 (use \".start\" instead), this will be removed in later 0.X.0 versions`);\n}\n\nfunction isAnimatedString(value) {\n return is.str(value) && (value[0] == '#' || /\\d/.test(value) || !isSSR() && cssVariableRegex.test(value) || value in (colors$1 || {}));\n}\n\nconst useLayoutEffect = typeof window !== 'undefined' && window.document && window.document.createElement ? React.useLayoutEffect : React.useEffect;\n\nconst useIsMounted = () => {\n const isMounted = useRef(false);\n useLayoutEffect(() => {\n isMounted.current = true;\n return () => {\n isMounted.current = false;\n };\n }, []);\n return isMounted;\n};\n\nfunction useForceUpdate() {\n const update = useState()[1];\n const isMounted = useIsMounted();\n return () => {\n if (isMounted.current) {\n update(Math.random());\n }\n };\n}\n\nfunction useMemoOne(getResult, inputs) {\n const [initial] = useState(() => ({\n inputs,\n result: getResult()\n }));\n const committed = useRef();\n const prevCache = committed.current;\n let cache = prevCache;\n\n if (cache) {\n const useCache = Boolean(inputs && cache.inputs && areInputsEqual(inputs, cache.inputs));\n\n if (!useCache) {\n cache = {\n inputs,\n result: getResult()\n };\n }\n } else {\n cache = initial;\n }\n\n useEffect(() => {\n committed.current = cache;\n\n if (prevCache == initial) {\n initial.inputs = initial.result = undefined;\n }\n }, [cache]);\n return cache.result;\n}\n\nfunction areInputsEqual(next, prev) {\n if (next.length !== prev.length) {\n return false;\n }\n\n for (let i = 0; i < next.length; i++) {\n if (next[i] !== prev[i]) {\n return false;\n }\n }\n\n return true;\n}\n\nconst useOnce = effect => useEffect(effect, emptyDeps);\nconst emptyDeps = [];\n\nfunction usePrev(value) {\n const prevRef = useRef();\n useEffect(() => {\n prevRef.current = value;\n });\n return prevRef.current;\n}\n\nexport { FluidValue, globals as Globals, addFluidObserver, callFluidObserver, callFluidObservers, colorToRgba, colors, createInterpolator, createStringInterpolator, defineHidden, deprecateDirectCall, deprecateInterpolate, each, eachProp, flush, flushCalls, frameLoop, getFluidObservers, getFluidValue, hasFluidValue, hex3, hex4, hex6, hex8, hsl, hsla, is, isAnimatedString, isEqual, isSSR, noop, removeFluidObserver, rgb, rgba, setFluidGetter, toArray, useForceUpdate, useLayoutEffect, useMemoOne, useOnce, usePrev };\n","import { eachProp, is, toArray, isAnimatedString, Globals, getFluidValue, useLayoutEffect, each, raf, flush, FluidValue, deprecateInterpolate, callFluidObservers, frameLoop, hasFluidValue, flushCalls, isEqual, getFluidObservers, addFluidObserver, removeFluidObserver, noop, useMemoOne, deprecateDirectCall, useForceUpdate, usePrev, useOnce, createInterpolator, createStringInterpolator } from '@react-spring/shared';\nexport { Globals, createInterpolator } from '@react-spring/shared';\nimport * as React from 'react';\nimport { useContext, useMemo, useRef, useState } from 'react';\nimport { getAnimated, AnimatedValue, getPayload, AnimatedString, getAnimatedType, setAnimated } from '@react-spring/animated';\nexport * from '@react-spring/types/animated';\nexport * from '@react-spring/types/interpolation';\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction callProp(value, ...args) {\n return is.fun(value) ? value(...args) : value;\n}\nconst matchProp = (value, key) => value === true || !!(key && value && (is.fun(value) ? value(key) : toArray(value).includes(key)));\nconst resolveProp = (prop, key) => is.obj(prop) ? key && prop[key] : prop;\nconst getDefaultProp = (props, key) => props.default === true ? props[key] : props.default ? props.default[key] : undefined;\n\nconst noopTransform = value => value;\n\nconst getDefaultProps = (props, transform = noopTransform) => {\n let keys = DEFAULT_PROPS;\n\n if (props.default && props.default !== true) {\n props = props.default;\n keys = Object.keys(props);\n }\n\n const defaults = {};\n\n for (const key of keys) {\n const value = transform(props[key], key);\n\n if (!is.und(value)) {\n defaults[key] = value;\n }\n }\n\n return defaults;\n};\nconst DEFAULT_PROPS = ['config', 'onProps', 'onStart', 'onChange', 'onPause', 'onResume', 'onRest'];\nconst RESERVED_PROPS = {\n config: 1,\n from: 1,\n to: 1,\n ref: 1,\n loop: 1,\n reset: 1,\n pause: 1,\n cancel: 1,\n reverse: 1,\n immediate: 1,\n default: 1,\n delay: 1,\n onProps: 1,\n onStart: 1,\n onChange: 1,\n onPause: 1,\n onResume: 1,\n onRest: 1,\n onResolve: 1,\n items: 1,\n trail: 1,\n sort: 1,\n expires: 1,\n initial: 1,\n enter: 1,\n update: 1,\n leave: 1,\n children: 1,\n onDestroyed: 1,\n keys: 1,\n callId: 1,\n parentId: 1\n};\n\nfunction getForwardProps(props) {\n const forward = {};\n let count = 0;\n eachProp(props, (value, prop) => {\n if (!RESERVED_PROPS[prop]) {\n forward[prop] = value;\n count++;\n }\n });\n\n if (count) {\n return forward;\n }\n}\n\nfunction inferTo(props) {\n const to = getForwardProps(props);\n\n if (to) {\n const out = {\n to\n };\n eachProp(props, (val, key) => key in to || (out[key] = val));\n return out;\n }\n\n return _extends({}, props);\n}\nfunction computeGoal(value) {\n value = getFluidValue(value);\n return is.arr(value) ? value.map(computeGoal) : isAnimatedString(value) ? Globals.createStringInterpolator({\n range: [0, 1],\n output: [value, value]\n })(1) : value;\n}\nfunction hasProps(props) {\n for (const _ in props) return true;\n\n return false;\n}\nfunction isAsyncTo(to) {\n return is.fun(to) || is.arr(to) && is.obj(to[0]);\n}\nfunction detachRefs(ctrl, ref) {\n var _ctrl$ref;\n\n (_ctrl$ref = ctrl.ref) == null ? void 0 : _ctrl$ref.delete(ctrl);\n ref == null ? void 0 : ref.delete(ctrl);\n}\nfunction replaceRef(ctrl, ref) {\n if (ref && ctrl.ref !== ref) {\n var _ctrl$ref2;\n\n (_ctrl$ref2 = ctrl.ref) == null ? void 0 : _ctrl$ref2.delete(ctrl);\n ref.add(ctrl);\n ctrl.ref = ref;\n }\n}\n\nfunction useChain(refs, timeSteps, timeFrame = 1000) {\n useLayoutEffect(() => {\n if (timeSteps) {\n let prevDelay = 0;\n each(refs, (ref, i) => {\n const controllers = ref.current;\n\n if (controllers.length) {\n let delay = timeFrame * timeSteps[i];\n if (isNaN(delay)) delay = prevDelay;else prevDelay = delay;\n each(controllers, ctrl => {\n each(ctrl.queue, props => {\n const memoizedDelayProp = props.delay;\n\n props.delay = key => delay + callProp(memoizedDelayProp || 0, key);\n });\n });\n ref.start();\n }\n });\n } else {\n let p = Promise.resolve();\n each(refs, ref => {\n const controllers = ref.current;\n\n if (controllers.length) {\n const queues = controllers.map(ctrl => {\n const q = ctrl.queue;\n ctrl.queue = [];\n return q;\n });\n p = p.then(() => {\n each(controllers, (ctrl, i) => each(queues[i] || [], update => ctrl.queue.push(update)));\n return Promise.all(ref.start());\n });\n }\n });\n }\n });\n}\n\nconst config = {\n default: {\n tension: 170,\n friction: 26\n },\n gentle: {\n tension: 120,\n friction: 14\n },\n wobbly: {\n tension: 180,\n friction: 12\n },\n stiff: {\n tension: 210,\n friction: 20\n },\n slow: {\n tension: 280,\n friction: 60\n },\n molasses: {\n tension: 280,\n friction: 120\n }\n};\nconst c1 = 1.70158;\nconst c2 = c1 * 1.525;\nconst c3 = c1 + 1;\nconst c4 = 2 * Math.PI / 3;\nconst c5 = 2 * Math.PI / 4.5;\n\nconst bounceOut = x => {\n const n1 = 7.5625;\n const d1 = 2.75;\n\n if (x < 1 / d1) {\n return n1 * x * x;\n } else if (x < 2 / d1) {\n return n1 * (x -= 1.5 / d1) * x + 0.75;\n } else if (x < 2.5 / d1) {\n return n1 * (x -= 2.25 / d1) * x + 0.9375;\n } else {\n return n1 * (x -= 2.625 / d1) * x + 0.984375;\n }\n};\n\nconst easings = {\n linear: x => x,\n easeInQuad: x => x * x,\n easeOutQuad: x => 1 - (1 - x) * (1 - x),\n easeInOutQuad: x => x < 0.5 ? 2 * x * x : 1 - Math.pow(-2 * x + 2, 2) / 2,\n easeInCubic: x => x * x * x,\n easeOutCubic: x => 1 - Math.pow(1 - x, 3),\n easeInOutCubic: x => x < 0.5 ? 4 * x * x * x : 1 - Math.pow(-2 * x + 2, 3) / 2,\n easeInQuart: x => x * x * x * x,\n easeOutQuart: x => 1 - Math.pow(1 - x, 4),\n easeInOutQuart: x => x < 0.5 ? 8 * x * x * x * x : 1 - Math.pow(-2 * x + 2, 4) / 2,\n easeInQuint: x => x * x * x * x * x,\n easeOutQuint: x => 1 - Math.pow(1 - x, 5),\n easeInOutQuint: x => x < 0.5 ? 16 * x * x * x * x * x : 1 - Math.pow(-2 * x + 2, 5) / 2,\n easeInSine: x => 1 - Math.cos(x * Math.PI / 2),\n easeOutSine: x => Math.sin(x * Math.PI / 2),\n easeInOutSine: x => -(Math.cos(Math.PI * x) - 1) / 2,\n easeInExpo: x => x === 0 ? 0 : Math.pow(2, 10 * x - 10),\n easeOutExpo: x => x === 1 ? 1 : 1 - Math.pow(2, -10 * x),\n easeInOutExpo: x => x === 0 ? 0 : x === 1 ? 1 : x < 0.5 ? Math.pow(2, 20 * x - 10) / 2 : (2 - Math.pow(2, -20 * x + 10)) / 2,\n easeInCirc: x => 1 - Math.sqrt(1 - Math.pow(x, 2)),\n easeOutCirc: x => Math.sqrt(1 - Math.pow(x - 1, 2)),\n easeInOutCirc: x => x < 0.5 ? (1 - Math.sqrt(1 - Math.pow(2 * x, 2))) / 2 : (Math.sqrt(1 - Math.pow(-2 * x + 2, 2)) + 1) / 2,\n easeInBack: x => c3 * x * x * x - c1 * x * x,\n easeOutBack: x => 1 + c3 * Math.pow(x - 1, 3) + c1 * Math.pow(x - 1, 2),\n easeInOutBack: x => x < 0.5 ? Math.pow(2 * x, 2) * ((c2 + 1) * 2 * x - c2) / 2 : (Math.pow(2 * x - 2, 2) * ((c2 + 1) * (x * 2 - 2) + c2) + 2) / 2,\n easeInElastic: x => x === 0 ? 0 : x === 1 ? 1 : -Math.pow(2, 10 * x - 10) * Math.sin((x * 10 - 10.75) * c4),\n easeOutElastic: x => x === 0 ? 0 : x === 1 ? 1 : Math.pow(2, -10 * x) * Math.sin((x * 10 - 0.75) * c4) + 1,\n easeInOutElastic: x => x === 0 ? 0 : x === 1 ? 1 : x < 0.5 ? -(Math.pow(2, 20 * x - 10) * Math.sin((20 * x - 11.125) * c5)) / 2 : Math.pow(2, -20 * x + 10) * Math.sin((20 * x - 11.125) * c5) / 2 + 1,\n easeInBounce: x => 1 - bounceOut(1 - x),\n easeOutBounce: bounceOut,\n easeInOutBounce: x => x < 0.5 ? (1 - bounceOut(1 - 2 * x)) / 2 : (1 + bounceOut(2 * x - 1)) / 2\n};\n\nconst defaults = _extends({}, config.default, {\n mass: 1,\n damping: 1,\n easing: easings.linear,\n clamp: false\n});\n\nclass AnimationConfig {\n constructor() {\n this.tension = void 0;\n this.friction = void 0;\n this.frequency = void 0;\n this.damping = void 0;\n this.mass = void 0;\n this.velocity = 0;\n this.restVelocity = void 0;\n this.precision = void 0;\n this.progress = void 0;\n this.duration = void 0;\n this.easing = void 0;\n this.clamp = void 0;\n this.bounce = void 0;\n this.decay = void 0;\n this.round = void 0;\n Object.assign(this, defaults);\n }\n\n}\nfunction mergeConfig(config, newConfig, defaultConfig) {\n if (defaultConfig) {\n defaultConfig = _extends({}, defaultConfig);\n sanitizeConfig(defaultConfig, newConfig);\n newConfig = _extends({}, defaultConfig, newConfig);\n }\n\n sanitizeConfig(config, newConfig);\n Object.assign(config, newConfig);\n\n for (const key in defaults) {\n if (config[key] == null) {\n config[key] = defaults[key];\n }\n }\n\n let {\n mass,\n frequency,\n damping\n } = config;\n\n if (!is.und(frequency)) {\n if (frequency < 0.01) frequency = 0.01;\n if (damping < 0) damping = 0;\n config.tension = Math.pow(2 * Math.PI / frequency, 2) * mass;\n config.friction = 4 * Math.PI * damping * mass / frequency;\n }\n\n return config;\n}\n\nfunction sanitizeConfig(config, props) {\n if (!is.und(props.decay)) {\n config.duration = undefined;\n } else {\n const isTensionConfig = !is.und(props.tension) || !is.und(props.friction);\n\n if (isTensionConfig || !is.und(props.frequency) || !is.und(props.damping) || !is.und(props.mass)) {\n config.duration = undefined;\n config.decay = undefined;\n }\n\n if (isTensionConfig) {\n config.frequency = undefined;\n }\n }\n}\n\nconst emptyArray = [];\nclass Animation {\n constructor() {\n this.changed = false;\n this.values = emptyArray;\n this.toValues = null;\n this.fromValues = emptyArray;\n this.to = void 0;\n this.from = void 0;\n this.config = new AnimationConfig();\n this.immediate = false;\n }\n\n}\n\nfunction scheduleProps(callId, {\n key,\n props,\n defaultProps,\n state,\n actions\n}) {\n return new Promise((resolve, reject) => {\n var _props$cancel;\n\n let delay;\n let timeout;\n let cancel = matchProp((_props$cancel = props.cancel) != null ? _props$cancel : defaultProps == null ? void 0 : defaultProps.cancel, key);\n\n if (cancel) {\n onStart();\n } else {\n if (!is.und(props.pause)) {\n state.paused = matchProp(props.pause, key);\n }\n\n let pause = defaultProps == null ? void 0 : defaultProps.pause;\n\n if (pause !== true) {\n pause = state.paused || matchProp(pause, key);\n }\n\n delay = callProp(props.delay || 0, key);\n\n if (pause) {\n state.resumeQueue.add(onResume);\n actions.pause();\n } else {\n actions.resume();\n onResume();\n }\n }\n\n function onPause() {\n state.resumeQueue.add(onResume);\n state.timeouts.delete(timeout);\n timeout.cancel();\n delay = timeout.time - raf.now();\n }\n\n function onResume() {\n if (delay > 0 && !Globals.skipAnimation) {\n state.delayed = true;\n timeout = raf.setTimeout(onStart, delay);\n state.pauseQueue.add(onPause);\n state.timeouts.add(timeout);\n } else {\n onStart();\n }\n }\n\n function onStart() {\n if (state.delayed) {\n state.delayed = false;\n }\n\n state.pauseQueue.delete(onPause);\n state.timeouts.delete(timeout);\n\n if (callId <= (state.cancelId || 0)) {\n cancel = true;\n }\n\n try {\n actions.start(_extends({}, props, {\n callId,\n cancel\n }), resolve);\n } catch (err) {\n reject(err);\n }\n }\n });\n}\n\nconst getCombinedResult = (target, results) => results.length == 1 ? results[0] : results.some(result => result.cancelled) ? getCancelledResult(target.get()) : results.every(result => result.noop) ? getNoopResult(target.get()) : getFinishedResult(target.get(), results.every(result => result.finished));\nconst getNoopResult = value => ({\n value,\n noop: true,\n finished: true,\n cancelled: false\n});\nconst getFinishedResult = (value, finished, cancelled = false) => ({\n value,\n finished,\n cancelled\n});\nconst getCancelledResult = value => ({\n value,\n cancelled: true,\n finished: false\n});\n\nfunction runAsync(to, props, state, target) {\n const {\n callId,\n parentId,\n onRest\n } = props;\n const {\n asyncTo: prevTo,\n promise: prevPromise\n } = state;\n\n if (!parentId && to === prevTo && !props.reset) {\n return prevPromise;\n }\n\n return state.promise = (async () => {\n state.asyncId = callId;\n state.asyncTo = to;\n const defaultProps = getDefaultProps(props, (value, key) => key === 'onRest' ? undefined : value);\n let preventBail;\n let bail;\n const bailPromise = new Promise((resolve, reject) => (preventBail = resolve, bail = reject));\n\n const bailIfEnded = bailSignal => {\n const bailResult = callId <= (state.cancelId || 0) && getCancelledResult(target) || callId !== state.asyncId && getFinishedResult(target, false);\n\n if (bailResult) {\n bailSignal.result = bailResult;\n bail(bailSignal);\n throw bailSignal;\n }\n };\n\n const animate = (arg1, arg2) => {\n const bailSignal = new BailSignal();\n const skipAnimationSignal = new SkipAniamtionSignal();\n return (async () => {\n if (Globals.skipAnimation) {\n stopAsync(state);\n skipAnimationSignal.result = getFinishedResult(target, false);\n bail(skipAnimationSignal);\n throw skipAnimationSignal;\n }\n\n bailIfEnded(bailSignal);\n const props = is.obj(arg1) ? _extends({}, arg1) : _extends({}, arg2, {\n to: arg1\n });\n props.parentId = callId;\n eachProp(defaultProps, (value, key) => {\n if (is.und(props[key])) {\n props[key] = value;\n }\n });\n const result = await target.start(props);\n bailIfEnded(bailSignal);\n\n if (state.paused) {\n await new Promise(resume => {\n state.resumeQueue.add(resume);\n });\n }\n\n return result;\n })();\n };\n\n let result;\n\n if (Globals.skipAnimation) {\n stopAsync(state);\n return getFinishedResult(target, false);\n }\n\n try {\n let animating;\n\n if (is.arr(to)) {\n animating = (async queue => {\n for (const props of queue) {\n await animate(props);\n }\n })(to);\n } else {\n animating = Promise.resolve(to(animate, target.stop.bind(target)));\n }\n\n await Promise.all([animating.then(preventBail), bailPromise]);\n result = getFinishedResult(target.get(), true, false);\n } catch (err) {\n if (err instanceof BailSignal) {\n result = err.result;\n } else if (err instanceof SkipAniamtionSignal) {\n result = err.result;\n } else {\n throw err;\n }\n } finally {\n if (callId == state.asyncId) {\n state.asyncId = parentId;\n state.asyncTo = parentId ? prevTo : undefined;\n state.promise = parentId ? prevPromise : undefined;\n }\n }\n\n if (is.fun(onRest)) {\n raf.batchedUpdates(() => {\n onRest(result, target, target.item);\n });\n }\n\n return result;\n })();\n}\nfunction stopAsync(state, cancelId) {\n flush(state.timeouts, t => t.cancel());\n state.pauseQueue.clear();\n state.resumeQueue.clear();\n state.asyncId = state.asyncTo = state.promise = undefined;\n if (cancelId) state.cancelId = cancelId;\n}\nclass BailSignal extends Error {\n constructor() {\n super('An async animation has been interrupted. You see this error because you ' + 'forgot to use `await` or `.catch(...)` on its returned promise.');\n this.result = void 0;\n }\n\n}\nclass SkipAniamtionSignal extends Error {\n constructor() {\n super('SkipAnimationSignal');\n this.result = void 0;\n }\n\n}\n\nconst isFrameValue = value => value instanceof FrameValue;\nlet nextId$1 = 1;\nclass FrameValue extends FluidValue {\n constructor(...args) {\n super(...args);\n this.id = nextId$1++;\n this.key = void 0;\n this._priority = 0;\n }\n\n get priority() {\n return this._priority;\n }\n\n set priority(priority) {\n if (this._priority != priority) {\n this._priority = priority;\n\n this._onPriorityChange(priority);\n }\n }\n\n get() {\n const node = getAnimated(this);\n return node && node.getValue();\n }\n\n to(...args) {\n return Globals.to(this, args);\n }\n\n interpolate(...args) {\n deprecateInterpolate();\n return Globals.to(this, args);\n }\n\n toJSON() {\n return this.get();\n }\n\n observerAdded(count) {\n if (count == 1) this._attach();\n }\n\n observerRemoved(count) {\n if (count == 0) this._detach();\n }\n\n _attach() {}\n\n _detach() {}\n\n _onChange(value, idle = false) {\n callFluidObservers(this, {\n type: 'change',\n parent: this,\n value,\n idle\n });\n }\n\n _onPriorityChange(priority) {\n if (!this.idle) {\n frameLoop.sort(this);\n }\n\n callFluidObservers(this, {\n type: 'priority',\n parent: this,\n priority\n });\n }\n\n}\n\nconst $P = Symbol.for('SpringPhase');\nconst HAS_ANIMATED = 1;\nconst IS_ANIMATING = 2;\nconst IS_PAUSED = 4;\nconst hasAnimated = target => (target[$P] & HAS_ANIMATED) > 0;\nconst isAnimating = target => (target[$P] & IS_ANIMATING) > 0;\nconst isPaused = target => (target[$P] & IS_PAUSED) > 0;\nconst setActiveBit = (target, active) => active ? target[$P] |= IS_ANIMATING | HAS_ANIMATED : target[$P] &= ~IS_ANIMATING;\nconst setPausedBit = (target, paused) => paused ? target[$P] |= IS_PAUSED : target[$P] &= ~IS_PAUSED;\n\nclass SpringValue extends FrameValue {\n constructor(arg1, arg2) {\n super();\n this.key = void 0;\n this.animation = new Animation();\n this.queue = void 0;\n this.defaultProps = {};\n this._state = {\n paused: false,\n delayed: false,\n pauseQueue: new Set(),\n resumeQueue: new Set(),\n timeouts: new Set()\n };\n this._pendingCalls = new Set();\n this._lastCallId = 0;\n this._lastToId = 0;\n this._memoizedDuration = 0;\n\n if (!is.und(arg1) || !is.und(arg2)) {\n const props = is.obj(arg1) ? _extends({}, arg1) : _extends({}, arg2, {\n from: arg1\n });\n\n if (is.und(props.default)) {\n props.default = true;\n }\n\n this.start(props);\n }\n }\n\n get idle() {\n return !(isAnimating(this) || this._state.asyncTo) || isPaused(this);\n }\n\n get goal() {\n return getFluidValue(this.animation.to);\n }\n\n get velocity() {\n const node = getAnimated(this);\n return node instanceof AnimatedValue ? node.lastVelocity || 0 : node.getPayload().map(node => node.lastVelocity || 0);\n }\n\n get hasAnimated() {\n return hasAnimated(this);\n }\n\n get isAnimating() {\n return isAnimating(this);\n }\n\n get isPaused() {\n return isPaused(this);\n }\n\n get isDelayed() {\n return this._state.delayed;\n }\n\n advance(dt) {\n let idle = true;\n let changed = false;\n const anim = this.animation;\n let {\n config,\n toValues\n } = anim;\n const payload = getPayload(anim.to);\n\n if (!payload && hasFluidValue(anim.to)) {\n toValues = toArray(getFluidValue(anim.to));\n }\n\n anim.values.forEach((node, i) => {\n if (node.done) return;\n const to = node.constructor == AnimatedString ? 1 : payload ? payload[i].lastPosition : toValues[i];\n let finished = anim.immediate;\n let position = to;\n\n if (!finished) {\n position = node.lastPosition;\n\n if (config.tension <= 0) {\n node.done = true;\n return;\n }\n\n let elapsed = node.elapsedTime += dt;\n const from = anim.fromValues[i];\n const v0 = node.v0 != null ? node.v0 : node.v0 = is.arr(config.velocity) ? config.velocity[i] : config.velocity;\n let velocity;\n\n if (!is.und(config.duration)) {\n let p = 1;\n\n if (config.duration > 0) {\n if (this._memoizedDuration !== config.duration) {\n this._memoizedDuration = config.duration;\n\n if (node.durationProgress > 0) {\n node.elapsedTime = config.duration * node.durationProgress;\n elapsed = node.elapsedTime += dt;\n }\n }\n\n p = (config.progress || 0) + elapsed / this._memoizedDuration;\n p = p > 1 ? 1 : p < 0 ? 0 : p;\n node.durationProgress = p;\n }\n\n position = from + config.easing(p) * (to - from);\n velocity = (position - node.lastPosition) / dt;\n finished = p == 1;\n } else if (config.decay) {\n const decay = config.decay === true ? 0.998 : config.decay;\n const e = Math.exp(-(1 - decay) * elapsed);\n position = from + v0 / (1 - decay) * (1 - e);\n finished = Math.abs(node.lastPosition - position) < 0.1;\n velocity = v0 * e;\n } else {\n velocity = node.lastVelocity == null ? v0 : node.lastVelocity;\n const precision = config.precision || (from == to ? 0.005 : Math.min(1, Math.abs(to - from) * 0.001));\n const restVelocity = config.restVelocity || precision / 10;\n const bounceFactor = config.clamp ? 0 : config.bounce;\n const canBounce = !is.und(bounceFactor);\n const isGrowing = from == to ? node.v0 > 0 : from < to;\n let isMoving;\n let isBouncing = false;\n const step = 1;\n const numSteps = Math.ceil(dt / step);\n\n for (let n = 0; n < numSteps; ++n) {\n isMoving = Math.abs(velocity) > restVelocity;\n\n if (!isMoving) {\n finished = Math.abs(to - position) <= precision;\n\n if (finished) {\n break;\n }\n }\n\n if (canBounce) {\n isBouncing = position == to || position > to == isGrowing;\n\n if (isBouncing) {\n velocity = -velocity * bounceFactor;\n position = to;\n }\n }\n\n const springForce = -config.tension * 0.000001 * (position - to);\n const dampingForce = -config.friction * 0.001 * velocity;\n const acceleration = (springForce + dampingForce) / config.mass;\n velocity = velocity + acceleration * step;\n position = position + velocity * step;\n }\n }\n\n node.lastVelocity = velocity;\n\n if (Number.isNaN(position)) {\n console.warn(`Got NaN while animating:`, this);\n finished = true;\n }\n }\n\n if (payload && !payload[i].done) {\n finished = false;\n }\n\n if (finished) {\n node.done = true;\n } else {\n idle = false;\n }\n\n if (node.setValue(position, config.round)) {\n changed = true;\n }\n });\n const node = getAnimated(this);\n const currVal = node.getValue();\n\n if (idle) {\n const finalVal = getFluidValue(anim.to);\n\n if ((currVal !== finalVal || changed) && !config.decay) {\n node.setValue(finalVal);\n\n this._onChange(finalVal);\n } else if (changed && config.decay) {\n this._onChange(currVal);\n }\n\n this._stop();\n } else if (changed) {\n this._onChange(currVal);\n }\n }\n\n set(value) {\n raf.batchedUpdates(() => {\n this._stop();\n\n this._focus(value);\n\n this._set(value);\n });\n return this;\n }\n\n pause() {\n this._update({\n pause: true\n });\n }\n\n resume() {\n this._update({\n pause: false\n });\n }\n\n finish() {\n if (isAnimating(this)) {\n const {\n to,\n config\n } = this.animation;\n raf.batchedUpdates(() => {\n this._onStart();\n\n if (!config.decay) {\n this._set(to, false);\n }\n\n this._stop();\n });\n }\n\n return this;\n }\n\n update(props) {\n const queue = this.queue || (this.queue = []);\n queue.push(props);\n return this;\n }\n\n start(to, arg2) {\n let queue;\n\n if (!is.und(to)) {\n queue = [is.obj(to) ? to : _extends({}, arg2, {\n to\n })];\n } else {\n queue = this.queue || [];\n this.queue = [];\n }\n\n return Promise.all(queue.map(props => {\n const up = this._update(props);\n\n return up;\n })).then(results => getCombinedResult(this, results));\n }\n\n stop(cancel) {\n const {\n to\n } = this.animation;\n\n this._focus(this.get());\n\n stopAsync(this._state, cancel && this._lastCallId);\n raf.batchedUpdates(() => this._stop(to, cancel));\n return this;\n }\n\n reset() {\n this._update({\n reset: true\n });\n }\n\n eventObserved(event) {\n if (event.type == 'change') {\n this._start();\n } else if (event.type == 'priority') {\n this.priority = event.priority + 1;\n }\n }\n\n _prepareNode(props) {\n const key = this.key || '';\n let {\n to,\n from\n } = props;\n to = is.obj(to) ? to[key] : to;\n\n if (to == null || isAsyncTo(to)) {\n to = undefined;\n }\n\n from = is.obj(from) ? from[key] : from;\n\n if (from == null) {\n from = undefined;\n }\n\n const range = {\n to,\n from\n };\n\n if (!hasAnimated(this)) {\n if (props.reverse) [to, from] = [from, to];\n from = getFluidValue(from);\n\n if (!is.und(from)) {\n this._set(from);\n } else if (!getAnimated(this)) {\n this._set(to);\n }\n }\n\n return range;\n }\n\n _update(_ref, isLoop) {\n let props = _extends({}, _ref);\n\n const {\n key,\n defaultProps\n } = this;\n if (props.default) Object.assign(defaultProps, getDefaultProps(props, (value, prop) => /^on/.test(prop) ? resolveProp(value, key) : value));\n mergeActiveFn(this, props, 'onProps');\n sendEvent(this, 'onProps', props, this);\n\n const range = this._prepareNode(props);\n\n if (Object.isFrozen(this)) {\n throw Error('Cannot animate a `SpringValue` object that is frozen. ' + 'Did you forget to pass your component to `animated(...)` before animating its props?');\n }\n\n const state = this._state;\n return scheduleProps(++this._lastCallId, {\n key,\n props,\n defaultProps,\n state,\n actions: {\n pause: () => {\n if (!isPaused(this)) {\n setPausedBit(this, true);\n flushCalls(state.pauseQueue);\n sendEvent(this, 'onPause', getFinishedResult(this, checkFinished(this, this.animation.to)), this);\n }\n },\n resume: () => {\n if (isPaused(this)) {\n setPausedBit(this, false);\n\n if (isAnimating(this)) {\n this._resume();\n }\n\n flushCalls(state.resumeQueue);\n sendEvent(this, 'onResume', getFinishedResult(this, checkFinished(this, this.animation.to)), this);\n }\n },\n start: this._merge.bind(this, range)\n }\n }).then(result => {\n if (props.loop && result.finished && !(isLoop && result.noop)) {\n const nextProps = createLoopUpdate(props);\n\n if (nextProps) {\n return this._update(nextProps, true);\n }\n }\n\n return result;\n });\n }\n\n _merge(range, props, resolve) {\n if (props.cancel) {\n this.stop(true);\n return resolve(getCancelledResult(this));\n }\n\n const hasToProp = !is.und(range.to);\n const hasFromProp = !is.und(range.from);\n\n if (hasToProp || hasFromProp) {\n if (props.callId > this._lastToId) {\n this._lastToId = props.callId;\n } else {\n return resolve(getCancelledResult(this));\n }\n }\n\n const {\n key,\n defaultProps,\n animation: anim\n } = this;\n const {\n to: prevTo,\n from: prevFrom\n } = anim;\n let {\n to = prevTo,\n from = prevFrom\n } = range;\n\n if (hasFromProp && !hasToProp && (!props.default || is.und(to))) {\n to = from;\n }\n\n if (props.reverse) [to, from] = [from, to];\n const hasFromChanged = !isEqual(from, prevFrom);\n\n if (hasFromChanged) {\n anim.from = from;\n }\n\n from = getFluidValue(from);\n const hasToChanged = !isEqual(to, prevTo);\n\n if (hasToChanged) {\n this._focus(to);\n }\n\n const hasAsyncTo = isAsyncTo(props.to);\n const {\n config\n } = anim;\n const {\n decay,\n velocity\n } = config;\n\n if (hasToProp || hasFromProp) {\n config.velocity = 0;\n }\n\n if (props.config && !hasAsyncTo) {\n mergeConfig(config, callProp(props.config, key), props.config !== defaultProps.config ? callProp(defaultProps.config, key) : void 0);\n }\n\n let node = getAnimated(this);\n\n if (!node || is.und(to)) {\n return resolve(getFinishedResult(this, true));\n }\n\n const reset = is.und(props.reset) ? hasFromProp && !props.default : !is.und(from) && matchProp(props.reset, key);\n const value = reset ? from : this.get();\n const goal = computeGoal(to);\n const isAnimatable = is.num(goal) || is.arr(goal) || isAnimatedString(goal);\n const immediate = !hasAsyncTo && (!isAnimatable || matchProp(defaultProps.immediate || props.immediate, key));\n\n if (hasToChanged) {\n const nodeType = getAnimatedType(to);\n\n if (nodeType !== node.constructor) {\n if (immediate) {\n node = this._set(goal);\n } else throw Error(`Cannot animate between ${node.constructor.name} and ${nodeType.name}, as the \"to\" prop suggests`);\n }\n }\n\n const goalType = node.constructor;\n let started = hasFluidValue(to);\n let finished = false;\n\n if (!started) {\n const hasValueChanged = reset || !hasAnimated(this) && hasFromChanged;\n\n if (hasToChanged || hasValueChanged) {\n finished = isEqual(computeGoal(value), goal);\n started = !finished;\n }\n\n if (!isEqual(anim.immediate, immediate) && !immediate || !isEqual(config.decay, decay) || !isEqual(config.velocity, velocity)) {\n started = true;\n }\n }\n\n if (finished && isAnimating(this)) {\n if (anim.changed && !reset) {\n started = true;\n } else if (!started) {\n this._stop(prevTo);\n }\n }\n\n if (!hasAsyncTo) {\n if (started || hasFluidValue(prevTo)) {\n anim.values = node.getPayload();\n anim.toValues = hasFluidValue(to) ? null : goalType == AnimatedString ? [1] : toArray(goal);\n }\n\n if (anim.immediate != immediate) {\n anim.immediate = immediate;\n\n if (!immediate && !reset) {\n this._set(prevTo);\n }\n }\n\n if (started) {\n const {\n onRest\n } = anim;\n each(ACTIVE_EVENTS, type => mergeActiveFn(this, props, type));\n const result = getFinishedResult(this, checkFinished(this, prevTo));\n flushCalls(this._pendingCalls, result);\n\n this._pendingCalls.add(resolve);\n\n if (anim.changed) raf.batchedUpdates(() => {\n anim.changed = !reset;\n onRest == null ? void 0 : onRest(result, this);\n\n if (reset) {\n callProp(defaultProps.onRest, result);\n } else {\n anim.onStart == null ? void 0 : anim.onStart(result, this);\n }\n });\n }\n }\n\n if (reset) {\n this._set(value);\n }\n\n if (hasAsyncTo) {\n resolve(runAsync(props.to, props, this._state, this));\n } else if (started) {\n this._start();\n } else if (isAnimating(this) && !hasToChanged) {\n this._pendingCalls.add(resolve);\n } else {\n resolve(getNoopResult(value));\n }\n }\n\n _focus(value) {\n const anim = this.animation;\n\n if (value !== anim.to) {\n if (getFluidObservers(this)) {\n this._detach();\n }\n\n anim.to = value;\n\n if (getFluidObservers(this)) {\n this._attach();\n }\n }\n }\n\n _attach() {\n let priority = 0;\n const {\n to\n } = this.animation;\n\n if (hasFluidValue(to)) {\n addFluidObserver(to, this);\n\n if (isFrameValue(to)) {\n priority = to.priority + 1;\n }\n }\n\n this.priority = priority;\n }\n\n _detach() {\n const {\n to\n } = this.animation;\n\n if (hasFluidValue(to)) {\n removeFluidObserver(to, this);\n }\n }\n\n _set(arg, idle = true) {\n const value = getFluidValue(arg);\n\n if (!is.und(value)) {\n const oldNode = getAnimated(this);\n\n if (!oldNode || !isEqual(value, oldNode.getValue())) {\n const nodeType = getAnimatedType(value);\n\n if (!oldNode || oldNode.constructor != nodeType) {\n setAnimated(this, nodeType.create(value));\n } else {\n oldNode.setValue(value);\n }\n\n if (oldNode) {\n raf.batchedUpdates(() => {\n this._onChange(value, idle);\n });\n }\n }\n }\n\n return getAnimated(this);\n }\n\n _onStart() {\n const anim = this.animation;\n\n if (!anim.changed) {\n anim.changed = true;\n sendEvent(this, 'onStart', getFinishedResult(this, checkFinished(this, anim.to)), this);\n }\n }\n\n _onChange(value, idle) {\n if (!idle) {\n this._onStart();\n\n callProp(this.animation.onChange, value, this);\n }\n\n callProp(this.defaultProps.onChange, value, this);\n\n super._onChange(value, idle);\n }\n\n _start() {\n const anim = this.animation;\n getAnimated(this).reset(getFluidValue(anim.to));\n\n if (!anim.immediate) {\n anim.fromValues = anim.values.map(node => node.lastPosition);\n }\n\n if (!isAnimating(this)) {\n setActiveBit(this, true);\n\n if (!isPaused(this)) {\n this._resume();\n }\n }\n }\n\n _resume() {\n if (Globals.skipAnimation) {\n this.finish();\n } else {\n frameLoop.start(this);\n }\n }\n\n _stop(goal, cancel) {\n if (isAnimating(this)) {\n setActiveBit(this, false);\n const anim = this.animation;\n each(anim.values, node => {\n node.done = true;\n });\n\n if (anim.toValues) {\n anim.onChange = anim.onPause = anim.onResume = undefined;\n }\n\n callFluidObservers(this, {\n type: 'idle',\n parent: this\n });\n const result = cancel ? getCancelledResult(this.get()) : getFinishedResult(this.get(), checkFinished(this, goal != null ? goal : anim.to));\n flushCalls(this._pendingCalls, result);\n\n if (anim.changed) {\n anim.changed = false;\n sendEvent(this, 'onRest', result, this);\n }\n }\n }\n\n}\n\nfunction checkFinished(target, to) {\n const goal = computeGoal(to);\n const value = computeGoal(target.get());\n return isEqual(value, goal);\n}\n\nfunction createLoopUpdate(props, loop = props.loop, to = props.to) {\n let loopRet = callProp(loop);\n\n if (loopRet) {\n const overrides = loopRet !== true && inferTo(loopRet);\n const reverse = (overrides || props).reverse;\n const reset = !overrides || overrides.reset;\n return createUpdate(_extends({}, props, {\n loop,\n default: false,\n pause: undefined,\n to: !reverse || isAsyncTo(to) ? to : undefined,\n from: reset ? props.from : undefined,\n reset\n }, overrides));\n }\n}\nfunction createUpdate(props) {\n const {\n to,\n from\n } = props = inferTo(props);\n const keys = new Set();\n if (is.obj(to)) findDefined(to, keys);\n if (is.obj(from)) findDefined(from, keys);\n props.keys = keys.size ? Array.from(keys) : null;\n return props;\n}\nfunction declareUpdate(props) {\n const update = createUpdate(props);\n\n if (is.und(update.default)) {\n update.default = getDefaultProps(update);\n }\n\n return update;\n}\n\nfunction findDefined(values, keys) {\n eachProp(values, (value, key) => value != null && keys.add(key));\n}\n\nconst ACTIVE_EVENTS = ['onStart', 'onRest', 'onChange', 'onPause', 'onResume'];\n\nfunction mergeActiveFn(target, props, type) {\n target.animation[type] = props[type] !== getDefaultProp(props, type) ? resolveProp(props[type], target.key) : undefined;\n}\n\nfunction sendEvent(target, type, ...args) {\n var _target$animation$typ, _target$animation, _target$defaultProps$, _target$defaultProps;\n\n (_target$animation$typ = (_target$animation = target.animation)[type]) == null ? void 0 : _target$animation$typ.call(_target$animation, ...args);\n (_target$defaultProps$ = (_target$defaultProps = target.defaultProps)[type]) == null ? void 0 : _target$defaultProps$.call(_target$defaultProps, ...args);\n}\n\nconst BATCHED_EVENTS = ['onStart', 'onChange', 'onRest'];\nlet nextId = 1;\nclass Controller {\n constructor(props, flush) {\n this.id = nextId++;\n this.springs = {};\n this.queue = [];\n this.ref = void 0;\n this._flush = void 0;\n this._initialProps = void 0;\n this._lastAsyncId = 0;\n this._active = new Set();\n this._changed = new Set();\n this._started = false;\n this._item = void 0;\n this._state = {\n paused: false,\n pauseQueue: new Set(),\n resumeQueue: new Set(),\n timeouts: new Set()\n };\n this._events = {\n onStart: new Map(),\n onChange: new Map(),\n onRest: new Map()\n };\n this._onFrame = this._onFrame.bind(this);\n\n if (flush) {\n this._flush = flush;\n }\n\n if (props) {\n this.start(_extends({\n default: true\n }, props));\n }\n }\n\n get idle() {\n return !this._state.asyncTo && Object.values(this.springs).every(spring => {\n return spring.idle && !spring.isDelayed && !spring.isPaused;\n });\n }\n\n get item() {\n return this._item;\n }\n\n set item(item) {\n this._item = item;\n }\n\n get() {\n const values = {};\n this.each((spring, key) => values[key] = spring.get());\n return values;\n }\n\n set(values) {\n for (const key in values) {\n const value = values[key];\n\n if (!is.und(value)) {\n this.springs[key].set(value);\n }\n }\n }\n\n update(props) {\n if (props) {\n this.queue.push(createUpdate(props));\n }\n\n return this;\n }\n\n start(props) {\n let {\n queue\n } = this;\n\n if (props) {\n queue = toArray(props).map(createUpdate);\n } else {\n this.queue = [];\n }\n\n if (this._flush) {\n return this._flush(this, queue);\n }\n\n prepareKeys(this, queue);\n return flushUpdateQueue(this, queue);\n }\n\n stop(arg, keys) {\n if (arg !== !!arg) {\n keys = arg;\n }\n\n if (keys) {\n const springs = this.springs;\n each(toArray(keys), key => springs[key].stop(!!arg));\n } else {\n stopAsync(this._state, this._lastAsyncId);\n this.each(spring => spring.stop(!!arg));\n }\n\n return this;\n }\n\n pause(keys) {\n if (is.und(keys)) {\n this.start({\n pause: true\n });\n } else {\n const springs = this.springs;\n each(toArray(keys), key => springs[key].pause());\n }\n\n return this;\n }\n\n resume(keys) {\n if (is.und(keys)) {\n this.start({\n pause: false\n });\n } else {\n const springs = this.springs;\n each(toArray(keys), key => springs[key].resume());\n }\n\n return this;\n }\n\n each(iterator) {\n eachProp(this.springs, iterator);\n }\n\n _onFrame() {\n const {\n onStart,\n onChange,\n onRest\n } = this._events;\n const active = this._active.size > 0;\n const changed = this._changed.size > 0;\n\n if (active && !this._started || changed && !this._started) {\n this._started = true;\n flush(onStart, ([onStart, result]) => {\n result.value = this.get();\n onStart(result, this, this._item);\n });\n }\n\n const idle = !active && this._started;\n const values = changed || idle && onRest.size ? this.get() : null;\n\n if (changed && onChange.size) {\n flush(onChange, ([onChange, result]) => {\n result.value = values;\n onChange(result, this, this._item);\n });\n }\n\n if (idle) {\n this._started = false;\n flush(onRest, ([onRest, result]) => {\n result.value = values;\n onRest(result, this, this._item);\n });\n }\n }\n\n eventObserved(event) {\n if (event.type == 'change') {\n this._changed.add(event.parent);\n\n if (!event.idle) {\n this._active.add(event.parent);\n }\n } else if (event.type == 'idle') {\n this._active.delete(event.parent);\n } else return;\n\n raf.onFrame(this._onFrame);\n }\n\n}\nfunction flushUpdateQueue(ctrl, queue) {\n return Promise.all(queue.map(props => flushUpdate(ctrl, props))).then(results => getCombinedResult(ctrl, results));\n}\nasync function flushUpdate(ctrl, props, isLoop) {\n const {\n keys,\n to,\n from,\n loop,\n onRest,\n onResolve\n } = props;\n const defaults = is.obj(props.default) && props.default;\n\n if (loop) {\n props.loop = false;\n }\n\n if (to === false) props.to = null;\n if (from === false) props.from = null;\n const asyncTo = is.arr(to) || is.fun(to) ? to : undefined;\n\n if (asyncTo) {\n props.to = undefined;\n props.onRest = undefined;\n\n if (defaults) {\n defaults.onRest = undefined;\n }\n } else {\n each(BATCHED_EVENTS, key => {\n const handler = props[key];\n\n if (is.fun(handler)) {\n const queue = ctrl['_events'][key];\n\n props[key] = ({\n finished,\n cancelled\n }) => {\n const result = queue.get(handler);\n\n if (result) {\n if (!finished) result.finished = false;\n if (cancelled) result.cancelled = true;\n } else {\n queue.set(handler, {\n value: null,\n finished: finished || false,\n cancelled: cancelled || false\n });\n }\n };\n\n if (defaults) {\n defaults[key] = props[key];\n }\n }\n });\n }\n\n const state = ctrl['_state'];\n\n if (props.pause === !state.paused) {\n state.paused = props.pause;\n flushCalls(props.pause ? state.pauseQueue : state.resumeQueue);\n } else if (state.paused) {\n props.pause = true;\n }\n\n const promises = (keys || Object.keys(ctrl.springs)).map(key => ctrl.springs[key].start(props));\n const cancel = props.cancel === true || getDefaultProp(props, 'cancel') === true;\n\n if (asyncTo || cancel && state.asyncId) {\n promises.push(scheduleProps(++ctrl['_lastAsyncId'], {\n props,\n state,\n actions: {\n pause: noop,\n resume: noop,\n\n start(props, resolve) {\n if (cancel) {\n stopAsync(state, ctrl['_lastAsyncId']);\n resolve(getCancelledResult(ctrl));\n } else {\n props.onRest = onRest;\n resolve(runAsync(asyncTo, props, state, ctrl));\n }\n }\n\n }\n }));\n }\n\n if (state.paused) {\n await new Promise(resume => {\n state.resumeQueue.add(resume);\n });\n }\n\n const result = getCombinedResult(ctrl, await Promise.all(promises));\n\n if (loop && result.finished && !(isLoop && result.noop)) {\n const nextProps = createLoopUpdate(props, loop, to);\n\n if (nextProps) {\n prepareKeys(ctrl, [nextProps]);\n return flushUpdate(ctrl, nextProps, true);\n }\n }\n\n if (onResolve) {\n raf.batchedUpdates(() => onResolve(result, ctrl, ctrl.item));\n }\n\n return result;\n}\nfunction getSprings(ctrl, props) {\n const springs = _extends({}, ctrl.springs);\n\n if (props) {\n each(toArray(props), props => {\n if (is.und(props.keys)) {\n props = createUpdate(props);\n }\n\n if (!is.obj(props.to)) {\n props = _extends({}, props, {\n to: undefined\n });\n }\n\n prepareSprings(springs, props, key => {\n return createSpring(key);\n });\n });\n }\n\n setSprings(ctrl, springs);\n return springs;\n}\nfunction setSprings(ctrl, springs) {\n eachProp(springs, (spring, key) => {\n if (!ctrl.springs[key]) {\n ctrl.springs[key] = spring;\n addFluidObserver(spring, ctrl);\n }\n });\n}\n\nfunction createSpring(key, observer) {\n const spring = new SpringValue();\n spring.key = key;\n\n if (observer) {\n addFluidObserver(spring, observer);\n }\n\n return spring;\n}\n\nfunction prepareSprings(springs, props, create) {\n if (props.keys) {\n each(props.keys, key => {\n const spring = springs[key] || (springs[key] = create(key));\n spring['_prepareNode'](props);\n });\n }\n}\n\nfunction prepareKeys(ctrl, queue) {\n each(queue, props => {\n prepareSprings(ctrl.springs, props, key => {\n return createSpring(key, ctrl);\n });\n });\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nconst _excluded$3 = [\"children\"];\nconst SpringContext = _ref => {\n let {\n children\n } = _ref,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$3);\n\n const inherited = useContext(ctx);\n const pause = props.pause || !!inherited.pause,\n immediate = props.immediate || !!inherited.immediate;\n props = useMemoOne(() => ({\n pause,\n immediate\n }), [pause, immediate]);\n const {\n Provider\n } = ctx;\n return React.createElement(Provider, {\n value: props\n }, children);\n};\nconst ctx = makeContext(SpringContext, {});\nSpringContext.Provider = ctx.Provider;\nSpringContext.Consumer = ctx.Consumer;\n\nfunction makeContext(target, init) {\n Object.assign(target, React.createContext(init));\n target.Provider._context = target;\n target.Consumer._context = target;\n return target;\n}\n\nconst SpringRef = () => {\n const current = [];\n\n const SpringRef = function SpringRef(props) {\n deprecateDirectCall();\n const results = [];\n each(current, (ctrl, i) => {\n if (is.und(props)) {\n results.push(ctrl.start());\n } else {\n const update = _getProps(props, ctrl, i);\n\n if (update) {\n results.push(ctrl.start(update));\n }\n }\n });\n return results;\n };\n\n SpringRef.current = current;\n\n SpringRef.add = function (ctrl) {\n if (!current.includes(ctrl)) {\n current.push(ctrl);\n }\n };\n\n SpringRef.delete = function (ctrl) {\n const i = current.indexOf(ctrl);\n if (~i) current.splice(i, 1);\n };\n\n SpringRef.pause = function () {\n each(current, ctrl => ctrl.pause(...arguments));\n return this;\n };\n\n SpringRef.resume = function () {\n each(current, ctrl => ctrl.resume(...arguments));\n return this;\n };\n\n SpringRef.set = function (values) {\n each(current, ctrl => ctrl.set(values));\n };\n\n SpringRef.start = function (props) {\n const results = [];\n each(current, (ctrl, i) => {\n if (is.und(props)) {\n results.push(ctrl.start());\n } else {\n const update = this._getProps(props, ctrl, i);\n\n if (update) {\n results.push(ctrl.start(update));\n }\n }\n });\n return results;\n };\n\n SpringRef.stop = function () {\n each(current, ctrl => ctrl.stop(...arguments));\n return this;\n };\n\n SpringRef.update = function (props) {\n each(current, (ctrl, i) => ctrl.update(this._getProps(props, ctrl, i)));\n return this;\n };\n\n const _getProps = function _getProps(arg, ctrl, index) {\n return is.fun(arg) ? arg(index, ctrl) : arg;\n };\n\n SpringRef._getProps = _getProps;\n return SpringRef;\n};\n\nfunction useSprings(length, props, deps) {\n const propsFn = is.fun(props) && props;\n if (propsFn && !deps) deps = [];\n const ref = useMemo(() => propsFn || arguments.length == 3 ? SpringRef() : void 0, []);\n const layoutId = useRef(0);\n const forceUpdate = useForceUpdate();\n const state = useMemo(() => ({\n ctrls: [],\n queue: [],\n\n flush(ctrl, updates) {\n const springs = getSprings(ctrl, updates);\n const canFlushSync = layoutId.current > 0 && !state.queue.length && !Object.keys(springs).some(key => !ctrl.springs[key]);\n return canFlushSync ? flushUpdateQueue(ctrl, updates) : new Promise(resolve => {\n setSprings(ctrl, springs);\n state.queue.push(() => {\n resolve(flushUpdateQueue(ctrl, updates));\n });\n forceUpdate();\n });\n }\n\n }), []);\n const ctrls = useRef([...state.ctrls]);\n const updates = [];\n const prevLength = usePrev(length) || 0;\n useMemo(() => {\n each(ctrls.current.slice(length, prevLength), ctrl => {\n detachRefs(ctrl, ref);\n ctrl.stop(true);\n });\n ctrls.current.length = length;\n declareUpdates(prevLength, length);\n }, [length]);\n useMemo(() => {\n declareUpdates(0, Math.min(prevLength, length));\n }, deps);\n\n function declareUpdates(startIndex, endIndex) {\n for (let i = startIndex; i < endIndex; i++) {\n const ctrl = ctrls.current[i] || (ctrls.current[i] = new Controller(null, state.flush));\n const update = propsFn ? propsFn(i, ctrl) : props[i];\n\n if (update) {\n updates[i] = declareUpdate(update);\n }\n }\n }\n\n const springs = ctrls.current.map((ctrl, i) => getSprings(ctrl, updates[i]));\n const context = useContext(SpringContext);\n const prevContext = usePrev(context);\n const hasContext = context !== prevContext && hasProps(context);\n useLayoutEffect(() => {\n layoutId.current++;\n state.ctrls = ctrls.current;\n const {\n queue\n } = state;\n\n if (queue.length) {\n state.queue = [];\n each(queue, cb => cb());\n }\n\n each(ctrls.current, (ctrl, i) => {\n ref == null ? void 0 : ref.add(ctrl);\n\n if (hasContext) {\n ctrl.start({\n default: context\n });\n }\n\n const update = updates[i];\n\n if (update) {\n replaceRef(ctrl, update.ref);\n\n if (ctrl.ref) {\n ctrl.queue.push(update);\n } else {\n ctrl.start(update);\n }\n }\n });\n });\n useOnce(() => () => {\n each(state.ctrls, ctrl => ctrl.stop(true));\n });\n const values = springs.map(x => _extends({}, x));\n return ref ? [values, ref] : values;\n}\n\nfunction useSpring(props, deps) {\n const isFn = is.fun(props);\n const [[values], ref] = useSprings(1, isFn ? props : [props], isFn ? deps || [] : deps);\n return isFn || arguments.length == 2 ? [values, ref] : values;\n}\n\nconst initSpringRef = () => SpringRef();\n\nconst useSpringRef = () => useState(initSpringRef)[0];\n\nfunction useTrail(length, propsArg, deps) {\n var _passedRef;\n\n const propsFn = is.fun(propsArg) && propsArg;\n if (propsFn && !deps) deps = [];\n let reverse = true;\n let passedRef = undefined;\n const result = useSprings(length, (i, ctrl) => {\n const props = propsFn ? propsFn(i, ctrl) : propsArg;\n passedRef = props.ref;\n reverse = reverse && props.reverse;\n return props;\n }, deps || [{}]);\n const ref = (_passedRef = passedRef) != null ? _passedRef : result[1];\n useLayoutEffect(() => {\n each(ref.current, (ctrl, i) => {\n const parent = ref.current[i + (reverse ? 1 : -1)];\n\n if (parent) {\n ctrl.start({\n to: parent.springs\n });\n } else {\n ctrl.start();\n }\n });\n }, deps);\n\n if (propsFn || arguments.length == 3) {\n ref['_getProps'] = (propsArg, ctrl, i) => {\n const props = is.fun(propsArg) ? propsArg(i, ctrl) : propsArg;\n\n if (props) {\n const parent = ref.current[i + (props.reverse ? 1 : -1)];\n if (parent) props.to = parent.springs;\n return props;\n }\n };\n\n return result;\n }\n\n ref['start'] = propsArg => {\n const results = [];\n each(ref.current, (ctrl, i) => {\n const props = is.fun(propsArg) ? propsArg(i, ctrl) : propsArg;\n const parent = ref.current[i + (reverse ? 1 : -1)];\n\n if (parent) {\n results.push(ctrl.start(_extends({}, props, {\n to: parent.springs\n })));\n } else {\n results.push(ctrl.start(_extends({}, props)));\n }\n });\n return results;\n };\n\n return result[0];\n}\n\nlet TransitionPhase;\n\n(function (TransitionPhase) {\n TransitionPhase[\"MOUNT\"] = \"mount\";\n TransitionPhase[\"ENTER\"] = \"enter\";\n TransitionPhase[\"UPDATE\"] = \"update\";\n TransitionPhase[\"LEAVE\"] = \"leave\";\n})(TransitionPhase || (TransitionPhase = {}));\n\nfunction useTransition(data, props, deps) {\n const propsFn = is.fun(props) && props;\n const {\n reset,\n sort,\n trail = 0,\n expires = true,\n exitBeforeEnter = false,\n onDestroyed,\n ref: propsRef,\n config: propsConfig\n } = propsFn ? propsFn() : props;\n const ref = useMemo(() => propsFn || arguments.length == 3 ? SpringRef() : void 0, []);\n const items = toArray(data);\n const transitions = [];\n const usedTransitions = useRef(null);\n const prevTransitions = reset ? null : usedTransitions.current;\n useLayoutEffect(() => {\n usedTransitions.current = transitions;\n });\n useOnce(() => {\n each(usedTransitions.current, t => {\n var _t$ctrl$ref;\n\n (_t$ctrl$ref = t.ctrl.ref) == null ? void 0 : _t$ctrl$ref.add(t.ctrl);\n const change = changes.get(t);\n\n if (change) {\n t.ctrl.start(change.payload);\n }\n });\n return () => {\n each(usedTransitions.current, t => {\n if (t.expired) {\n clearTimeout(t.expirationId);\n }\n\n detachRefs(t.ctrl, ref);\n t.ctrl.stop(true);\n });\n };\n });\n const keys = getKeys(items, propsFn ? propsFn() : props, prevTransitions);\n const expired = reset && usedTransitions.current || [];\n useLayoutEffect(() => each(expired, ({\n ctrl,\n item,\n key\n }) => {\n detachRefs(ctrl, ref);\n callProp(onDestroyed, item, key);\n }));\n const reused = [];\n if (prevTransitions) each(prevTransitions, (t, i) => {\n if (t.expired) {\n clearTimeout(t.expirationId);\n expired.push(t);\n } else {\n i = reused[i] = keys.indexOf(t.key);\n if (~i) transitions[i] = t;\n }\n });\n each(items, (item, i) => {\n if (!transitions[i]) {\n transitions[i] = {\n key: keys[i],\n item,\n phase: TransitionPhase.MOUNT,\n ctrl: new Controller()\n };\n transitions[i].ctrl.item = item;\n }\n });\n\n if (reused.length) {\n let i = -1;\n const {\n leave\n } = propsFn ? propsFn() : props;\n each(reused, (keyIndex, prevIndex) => {\n const t = prevTransitions[prevIndex];\n\n if (~keyIndex) {\n i = transitions.indexOf(t);\n transitions[i] = _extends({}, t, {\n item: items[keyIndex]\n });\n } else if (leave) {\n transitions.splice(++i, 0, t);\n }\n });\n }\n\n if (is.fun(sort)) {\n transitions.sort((a, b) => sort(a.item, b.item));\n }\n\n let delay = -trail;\n const forceUpdate = useForceUpdate();\n const defaultProps = getDefaultProps(props);\n const changes = new Map();\n const exitingTransitions = useRef(new Map());\n const forceChange = useRef(false);\n each(transitions, (t, i) => {\n const key = t.key;\n const prevPhase = t.phase;\n const p = propsFn ? propsFn() : props;\n let to;\n let phase;\n let propsDelay = callProp(p.delay || 0, key);\n\n if (prevPhase == TransitionPhase.MOUNT) {\n to = p.enter;\n phase = TransitionPhase.ENTER;\n } else {\n const isLeave = keys.indexOf(key) < 0;\n\n if (prevPhase != TransitionPhase.LEAVE) {\n if (isLeave) {\n to = p.leave;\n phase = TransitionPhase.LEAVE;\n } else if (to = p.update) {\n phase = TransitionPhase.UPDATE;\n } else return;\n } else if (!isLeave) {\n to = p.enter;\n phase = TransitionPhase.ENTER;\n } else return;\n }\n\n to = callProp(to, t.item, i);\n to = is.obj(to) ? inferTo(to) : {\n to\n };\n\n if (!to.config) {\n const config = propsConfig || defaultProps.config;\n to.config = callProp(config, t.item, i, phase);\n }\n\n delay += trail;\n\n const payload = _extends({}, defaultProps, {\n delay: propsDelay + delay,\n ref: propsRef,\n immediate: p.immediate,\n reset: false\n }, to);\n\n if (phase == TransitionPhase.ENTER && is.und(payload.from)) {\n const _p = propsFn ? propsFn() : props;\n\n const from = is.und(_p.initial) || prevTransitions ? _p.from : _p.initial;\n payload.from = callProp(from, t.item, i);\n }\n\n const {\n onResolve\n } = payload;\n\n payload.onResolve = result => {\n callProp(onResolve, result);\n const transitions = usedTransitions.current;\n const t = transitions.find(t => t.key === key);\n if (!t) return;\n\n if (result.cancelled && t.phase != TransitionPhase.UPDATE) {\n return;\n }\n\n if (t.ctrl.idle) {\n const idle = transitions.every(t => t.ctrl.idle);\n\n if (t.phase == TransitionPhase.LEAVE) {\n const expiry = callProp(expires, t.item);\n\n if (expiry !== false) {\n const expiryMs = expiry === true ? 0 : expiry;\n t.expired = true;\n\n if (!idle && expiryMs > 0) {\n if (expiryMs <= 0x7fffffff) t.expirationId = setTimeout(forceUpdate, expiryMs);\n return;\n }\n }\n }\n\n if (idle && transitions.some(t => t.expired)) {\n exitingTransitions.current.delete(t);\n\n if (exitBeforeEnter) {\n forceChange.current = true;\n }\n\n forceUpdate();\n }\n }\n };\n\n const springs = getSprings(t.ctrl, payload);\n\n if (phase === TransitionPhase.LEAVE && exitBeforeEnter) {\n exitingTransitions.current.set(t, {\n phase,\n springs,\n payload\n });\n } else {\n changes.set(t, {\n phase,\n springs,\n payload\n });\n }\n });\n const context = useContext(SpringContext);\n const prevContext = usePrev(context);\n const hasContext = context !== prevContext && hasProps(context);\n useLayoutEffect(() => {\n if (hasContext) {\n each(transitions, t => {\n t.ctrl.start({\n default: context\n });\n });\n }\n }, [context]);\n each(changes, (_, t) => {\n if (exitingTransitions.current.size) {\n const ind = transitions.findIndex(state => state.key === t.key);\n transitions.splice(ind, 1);\n }\n });\n useLayoutEffect(() => {\n each(exitingTransitions.current.size ? exitingTransitions.current : changes, ({\n phase,\n payload\n }, t) => {\n const {\n ctrl\n } = t;\n t.phase = phase;\n ref == null ? void 0 : ref.add(ctrl);\n\n if (hasContext && phase == TransitionPhase.ENTER) {\n ctrl.start({\n default: context\n });\n }\n\n if (payload) {\n replaceRef(ctrl, payload.ref);\n\n if (ctrl.ref && !forceChange.current) {\n ctrl.update(payload);\n } else {\n ctrl.start(payload);\n\n if (forceChange.current) {\n forceChange.current = false;\n }\n }\n }\n });\n }, reset ? void 0 : deps);\n\n const renderTransitions = render => React.createElement(React.Fragment, null, transitions.map((t, i) => {\n const {\n springs\n } = changes.get(t) || t.ctrl;\n const elem = render(_extends({}, springs), t.item, t, i);\n return elem && elem.type ? React.createElement(elem.type, _extends({}, elem.props, {\n key: is.str(t.key) || is.num(t.key) ? t.key : t.ctrl.id,\n ref: elem.ref\n })) : elem;\n }));\n\n return ref ? [renderTransitions, ref] : renderTransitions;\n}\nlet nextKey = 1;\n\nfunction getKeys(items, {\n key,\n keys = key\n}, prevTransitions) {\n if (keys === null) {\n const reused = new Set();\n return items.map(item => {\n const t = prevTransitions && prevTransitions.find(t => t.item === item && t.phase !== TransitionPhase.LEAVE && !reused.has(t));\n\n if (t) {\n reused.add(t);\n return t.key;\n }\n\n return nextKey++;\n });\n }\n\n return is.und(keys) ? items : is.fun(keys) ? items.map(keys) : toArray(keys);\n}\n\nconst _excluded$2 = [\"children\"];\nfunction Spring(_ref) {\n let {\n children\n } = _ref,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$2);\n\n return children(useSpring(props));\n}\n\nconst _excluded$1 = [\"items\", \"children\"];\nfunction Trail(_ref) {\n let {\n items,\n children\n } = _ref,\n props = _objectWithoutPropertiesLoose(_ref, _excluded$1);\n\n const trails = useTrail(items.length, props);\n return items.map((item, index) => {\n const result = children(item, index);\n return is.fun(result) ? result(trails[index]) : result;\n });\n}\n\nconst _excluded = [\"items\", \"children\"];\nfunction Transition(_ref) {\n let {\n items,\n children\n } = _ref,\n props = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n return useTransition(items, props)(children);\n}\n\nclass Interpolation extends FrameValue {\n constructor(source, args) {\n super();\n this.key = void 0;\n this.idle = true;\n this.calc = void 0;\n this._active = new Set();\n this.source = source;\n this.calc = createInterpolator(...args);\n\n const value = this._get();\n\n const nodeType = getAnimatedType(value);\n setAnimated(this, nodeType.create(value));\n }\n\n advance(_dt) {\n const value = this._get();\n\n const oldValue = this.get();\n\n if (!isEqual(value, oldValue)) {\n getAnimated(this).setValue(value);\n\n this._onChange(value, this.idle);\n }\n\n if (!this.idle && checkIdle(this._active)) {\n becomeIdle(this);\n }\n }\n\n _get() {\n const inputs = is.arr(this.source) ? this.source.map(getFluidValue) : toArray(getFluidValue(this.source));\n return this.calc(...inputs);\n }\n\n _start() {\n if (this.idle && !checkIdle(this._active)) {\n this.idle = false;\n each(getPayload(this), node => {\n node.done = false;\n });\n\n if (Globals.skipAnimation) {\n raf.batchedUpdates(() => this.advance());\n becomeIdle(this);\n } else {\n frameLoop.start(this);\n }\n }\n }\n\n _attach() {\n let priority = 1;\n each(toArray(this.source), source => {\n if (hasFluidValue(source)) {\n addFluidObserver(source, this);\n }\n\n if (isFrameValue(source)) {\n if (!source.idle) {\n this._active.add(source);\n }\n\n priority = Math.max(priority, source.priority + 1);\n }\n });\n this.priority = priority;\n\n this._start();\n }\n\n _detach() {\n each(toArray(this.source), source => {\n if (hasFluidValue(source)) {\n removeFluidObserver(source, this);\n }\n });\n\n this._active.clear();\n\n becomeIdle(this);\n }\n\n eventObserved(event) {\n if (event.type == 'change') {\n if (event.idle) {\n this.advance();\n } else {\n this._active.add(event.parent);\n\n this._start();\n }\n } else if (event.type == 'idle') {\n this._active.delete(event.parent);\n } else if (event.type == 'priority') {\n this.priority = toArray(this.source).reduce((highest, parent) => Math.max(highest, (isFrameValue(parent) ? parent.priority : 0) + 1), 0);\n }\n }\n\n}\n\nfunction isIdle(source) {\n return source.idle !== false;\n}\n\nfunction checkIdle(active) {\n return !active.size || Array.from(active).every(isIdle);\n}\n\nfunction becomeIdle(self) {\n if (!self.idle) {\n self.idle = true;\n each(getPayload(self), node => {\n node.done = true;\n });\n callFluidObservers(self, {\n type: 'idle',\n parent: self\n });\n }\n}\n\nconst to = (source, ...args) => new Interpolation(source, args);\nconst interpolate = (source, ...args) => (deprecateInterpolate(), new Interpolation(source, args));\n\nGlobals.assign({\n createStringInterpolator,\n to: (source, args) => new Interpolation(source, args)\n});\nconst update = frameLoop.advance;\n\nexport { BailSignal, Controller, FrameValue, Interpolation, Spring, SpringContext, SpringRef, SpringValue, Trail, Transition, config, easings, inferTo, interpolate, to, update, useChain, useSpring, useSpringRef, useSprings, useTrail, useTransition };\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { DockviewDisposable, } from 'dockview-core';\n/**\n * This component is intended to interface between vanilla-js and React hence we need to be\n * creative in how we update props.\n * A ref of the component is exposed with an update method; which when called stores the props\n * as a ref within this component and forcefully triggers a re-render of the component using\n * the ref of props we just set on the renderered component as the props passed to the inner\n * component\n */\nconst ReactComponentBridge = (props, ref) => {\n const [_, triggerRender] = React.useState();\n const _props = React.useRef(props.componentProps);\n React.useImperativeHandle(ref, () => ({\n update: (componentProps) => {\n _props.current = Object.assign(Object.assign({}, _props.current), componentProps);\n /**\n * setting a arbitrary piece of state within this component will\n * trigger a re-render.\n * we use this rather than updating through a prop since we can\n * pass a ref into the vanilla-js world.\n */\n triggerRender(Date.now());\n },\n }), []);\n return React.createElement(props.component, _props.current);\n};\nReactComponentBridge.displayName = 'DockviewReactJsBridge';\n/**\n * Since we are storing the React.Portal references in a rendered array they\n * require a key property like any other React element rendered in an array\n * to prevent excessive re-rendering\n */\nconst uniquePortalKeyGenerator = (() => {\n let value = 1;\n return { next: () => `dockview_react_portal_key_${(value++).toString()}` };\n})();\nexport const ReactPartContext = React.createContext({});\nexport class ReactPart {\n constructor(parent, portalStore, component, parameters, context) {\n this.parent = parent;\n this.portalStore = portalStore;\n this.component = component;\n this.parameters = parameters;\n this.context = context;\n this._initialProps = {};\n this.disposed = false;\n this.createPortal();\n }\n update(props) {\n if (this.disposed) {\n throw new Error('invalid operation: resource is already disposed');\n }\n if (!this.componentInstance) {\n // if the component is yet to be mounted store the props\n this._initialProps = Object.assign(Object.assign({}, this._initialProps), props);\n }\n else {\n this.componentInstance.update(props);\n }\n }\n createPortal() {\n if (this.disposed) {\n throw new Error('invalid operation: resource is already disposed');\n }\n if (!isReactComponent(this.component)) {\n /**\n * we know this isn't a React.FunctionComponent so throw an error here.\n * if we do not intercept then React library will throw a very obsure error\n * for the same reason... at least at this point we will emit a sensible stacktrace.\n */\n throw new Error('Dockview: Only React.memo(...), React.ForwardRef(...) and functional components are accepted as components');\n }\n const bridgeComponent = React.createElement(React.forwardRef(ReactComponentBridge), {\n component: this\n .component,\n componentProps: this.parameters,\n ref: (element) => {\n this.componentInstance = element;\n if (Object.keys(this._initialProps).length > 0) {\n this.componentInstance.update(this._initialProps);\n this._initialProps = {}; // don't keep a reference to the users object once no longer required\n }\n },\n });\n const node = this.context\n ? React.createElement(ReactPartContext.Provider, { value: this.context }, bridgeComponent)\n : bridgeComponent;\n const portal = ReactDOM.createPortal(node, this.parent, uniquePortalKeyGenerator.next());\n this.ref = {\n portal,\n disposable: this.portalStore.addPortal(portal),\n };\n }\n dispose() {\n var _a;\n (_a = this.ref) === null || _a === void 0 ? void 0 : _a.disposable.dispose();\n this.disposed = true;\n }\n}\n/**\n * A React Hook that returns an array of portals to be rendered by the user of this hook\n * and a disposable function to add a portal. Calling dispose removes this portal from the\n * portal array\n */\nexport const usePortalsLifecycle = () => {\n const [portals, setPortals] = React.useState([]);\n React.useDebugValue(`Portal count: ${portals.length}`);\n const addPortal = React.useCallback((portal) => {\n setPortals((existingPortals) => [...existingPortals, portal]);\n let disposed = false;\n return DockviewDisposable.from(() => {\n if (disposed) {\n throw new Error('invalid operation: resource already disposed');\n }\n disposed = true;\n setPortals((existingPortals) => existingPortals.filter((p) => p !== portal));\n });\n }, []);\n return [portals, addPortal];\n};\nexport function isReactComponent(component) {\n /**\n * Yes, we could use \"react-is\" but that would introduce an unwanted peer dependency\n * so for now we will check in a rather crude fashion...\n */\n return (typeof component === 'function' /** Functional Componnts */ ||\n !!(component === null || component === void 0 ? void 0 : component.$$typeof) /** React.memo(...) Components */);\n}\n","\"use client\";\n\n// src/QueryErrorResetBoundary.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction createValue() {\n let isReset = false;\n return {\n clearReset: () => {\n isReset = false;\n },\n reset: () => {\n isReset = true;\n },\n isReset: () => {\n return isReset;\n }\n };\n}\nvar QueryErrorResetBoundaryContext = React.createContext(createValue());\nvar useQueryErrorResetBoundary = () => React.useContext(QueryErrorResetBoundaryContext);\nvar QueryErrorResetBoundary = ({\n children\n}) => {\n const [value] = React.useState(() => createValue());\n return /* @__PURE__ */ jsx(QueryErrorResetBoundaryContext.Provider, { value, children: typeof children === \"function\" ? children(value) : children });\n};\nexport {\n QueryErrorResetBoundary,\n useQueryErrorResetBoundary\n};\n//# sourceMappingURL=QueryErrorResetBoundary.js.map","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 default memoize;\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 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 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 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","/**\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\nmodule.exports = basePropertyOf;\n","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport getComputedStyle from \"./dom-utils/getComputedStyle.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport validateModifiers from \"./utils/validateModifiers.js\";\nimport uniqueBy from \"./utils/uniqueBy.js\";\nimport getBasePlacement from \"./utils/getBasePlacement.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nimport { auto } from \"./enums.js\";\nvar INVALID_ELEMENT_ERROR = 'Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.';\nvar INFINITE_LOOP_ERROR = 'Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.';\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(setOptionsAction) {\n var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n }); // Validate the provided modifiers so that the consumer will get warned\n // if one of the modifiers is invalid for any reason\n\n if (process.env.NODE_ENV !== \"production\") {\n var modifiers = uniqueBy([].concat(orderedModifiers, state.options.modifiers), function (_ref) {\n var name = _ref.name;\n return name;\n });\n validateModifiers(modifiers);\n\n if (getBasePlacement(state.options.placement) === auto) {\n var flipModifier = state.orderedModifiers.find(function (_ref2) {\n var name = _ref2.name;\n return name === 'flip';\n });\n\n if (!flipModifier) {\n console.error(['Popper: \"auto\" placements require the \"flip\" modifier be', 'present and enabled to work.'].join(' '));\n }\n }\n\n var _getComputedStyle = getComputedStyle(popper),\n marginTop = _getComputedStyle.marginTop,\n marginRight = _getComputedStyle.marginRight,\n marginBottom = _getComputedStyle.marginBottom,\n marginLeft = _getComputedStyle.marginLeft; // We no longer take into account `margins` on the popper, and it can\n // cause bugs with positioning, so we'll warn the consumer\n\n\n if ([marginTop, marginRight, marginBottom, marginLeft].some(function (margin) {\n return parseFloat(margin);\n })) {\n console.warn(['Popper: CSS \"margin\" styles cannot be used to apply padding', 'between the popper and its reference element or boundary.', 'To replicate margin, use the `offset` modifier, as well as', 'the `padding` option in the `preventOverflow` and `flip`', 'modifiers.'].join(' '));\n }\n }\n\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(INVALID_ELEMENT_ERROR);\n }\n\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n var __debug_loops__ = 0;\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (process.env.NODE_ENV !== \"production\") {\n __debug_loops__ += 1;\n\n if (__debug_loops__ > 100) {\n console.error(INFINITE_LOOP_ERROR);\n break;\n }\n }\n\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(INVALID_ELEMENT_ERROR);\n }\n\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref3) {\n var name = _ref3.name,\n _ref3$options = _ref3.options,\n options = _ref3$options === void 0 ? {} : _ref3$options,\n effect = _ref3.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","import * as tslib_1 from \"tslib\";\nfunction ItoI(a) {\n return a;\n}\nfunction innerCreateMedium(defaults, middleware) {\n if (middleware === void 0) { middleware = ItoI; }\n var buffer = [];\n var assigned = false;\n var medium = {\n read: function () {\n if (assigned) {\n throw new Error('Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.');\n }\n if (buffer.length) {\n return buffer[buffer.length - 1];\n }\n return defaults;\n },\n useMedium: function (data) {\n var item = middleware(data, assigned);\n buffer.push(item);\n return function () {\n buffer = buffer.filter(function (x) { return x !== item; });\n };\n },\n assignSyncMedium: function (cb) {\n assigned = true;\n while (buffer.length) {\n var cbs = buffer;\n buffer = [];\n cbs.forEach(cb);\n }\n buffer = {\n push: function (x) { return cb(x); },\n filter: function () { return buffer; },\n };\n },\n assignMedium: function (cb) {\n assigned = true;\n var pendingQueue = [];\n if (buffer.length) {\n var cbs = buffer;\n buffer = [];\n cbs.forEach(cb);\n pendingQueue = buffer;\n }\n var executeQueue = function () {\n var cbs = pendingQueue;\n pendingQueue = [];\n cbs.forEach(cb);\n };\n var cycle = function () { return Promise.resolve().then(executeQueue); };\n cycle();\n buffer = {\n push: function (x) {\n pendingQueue.push(x);\n cycle();\n },\n filter: function (filter) {\n pendingQueue = pendingQueue.filter(filter);\n return buffer;\n },\n };\n },\n };\n return medium;\n}\nexport function createMedium(defaults, middleware) {\n if (middleware === void 0) { middleware = ItoI; }\n return innerCreateMedium(defaults, middleware);\n}\nexport function createSidecarMedium(options) {\n if (options === void 0) { options = {}; }\n var medium = innerCreateMedium(null);\n medium.options = tslib_1.__assign({ async: true, ssr: false }, options);\n return medium;\n}\n","import _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport _defineProperty from '@babel/runtime/helpers/esm/defineProperty';\nimport React, { PureComponent } from 'react';\n\nfunction withSideEffect(reducePropsToState, handleStateChangeOnClient) {\n if (process.env.NODE_ENV !== \"production\") {\n if (typeof reducePropsToState !== 'function') {\n throw new Error('Expected reducePropsToState to be a function.');\n }\n\n if (typeof handleStateChangeOnClient !== 'function') {\n throw new Error('Expected handleStateChangeOnClient to be a function.');\n }\n }\n\n function getDisplayName(WrappedComponent) {\n return WrappedComponent.displayName || WrappedComponent.name || 'Component';\n }\n\n return function wrap(WrappedComponent) {\n if (process.env.NODE_ENV !== \"production\") {\n if (typeof WrappedComponent !== 'function') {\n throw new Error('Expected WrappedComponent to be a React component.');\n }\n }\n\n var mountedInstances = [];\n var state;\n\n function emitChange() {\n state = reducePropsToState(mountedInstances.map(function (instance) {\n return instance.props;\n }));\n handleStateChangeOnClient(state);\n }\n\n var SideEffect = /*#__PURE__*/function (_PureComponent) {\n _inheritsLoose(SideEffect, _PureComponent);\n\n function SideEffect() {\n return _PureComponent.apply(this, arguments) || this;\n }\n\n // Try to use displayName of wrapped component\n SideEffect.peek = function peek() {\n return state;\n };\n\n var _proto = SideEffect.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n mountedInstances.push(this);\n emitChange();\n };\n\n _proto.componentDidUpdate = function componentDidUpdate() {\n emitChange();\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n var index = mountedInstances.indexOf(this);\n mountedInstances.splice(index, 1);\n emitChange();\n };\n\n _proto.render = function render() {\n return /*#__PURE__*/React.createElement(WrappedComponent, this.props);\n };\n\n return SideEffect;\n }(PureComponent);\n\n _defineProperty(SideEffect, \"displayName\", \"SideEffect(\" + getDisplayName(WrappedComponent) + \")\");\n\n return SideEffect;\n };\n}\n\nexport default withSideEffect;\n","// community-modules/core/src/localEventService.ts\nvar LocalEventService = class {\n constructor() {\n this.allSyncListeners = /* @__PURE__ */ new Map();\n this.allAsyncListeners = /* @__PURE__ */ new Map();\n this.globalSyncListeners = /* @__PURE__ */ new Set();\n this.globalAsyncListeners = /* @__PURE__ */ new Set();\n this.asyncFunctionsQueue = [];\n this.scheduled = false;\n // using an object performs better than a Set for the number of different events we have\n this.firedEvents = {};\n }\n setFrameworkOverrides(frameworkOverrides) {\n this.frameworkOverrides = frameworkOverrides;\n }\n getListeners(eventType, async, autoCreateListenerCollection) {\n const listenerMap = async ? this.allAsyncListeners : this.allSyncListeners;\n let listeners = listenerMap.get(eventType);\n if (!listeners && autoCreateListenerCollection) {\n listeners = /* @__PURE__ */ new Set();\n listenerMap.set(eventType, listeners);\n }\n return listeners;\n }\n noRegisteredListenersExist() {\n return this.allSyncListeners.size === 0 && this.allAsyncListeners.size === 0 && this.globalSyncListeners.size === 0 && this.globalAsyncListeners.size === 0;\n }\n addEventListener(eventType, listener, async = false) {\n this.getListeners(eventType, async, true).add(listener);\n }\n removeEventListener(eventType, listener, async = false) {\n const listeners = this.getListeners(eventType, async, false);\n if (!listeners) {\n return;\n }\n listeners.delete(listener);\n if (listeners.size === 0) {\n const listenerMap = async ? this.allAsyncListeners : this.allSyncListeners;\n listenerMap.delete(eventType);\n }\n }\n addGlobalListener(listener, async = false) {\n (async ? this.globalAsyncListeners : this.globalSyncListeners).add(listener);\n }\n removeGlobalListener(listener, async = false) {\n (async ? this.globalAsyncListeners : this.globalSyncListeners).delete(listener);\n }\n dispatchEvent(event) {\n const agEvent = event;\n this.dispatchToListeners(agEvent, true);\n this.dispatchToListeners(agEvent, false);\n this.firedEvents[agEvent.type] = true;\n }\n dispatchEventOnce(event) {\n if (!this.firedEvents[event.type]) {\n this.dispatchEvent(event);\n }\n }\n dispatchToListeners(event, async) {\n const eventType = event.type;\n if (async && \"event\" in event) {\n const browserEvent = event.event;\n if (browserEvent instanceof Event) {\n event.eventPath = browserEvent.composedPath();\n }\n }\n const processEventListeners = (listeners2, originalListeners2) => listeners2.forEach((listener) => {\n if (!originalListeners2.has(listener)) {\n return;\n }\n const callback = this.frameworkOverrides ? () => this.frameworkOverrides.wrapIncoming(() => listener(event)) : () => listener(event);\n if (async) {\n this.dispatchAsync(callback);\n } else {\n callback();\n }\n });\n const originalListeners = this.getListeners(eventType, async, false) ?? /* @__PURE__ */ new Set();\n const listeners = new Set(originalListeners);\n if (listeners.size > 0) {\n processEventListeners(listeners, originalListeners);\n }\n const globalListeners = new Set(\n async ? this.globalAsyncListeners : this.globalSyncListeners\n );\n globalListeners.forEach((listener) => {\n const callback = this.frameworkOverrides ? () => this.frameworkOverrides.wrapIncoming(() => listener(eventType, event)) : () => listener(eventType, event);\n if (async) {\n this.dispatchAsync(callback);\n } else {\n callback();\n }\n });\n }\n // this gets called inside the grid's thread, for each event that it\n // wants to set async. the grid then batches the events into one setTimeout()\n // because setTimeout() is an expensive operation. ideally we would have\n // each event in it's own setTimeout(), but we batch for performance.\n dispatchAsync(func) {\n this.asyncFunctionsQueue.push(func);\n if (!this.scheduled) {\n const flush = () => {\n window.setTimeout(this.flushAsyncQueue.bind(this), 0);\n };\n this.frameworkOverrides ? this.frameworkOverrides.wrapIncoming(flush) : flush();\n this.scheduled = true;\n }\n }\n // this happens in the next VM turn only, and empties the queue of events\n flushAsyncQueue() {\n this.scheduled = false;\n const queueCopy = this.asyncFunctionsQueue.slice();\n this.asyncFunctionsQueue = [];\n queueCopy.forEach((func) => func());\n }\n};\n\n// community-modules/core/src/modules/moduleNames.ts\nvar ModuleNames = /* @__PURE__ */ ((ModuleNames2) => {\n ModuleNames2[\"CommunityCoreModule\"] = \"@ag-grid-community/core\";\n ModuleNames2[\"InfiniteRowModelModule\"] = \"@ag-grid-community/infinite-row-model\";\n ModuleNames2[\"ClientSideRowModelModule\"] = \"@ag-grid-community/client-side-row-model\";\n ModuleNames2[\"CsvExportModule\"] = \"@ag-grid-community/csv-export\";\n ModuleNames2[\"EnterpriseCoreModule\"] = \"@ag-grid-enterprise/core\";\n ModuleNames2[\"RowGroupingModule\"] = \"@ag-grid-enterprise/row-grouping\";\n ModuleNames2[\"ColumnsToolPanelModule\"] = \"@ag-grid-enterprise/column-tool-panel\";\n ModuleNames2[\"FiltersToolPanelModule\"] = \"@ag-grid-enterprise/filter-tool-panel\";\n ModuleNames2[\"MenuModule\"] = \"@ag-grid-enterprise/menu\";\n ModuleNames2[\"SetFilterModule\"] = \"@ag-grid-enterprise/set-filter\";\n ModuleNames2[\"MultiFilterModule\"] = \"@ag-grid-enterprise/multi-filter\";\n ModuleNames2[\"StatusBarModule\"] = \"@ag-grid-enterprise/status-bar\";\n ModuleNames2[\"SideBarModule\"] = \"@ag-grid-enterprise/side-bar\";\n ModuleNames2[\"RangeSelectionModule\"] = \"@ag-grid-enterprise/range-selection\";\n ModuleNames2[\"MasterDetailModule\"] = \"@ag-grid-enterprise/master-detail\";\n ModuleNames2[\"RichSelectModule\"] = \"@ag-grid-enterprise/rich-select\";\n ModuleNames2[\"GridChartsModule\"] = \"@ag-grid-enterprise/charts\";\n ModuleNames2[\"ViewportRowModelModule\"] = \"@ag-grid-enterprise/viewport-row-model\";\n ModuleNames2[\"ServerSideRowModelModule\"] = \"@ag-grid-enterprise/server-side-row-model\";\n ModuleNames2[\"ExcelExportModule\"] = \"@ag-grid-enterprise/excel-export\";\n ModuleNames2[\"ClipboardModule\"] = \"@ag-grid-enterprise/clipboard\";\n ModuleNames2[\"SparklinesModule\"] = \"@ag-grid-enterprise/sparklines\";\n ModuleNames2[\"AdvancedFilterModule\"] = \"@ag-grid-enterprise/advanced-filter\";\n ModuleNames2[\"AngularModule\"] = \"@ag-grid-community/angular\";\n ModuleNames2[\"ReactModule\"] = \"@ag-grid-community/react\";\n ModuleNames2[\"VueModule\"] = \"@ag-grid-community/vue\";\n return ModuleNames2;\n})(ModuleNames || {});\n\n// community-modules/core/src/utils/function.ts\nvar doOnceFlags = {};\nfunction _doOnce(func, key) {\n if (doOnceFlags[key]) {\n return;\n }\n func();\n doOnceFlags[key] = true;\n}\nfunction _log(message, ...args) {\n console.log(\"AG Grid: \" + message, ...args);\n}\nfunction _warnOnce(msg, ...args) {\n _doOnce(() => console.warn(\"AG Grid: \" + msg, ...args), msg + args?.join(\"\"));\n}\nfunction _errorOnce(msg, ...args) {\n _doOnce(() => console.error(\"AG Grid: \" + msg, ...args), msg + args?.join(\"\"));\n}\nfunction _isFunction(val) {\n return !!(val && val.constructor && val.call && val.apply);\n}\nfunction _executeInAWhile(funcs) {\n _executeAfter(funcs, 400);\n}\nvar executeNextVMTurnFuncs = [];\nvar executeNextVMTurnPending = false;\nfunction _executeNextVMTurn(func) {\n executeNextVMTurnFuncs.push(func);\n if (executeNextVMTurnPending) {\n return;\n }\n executeNextVMTurnPending = true;\n window.setTimeout(() => {\n const funcsCopy = executeNextVMTurnFuncs.slice();\n executeNextVMTurnFuncs.length = 0;\n executeNextVMTurnPending = false;\n funcsCopy.forEach((func2) => func2());\n }, 0);\n}\nfunction _executeAfter(funcs, milliseconds = 0) {\n if (funcs.length > 0) {\n window.setTimeout(() => funcs.forEach((func) => func()), milliseconds);\n }\n}\nfunction _debounce(func, delay) {\n let timeout;\n return function(...args) {\n const context = this;\n window.clearTimeout(timeout);\n timeout = window.setTimeout(function() {\n func.apply(context, args);\n }, delay);\n };\n}\nfunction _throttle(func, wait) {\n let previousCall = 0;\n return function(...args) {\n const context = this;\n const currentCall = (/* @__PURE__ */ new Date()).getTime();\n if (currentCall - previousCall < wait) {\n return;\n }\n previousCall = currentCall;\n func.apply(context, args);\n };\n}\nfunction _waitUntil(condition, callback, timeout = 100, timeoutMessage) {\n const timeStamp = (/* @__PURE__ */ new Date()).getTime();\n let interval = null;\n let executed = false;\n const internalCallback = () => {\n const reachedTimeout = (/* @__PURE__ */ new Date()).getTime() - timeStamp > timeout;\n if (condition() || reachedTimeout) {\n callback();\n executed = true;\n if (interval != null) {\n window.clearInterval(interval);\n interval = null;\n }\n if (reachedTimeout && timeoutMessage) {\n _warnOnce(timeoutMessage);\n }\n }\n };\n internalCallback();\n if (!executed) {\n interval = window.setInterval(internalCallback, 10);\n }\n}\nfunction _compose(...fns) {\n return (arg) => fns.reduce((composed, f) => f(composed), arg);\n}\n\n// community-modules/core/src/utils/generic.ts\nfunction _makeNull(value) {\n if (value == null || value === \"\") {\n return null;\n }\n return value;\n}\nfunction _exists(value, allowEmptyString = false) {\n return value != null && (value !== \"\" || allowEmptyString);\n}\nfunction _missing(value) {\n return !_exists(value);\n}\nfunction _missingOrEmpty(value) {\n return value == null || value.length === 0;\n}\nfunction _toStringOrNull(value) {\n return value != null && typeof value.toString === \"function\" ? value.toString() : null;\n}\nfunction _attrToNumber(value) {\n if (value === void 0) {\n return;\n }\n if (value === null || value === \"\") {\n return null;\n }\n if (typeof value === \"number\") {\n return isNaN(value) ? void 0 : value;\n }\n const valueParsed = parseInt(value, 10);\n return isNaN(valueParsed) ? void 0 : valueParsed;\n}\nfunction _attrToBoolean(value) {\n if (value === void 0) {\n return;\n }\n if (value === null || value === \"\") {\n return false;\n }\n return toBoolean(value);\n}\nfunction toBoolean(value) {\n if (typeof value === \"boolean\") {\n return value;\n }\n if (typeof value === \"string\") {\n return value.toUpperCase() === \"TRUE\" || value == \"\";\n }\n return false;\n}\nfunction _jsonEquals(val1, val2) {\n const val1Json = val1 ? JSON.stringify(val1) : null;\n const val2Json = val2 ? JSON.stringify(val2) : null;\n return val1Json === val2Json;\n}\nfunction _defaultComparator(valueA, valueB, accentedCompare = false) {\n const valueAMissing = valueA == null;\n const valueBMissing = valueB == null;\n if (valueA && valueA.toNumber) {\n valueA = valueA.toNumber();\n }\n if (valueB && valueB.toNumber) {\n valueB = valueB.toNumber();\n }\n if (valueAMissing && valueBMissing) {\n return 0;\n }\n if (valueAMissing) {\n return -1;\n }\n if (valueBMissing) {\n return 1;\n }\n function doQuickCompare(a, b) {\n return a > b ? 1 : a < b ? -1 : 0;\n }\n if (typeof valueA !== \"string\") {\n return doQuickCompare(valueA, valueB);\n }\n if (!accentedCompare) {\n return doQuickCompare(valueA, valueB);\n }\n try {\n return valueA.localeCompare(valueB);\n } catch (e) {\n return doQuickCompare(valueA, valueB);\n }\n}\nfunction _values(object) {\n if (object instanceof Set || object instanceof Map) {\n const arr = [];\n object.forEach((value) => arr.push(value));\n return arr;\n }\n return Object.values(object);\n}\n\n// community-modules/core/src/gridOptionsUtils.ts\nfunction isRowModelType(gos, rowModelType) {\n return gos.get(\"rowModelType\") === rowModelType;\n}\nfunction _isClientSideRowModel(gos) {\n return isRowModelType(gos, \"clientSide\");\n}\nfunction _isServerSideRowModel(gos) {\n return isRowModelType(gos, \"serverSide\");\n}\nfunction _isDomLayout(gos, domLayout) {\n return gos.get(\"domLayout\") === domLayout;\n}\nfunction _isRowSelection(gos) {\n return _getRowSelectionMode(gos) !== void 0;\n}\nfunction _useAsyncEvents(gos) {\n return !gos.get(\"suppressAsyncEvents\");\n}\nfunction _isGetRowHeightFunction(gos) {\n return typeof gos.get(\"getRowHeight\") === \"function\";\n}\nfunction _shouldMaintainColumnOrder(gos, isPivotColumns) {\n if (isPivotColumns) {\n return !gos.get(\"enableStrictPivotColumnOrder\");\n }\n return gos.get(\"maintainColumnOrder\");\n}\nfunction _getRowHeightForNode(gos, rowNode, allowEstimate = false, defaultRowHeight) {\n if (defaultRowHeight == null) {\n defaultRowHeight = gos.environment.getDefaultRowHeight();\n }\n if (_isGetRowHeightFunction(gos)) {\n if (allowEstimate) {\n return { height: defaultRowHeight, estimated: true };\n }\n const params = {\n node: rowNode,\n data: rowNode.data\n };\n const height = gos.getCallback(\"getRowHeight\")(params);\n if (isNumeric(height)) {\n if (height === 0) {\n _warnOnce(\n \"The return of `getRowHeight` cannot be zero. If the intention is to hide rows, use a filter instead.\"\n );\n }\n return { height: Math.max(1, height), estimated: false };\n }\n }\n if (rowNode.detail && gos.get(\"masterDetail\")) {\n return getMasterDetailRowHeight(gos);\n }\n const gridOptionsRowHeight = gos.get(\"rowHeight\");\n const rowHeight = gridOptionsRowHeight && isNumeric(gridOptionsRowHeight) ? gridOptionsRowHeight : defaultRowHeight;\n return { height: rowHeight, estimated: false };\n}\nfunction getMasterDetailRowHeight(gos) {\n if (gos.get(\"detailRowAutoHeight\")) {\n return { height: 1, estimated: false };\n }\n const defaultRowHeight = gos.get(\"detailRowHeight\");\n if (isNumeric(defaultRowHeight)) {\n return { height: defaultRowHeight, estimated: false };\n }\n return { height: 300, estimated: false };\n}\nfunction _getRowHeightAsNumber(gos) {\n const { environment } = gos;\n const gridOptionsRowHeight = gos.get(\"rowHeight\");\n if (!gridOptionsRowHeight || _missing(gridOptionsRowHeight)) {\n return environment.getDefaultRowHeight();\n }\n const rowHeight = environment.refreshRowHeightVariable();\n if (rowHeight !== -1) {\n return rowHeight;\n }\n _warnOnce(\"row height must be a number if not using standard row model\");\n return environment.getDefaultRowHeight();\n}\nfunction isNumeric(value) {\n return !isNaN(value) && typeof value === \"number\" && isFinite(value);\n}\nfunction _getDomData(gos, element, key) {\n const domData = element[gos.getDomDataKey()];\n return domData ? domData[key] : void 0;\n}\nfunction _setDomData(gos, element, key, value) {\n const domDataKey = gos.getDomDataKey();\n let domData = element[domDataKey];\n if (_missing(domData)) {\n domData = {};\n element[domDataKey] = domData;\n }\n domData[key] = value;\n}\nfunction _getDocument(gos) {\n let result = null;\n const gridOptionsGetDocument = gos.get(\"getDocument\");\n if (gridOptionsGetDocument && _exists(gridOptionsGetDocument)) {\n result = gridOptionsGetDocument();\n } else if (gos.eGridDiv) {\n result = gos.eGridDiv.ownerDocument;\n }\n if (result && _exists(result)) {\n return result;\n }\n return document;\n}\nfunction _getWindow(gos) {\n const eDocument = _getDocument(gos);\n return eDocument.defaultView || window;\n}\nfunction _getRootNode(gos) {\n return gos.eGridDiv.getRootNode();\n}\nfunction _getActiveDomElement(gos) {\n return _getRootNode(gos).activeElement;\n}\nfunction _isNothingFocused(gos) {\n const eDocument = _getDocument(gos);\n const activeEl = _getActiveDomElement(gos);\n return activeEl === null || activeEl === eDocument.body;\n}\nfunction _isAnimateRows(gos) {\n if (gos.get(\"ensureDomOrder\")) {\n return false;\n }\n return gos.get(\"animateRows\");\n}\nfunction _isGroupRowsSticky(gos) {\n if (gos.get(\"paginateChildRows\") || gos.get(\"groupHideOpenParents\") || _isDomLayout(gos, \"print\")) {\n return false;\n }\n return true;\n}\nfunction _isColumnsSortingCoupledToGroup(gos) {\n const autoGroupColumnDef = gos.get(\"autoGroupColumnDef\");\n return !autoGroupColumnDef?.comparator && !gos.get(\"treeData\");\n}\nfunction _getGroupAggFiltering(gos) {\n const userValue = gos.get(\"groupAggFiltering\");\n if (typeof userValue === \"function\") {\n return gos.getCallback(\"groupAggFiltering\");\n }\n if (userValue === true) {\n return () => true;\n }\n return void 0;\n}\nfunction _getGrandTotalRow(gos) {\n const userValue = gos.get(\"grandTotalRow\");\n if (userValue) {\n return userValue;\n }\n const legacyValue = gos.get(\"groupIncludeTotalFooter\");\n if (legacyValue) {\n return \"bottom\";\n }\n return void 0;\n}\nfunction _getGroupTotalRowCallback(gos) {\n const userValue = gos.get(\"groupTotalRow\");\n if (typeof userValue === \"function\") {\n return gos.getCallback(\"groupTotalRow\");\n }\n if (userValue) {\n return () => userValue;\n }\n const legacyValue = gos.get(\"groupIncludeFooter\");\n if (typeof legacyValue === \"function\") {\n const legacyCallback = gos.getCallback(\"groupIncludeFooter\");\n return (p) => {\n return legacyCallback(p) ? \"bottom\" : void 0;\n };\n }\n return () => legacyValue ? \"bottom\" : void 0;\n}\nfunction _isGroupMultiAutoColumn(gos) {\n if (gos.exists(\"groupDisplayType\")) {\n return gos.get(\"groupDisplayType\") === \"multipleColumns\";\n }\n return gos.get(\"groupHideOpenParents\");\n}\nfunction _isGroupUseEntireRow(gos, pivotMode) {\n if (pivotMode) {\n return false;\n }\n return gos.get(\"groupDisplayType\") === \"groupRows\";\n}\nfunction _getRowIdCallback(gos) {\n const getRowId = gos.getCallback(\"getRowId\");\n if (getRowId === void 0) {\n return getRowId;\n }\n return (params) => {\n let id = getRowId(params);\n if (typeof id !== \"string\") {\n _warnOnce(`The getRowId callback must return a string. The ID `, id, ` is being cast to a string.`);\n id = String(id);\n }\n return id;\n };\n}\nfunction _getCheckboxes(selection) {\n return selection?.checkboxes ?? true;\n}\nfunction _getHeaderCheckbox(selection) {\n return selection?.mode === \"multiRow\" && (selection.headerCheckbox ?? true);\n}\nfunction _getHideDisabledCheckboxes(selection) {\n return selection?.hideDisabledCheckboxes ?? false;\n}\nfunction _isUsingNewRowSelectionAPI(gos) {\n const rowSelection = gos.get(\"rowSelection\");\n return typeof rowSelection !== \"string\";\n}\nfunction _isUsingNewCellSelectionAPI(gos) {\n return gos.get(\"cellSelection\") !== void 0;\n}\nfunction _getSuppressMultiRanges(gos) {\n const selection = gos.get(\"cellSelection\");\n const useNewAPI = selection !== void 0;\n if (!useNewAPI) {\n return gos.get(\"suppressMultiRangeSelection\");\n }\n return typeof selection !== \"boolean\" ? selection?.suppressMultiRanges ?? false : false;\n}\nfunction _isCellSelectionEnabled(gos) {\n const selection = gos.get(\"cellSelection\");\n const useNewAPI = selection !== void 0;\n return useNewAPI ? !!selection : gos.get(\"enableRangeSelection\");\n}\nfunction _isRangeHandleEnabled(gos) {\n const selection = gos.get(\"cellSelection\");\n const useNewAPI = selection !== void 0;\n if (!useNewAPI) {\n return gos.get(\"enableRangeHandle\");\n }\n return typeof selection !== \"boolean\" ? selection.handle?.mode === \"range\" : false;\n}\nfunction _isFillHandleEnabled(gos) {\n const selection = gos.get(\"cellSelection\");\n const useNewAPI = selection !== void 0;\n if (!useNewAPI) {\n return gos.get(\"enableFillHandle\");\n }\n return typeof selection !== \"boolean\" ? selection.handle?.mode === \"fill\" : false;\n}\nfunction _getFillHandle(gos) {\n const selection = gos.get(\"cellSelection\");\n const useNewAPI = selection !== void 0;\n if (!useNewAPI) {\n return {\n mode: \"fill\",\n setFillValue: gos.get(\"fillOperation\"),\n direction: gos.get(\"fillHandleDirection\"),\n suppressClearOnFillReduction: gos.get(\"suppressClearOnFillReduction\")\n };\n }\n return typeof selection !== \"boolean\" && selection.handle?.mode === \"fill\" ? selection.handle : void 0;\n}\nfunction _getEnableClickSelection(gos) {\n const selection = gos.get(\"rowSelection\") ?? \"single\";\n if (typeof selection === \"string\") {\n const suppressRowClickSelection = gos.get(\"suppressRowClickSelection\");\n const suppressRowDeselection = gos.get(\"suppressRowDeselection\");\n if (suppressRowClickSelection && suppressRowDeselection) {\n return false;\n } else if (suppressRowClickSelection) {\n return \"enableDeselection\";\n } else if (suppressRowDeselection) {\n return \"enableSelection\";\n } else {\n return true;\n }\n }\n return selection.mode === \"singleRow\" || selection.mode === \"multiRow\" ? selection.enableClickSelection ?? false : false;\n}\nfunction _getEnableSelection(gos) {\n const enableClickSelection = _getEnableClickSelection(gos);\n return enableClickSelection === true || enableClickSelection === \"enableSelection\";\n}\nfunction _getEnableDeselection(gos) {\n const enableClickSelection = _getEnableClickSelection(gos);\n return enableClickSelection === true || enableClickSelection === \"enableDeselection\";\n}\nfunction _getIsRowSelectable(gos) {\n const selection = gos.get(\"rowSelection\");\n if (typeof selection === \"string\") {\n return gos.get(\"isRowSelectable\");\n }\n return selection?.isRowSelectable;\n}\nfunction _getRowSelectionMode(gos) {\n const selection = gos.get(\"rowSelection\");\n if (typeof selection === \"string\") {\n switch (selection) {\n case \"multiple\":\n return \"multiRow\";\n case \"single\":\n return \"singleRow\";\n default:\n return;\n }\n }\n return selection?.mode;\n}\nfunction _isMultiRowSelection(gos) {\n const mode = _getRowSelectionMode(gos);\n return mode === \"multiRow\";\n}\nfunction _getEnableSelectionWithoutKeys(gos) {\n const selection = gos.get(\"rowSelection\");\n if (typeof selection === \"string\") {\n return gos.get(\"rowMultiSelectWithClick\");\n }\n return selection?.enableSelectionWithoutKeys ?? false;\n}\nfunction _getGroupSelection(gos) {\n const selection = gos.get(\"rowSelection\");\n if (typeof selection === \"string\") {\n const groupSelectsChildren = gos.get(\"groupSelectsChildren\");\n const groupSelectsFiltered = gos.get(\"groupSelectsFiltered\");\n if (groupSelectsChildren && groupSelectsFiltered) {\n return \"filteredDescendants\";\n } else if (groupSelectsChildren) {\n return \"descendants\";\n } else {\n return \"self\";\n }\n }\n return selection?.mode === \"multiRow\" ? selection.groupSelects : void 0;\n}\nfunction _getGroupSelectsDescendants(gos) {\n const groupSelection = _getGroupSelection(gos);\n return groupSelection === \"descendants\" || groupSelection === \"filteredDescendants\";\n}\nfunction _isSetFilterByDefault(gos) {\n return gos.isModuleRegistered(\"@ag-grid-enterprise/set-filter\" /* SetFilterModule */) && !gos.get(\"suppressSetFilterByDefault\");\n}\n\n// community-modules/core/src/utils/array.ts\nfunction _existsAndNotEmpty(value) {\n return value != null && value.length > 0;\n}\nfunction _last(arr) {\n if (!arr || !arr.length) {\n return;\n }\n return arr[arr.length - 1];\n}\nfunction _areEqual(a, b, comparator) {\n if (a == null && b == null) {\n return true;\n }\n return a != null && b != null && a.length === b.length && a.every((value, index) => comparator ? comparator(value, b[index]) : b[index] === value);\n}\nfunction _shallowCompare(arr1, arr2) {\n return _areEqual(arr1, arr2);\n}\nfunction _sortNumerically(array) {\n return array.sort((a, b) => a - b);\n}\nfunction _removeRepeatsFromArray(array, object) {\n if (!array) {\n return;\n }\n for (let index = array.length - 2; index >= 0; index--) {\n const thisOneMatches = array[index] === object;\n const nextOneMatches = array[index + 1] === object;\n if (thisOneMatches && nextOneMatches) {\n array.splice(index + 1, 1);\n }\n }\n}\nfunction _removeFromUnorderedArray(array, object) {\n const index = array.indexOf(object);\n if (index >= 0) {\n array[index] = array[array.length - 1];\n array.pop();\n }\n}\nfunction _removeFromArray(array, object) {\n const index = array.indexOf(object);\n if (index >= 0) {\n array.splice(index, 1);\n }\n}\nfunction _removeAllFromUnorderedArray(array, toRemove) {\n for (let i = 0; i < toRemove.length; i++) {\n _removeFromUnorderedArray(array, toRemove[i]);\n }\n}\nfunction _removeAllFromArray(array, toRemove) {\n for (let i = 0; i < toRemove.length; i++) {\n _removeFromArray(array, toRemove[i]);\n }\n}\nfunction _insertIntoArray(array, object, toIndex) {\n array.splice(toIndex, 0, object);\n}\nfunction _insertArrayIntoArray(dest, src, toIndex) {\n if (dest == null || src == null) {\n return;\n }\n for (let i = src.length - 1; i >= 0; i--) {\n const item = src[i];\n _insertIntoArray(dest, item, toIndex);\n }\n}\nfunction _moveInArray(array, objectsToMove, toIndex) {\n _removeAllFromArray(array, objectsToMove);\n objectsToMove.slice().reverse().forEach((obj) => _insertIntoArray(array, obj, toIndex));\n}\nfunction _includes(array, value) {\n return array.indexOf(value) > -1;\n}\nfunction _flatten(arrayOfArrays) {\n return arrayOfArrays?.flatMap((t) => t) ?? [];\n}\nfunction _pushAll(target, source) {\n if (source == null || target == null) {\n return;\n }\n source.forEach((value) => target.push(value));\n}\nfunction _forEachReverse(list, action) {\n if (list == null) {\n return;\n }\n for (let i = list.length - 1; i >= 0; i--) {\n action(list[i], i);\n }\n}\n\n// community-modules/core/src/utils/event.ts\nvar AG_GRID_STOP_PROPAGATION = \"__ag_Grid_Stop_Propagation\";\nvar PASSIVE_EVENTS = [\"touchstart\", \"touchend\", \"touchmove\", \"touchcancel\", \"scroll\"];\nvar supports = {};\nfunction _stopPropagationForAgGrid(event) {\n event[AG_GRID_STOP_PROPAGATION] = true;\n}\nfunction _isStopPropagationForAgGrid(event) {\n return event[AG_GRID_STOP_PROPAGATION] === true;\n}\nvar _isEventSupported = /* @__PURE__ */ (() => {\n const tags = {\n select: \"input\",\n change: \"input\",\n submit: \"form\",\n reset: \"form\",\n error: \"img\",\n load: \"img\",\n abort: \"img\"\n };\n const eventChecker = (eventName) => {\n if (typeof supports[eventName] === \"boolean\") {\n return supports[eventName];\n }\n const el = document.createElement(tags[eventName] || \"div\");\n eventName = \"on\" + eventName;\n return supports[eventName] = eventName in el;\n };\n return eventChecker;\n})();\nfunction _getCtrlForEventTarget(gos, eventTarget, type) {\n let sourceElement = eventTarget;\n while (sourceElement) {\n const renderedComp = _getDomData(gos, sourceElement, type);\n if (renderedComp) {\n return renderedComp;\n }\n sourceElement = sourceElement.parentElement;\n }\n return null;\n}\nfunction _isElementInEventPath(element, event) {\n if (!event || !element) {\n return false;\n }\n return _getEventPath(event).indexOf(element) >= 0;\n}\nfunction _createEventPath(event) {\n const res = [];\n let pointer = event.target;\n while (pointer) {\n res.push(pointer);\n pointer = pointer.parentElement;\n }\n return res;\n}\nfunction _getEventPath(event) {\n const eventNoType = event;\n if (eventNoType.path) {\n return eventNoType.path;\n }\n if (eventNoType.composedPath) {\n return eventNoType.composedPath();\n }\n return _createEventPath(eventNoType);\n}\nfunction _addSafePassiveEventListener(frameworkOverrides, eElement, event, listener) {\n const isPassive = _includes(PASSIVE_EVENTS, event);\n const options = isPassive ? { passive: true } : void 0;\n if (frameworkOverrides && frameworkOverrides.addEventListener) {\n frameworkOverrides.addEventListener(eElement, event, listener, options);\n }\n}\n\n// community-modules/core/src/context/beanStub.ts\nvar BeanStub = class {\n constructor() {\n // not named context to allow children to use 'context' as a variable name\n this.destroyFunctions = [];\n this.destroyed = false;\n // for vue 3 - prevents Vue from trying to make this (and obviously any sub classes) from being reactive\n // prevents vue from creating proxies for created objects and prevents identity related issues\n this.__v_skip = true;\n this.propertyListenerId = 0;\n // Enable multiple grid properties to be updated together by the user but only trigger shared logic once.\n // Closely related to logic in ComponentUtil.ts\n this.lastChangeSetIdLookup = {};\n this.isAlive = () => !this.destroyed;\n }\n preWireBeans(beans) {\n this.frameworkOverrides = beans.frameworkOverrides;\n this.stubContext = beans.context;\n this.eventService = beans.eventService;\n this.gos = beans.gos;\n this.localeService = beans.localeService;\n }\n // this was a test constructor niall built, when active, it prints after 5 seconds all beans/components that are\n // not destroyed. to use, create a new grid, then api.destroy() before 5 seconds. then anything that gets printed\n // points to a bean or component that was not properly disposed of.\n // constructor() {\n // setTimeout(()=> {\n // if (this.isAlive()) {\n // let prototype: any = Object.getPrototypeOf(this);\n // const constructor: any = prototype.constructor;\n // const constructorString = constructor.toString();\n // const beanName = constructorString.substring(9, constructorString.indexOf(\"(\"));\n // console.log('is alive ' + beanName);\n // }\n // }, 5000);\n // }\n // CellComp and GridComp and override this because they get the FrameworkOverrides from the Beans bean\n getFrameworkOverrides() {\n return this.frameworkOverrides;\n }\n destroy() {\n for (let i = 0; i < this.destroyFunctions.length; i++) {\n this.destroyFunctions[i]();\n }\n this.destroyFunctions.length = 0;\n this.destroyed = true;\n this.dispatchLocalEvent({ type: \"destroyed\" });\n }\n // The typing of AgEventListener is not ideal, but it's the best we can do at the moment to enable\n // eventService to have the best typing at the expense of BeanStub local events\n /** Add a local event listener against this BeanStub */\n addEventListener(eventType, listener, async) {\n if (!this.localEventService) {\n this.localEventService = new LocalEventService();\n }\n this.localEventService.addEventListener(eventType, listener, async);\n }\n /** Remove a local event listener from this BeanStub */\n removeEventListener(eventType, listener, async) {\n if (this.localEventService) {\n this.localEventService.removeEventListener(eventType, listener, async);\n }\n }\n dispatchLocalEvent(event) {\n if (this.localEventService) {\n this.localEventService.dispatchEvent(event);\n }\n }\n addManagedElementListeners(object, handlers) {\n return this._setupListeners(object, handlers);\n }\n addManagedEventListeners(handlers) {\n return this._setupListeners(this.eventService, handlers);\n }\n addManagedListeners(object, handlers) {\n return this._setupListeners(object, handlers);\n }\n _setupListeners(object, handlers) {\n const destroyFuncs = [];\n for (const k in handlers) {\n const handler = handlers[k];\n if (handler) {\n destroyFuncs.push(this._setupListener(object, k, handler));\n }\n }\n return destroyFuncs;\n }\n _setupListener(object, event, listener) {\n if (this.destroyed) {\n return () => null;\n }\n if (object instanceof HTMLElement) {\n _addSafePassiveEventListener(this.getFrameworkOverrides(), object, event, listener);\n } else {\n object.addEventListener(event, listener);\n }\n const destroyFunc = () => {\n object.removeEventListener(event, listener);\n return null;\n };\n this.destroyFunctions.push(destroyFunc);\n return () => {\n destroyFunc();\n this.destroyFunctions = this.destroyFunctions.filter((fn) => fn !== destroyFunc);\n return null;\n };\n }\n /**\n * Setup a managed property listener for the given GridOption property.\n * However, stores the destroy function in the beanStub so that if this bean\n * is a component the destroy function will be called when the component is destroyed\n * as opposed to being cleaned up only when the GridOptionsService is destroyed.\n */\n setupGridOptionListener(event, listener) {\n this.gos.addPropertyEventListener(event, listener);\n const destroyFunc = () => {\n this.gos.removePropertyEventListener(event, listener);\n return null;\n };\n this.destroyFunctions.push(destroyFunc);\n return () => {\n destroyFunc();\n this.destroyFunctions = this.destroyFunctions.filter((fn) => fn !== destroyFunc);\n return null;\n };\n }\n /**\n * Setup a managed property listener for the given GridOption property.\n * @param event GridOption property to listen to changes for.\n * @param listener Listener to run when property value changes\n */\n addManagedPropertyListener(event, listener) {\n if (this.destroyed) {\n return () => null;\n }\n return this.setupGridOptionListener(event, listener);\n }\n /**\n * Setup managed property listeners for the given set of GridOption properties.\n * The listener will be run if any of the property changes but will only run once if\n * multiple of the properties change within the same framework lifecycle event.\n * Works on the basis that GridOptionsService updates all properties *before* any property change events are fired.\n * @param events Array of GridOption properties to listen for changes too.\n * @param listener Shared listener to run if any of the properties change\n */\n addManagedPropertyListeners(events, listener) {\n if (this.destroyed) {\n return;\n }\n const eventsKey = events.join(\"-\") + this.propertyListenerId++;\n const wrappedListener = (event) => {\n if (event.changeSet) {\n if (event.changeSet && event.changeSet.id === this.lastChangeSetIdLookup[eventsKey]) {\n return;\n }\n this.lastChangeSetIdLookup[eventsKey] = event.changeSet.id;\n }\n const propertiesChangeEvent = {\n type: \"gridPropertyChanged\",\n changeSet: event.changeSet,\n source: event.source\n };\n listener(propertiesChangeEvent);\n };\n events.forEach((event) => this.setupGridOptionListener(event, wrappedListener));\n }\n addDestroyFunc(func) {\n if (this.isAlive()) {\n this.destroyFunctions.push(func);\n } else {\n func();\n }\n }\n createManagedBean(bean, context) {\n const res = this.createBean(bean, context);\n this.addDestroyFunc(this.destroyBean.bind(this, bean, context));\n return res;\n }\n createBean(bean, context, afterPreCreateCallback) {\n return (context || this.stubContext).createBean(bean, afterPreCreateCallback);\n }\n /**\n * Destroys a bean and returns undefined to support destruction and clean up in a single line.\n * this.dateComp = this.context.destroyBean(this.dateComp);\n */\n destroyBean(bean, context) {\n return (context || this.stubContext).destroyBean(bean);\n }\n /**\n * Destroys an array of beans and returns an empty array to support destruction and clean up in a single line.\n * this.dateComps = this.context.destroyBeans(this.dateComps);\n */\n destroyBeans(beans, context) {\n return (context || this.stubContext).destroyBeans(beans);\n }\n};\n\n// community-modules/core/src/entities/agProvidedColumnGroup.ts\nfunction isProvidedColumnGroup(col) {\n return col instanceof AgProvidedColumnGroup;\n}\nvar AgProvidedColumnGroup = class extends BeanStub {\n constructor(colGroupDef, groupId, padding, level) {\n super();\n this.isColumn = false;\n this.expandable = false;\n // used by React (and possibly other frameworks) as key for rendering. also used to\n // identify old vs new columns for destroying cols when no longer used.\n this.instanceId = getNextColInstanceId();\n this.expandableListenerRemoveCallback = null;\n this.colGroupDef = colGroupDef;\n this.groupId = groupId;\n this.expanded = !!colGroupDef && !!colGroupDef.openByDefault;\n this.padding = padding;\n this.level = level;\n }\n destroy() {\n if (this.expandableListenerRemoveCallback) {\n this.reset(null, void 0);\n }\n super.destroy();\n }\n reset(colGroupDef, level) {\n this.colGroupDef = colGroupDef;\n this.level = level;\n this.originalParent = null;\n if (this.expandableListenerRemoveCallback) {\n this.expandableListenerRemoveCallback();\n }\n this.children = void 0;\n this.expandable = void 0;\n }\n getInstanceId() {\n return this.instanceId;\n }\n setOriginalParent(originalParent) {\n this.originalParent = originalParent;\n }\n getOriginalParent() {\n return this.originalParent;\n }\n getLevel() {\n return this.level;\n }\n isVisible() {\n if (this.children) {\n return this.children.some((child) => child.isVisible());\n }\n return false;\n }\n isPadding() {\n return this.padding;\n }\n setExpanded(expanded) {\n this.expanded = expanded === void 0 ? false : expanded;\n this.dispatchLocalEvent({ type: \"expandedChanged\" });\n }\n isExpandable() {\n return this.expandable;\n }\n isExpanded() {\n return this.expanded;\n }\n getGroupId() {\n return this.groupId;\n }\n getId() {\n return this.getGroupId();\n }\n setChildren(children) {\n this.children = children;\n }\n getChildren() {\n return this.children;\n }\n getColGroupDef() {\n return this.colGroupDef;\n }\n getLeafColumns() {\n const result = [];\n this.addLeafColumns(result);\n return result;\n }\n addLeafColumns(leafColumns) {\n if (!this.children) {\n return;\n }\n this.children.forEach((child) => {\n if (isColumn(child)) {\n leafColumns.push(child);\n } else if (isProvidedColumnGroup(child)) {\n child.addLeafColumns(leafColumns);\n }\n });\n }\n getColumnGroupShow() {\n const colGroupDef = this.colGroupDef;\n if (!colGroupDef) {\n return;\n }\n return colGroupDef.columnGroupShow;\n }\n // need to check that this group has at least one col showing when both expanded and contracted.\n // if not, then we don't allow expanding and contracting on this group\n setupExpandable() {\n this.setExpandable();\n if (this.expandableListenerRemoveCallback) {\n this.expandableListenerRemoveCallback();\n }\n const listener = this.onColumnVisibilityChanged.bind(this);\n this.getLeafColumns().forEach((col) => col.addEventListener(\"visibleChanged\", listener));\n this.expandableListenerRemoveCallback = () => {\n this.getLeafColumns().forEach((col) => col.removeEventListener(\"visibleChanged\", listener));\n this.expandableListenerRemoveCallback = null;\n };\n }\n setExpandable() {\n if (this.isPadding()) {\n return;\n }\n let atLeastOneShowingWhenOpen = false;\n let atLeastOneShowingWhenClosed = false;\n let atLeastOneChangeable = false;\n const children = this.findChildrenRemovingPadding();\n for (let i = 0, j = children.length; i < j; i++) {\n const abstractColumn = children[i];\n if (!abstractColumn.isVisible()) {\n continue;\n }\n const headerGroupShow = abstractColumn.getColumnGroupShow();\n if (headerGroupShow === \"open\") {\n atLeastOneShowingWhenOpen = true;\n atLeastOneChangeable = true;\n } else if (headerGroupShow === \"closed\") {\n atLeastOneShowingWhenClosed = true;\n atLeastOneChangeable = true;\n } else {\n atLeastOneShowingWhenOpen = true;\n atLeastOneShowingWhenClosed = true;\n }\n }\n const expandable = atLeastOneShowingWhenOpen && atLeastOneShowingWhenClosed && atLeastOneChangeable;\n if (this.expandable !== expandable) {\n this.expandable = expandable;\n this.dispatchLocalEvent({ type: \"expandableChanged\" });\n }\n }\n findChildrenRemovingPadding() {\n const res = [];\n const process = (items) => {\n items.forEach((item) => {\n const skipBecausePadding = isProvidedColumnGroup(item) && item.isPadding();\n if (skipBecausePadding) {\n process(item.children);\n } else {\n res.push(item);\n }\n });\n };\n process(this.children);\n return res;\n }\n onColumnVisibilityChanged() {\n this.setExpandable();\n }\n};\n\n// community-modules/core/src/columns/controlsColService.ts\nvar CONTROLS_COLUMN_ID_PREFIX = \"ag-Grid-ControlsColumn\";\nvar ControlsColService = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"controlsColService\";\n }\n createControlsCols() {\n const { gos } = this;\n const so = gos.get(\"rowSelection\");\n if (!so || typeof so !== \"object\") {\n return [];\n }\n const checkboxes = _getCheckboxes(so);\n const headerCheckbox = _getHeaderCheckbox(so);\n if (checkboxes || headerCheckbox) {\n const selectionColumnDef = gos.get(\"selectionColumnDef\");\n const enableRTL = gos.get(\"enableRtl\");\n const colDef = {\n // overridable properties\n maxWidth: 50,\n resizable: false,\n suppressHeaderMenuButton: true,\n sortable: false,\n suppressMovable: true,\n lockPosition: enableRTL ? \"right\" : \"left\",\n comparator(valueA, valueB, nodeA, nodeB) {\n const aSelected = nodeA.isSelected();\n const bSelected = nodeB.isSelected();\n return aSelected && bSelected ? 0 : aSelected ? 1 : -1;\n },\n editable: false,\n suppressFillHandle: true,\n // overrides\n ...selectionColumnDef,\n // non-overridable properties\n colId: `${CONTROLS_COLUMN_ID_PREFIX}`\n };\n const col = new AgColumn(colDef, null, colDef.colId, false);\n this.createBean(col);\n return [col];\n }\n return [];\n }\n};\n\n// community-modules/core/src/columns/columnUtils.ts\nvar GROUP_AUTO_COLUMN_ID = \"ag-Grid-AutoColumn\";\nfunction getColumnsFromTree(rootColumns) {\n const result = [];\n const recursiveFindColumns = (childColumns) => {\n for (let i = 0; i < childColumns.length; i++) {\n const child = childColumns[i];\n if (isColumn(child)) {\n result.push(child);\n } else if (isProvidedColumnGroup(child)) {\n recursiveFindColumns(child.getChildren());\n }\n }\n };\n recursiveFindColumns(rootColumns);\n return result;\n}\nfunction getWidthOfColsInList(columnList) {\n return columnList.reduce((width, col) => width + col.getActualWidth(), 0);\n}\nfunction destroyColumnTree(context, oldTree, newTree) {\n const oldObjectsById = {};\n if (!oldTree) {\n return;\n }\n depthFirstOriginalTreeSearch(null, oldTree, (child) => {\n oldObjectsById[child.getInstanceId()] = child;\n });\n if (newTree) {\n depthFirstOriginalTreeSearch(null, newTree, (child) => {\n oldObjectsById[child.getInstanceId()] = null;\n });\n }\n const colsToDestroy = Object.values(oldObjectsById).filter((item) => item != null);\n context.destroyBeans(colsToDestroy);\n}\nfunction isColumnGroupAutoCol(col) {\n const colId = col.getId();\n return colId.startsWith(GROUP_AUTO_COLUMN_ID);\n}\nfunction isColumnControlsCol(col) {\n return col.getColId().startsWith(CONTROLS_COLUMN_ID_PREFIX);\n}\nfunction convertColumnTypes(type) {\n let typeKeys = [];\n if (type instanceof Array) {\n const invalidArray = type.some((a) => typeof a !== \"string\");\n if (invalidArray) {\n _warnOnce(\"if colDef.type is supplied an array it should be of type 'string[]'\");\n } else {\n typeKeys = type;\n }\n } else if (typeof type === \"string\") {\n typeKeys = type.split(\",\");\n } else {\n _warnOnce(\"colDef.type should be of type 'string' | 'string[]'\");\n }\n return typeKeys;\n}\n\n// community-modules/core/src/misc/frameworkEventListenerService.ts\nvar FrameworkEventListenerService = class {\n constructor(frameworkOverrides) {\n this.frameworkOverrides = frameworkOverrides;\n // Map from user listener to wrapped listener so we can remove listener provided by user\n this.wrappedListeners = /* @__PURE__ */ new Map();\n this.wrappedGlobalListeners = /* @__PURE__ */ new Map();\n }\n wrap(userListener) {\n let listener = userListener;\n if (this.frameworkOverrides.shouldWrapOutgoing) {\n listener = (event) => {\n this.frameworkOverrides.wrapOutgoing(() => userListener(event));\n };\n this.wrappedListeners.set(userListener, listener);\n }\n return listener;\n }\n wrapGlobal(userListener) {\n let listener = userListener;\n if (this.frameworkOverrides.shouldWrapOutgoing) {\n listener = (eventType, event) => {\n this.frameworkOverrides.wrapOutgoing(() => userListener(eventType, event));\n };\n this.wrappedGlobalListeners.set(userListener, listener);\n }\n return listener;\n }\n unwrap(userListener) {\n return this.wrappedListeners.get(userListener) ?? userListener;\n }\n unwrapGlobal(userListener) {\n return this.wrappedGlobalListeners.get(userListener) ?? userListener;\n }\n};\n\n// community-modules/core/src/utils/object.ts\nvar SKIP_JS_BUILTINS = /* @__PURE__ */ new Set([\"__proto__\", \"constructor\", \"prototype\"]);\nfunction _iterateObject(object, callback) {\n if (object == null) {\n return;\n }\n if (Array.isArray(object)) {\n for (let i = 0; i < object.length; i++) {\n callback(i.toString(), object[i]);\n }\n return;\n }\n for (const [key, value] of Object.entries(object)) {\n callback(key, value);\n }\n}\nfunction _cloneObject(object) {\n const copy = {};\n const keys = Object.keys(object);\n for (let i = 0; i < keys.length; i++) {\n if (SKIP_JS_BUILTINS.has(keys[i])) {\n continue;\n }\n const key = keys[i];\n const value = object[key];\n copy[key] = value;\n }\n return copy;\n}\nfunction _deepCloneDefinition(object, keysToSkip) {\n if (!object) {\n return;\n }\n const obj = object;\n const res = {};\n Object.keys(obj).forEach((key) => {\n if (keysToSkip && keysToSkip.indexOf(key) >= 0 || SKIP_JS_BUILTINS.has(key)) {\n return;\n }\n const value = obj[key];\n const sourceIsSimpleObject = _isNonNullObject(value) && value.constructor === Object;\n if (sourceIsSimpleObject) {\n res[key] = _deepCloneDefinition(value);\n } else {\n res[key] = value;\n }\n });\n return res;\n}\nfunction _getAllValuesInObject(obj) {\n if (!obj) {\n return [];\n }\n const anyObject = Object;\n if (typeof anyObject.values === \"function\") {\n return anyObject.values(obj);\n }\n const ret = [];\n for (const key in obj) {\n if (obj.hasOwnProperty(key) && obj.propertyIsEnumerable(key)) {\n ret.push(obj[key]);\n }\n }\n return ret;\n}\nfunction _mergeDeep(dest, source, copyUndefined = true, makeCopyOfSimpleObjects = false) {\n if (!_exists(source)) {\n return;\n }\n _iterateObject(source, (key, sourceValue) => {\n if (SKIP_JS_BUILTINS.has(key)) {\n return;\n }\n let destValue = dest[key];\n if (destValue === sourceValue) {\n return;\n }\n if (makeCopyOfSimpleObjects) {\n const objectIsDueToBeCopied = destValue == null && sourceValue != null;\n if (objectIsDueToBeCopied) {\n const sourceIsSimpleObject = typeof sourceValue === \"object\" && sourceValue.constructor === Object;\n const dontCopy = sourceIsSimpleObject;\n if (dontCopy) {\n destValue = {};\n dest[key] = destValue;\n }\n }\n }\n if (_isNonNullObject(sourceValue) && _isNonNullObject(destValue) && !Array.isArray(destValue)) {\n _mergeDeep(destValue, sourceValue, copyUndefined, makeCopyOfSimpleObjects);\n } else if (copyUndefined || sourceValue !== void 0) {\n dest[key] = sourceValue;\n }\n });\n}\nfunction _getValueUsingField(data, field, fieldContainsDots) {\n if (!field || !data) {\n return;\n }\n if (!fieldContainsDots) {\n return data[field];\n }\n const fields = field.split(\".\");\n let currentObject = data;\n for (let i = 0; i < fields.length; i++) {\n if (currentObject == null) {\n return void 0;\n }\n currentObject = currentObject[fields[i]];\n }\n return currentObject;\n}\nfunction _isNonNullObject(value) {\n return typeof value === \"object\" && value !== null;\n}\n\n// community-modules/core/src/entities/agColumn.ts\nvar COL_DEF_DEFAULTS = {\n resizable: true,\n sortable: true\n};\nvar instanceIdSequence = 0;\nfunction getNextColInstanceId() {\n return instanceIdSequence++;\n}\nfunction isColumn(col) {\n return col instanceof AgColumn;\n}\nvar AgColumn = class extends BeanStub {\n constructor(colDef, userProvidedColDef, colId, primary) {\n super();\n this.isColumn = true;\n // used by React (and possibly other frameworks) as key for rendering. also used to\n // identify old vs new columns for destroying cols when no longer used.\n this.instanceId = getNextColInstanceId();\n // The measured height of this column's header when autoHeaderHeight is enabled\n this.autoHeaderHeight = null;\n this.moving = false;\n this.menuVisible = false;\n this.lastLeftPinned = false;\n this.firstRightPinned = false;\n this.filterActive = false;\n this.columnEventService = new LocalEventService();\n this.tooltipEnabled = false;\n this.rowGroupActive = false;\n this.pivotActive = false;\n this.aggregationActive = false;\n this.colDef = colDef;\n this.userProvidedColDef = userProvidedColDef;\n this.colId = colId;\n this.primary = primary;\n this.setState(colDef);\n }\n wireBeans(beans) {\n this.columnHoverService = beans.columnHoverService;\n }\n getInstanceId() {\n return this.instanceId;\n }\n setState(colDef) {\n if (colDef.sort !== void 0) {\n if (colDef.sort === \"asc\" || colDef.sort === \"desc\") {\n this.sort = colDef.sort;\n }\n } else {\n if (colDef.initialSort === \"asc\" || colDef.initialSort === \"desc\") {\n this.sort = colDef.initialSort;\n }\n }\n const sortIndex = colDef.sortIndex;\n const initialSortIndex = colDef.initialSortIndex;\n if (sortIndex !== void 0) {\n if (sortIndex !== null) {\n this.sortIndex = sortIndex;\n }\n } else {\n if (initialSortIndex !== null) {\n this.sortIndex = initialSortIndex;\n }\n }\n const hide = colDef.hide;\n const initialHide = colDef.initialHide;\n if (hide !== void 0) {\n this.visible = !hide;\n } else {\n this.visible = !initialHide;\n }\n if (colDef.pinned !== void 0) {\n this.setPinned(colDef.pinned);\n } else {\n this.setPinned(colDef.initialPinned);\n }\n const flex = colDef.flex;\n const initialFlex = colDef.initialFlex;\n if (flex !== void 0) {\n this.flex = flex;\n } else if (initialFlex !== void 0) {\n this.flex = initialFlex;\n }\n }\n // gets called when user provides an alternative colDef, eg\n setColDef(colDef, userProvidedColDef, source) {\n this.colDef = colDef;\n this.userProvidedColDef = userProvidedColDef;\n this.initMinAndMaxWidths();\n this.initDotNotation();\n this.initTooltip();\n this.columnEventService.dispatchEvent(this.createColumnEvent(\"colDefChanged\", source));\n }\n getUserProvidedColDef() {\n return this.userProvidedColDef;\n }\n setParent(parent) {\n this.parent = parent;\n }\n getParent() {\n return this.parent;\n }\n setOriginalParent(originalParent) {\n this.originalParent = originalParent;\n }\n getOriginalParent() {\n return this.originalParent;\n }\n // this is done after constructor as it uses gridOptionsService\n postConstruct() {\n this.initMinAndMaxWidths();\n this.resetActualWidth(\"gridInitializing\");\n this.initDotNotation();\n this.initTooltip();\n }\n initDotNotation() {\n const suppressDotNotation = this.gos.get(\"suppressFieldDotNotation\");\n this.fieldContainsDots = _exists(this.colDef.field) && this.colDef.field.indexOf(\".\") >= 0 && !suppressDotNotation;\n this.tooltipFieldContainsDots = _exists(this.colDef.tooltipField) && this.colDef.tooltipField.indexOf(\".\") >= 0 && !suppressDotNotation;\n }\n initMinAndMaxWidths() {\n const colDef = this.colDef;\n this.minWidth = colDef.minWidth ?? this.gos.environment.getDefaultColumnMinWidth();\n this.maxWidth = colDef.maxWidth ?? Number.MAX_SAFE_INTEGER;\n }\n initTooltip() {\n this.tooltipEnabled = _exists(this.colDef.tooltipField) || _exists(this.colDef.tooltipValueGetter) || _exists(this.colDef.tooltipComponent);\n }\n resetActualWidth(source) {\n const initialWidth = this.calculateColInitialWidth(this.colDef);\n this.setActualWidth(initialWidth, source, true);\n }\n calculateColInitialWidth(colDef) {\n let width;\n const colDefWidth = _attrToNumber(colDef.width);\n const colDefInitialWidth = _attrToNumber(colDef.initialWidth);\n if (colDefWidth != null) {\n width = colDefWidth;\n } else if (colDefInitialWidth != null) {\n width = colDefInitialWidth;\n } else {\n width = 200;\n }\n return Math.max(Math.min(width, this.maxWidth), this.minWidth);\n }\n isEmptyGroup() {\n return false;\n }\n isRowGroupDisplayed(colId) {\n if (_missing(this.colDef) || _missing(this.colDef.showRowGroup)) {\n return false;\n }\n const showingAllGroups = this.colDef.showRowGroup === true;\n const showingThisGroup = this.colDef.showRowGroup === colId;\n return showingAllGroups || showingThisGroup;\n }\n isPrimary() {\n return this.primary;\n }\n isFilterAllowed() {\n const filterDefined = !!this.colDef.filter;\n return filterDefined;\n }\n isFieldContainsDots() {\n return this.fieldContainsDots;\n }\n isTooltipEnabled() {\n return this.tooltipEnabled;\n }\n isTooltipFieldContainsDots() {\n return this.tooltipFieldContainsDots;\n }\n getHighlighted() {\n return this.highlighted;\n }\n addEventListener(eventType, userListener) {\n if (this.frameworkOverrides.shouldWrapOutgoing && !this.frameworkEventListenerService) {\n this.columnEventService.setFrameworkOverrides(this.frameworkOverrides);\n this.frameworkEventListenerService = new FrameworkEventListenerService(this.frameworkOverrides);\n }\n const listener = this.frameworkEventListenerService?.wrap(userListener) ?? userListener;\n this.columnEventService.addEventListener(eventType, listener);\n }\n removeEventListener(eventType, userListener) {\n const listener = this.frameworkEventListenerService?.unwrap(userListener) ?? userListener;\n this.columnEventService.removeEventListener(eventType, listener);\n }\n createColumnFunctionCallbackParams(rowNode) {\n return this.gos.addGridCommonParams({\n node: rowNode,\n data: rowNode.data,\n column: this,\n colDef: this.colDef\n });\n }\n isSuppressNavigable(rowNode) {\n if (typeof this.colDef.suppressNavigable === \"boolean\") {\n return this.colDef.suppressNavigable;\n }\n if (typeof this.colDef.suppressNavigable === \"function\") {\n const params = this.createColumnFunctionCallbackParams(rowNode);\n const userFunc = this.colDef.suppressNavigable;\n return userFunc(params);\n }\n return false;\n }\n isCellEditable(rowNode) {\n if (rowNode.group) {\n if (this.gos.get(\"treeData\")) {\n if (!rowNode.data && !this.gos.get(\"enableGroupEdit\")) {\n return false;\n }\n } else {\n if (!this.gos.get(\"enableGroupEdit\")) {\n return false;\n }\n }\n }\n return this.isColumnFunc(rowNode, this.colDef.editable);\n }\n isSuppressFillHandle() {\n return !!this.colDef.suppressFillHandle;\n }\n isAutoHeight() {\n return !!this.colDef.autoHeight;\n }\n isAutoHeaderHeight() {\n return !!this.colDef.autoHeaderHeight;\n }\n isRowDrag(rowNode) {\n return this.isColumnFunc(rowNode, this.colDef.rowDrag);\n }\n isDndSource(rowNode) {\n return this.isColumnFunc(rowNode, this.colDef.dndSource);\n }\n isCellCheckboxSelection(rowNode) {\n const so = this.gos.get(\"rowSelection\");\n if (so && typeof so !== \"string\") {\n const checkbox = isColumnControlsCol(this) && _getCheckboxes(so);\n return this.isColumnFunc(rowNode, checkbox);\n } else {\n return this.isColumnFunc(rowNode, this.colDef.checkboxSelection);\n }\n }\n isSuppressPaste(rowNode) {\n return this.isColumnFunc(rowNode, this.colDef ? this.colDef.suppressPaste : null);\n }\n isResizable() {\n return !!this.getColDefValue(\"resizable\");\n }\n /** Get value from ColDef or default if it exists. */\n getColDefValue(key) {\n return this.colDef[key] ?? COL_DEF_DEFAULTS[key];\n }\n isColumnFunc(rowNode, value) {\n if (typeof value === \"boolean\") {\n return value;\n }\n if (typeof value === \"function\") {\n const params = this.createColumnFunctionCallbackParams(rowNode);\n const editableFunc = value;\n return editableFunc(params);\n }\n return false;\n }\n setHighlighted(highlighted) {\n if (this.highlighted === highlighted) {\n return;\n }\n this.highlighted = highlighted;\n this.columnEventService.dispatchEvent(this.createColumnEvent(\"headerHighlightChanged\", \"uiColumnMoved\"));\n }\n setMoving(moving, source) {\n this.moving = moving;\n this.columnEventService.dispatchEvent(this.createColumnEvent(\"movingChanged\", source));\n }\n createColumnEvent(type, source) {\n return this.gos.addGridCommonParams({\n type,\n column: this,\n columns: [this],\n source\n });\n }\n isMoving() {\n return this.moving;\n }\n getSort() {\n return this.sort;\n }\n setSort(sort, source) {\n if (this.sort !== sort) {\n this.sort = sort;\n this.columnEventService.dispatchEvent(this.createColumnEvent(\"sortChanged\", source));\n }\n this.dispatchStateUpdatedEvent(\"sort\");\n }\n isSortable() {\n return !!this.getColDefValue(\"sortable\");\n }\n /** @deprecated v32 use col.getSort() === 'asc */\n isSortAscending() {\n return this.sort === \"asc\";\n }\n /** @deprecated v32 use col.getSort() === 'desc */\n isSortDescending() {\n return this.sort === \"desc\";\n }\n /** @deprecated v32 use col.getSort() === undefined */\n isSortNone() {\n return _missing(this.sort);\n }\n /** @deprecated v32 use col.getSort() !== undefined */\n isSorting() {\n return _exists(this.sort);\n }\n getSortIndex() {\n return this.sortIndex;\n }\n setSortIndex(sortOrder) {\n this.sortIndex = sortOrder;\n this.dispatchStateUpdatedEvent(\"sortIndex\");\n }\n setMenuVisible(visible, source) {\n if (this.menuVisible !== visible) {\n this.menuVisible = visible;\n this.columnEventService.dispatchEvent(this.createColumnEvent(\"menuVisibleChanged\", source));\n }\n }\n isMenuVisible() {\n return this.menuVisible;\n }\n setAggFunc(aggFunc) {\n this.aggFunc = aggFunc;\n this.dispatchStateUpdatedEvent(\"aggFunc\");\n }\n getAggFunc() {\n return this.aggFunc;\n }\n getLeft() {\n return this.left;\n }\n getOldLeft() {\n return this.oldLeft;\n }\n getRight() {\n return this.left + this.actualWidth;\n }\n setLeft(left, source) {\n this.oldLeft = this.left;\n if (this.left !== left) {\n this.left = left;\n this.columnEventService.dispatchEvent(this.createColumnEvent(\"leftChanged\", source));\n }\n }\n isFilterActive() {\n return this.filterActive;\n }\n // additionalEventAttributes is used by provided simple floating filter, so it can add 'floatingFilter=true' to the event\n setFilterActive(active, source, additionalEventAttributes) {\n if (this.filterActive !== active) {\n this.filterActive = active;\n this.columnEventService.dispatchEvent(this.createColumnEvent(\"filterActiveChanged\", source));\n }\n const filterChangedEvent = this.createColumnEvent(\"filterChanged\", source);\n if (additionalEventAttributes) {\n _mergeDeep(filterChangedEvent, additionalEventAttributes);\n }\n this.columnEventService.dispatchEvent(filterChangedEvent);\n }\n isHovered() {\n return this.columnHoverService.isHovered(this);\n }\n setPinned(pinned) {\n if (pinned === true || pinned === \"left\") {\n this.pinned = \"left\";\n } else if (pinned === \"right\") {\n this.pinned = \"right\";\n } else {\n this.pinned = null;\n }\n this.dispatchStateUpdatedEvent(\"pinned\");\n }\n setFirstRightPinned(firstRightPinned, source) {\n if (this.firstRightPinned !== firstRightPinned) {\n this.firstRightPinned = firstRightPinned;\n this.columnEventService.dispatchEvent(this.createColumnEvent(\"firstRightPinnedChanged\", source));\n }\n }\n setLastLeftPinned(lastLeftPinned, source) {\n if (this.lastLeftPinned !== lastLeftPinned) {\n this.lastLeftPinned = lastLeftPinned;\n this.columnEventService.dispatchEvent(this.createColumnEvent(\"lastLeftPinnedChanged\", source));\n }\n }\n isFirstRightPinned() {\n return this.firstRightPinned;\n }\n isLastLeftPinned() {\n return this.lastLeftPinned;\n }\n isPinned() {\n return this.pinned === \"left\" || this.pinned === \"right\";\n }\n isPinnedLeft() {\n return this.pinned === \"left\";\n }\n isPinnedRight() {\n return this.pinned === \"right\";\n }\n getPinned() {\n return this.pinned;\n }\n setVisible(visible, source) {\n const newValue = visible === true;\n if (this.visible !== newValue) {\n this.visible = newValue;\n this.columnEventService.dispatchEvent(this.createColumnEvent(\"visibleChanged\", source));\n }\n this.dispatchStateUpdatedEvent(\"hide\");\n }\n isVisible() {\n return this.visible;\n }\n isSpanHeaderHeight() {\n const colDef = this.getColDef();\n return !colDef.suppressSpanHeaderHeight;\n }\n getColumnGroupPaddingInfo() {\n let parent = this.getParent();\n if (!parent || !parent.isPadding()) {\n return { numberOfParents: 0, isSpanningTotal: false };\n }\n const numberOfParents = parent.getPaddingLevel() + 1;\n let isSpanningTotal = true;\n while (parent) {\n if (!parent.isPadding()) {\n isSpanningTotal = false;\n break;\n }\n parent = parent.getParent();\n }\n return { numberOfParents, isSpanningTotal };\n }\n getColDef() {\n return this.colDef;\n }\n getDefinition() {\n return this.colDef;\n }\n getColumnGroupShow() {\n return this.colDef.columnGroupShow;\n }\n getColId() {\n return this.colId;\n }\n getId() {\n return this.colId;\n }\n getUniqueId() {\n return this.colId;\n }\n getActualWidth() {\n return this.actualWidth;\n }\n getAutoHeaderHeight() {\n return this.autoHeaderHeight;\n }\n /** Returns true if the header height has changed */\n setAutoHeaderHeight(height) {\n const changed = height !== this.autoHeaderHeight;\n this.autoHeaderHeight = height;\n return changed;\n }\n createBaseColDefParams(rowNode) {\n const params = this.gos.addGridCommonParams({\n node: rowNode,\n data: rowNode.data,\n colDef: this.colDef,\n column: this\n });\n return params;\n }\n getColSpan(rowNode) {\n if (_missing(this.colDef.colSpan)) {\n return 1;\n }\n const params = this.createBaseColDefParams(rowNode);\n const colSpan = this.colDef.colSpan(params);\n return Math.max(colSpan, 1);\n }\n getRowSpan(rowNode) {\n if (_missing(this.colDef.rowSpan)) {\n return 1;\n }\n const params = this.createBaseColDefParams(rowNode);\n const rowSpan = this.colDef.rowSpan(params);\n return Math.max(rowSpan, 1);\n }\n setActualWidth(actualWidth, source, silent = false) {\n actualWidth = Math.max(actualWidth, this.minWidth);\n actualWidth = Math.min(actualWidth, this.maxWidth);\n if (this.actualWidth !== actualWidth) {\n this.actualWidth = actualWidth;\n if (this.flex && source !== \"flex\" && source !== \"gridInitializing\") {\n this.flex = null;\n }\n if (!silent) {\n this.fireColumnWidthChangedEvent(source);\n }\n }\n this.dispatchStateUpdatedEvent(\"width\");\n }\n fireColumnWidthChangedEvent(source) {\n this.columnEventService.dispatchEvent(this.createColumnEvent(\"widthChanged\", source));\n }\n isGreaterThanMax(width) {\n return width > this.maxWidth;\n }\n getMinWidth() {\n return this.minWidth;\n }\n getMaxWidth() {\n return this.maxWidth;\n }\n getFlex() {\n return this.flex || 0;\n }\n // this method should only be used by the columnModel to\n // change flex when required by the applyColumnState method.\n setFlex(flex) {\n if (this.flex !== flex) {\n this.flex = flex;\n }\n this.dispatchStateUpdatedEvent(\"flex\");\n }\n setMinimum(source) {\n this.setActualWidth(this.minWidth, source);\n }\n setRowGroupActive(rowGroup, source) {\n if (this.rowGroupActive !== rowGroup) {\n this.rowGroupActive = rowGroup;\n this.columnEventService.dispatchEvent(this.createColumnEvent(\"columnRowGroupChanged\", source));\n }\n this.dispatchStateUpdatedEvent(\"rowGroup\");\n }\n isRowGroupActive() {\n return this.rowGroupActive;\n }\n setPivotActive(pivot, source) {\n if (this.pivotActive !== pivot) {\n this.pivotActive = pivot;\n this.columnEventService.dispatchEvent(this.createColumnEvent(\"columnPivotChanged\", source));\n }\n this.dispatchStateUpdatedEvent(\"pivot\");\n }\n isPivotActive() {\n return this.pivotActive;\n }\n isAnyFunctionActive() {\n return this.isPivotActive() || this.isRowGroupActive() || this.isValueActive();\n }\n isAnyFunctionAllowed() {\n return this.isAllowPivot() || this.isAllowRowGroup() || this.isAllowValue();\n }\n setValueActive(value, source) {\n if (this.aggregationActive !== value) {\n this.aggregationActive = value;\n this.columnEventService.dispatchEvent(this.createColumnEvent(\"columnValueChanged\", source));\n }\n }\n isValueActive() {\n return this.aggregationActive;\n }\n isAllowPivot() {\n return this.colDef.enablePivot === true;\n }\n isAllowValue() {\n return this.colDef.enableValue === true;\n }\n isAllowRowGroup() {\n return this.colDef.enableRowGroup === true;\n }\n dispatchStateUpdatedEvent(key) {\n this.columnEventService.dispatchEvent({\n type: \"columnStateUpdated\",\n key\n });\n }\n};\n\n// community-modules/core/src/entities/defaultColumnTypes.ts\nvar DefaultColumnTypes = {\n numericColumn: {\n headerClass: \"ag-right-aligned-header\",\n cellClass: \"ag-right-aligned-cell\"\n },\n rightAligned: {\n headerClass: \"ag-right-aligned-header\",\n cellClass: \"ag-right-aligned-cell\"\n }\n};\n\n// community-modules/core/src/columns/columnKeyCreator.ts\nvar ColumnKeyCreator = class {\n constructor() {\n this.existingKeys = {};\n }\n addExistingKeys(keys) {\n for (let i = 0; i < keys.length; i++) {\n this.existingKeys[keys[i]] = true;\n }\n }\n getUniqueKey(colId, colField) {\n colId = _toStringOrNull(colId);\n let count = 0;\n while (true) {\n let idToTry;\n if (colId) {\n idToTry = colId;\n if (count !== 0) {\n idToTry += \"_\" + count;\n }\n } else if (colField) {\n idToTry = colField;\n if (count !== 0) {\n idToTry += \"_\" + count;\n }\n } else {\n idToTry = count;\n }\n if (!this.existingKeys[idToTry]) {\n this.existingKeys[idToTry] = true;\n return String(idToTry);\n }\n count++;\n }\n }\n};\n\n// community-modules/core/src/columns/columnFactory.ts\nvar ColumnFactory = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"columnFactory\";\n }\n wireBeans(beans) {\n this.dataTypeService = beans.dataTypeService;\n }\n createColumnTree(defs, primaryColumns, existingTree, source) {\n const columnKeyCreator = new ColumnKeyCreator();\n const { existingCols, existingGroups, existingColKeys } = this.extractExistingTreeData(existingTree);\n columnKeyCreator.addExistingKeys(existingColKeys);\n const unbalancedTree = this.recursivelyCreateColumns(\n defs,\n 0,\n primaryColumns,\n existingCols,\n columnKeyCreator,\n existingGroups,\n source\n );\n const treeDept = this.findMaxDept(unbalancedTree, 0);\n const columnTree = this.balanceColumnTree(unbalancedTree, 0, treeDept, columnKeyCreator);\n const deptFirstCallback = (child, parent) => {\n if (isProvidedColumnGroup(child)) {\n child.setupExpandable();\n }\n child.setOriginalParent(parent);\n };\n depthFirstOriginalTreeSearch(null, columnTree, deptFirstCallback);\n return {\n columnTree,\n treeDept\n };\n }\n extractExistingTreeData(existingTree) {\n const existingCols = [];\n const existingGroups = [];\n const existingColKeys = [];\n if (existingTree) {\n depthFirstOriginalTreeSearch(null, existingTree, (item) => {\n if (isProvidedColumnGroup(item)) {\n const group = item;\n existingGroups.push(group);\n } else {\n const col = item;\n existingColKeys.push(col.getId());\n existingCols.push(col);\n }\n });\n }\n return { existingCols, existingGroups, existingColKeys };\n }\n /**\n * Inserts dummy group columns in the hierarchy above auto-generated columns\n * in order to ensure auto-generated columns are leaf nodes (and therefore are\n * displayed correctly)\n */\n balanceTreeForAutoCols(autoCols, liveTree) {\n const tree = [];\n const dept = this.findDepth(liveTree);\n autoCols.forEach((col) => {\n let nextChild = col;\n for (let i = dept - 1; i >= 0; i--) {\n const autoGroup = new AgProvidedColumnGroup(null, `FAKE_PATH_${col.getId()}}_${i}`, true, i);\n this.createBean(autoGroup);\n autoGroup.setChildren([nextChild]);\n nextChild.setOriginalParent(autoGroup);\n nextChild = autoGroup;\n }\n if (dept === 0) {\n col.setOriginalParent(null);\n }\n tree.push(nextChild);\n });\n return [tree, dept];\n }\n findDepth(balancedColumnTree) {\n let dept = 0;\n let pointer = balancedColumnTree;\n while (pointer && pointer[0] && isProvidedColumnGroup(pointer[0])) {\n dept++;\n pointer = pointer[0].getChildren();\n }\n return dept;\n }\n balanceColumnTree(unbalancedTree, currentDept, columnDept, columnKeyCreator) {\n const result = [];\n for (let i = 0; i < unbalancedTree.length; i++) {\n const child = unbalancedTree[i];\n if (isProvidedColumnGroup(child)) {\n const originalGroup = child;\n const newChildren = this.balanceColumnTree(\n originalGroup.getChildren(),\n currentDept + 1,\n columnDept,\n columnKeyCreator\n );\n originalGroup.setChildren(newChildren);\n result.push(originalGroup);\n } else {\n let firstPaddedGroup;\n let currentPaddedGroup;\n for (let j = columnDept - 1; j >= currentDept; j--) {\n const newColId = columnKeyCreator.getUniqueKey(null, null);\n const colGroupDefMerged = this.createMergedColGroupDef(null);\n const paddedGroup = new AgProvidedColumnGroup(colGroupDefMerged, newColId, true, currentDept);\n this.createBean(paddedGroup);\n if (currentPaddedGroup) {\n currentPaddedGroup.setChildren([paddedGroup]);\n }\n currentPaddedGroup = paddedGroup;\n if (!firstPaddedGroup) {\n firstPaddedGroup = currentPaddedGroup;\n }\n }\n if (firstPaddedGroup && currentPaddedGroup) {\n result.push(firstPaddedGroup);\n const hasGroups = unbalancedTree.some((leaf) => isProvidedColumnGroup(leaf));\n if (hasGroups) {\n currentPaddedGroup.setChildren([child]);\n continue;\n } else {\n currentPaddedGroup.setChildren(unbalancedTree);\n break;\n }\n }\n result.push(child);\n }\n }\n return result;\n }\n findMaxDept(treeChildren, dept) {\n let maxDeptThisLevel = dept;\n for (let i = 0; i < treeChildren.length; i++) {\n const abstractColumn = treeChildren[i];\n if (isProvidedColumnGroup(abstractColumn)) {\n const originalGroup = abstractColumn;\n const newDept = this.findMaxDept(originalGroup.getChildren(), dept + 1);\n if (maxDeptThisLevel < newDept) {\n maxDeptThisLevel = newDept;\n }\n }\n }\n return maxDeptThisLevel;\n }\n recursivelyCreateColumns(defs, level, primaryColumns, existingColsCopy, columnKeyCreator, existingGroups, source) {\n if (!defs)\n return [];\n const result = new Array(defs.length);\n for (let i = 0; i < result.length; i++) {\n const def = defs[i];\n if (this.isColumnGroup(def)) {\n result[i] = this.createColumnGroup(\n primaryColumns,\n def,\n level,\n existingColsCopy,\n columnKeyCreator,\n existingGroups,\n source\n );\n } else {\n result[i] = this.createColumn(\n primaryColumns,\n def,\n existingColsCopy,\n columnKeyCreator,\n source\n );\n }\n }\n return result;\n }\n createColumnGroup(primaryColumns, colGroupDef, level, existingColumns, columnKeyCreator, existingGroups, source) {\n const colGroupDefMerged = this.createMergedColGroupDef(colGroupDef);\n const groupId = columnKeyCreator.getUniqueKey(colGroupDefMerged.groupId || null, null);\n const providedGroup = new AgProvidedColumnGroup(colGroupDefMerged, groupId, false, level);\n this.createBean(providedGroup);\n const existingGroupAndIndex = this.findExistingGroup(colGroupDef, existingGroups);\n if (existingGroupAndIndex) {\n existingGroups.splice(existingGroupAndIndex.idx, 1);\n }\n const existingGroup = existingGroupAndIndex?.group;\n if (existingGroup) {\n providedGroup.setExpanded(existingGroup.isExpanded());\n }\n const children = this.recursivelyCreateColumns(\n colGroupDefMerged.children,\n level + 1,\n primaryColumns,\n existingColumns,\n columnKeyCreator,\n existingGroups,\n source\n );\n providedGroup.setChildren(children);\n return providedGroup;\n }\n createMergedColGroupDef(colGroupDef) {\n const colGroupDefMerged = {};\n Object.assign(colGroupDefMerged, this.gos.get(\"defaultColGroupDef\"));\n Object.assign(colGroupDefMerged, colGroupDef);\n return colGroupDefMerged;\n }\n createColumn(primaryColumns, colDef, existingColsCopy, columnKeyCreator, source) {\n const existingColAndIndex = this.findExistingColumn(colDef, existingColsCopy);\n if (existingColAndIndex) {\n existingColsCopy?.splice(existingColAndIndex.idx, 1);\n }\n let column = existingColAndIndex?.column;\n if (!column) {\n const colId = columnKeyCreator.getUniqueKey(colDef.colId, colDef.field);\n const colDefMerged = this.addColumnDefaultAndTypes(colDef, colId);\n column = new AgColumn(colDefMerged, colDef, colId, primaryColumns);\n this.createBean(column);\n } else {\n const colDefMerged = this.addColumnDefaultAndTypes(colDef, column.getColId());\n column.setColDef(colDefMerged, colDef, source);\n this.applyColumnState(column, colDefMerged, source);\n }\n this.dataTypeService?.addColumnListeners(column);\n return column;\n }\n applyColumnState(column, colDef, source) {\n const flex = _attrToNumber(colDef.flex);\n if (flex !== void 0) {\n column.setFlex(flex);\n }\n const noFlexThisCol = column.getFlex() <= 0;\n if (noFlexThisCol) {\n const width = _attrToNumber(colDef.width);\n if (width != null) {\n column.setActualWidth(width, source);\n } else {\n const widthBeforeUpdate = column.getActualWidth();\n column.setActualWidth(widthBeforeUpdate, source);\n }\n }\n if (colDef.sort !== void 0) {\n if (colDef.sort == \"asc\" || colDef.sort == \"desc\") {\n column.setSort(colDef.sort, source);\n } else {\n column.setSort(void 0, source);\n }\n }\n const sortIndex = _attrToNumber(colDef.sortIndex);\n if (sortIndex !== void 0) {\n column.setSortIndex(sortIndex);\n }\n const hide = _attrToBoolean(colDef.hide);\n if (hide !== void 0) {\n column.setVisible(!hide, source);\n }\n if (colDef.pinned !== void 0) {\n column.setPinned(colDef.pinned);\n }\n }\n findExistingColumn(newColDef, existingColsCopy) {\n if (!existingColsCopy)\n return void 0;\n for (let i = 0; i < existingColsCopy.length; i++) {\n const def = existingColsCopy[i].getUserProvidedColDef();\n if (!def)\n continue;\n const newHasId = newColDef.colId != null;\n if (newHasId) {\n if (existingColsCopy[i].getId() === newColDef.colId) {\n return { idx: i, column: existingColsCopy[i] };\n }\n continue;\n }\n const newHasField = newColDef.field != null;\n if (newHasField) {\n if (def.field === newColDef.field) {\n return { idx: i, column: existingColsCopy[i] };\n }\n continue;\n }\n if (def === newColDef) {\n return { idx: i, column: existingColsCopy[i] };\n }\n }\n return void 0;\n }\n findExistingGroup(newGroupDef, existingGroups) {\n const newHasId = newGroupDef.groupId != null;\n if (!newHasId) {\n return void 0;\n }\n for (let i = 0; i < existingGroups.length; i++) {\n const existingGroup = existingGroups[i];\n const existingDef = existingGroup.getColGroupDef();\n if (!existingDef) {\n continue;\n }\n if (existingGroup.getId() === newGroupDef.groupId) {\n return { idx: i, group: existingGroup };\n }\n }\n return void 0;\n }\n addColumnDefaultAndTypes(colDef, colId) {\n const res = {};\n const defaultColDef = this.gos.get(\"defaultColDef\");\n _mergeDeep(res, defaultColDef, false, true);\n const columnType = this.updateColDefAndGetColumnType(res, colDef, colId);\n if (columnType) {\n this.assignColumnTypes(columnType, res);\n }\n _mergeDeep(res, colDef, false, true);\n const autoGroupColDef = this.gos.get(\"autoGroupColumnDef\");\n const isSortingCoupled = _isColumnsSortingCoupledToGroup(this.gos);\n if (colDef.rowGroup && autoGroupColDef && isSortingCoupled) {\n _mergeDeep(\n res,\n { sort: autoGroupColDef.sort, initialSort: autoGroupColDef.initialSort },\n false,\n true\n );\n }\n this.dataTypeService?.validateColDef(res);\n return res;\n }\n updateColDefAndGetColumnType(colDef, userColDef, colId) {\n const dataTypeDefinitionColumnType = this.dataTypeService?.updateColDefAndGetColumnType(\n colDef,\n userColDef,\n colId\n );\n const columnTypes = userColDef.type ?? dataTypeDefinitionColumnType ?? colDef.type;\n colDef.type = columnTypes;\n return columnTypes ? convertColumnTypes(columnTypes) : void 0;\n }\n assignColumnTypes(typeKeys, colDefMerged) {\n if (!typeKeys.length) {\n return;\n }\n const allColumnTypes = Object.assign({}, DefaultColumnTypes);\n const userTypes = this.gos.get(\"columnTypes\") || {};\n _iterateObject(userTypes, (key, value) => {\n if (key in allColumnTypes) {\n _warnOnce(`the column type '${key}' is a default column type and cannot be overridden.`);\n } else {\n const colType = value;\n if (colType.type) {\n _warnOnce(\n `Column type definitions 'columnTypes' with a 'type' attribute are not supported because a column type cannot refer to another column type. Only column definitions 'columnDefs' can use the 'type' attribute to refer to a column type.`\n );\n }\n allColumnTypes[key] = value;\n }\n });\n typeKeys.forEach((t) => {\n const typeColDef = allColumnTypes[t.trim()];\n if (typeColDef) {\n _mergeDeep(colDefMerged, typeColDef, false, true);\n } else {\n _warnOnce(\"colDef.type '\" + t + \"' does not correspond to defined gridOptions.columnTypes\");\n }\n });\n }\n // if object has children, we assume it's a group\n isColumnGroup(abstractColDef) {\n return abstractColDef.children !== void 0;\n }\n};\nfunction depthFirstOriginalTreeSearch(parent, tree, callback) {\n if (!tree) {\n return;\n }\n for (let i = 0; i < tree.length; i++) {\n const child = tree[i];\n if (isProvidedColumnGroup(child)) {\n depthFirstOriginalTreeSearch(child, child.getChildren(), callback);\n }\n callback(child, parent);\n }\n}\n\n// community-modules/core/src/columns/columnModel.ts\nvar ColumnModel = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"columnModel\";\n // if pivotMode is on, however pivot results are NOT shown if no pivot columns are set\n this.pivotMode = false;\n this.autoHeightActiveAtLeastOnce = false;\n this.ready = false;\n this.changeEventsDispatching = false;\n // when we're waiting for cell data types to be inferred, we need to defer column resizing\n this.shouldQueueResizeOperations = false;\n this.resizeOperationQueue = [];\n }\n wireBeans(beans) {\n this.context = beans.context;\n this.ctrlsService = beans.ctrlsService;\n this.columnFactory = beans.columnFactory;\n this.columnSizeService = beans.columnSizeService;\n this.visibleColsService = beans.visibleColsService;\n this.columnViewportService = beans.columnViewportService;\n this.pivotResultColsService = beans.pivotResultColsService;\n this.columnAnimationService = beans.columnAnimationService;\n this.autoColService = beans.autoColService;\n this.controlsColService = beans.controlsColService;\n this.valueCache = beans.valueCache;\n this.columnDefFactory = beans.columnDefFactory;\n this.columnApplyStateService = beans.columnApplyStateService;\n this.columnGroupStateService = beans.columnGroupStateService;\n this.eventDispatcher = beans.columnEventDispatcher;\n this.columnMoveService = beans.columnMoveService;\n this.columnAutosizeService = beans.columnAutosizeService;\n this.funcColsService = beans.funcColsService;\n this.quickFilterService = beans.quickFilterService;\n this.showRowGroupColsService = beans.showRowGroupColsService;\n this.environment = beans.environment;\n }\n postConstruct() {\n const pivotMode = this.gos.get(\"pivotMode\");\n if (this.isPivotSettingAllowed(pivotMode)) {\n this.pivotMode = pivotMode;\n }\n this.addManagedPropertyListeners(\n [\"groupDisplayType\", \"treeData\", \"treeDataDisplayType\", \"groupHideOpenParents\"],\n (event) => this.refreshAll(convertSourceType(event.source))\n );\n this.addManagedPropertyListener(\"rowSelection\", (event) => {\n this.onSelectionOptionsChanged(event.currentValue, event.previousValue, convertSourceType(event.source));\n });\n this.addManagedPropertyListener(\n \"autoGroupColumnDef\",\n (event) => this.onAutoGroupColumnDefChanged(convertSourceType(event.source))\n );\n this.addManagedPropertyListeners(\n [\"defaultColDef\", \"defaultColGroupDef\", \"columnTypes\", \"suppressFieldDotNotation\"],\n (event) => this.recreateColumnDefs(convertSourceType(event.source))\n );\n this.addManagedPropertyListener(\n \"pivotMode\",\n (event) => this.setPivotMode(this.gos.get(\"pivotMode\"), convertSourceType(event.source))\n );\n this.addManagedEventListeners({ firstDataRendered: () => this.onFirstDataRendered() });\n }\n // called from SyncService, when grid has finished initialising\n createColsFromColDefs(source) {\n const dispatchEventsFunc = this.colDefs ? this.columnApplyStateService.compareColumnStatesAndDispatchEvents(source) : void 0;\n this.valueCache.expire();\n const oldCols = this.colDefCols?.list;\n const oldTree = this.colDefCols?.tree;\n const newTree = this.columnFactory.createColumnTree(this.colDefs, true, oldTree, source);\n destroyColumnTree(this.context, this.colDefCols?.tree, newTree.columnTree);\n const tree = newTree.columnTree;\n const treeDepth = newTree.treeDept;\n const list = getColumnsFromTree(tree);\n const map = {};\n list.forEach((col) => map[col.getId()] = col);\n this.colDefCols = { tree, treeDepth, list, map };\n this.funcColsService.extractCols(source, oldCols);\n this.ready = true;\n this.refreshCols(true);\n this.visibleColsService.refresh(source);\n this.columnViewportService.checkViewportColumns();\n this.eventDispatcher.everythingChanged(source);\n if (dispatchEventsFunc) {\n this.changeEventsDispatching = true;\n dispatchEventsFunc();\n this.changeEventsDispatching = false;\n }\n this.eventDispatcher.newColumnsLoaded(source);\n if (source === \"gridInitializing\") {\n this.columnSizeService.applyAutosizeStrategy();\n }\n }\n // called from: buildAutoGroupColumns (events 'groupDisplayType', 'treeData', 'treeDataDisplayType', 'groupHideOpenParents')\n // createColsFromColDefs (recreateColumnDefs, setColumnsDefs),\n // setPivotMode, applyColumnState,\n // functionColsService.setPrimaryColList, functionColsService.updatePrimaryColList,\n // pivotResultColsService.setPivotResultCols\n refreshCols(newColDefs) {\n if (!this.colDefCols) {\n return;\n }\n const prevColTree = this.cols?.tree;\n this.saveColOrder();\n this.selectCols();\n this.createAutoCols();\n this.addAutoCols();\n this.createControlsCols();\n this.addControlsCols();\n const shouldSortNewColDefs = _shouldMaintainColumnOrder(this.gos, this.showingPivotResult);\n if (!newColDefs || shouldSortNewColDefs) {\n this.restoreColOrder();\n }\n this.positionLockedCols();\n this.showRowGroupColsService?.refresh();\n this.quickFilterService?.refreshQuickFilterCols();\n this.setColSpanActive();\n this.setAutoHeightActive();\n this.visibleColsService.clear();\n this.columnViewportService.clear();\n const dispatchChangedEvent = !_areEqual(prevColTree, this.cols.tree);\n if (dispatchChangedEvent) {\n this.eventDispatcher.gridColumns();\n }\n }\n selectCols() {\n const pivotResultCols = this.pivotResultColsService.getPivotResultCols();\n this.showingPivotResult = pivotResultCols != null;\n if (pivotResultCols) {\n const { map, list, tree, treeDepth } = pivotResultCols;\n this.cols = {\n list: list.slice(),\n map: { ...map },\n tree: tree.slice(),\n treeDepth\n };\n const hasSameColumns = pivotResultCols.list.some((col) => this.cols?.map[col.getColId()] !== void 0);\n if (!hasSameColumns) {\n this.lastPivotOrder = null;\n }\n } else {\n const { map, list, tree, treeDepth } = this.colDefCols;\n this.cols = {\n list: list.slice(),\n map: { ...map },\n tree: tree.slice(),\n treeDepth\n };\n }\n }\n getColsToShow() {\n const showAutoGroupAndValuesOnly = this.isPivotMode() && !this.isShowingPivotResult();\n const valueColumns = this.funcColsService.getValueColumns();\n const res = this.cols.list.filter((col) => {\n const isAutoGroupCol = isColumnGroupAutoCol(col);\n if (showAutoGroupAndValuesOnly) {\n const isValueCol = valueColumns && _includes(valueColumns, col);\n return isAutoGroupCol || isValueCol;\n } else {\n return isAutoGroupCol || col.isVisible();\n }\n });\n return res;\n }\n addAutoCols() {\n if (this.autoCols == null) {\n return;\n }\n this.cols.list = this.autoCols.list.concat(this.cols.list);\n this.cols.tree = this.autoCols.tree.concat(this.cols.tree);\n updateColsMap(this.cols);\n }\n createAutoCols() {\n const groupFullWidthRow = _isGroupUseEntireRow(this.gos, this.pivotMode);\n const suppressAutoColumn = this.pivotMode ? this.gos.get(\"pivotSuppressAutoColumn\") : this.isSuppressAutoCol();\n const rowGroupCols = this.funcColsService.getRowGroupColumns();\n const groupingActive = rowGroupCols.length > 0 || this.gos.get(\"treeData\");\n const noAutoCols = !groupingActive || suppressAutoColumn || groupFullWidthRow;\n const destroyPrevious = () => {\n if (this.autoCols) {\n destroyColumnTree(this.context, this.autoCols.tree);\n this.autoCols = null;\n }\n };\n if (noAutoCols || !this.autoColService) {\n destroyPrevious();\n return;\n }\n const list = this.autoColService.createAutoCols(rowGroupCols) ?? [];\n const autoColsSame = areColIdsEqual(list, this.autoCols?.list || null);\n const newTreeDepth = this.cols.treeDepth;\n const oldTreeDepth = this.autoCols ? this.autoCols.treeDepth : -1;\n const treeDeptSame = oldTreeDepth == newTreeDepth;\n if (autoColsSame && treeDeptSame) {\n return;\n }\n destroyPrevious();\n const [tree, treeDepth] = this.columnFactory.balanceTreeForAutoCols(list, this.cols.tree);\n this.autoCols = {\n list,\n tree,\n treeDepth,\n map: {}\n };\n const putAutocolsFirstInList = (cols) => {\n if (!cols) {\n return null;\n }\n const colsFiltered = cols.filter((col) => !isColumnGroupAutoCol(col));\n return [...list, ...colsFiltered];\n };\n this.lastOrder = putAutocolsFirstInList(this.lastOrder);\n this.lastPivotOrder = putAutocolsFirstInList(this.lastPivotOrder);\n }\n createControlsCols() {\n const destroyCollection = () => {\n destroyColumnTree(this.context, this.controlsCols?.tree);\n this.controlsCols = null;\n };\n if (!this.controlsColService) {\n destroyCollection();\n }\n const newTreeDepth = this.cols.treeDepth;\n const oldTreeDepth = this.controlsCols?.treeDepth ?? -1;\n const treeDeptSame = oldTreeDepth == newTreeDepth;\n const list = this.controlsColService?.createControlsCols() ?? [];\n const areSame = areColIdsEqual(list, this.controlsCols?.list ?? []);\n if (areSame && treeDeptSame) {\n return;\n }\n destroyCollection();\n const [tree, treeDepth] = this.columnFactory.balanceTreeForAutoCols(list, this.cols.tree);\n this.controlsCols = {\n list,\n tree,\n treeDepth,\n map: {}\n };\n const putControlscolsFirstInList = (cols) => {\n if (!cols) {\n return null;\n }\n const colsFiltered = cols.filter((col) => !isColumnControlsCol(col));\n return [...list, ...colsFiltered];\n };\n this.lastOrder = putControlscolsFirstInList(this.lastOrder);\n this.lastPivotOrder = putControlscolsFirstInList(this.lastPivotOrder);\n }\n addControlsCols() {\n if (this.controlsCols == null) {\n return;\n }\n this.cols.list = this.controlsCols.list.concat(this.cols.list);\n this.cols.tree = this.controlsCols.tree.concat(this.cols.tree);\n updateColsMap(this.cols);\n }\n // on events 'groupDisplayType', 'treeData', 'treeDataDisplayType', 'groupHideOpenParents'\n refreshAll(source) {\n if (!this.isReady()) {\n return;\n }\n this.refreshCols(false);\n this.visibleColsService.refresh(source);\n }\n setColsVisible(keys, visible = false, source) {\n this.columnApplyStateService.applyColumnState(\n {\n state: keys.map((key) => ({\n colId: typeof key === \"string\" ? key : key.getColId(),\n hide: !visible\n }))\n },\n source\n );\n }\n setColsPinned(keys, pinned, source) {\n if (!this.cols) {\n return;\n }\n if (_missingOrEmpty(keys)) {\n return;\n }\n if (_isDomLayout(this.gos, \"print\")) {\n _warnOnce(`Changing the column pinning status is not allowed with domLayout='print'`);\n return;\n }\n this.columnAnimationService.start();\n let actualPinned;\n if (pinned === true || pinned === \"left\") {\n actualPinned = \"left\";\n } else if (pinned === \"right\") {\n actualPinned = \"right\";\n } else {\n actualPinned = null;\n }\n const updatedCols = [];\n keys.forEach((key) => {\n if (!key) {\n return;\n }\n const column = this.getCol(key);\n if (!column) {\n return;\n }\n if (column.getPinned() !== actualPinned) {\n column.setPinned(actualPinned);\n updatedCols.push(column);\n }\n });\n if (updatedCols.length) {\n this.visibleColsService.refresh(source);\n this.eventDispatcher.columnPinned(updatedCols, source);\n }\n this.columnAnimationService.finish();\n }\n // called by headerRenderer - when a header is opened or closed\n setColumnGroupOpened(key, newValue, source) {\n let keyAsString;\n if (isProvidedColumnGroup(key)) {\n keyAsString = key.getId();\n } else {\n keyAsString = key || \"\";\n }\n this.columnGroupStateService.setColumnGroupState([{ groupId: keyAsString, open: newValue }], source);\n }\n getProvidedColGroup(key) {\n let res = null;\n depthFirstOriginalTreeSearch(null, this.cols?.tree, (node) => {\n if (isProvidedColumnGroup(node)) {\n if (node.getId() === key) {\n res = node;\n }\n }\n });\n return res;\n }\n isColGroupLocked(column) {\n const groupLockGroupColumns = this.gos.get(\"groupLockGroupColumns\");\n if (!column.isRowGroupActive() || groupLockGroupColumns === 0) {\n return false;\n }\n if (groupLockGroupColumns === -1) {\n return true;\n }\n const rowGroupCols = this.funcColsService.getRowGroupColumns();\n const colIndex = rowGroupCols.findIndex((groupCol) => groupCol.getColId() === column.getColId());\n return groupLockGroupColumns > colIndex;\n }\n isSuppressAutoCol() {\n const groupDisplayType = this.gos.get(\"groupDisplayType\");\n const isCustomRowGroups = groupDisplayType === \"custom\";\n if (isCustomRowGroups) {\n return true;\n }\n const treeDataDisplayType = this.gos.get(\"treeDataDisplayType\");\n return treeDataDisplayType === \"custom\";\n }\n setAutoHeightActive() {\n this.autoHeightActive = this.cols.list.some((col) => col.isVisible() && col.isAutoHeight());\n if (this.autoHeightActive) {\n this.autoHeightActiveAtLeastOnce = true;\n const supportedRowModel = _isClientSideRowModel(this.gos) || _isServerSideRowModel(this.gos);\n if (!supportedRowModel) {\n _warnOnce(\"autoHeight columns only work with Client Side Row Model and Server Side Row Model.\");\n }\n }\n }\n restoreColOrder() {\n const lastOrder = this.showingPivotResult ? this.lastPivotOrder : this.lastOrder;\n if (!lastOrder) {\n return;\n }\n const lastOrderMapped = new Map(lastOrder.map((col, index) => [col, index]));\n const noColsFound = !this.cols.list.some((col) => lastOrderMapped.has(col));\n if (noColsFound) {\n return;\n }\n const colsMap = new Map(this.cols.list.map((col) => [col, true]));\n const lastOrderFiltered = lastOrder.filter((col) => colsMap.has(col));\n const lastOrderFilteredMap = new Map(lastOrderFiltered.map((col) => [col, true]));\n const missingFromLastOrder = this.cols.list.filter((col) => !lastOrderFilteredMap.has(col));\n const res = lastOrderFiltered.slice();\n missingFromLastOrder.forEach((newCol) => {\n let parent = newCol.getOriginalParent();\n if (!parent) {\n res.push(newCol);\n return;\n }\n const siblings = [];\n while (!siblings.length && parent) {\n const leafCols = parent.getLeafColumns();\n leafCols.forEach((leafCol) => {\n const presentInNewCols = res.indexOf(leafCol) >= 0;\n const notYetInSiblings = siblings.indexOf(leafCol) < 0;\n if (presentInNewCols && notYetInSiblings) {\n siblings.push(leafCol);\n }\n });\n parent = parent.getOriginalParent();\n }\n if (!siblings.length) {\n res.push(newCol);\n return;\n }\n const indexes = siblings.map((col) => res.indexOf(col));\n const lastIndex = Math.max(...indexes);\n _insertIntoArray(res, newCol, lastIndex + 1);\n });\n this.cols.list = res;\n }\n sortColsLikeKeys(colIds) {\n if (this.cols == null) {\n return;\n }\n let newOrder = [];\n const processedColIds = {};\n colIds.forEach((colId) => {\n if (processedColIds[colId]) {\n return;\n }\n const col = this.cols.map[colId];\n if (col) {\n newOrder.push(col);\n processedColIds[colId] = true;\n }\n });\n let autoGroupInsertIndex = 0;\n this.cols.list.forEach((col) => {\n const colId = col.getColId();\n const alreadyProcessed = processedColIds[colId] != null;\n if (alreadyProcessed) {\n return;\n }\n const isAutoGroupCol = colId.startsWith(GROUP_AUTO_COLUMN_ID);\n if (isAutoGroupCol) {\n _insertIntoArray(newOrder, col, autoGroupInsertIndex++);\n } else {\n newOrder.push(col);\n }\n });\n newOrder = this.columnMoveService.placeLockedColumns(newOrder);\n if (!this.columnMoveService.doesMovePassMarryChildren(newOrder)) {\n _warnOnce(\n \"Applying column order broke a group where columns should be married together. Applying new order has been discarded.\"\n );\n return;\n }\n this.cols.list = newOrder;\n }\n // returns the provided cols sorted in same order as they appear in this.cols, eg if this.cols\n // contains [a,b,c,d,e] and col passed is [e,a] then the passed cols are sorted into [a,e]\n sortColsLikeCols(cols) {\n if (!cols || cols.length <= 1) {\n return;\n }\n const notAllColsPresent = cols.filter((c) => this.cols.list.indexOf(c) < 0).length > 0;\n if (notAllColsPresent) {\n return;\n }\n cols.sort((a, b) => {\n const indexA = this.cols.list.indexOf(a);\n const indexB = this.cols.list.indexOf(b);\n return indexA - indexB;\n });\n }\n resetColDefIntoCol(column, source) {\n const userColDef = column.getUserProvidedColDef();\n if (!userColDef) {\n return false;\n }\n const newColDef = this.columnFactory.addColumnDefaultAndTypes(userColDef, column.getColId());\n column.setColDef(newColDef, userColDef, source);\n return true;\n }\n queueResizeOperations() {\n this.shouldQueueResizeOperations = true;\n }\n isShouldQueueResizeOperations() {\n return this.shouldQueueResizeOperations;\n }\n processResizeOperations() {\n this.shouldQueueResizeOperations = false;\n this.resizeOperationQueue.forEach((resizeOperation) => resizeOperation());\n this.resizeOperationQueue = [];\n }\n pushResizeOperation(func) {\n this.resizeOperationQueue.push(func);\n }\n moveInCols(movedColumns, toIndex, source) {\n _moveInArray(this.cols?.list, movedColumns, toIndex);\n this.visibleColsService.refresh(source);\n }\n positionLockedCols() {\n this.cols.list = this.columnMoveService.placeLockedColumns(this.cols.list);\n }\n saveColOrder() {\n if (this.showingPivotResult) {\n this.lastPivotOrder = this.cols?.list;\n } else {\n this.lastOrder = this.cols?.list;\n }\n }\n getColumnDefs() {\n if (!this.colDefCols) {\n return;\n }\n const cols = this.colDefCols.list.slice();\n if (this.showingPivotResult) {\n cols.sort((a, b) => this.lastOrder.indexOf(a) - this.lastOrder.indexOf(b));\n } else if (this.lastOrder) {\n cols.sort((a, b) => this.cols.list.indexOf(a) - this.cols.list.indexOf(b));\n }\n const rowGroupColumns = this.funcColsService.getRowGroupColumns();\n const pivotColumns = this.funcColsService.getPivotColumns();\n return this.columnDefFactory.buildColumnDefs(cols, rowGroupColumns, pivotColumns);\n }\n isShowingPivotResult() {\n return this.showingPivotResult;\n }\n // called by clientSideRowModel.refreshModel\n isChangeEventsDispatching() {\n return this.changeEventsDispatching;\n }\n isColSpanActive() {\n return this.colSpanActive;\n }\n // used by Column Tool Panel\n isProvidedColGroupsPresent() {\n return this.colDefCols?.treeDepth > 0;\n }\n setColSpanActive() {\n this.colSpanActive = this.cols.list.some((col) => col.getColDef().colSpan != null);\n }\n isAutoRowHeightActive() {\n return this.autoHeightActive;\n }\n wasAutoRowHeightEverActive() {\n return this.autoHeightActiveAtLeastOnce;\n }\n // + gridPanel -> for resizing the body and setting top margin\n getHeaderRowCount() {\n return this.cols ? this.cols.treeDepth + 1 : -1;\n }\n isReady() {\n return this.ready;\n }\n isPivotMode() {\n return this.pivotMode;\n }\n setPivotMode(pivotMode, source) {\n if (pivotMode === this.pivotMode || !this.isPivotSettingAllowed(this.pivotMode)) {\n return;\n }\n this.pivotMode = pivotMode;\n if (!this.ready) {\n return;\n }\n this.refreshCols(false);\n this.visibleColsService.refresh(source);\n this.eventDispatcher.pivotModeChanged();\n }\n isPivotSettingAllowed(pivot) {\n if (pivot && this.gos.get(\"treeData\")) {\n _warnOnce(\"Pivot mode not available with treeData.\");\n return false;\n }\n return true;\n }\n // + clientSideRowModel\n isPivotActive() {\n const pivotColumns = this.funcColsService.getPivotColumns();\n return this.pivotMode && !_missingOrEmpty(pivotColumns);\n }\n // called when dataTypes change\n recreateColumnDefs(source) {\n if (!this.cols) {\n return;\n }\n if (this.autoCols) {\n this.autoColService.updateAutoCols(this.autoCols.list, source);\n }\n this.createColsFromColDefs(source);\n }\n setColumnDefs(columnDefs, source) {\n this.colDefs = columnDefs;\n this.createColsFromColDefs(source);\n }\n destroy() {\n destroyColumnTree(this.context, this.colDefCols?.tree);\n destroyColumnTree(this.context, this.autoCols?.tree);\n destroyColumnTree(this.context, this.controlsCols?.tree);\n super.destroy();\n }\n getColTree() {\n return this.cols.tree;\n }\n // + columnSelectPanel\n getColDefColTree() {\n return this.colDefCols.tree;\n }\n // + clientSideRowController -> sorting, building quick filter text\n // + headerRenderer -> sorting (clearing icon)\n getColDefCols() {\n return this.colDefCols?.list ? this.colDefCols.list : null;\n }\n // + moveColumnController\n getCols() {\n return this.cols?.list ?? [];\n }\n // returns colDefCols, pivotResultCols and autoCols\n getAllCols() {\n const pivotResultCols = this.pivotResultColsService.getPivotResultCols();\n const pivotResultColsList = pivotResultCols?.list;\n return [\n this.colDefCols?.list ?? [],\n this.autoCols?.list ?? [],\n this.controlsCols?.list ?? [],\n pivotResultColsList ?? []\n ].flat();\n }\n getColsForKeys(keys) {\n if (!keys) {\n return [];\n }\n return keys.map((key) => this.getCol(key)).filter((col) => col != null);\n }\n getColDefCol(key) {\n if (!this.colDefCols?.list) {\n return null;\n }\n return this.getColFromCollection(key, this.colDefCols);\n }\n getCol(key) {\n if (key == null) {\n return null;\n }\n return this.getColFromCollection(key, this.cols);\n }\n getColFromCollection(key, cols) {\n if (cols == null) {\n return null;\n }\n const { map, list } = cols;\n if (typeof key == \"string\" && map[key]) {\n return map[key];\n }\n for (let i = 0; i < list.length; i++) {\n if (columnsMatch(list[i], key)) {\n return list[i];\n }\n }\n return this.getAutoCol(key);\n }\n getAutoCol(key) {\n return this.autoCols?.list.find((groupCol) => columnsMatch(groupCol, key)) ?? null;\n }\n getAutoCols() {\n return this.autoCols?.list ?? null;\n }\n setColHeaderHeight(col, height) {\n const changed = col.setAutoHeaderHeight(height);\n if (changed) {\n if (col.isColumn) {\n this.eventDispatcher.headerHeight(col);\n } else {\n this.eventDispatcher.groupHeaderHeight(col);\n }\n }\n }\n getGroupRowsHeight() {\n const heights = [];\n const headerRowContainerCtrls = this.ctrlsService.getHeaderRowContainerCtrls();\n for (const headerRowContainerCtrl of headerRowContainerCtrls) {\n if (!headerRowContainerCtrl) {\n continue;\n }\n const groupRowCount = headerRowContainerCtrl.getGroupRowCount() || 0;\n for (let i = 0; i < groupRowCount; i++) {\n const headerRowCtrl = headerRowContainerCtrl.getGroupRowCtrlAtIndex(i);\n const currentHeightAtPos = heights[i];\n if (headerRowCtrl) {\n const newHeight = this.getColumnGroupHeaderRowHeight(headerRowCtrl);\n if (currentHeightAtPos == null || newHeight > currentHeightAtPos) {\n heights[i] = newHeight;\n }\n }\n }\n }\n return heights;\n }\n getColumnGroupHeaderRowHeight(headerRowCtrl) {\n const defaultHeight = this.isPivotMode() ? this.getPivotGroupHeaderHeight() : this.getGroupHeaderHeight();\n let displayedHeights = 0;\n const headerRowCellCtrls = headerRowCtrl.getHeaderCtrls();\n for (const headerCellCtrl of headerRowCellCtrls) {\n const column = headerCellCtrl.getColumn();\n if (column.isAutoHeaderHeight()) {\n const height = column.getAutoHeaderHeight();\n if (height != null && height > displayedHeights) {\n displayedHeights = height;\n }\n }\n }\n return Math.max(defaultHeight, displayedHeights);\n }\n getColumnHeaderRowHeight() {\n const defaultHeight = this.isPivotMode() ? this.getPivotHeaderHeight() : this.getHeaderHeight();\n const allDisplayedCols = this.visibleColsService.getAllCols();\n const displayedHeights = allDisplayedCols.filter((col) => col.isAutoHeaderHeight()).map((col) => col.getAutoHeaderHeight() || 0);\n return Math.max(defaultHeight, ...displayedHeights);\n }\n getHeaderHeight() {\n return this.gos.get(\"headerHeight\") ?? this.environment.getDefaultHeaderHeight();\n }\n getFloatingFiltersHeight() {\n return this.gos.get(\"floatingFiltersHeight\") ?? this.getHeaderHeight();\n }\n getGroupHeaderHeight() {\n return this.gos.get(\"groupHeaderHeight\") ?? this.getHeaderHeight();\n }\n getPivotHeaderHeight() {\n return this.gos.get(\"pivotHeaderHeight\") ?? this.getHeaderHeight();\n }\n getPivotGroupHeaderHeight() {\n return this.gos.get(\"pivotGroupHeaderHeight\") ?? this.getGroupHeaderHeight();\n }\n onFirstDataRendered() {\n const autoSizeStrategy = this.gos.get(\"autoSizeStrategy\");\n if (autoSizeStrategy?.type !== \"fitCellContents\") {\n return;\n }\n const { colIds: columns, skipHeader } = autoSizeStrategy;\n setTimeout(() => {\n if (columns) {\n this.columnAutosizeService.autoSizeCols({\n colKeys: columns,\n skipHeader,\n source: \"autosizeColumns\"\n });\n } else {\n this.columnAutosizeService.autoSizeAllColumns(\"autosizeColumns\", skipHeader);\n }\n });\n }\n onAutoGroupColumnDefChanged(source) {\n if (this.autoCols) {\n this.autoColService.updateAutoCols(this.autoCols.list, source);\n }\n }\n onSelectionOptionsChanged(current, prev, source) {\n const prevCheckbox = prev && typeof prev !== \"string\" ? _getCheckboxes(prev) : void 0;\n const currCheckbox = current && typeof current !== \"string\" ? _getCheckboxes(current) : void 0;\n const checkboxHasChanged = prevCheckbox !== currCheckbox;\n const prevHeaderCheckbox = prev && typeof prev !== \"string\" ? _getHeaderCheckbox(prev) : void 0;\n const currHeaderCheckbox = current && typeof current !== \"string\" ? _getHeaderCheckbox(current) : void 0;\n const headerCheckboxHasChanged = prevHeaderCheckbox !== currHeaderCheckbox;\n if (checkboxHasChanged || headerCheckboxHasChanged) {\n this.refreshAll(source);\n }\n }\n};\nfunction convertSourceType(source) {\n return source === \"gridOptionsUpdated\" ? \"gridOptionsChanged\" : source;\n}\nfunction updateColsMap(cols) {\n cols.map = {};\n cols.list.forEach((col) => cols.map[col.getId()] = col);\n}\nfunction columnsMatch(column, key) {\n const columnMatches = column === key;\n const colDefMatches = column.getColDef() === key;\n const idMatches = column.getColId() == key;\n return columnMatches || colDefMatches || idMatches;\n}\nfunction areColIdsEqual(colsA, colsB) {\n return _areEqual(colsA, colsB, (a, b) => a.getColId() === b.getColId());\n}\n\n// community-modules/core/src/columns/columnAutosizeService.ts\nvar ColumnAutosizeService = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"columnAutosizeService\";\n this.timesDelayed = 0;\n }\n wireBeans(beans) {\n this.columnModel = beans.columnModel;\n this.visibleColsService = beans.visibleColsService;\n this.animationFrameService = beans.animationFrameService;\n this.autoWidthCalculator = beans.autoWidthCalculator;\n this.eventDispatcher = beans.columnEventDispatcher;\n this.ctrlsService = beans.ctrlsService;\n this.renderStatusService = beans.renderStatusService;\n }\n autoSizeCols(params) {\n if (this.columnModel.isShouldQueueResizeOperations()) {\n this.columnModel.pushResizeOperation(() => this.autoSizeCols(params));\n return;\n }\n const { colKeys, skipHeader, skipHeaderGroups, stopAtGroup, source = \"api\" } = params;\n this.animationFrameService.flushAllFrames();\n if (this.timesDelayed < 5 && this.renderStatusService && !this.renderStatusService.areHeaderCellsRendered()) {\n this.timesDelayed++;\n setTimeout(() => this.autoSizeCols(params));\n return;\n }\n this.timesDelayed = 0;\n const columnsAutosized = [];\n let changesThisTimeAround = -1;\n const shouldSkipHeader = skipHeader != null ? skipHeader : this.gos.get(\"skipHeaderOnAutoSize\");\n const shouldSkipHeaderGroups = skipHeaderGroups != null ? skipHeaderGroups : shouldSkipHeader;\n while (changesThisTimeAround !== 0) {\n changesThisTimeAround = 0;\n const updatedColumns = [];\n colKeys.forEach((key) => {\n if (!key) {\n return;\n }\n const column = this.columnModel.getCol(key);\n if (!column) {\n return;\n }\n if (columnsAutosized.indexOf(column) >= 0) {\n return;\n }\n const preferredWidth = this.autoWidthCalculator.getPreferredWidthForColumn(column, shouldSkipHeader);\n if (preferredWidth > 0) {\n const newWidth = this.normaliseColumnWidth(column, preferredWidth);\n column.setActualWidth(newWidth, source);\n columnsAutosized.push(column);\n changesThisTimeAround++;\n }\n updatedColumns.push(column);\n });\n if (!updatedColumns.length) {\n continue;\n }\n this.visibleColsService.refresh(source);\n }\n if (!shouldSkipHeaderGroups) {\n this.autoSizeColumnGroupsByColumns(colKeys, source, stopAtGroup);\n }\n this.eventDispatcher.columnResized(columnsAutosized, true, \"autosizeColumns\");\n }\n autoSizeColumn(key, source, skipHeader) {\n if (key) {\n this.autoSizeCols({ colKeys: [key], skipHeader, skipHeaderGroups: true, source });\n }\n }\n autoSizeColumnGroupsByColumns(keys, source, stopAtGroup) {\n const columnGroups = /* @__PURE__ */ new Set();\n const columns = this.columnModel.getColsForKeys(keys);\n columns.forEach((col) => {\n let parent = col.getParent();\n while (parent && parent != stopAtGroup) {\n if (!parent.isPadding()) {\n columnGroups.add(parent);\n }\n parent = parent.getParent();\n }\n });\n let headerGroupCtrl;\n const resizedColumns = [];\n for (const columnGroup of columnGroups) {\n for (const headerContainerCtrl of this.ctrlsService.getHeaderRowContainerCtrls()) {\n headerGroupCtrl = headerContainerCtrl.getHeaderCtrlForColumn(columnGroup);\n if (headerGroupCtrl) {\n break;\n }\n }\n if (headerGroupCtrl) {\n headerGroupCtrl.resizeLeafColumnsToFit(source);\n }\n }\n return resizedColumns;\n }\n autoSizeAllColumns(source, skipHeader) {\n if (this.columnModel.isShouldQueueResizeOperations()) {\n this.columnModel.pushResizeOperation(() => this.autoSizeAllColumns(source, skipHeader));\n return;\n }\n const allDisplayedColumns = this.visibleColsService.getAllCols();\n this.autoSizeCols({ colKeys: allDisplayedColumns, skipHeader, source });\n }\n // returns the width we can set to this col, taking into consideration min and max widths\n normaliseColumnWidth(column, newWidth) {\n const minWidth = column.getMinWidth();\n if (newWidth < minWidth) {\n newWidth = minWidth;\n }\n const maxWidth = column.getMaxWidth();\n if (column.isGreaterThanMax(newWidth)) {\n newWidth = maxWidth;\n }\n return newWidth;\n }\n};\n\n// community-modules/core/src/columns/funcColsService.ts\nvar FuncColsService = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"funcColsService\";\n this.rowGroupCols = [];\n this.valueCols = [];\n this.pivotCols = [];\n }\n wireBeans(beans) {\n this.columnModel = beans.columnModel;\n this.eventDispatcher = beans.columnEventDispatcher;\n this.aggFuncService = beans.aggFuncService;\n this.visibleColsService = beans.visibleColsService;\n }\n getModifyColumnsNoEventsCallbacks() {\n return {\n addGroupCol: (column) => this.rowGroupCols.push(column),\n removeGroupCol: (column) => _removeFromArray(this.rowGroupCols, column),\n addPivotCol: (column) => this.pivotCols.push(column),\n removePivotCol: (column) => _removeFromArray(this.pivotCols, column),\n addValueCol: (column) => this.valueCols.push(column),\n removeValueCol: (column) => _removeFromArray(this.valueCols, column)\n };\n }\n getSourceColumnsForGroupColumn(groupCol) {\n const sourceColumnId = groupCol.getColDef().showRowGroup;\n if (!sourceColumnId) {\n return null;\n }\n if (sourceColumnId === true) {\n return this.rowGroupCols.slice(0);\n }\n const column = this.columnModel.getColDefCol(sourceColumnId);\n return column ? [column] : null;\n }\n sortRowGroupColumns(compareFn) {\n this.rowGroupCols.sort(compareFn);\n }\n sortPivotColumns(compareFn) {\n this.pivotCols.sort(compareFn);\n }\n // + rowController\n getValueColumns() {\n return this.valueCols ? this.valueCols : [];\n }\n // + rowController\n getPivotColumns() {\n return this.pivotCols ? this.pivotCols : [];\n }\n // + toolPanel\n getRowGroupColumns() {\n return this.rowGroupCols ? this.rowGroupCols : [];\n }\n isRowGroupEmpty() {\n return _missingOrEmpty(this.rowGroupCols);\n }\n setColumnAggFunc(key, aggFunc, source) {\n if (!key) {\n return;\n }\n const column = this.columnModel.getColDefCol(key);\n if (!column) {\n return;\n }\n column.setAggFunc(aggFunc);\n this.eventDispatcher.columnChanged(\"columnValueChanged\", [column], source);\n }\n setRowGroupColumns(colKeys, source) {\n this.setColList(\n colKeys,\n this.rowGroupCols,\n \"columnRowGroupChanged\",\n true,\n true,\n (added, column) => this.setRowGroupActive(added, column, source),\n source\n );\n }\n setRowGroupActive(active, column, source) {\n if (active === column.isRowGroupActive()) {\n return;\n }\n column.setRowGroupActive(active, source);\n if (active && !this.gos.get(\"suppressRowGroupHidesColumns\")) {\n this.columnModel.setColsVisible([column], false, source);\n }\n if (!active && !this.gos.get(\"suppressMakeColumnVisibleAfterUnGroup\")) {\n this.columnModel.setColsVisible([column], true, source);\n }\n }\n addRowGroupColumns(keys, source) {\n this.updateColList(\n keys,\n this.rowGroupCols,\n true,\n true,\n (column) => this.setRowGroupActive(true, column, source),\n \"columnRowGroupChanged\",\n source\n );\n }\n removeRowGroupColumns(keys, source) {\n this.updateColList(\n keys,\n this.rowGroupCols,\n false,\n true,\n (column) => this.setRowGroupActive(false, column, source),\n \"columnRowGroupChanged\",\n source\n );\n }\n addPivotColumns(keys, source) {\n this.updateColList(\n keys,\n this.pivotCols,\n true,\n false,\n (column) => column.setPivotActive(true, source),\n \"columnPivotChanged\",\n source\n );\n }\n setPivotColumns(colKeys, source) {\n this.setColList(\n colKeys,\n this.pivotCols,\n \"columnPivotChanged\",\n true,\n false,\n (added, column) => {\n column.setPivotActive(added, source);\n },\n source\n );\n }\n removePivotColumns(keys, source) {\n this.updateColList(\n keys,\n this.pivotCols,\n false,\n false,\n (column) => column.setPivotActive(false, source),\n \"columnPivotChanged\",\n source\n );\n }\n setValueColumns(colKeys, source) {\n this.setColList(\n colKeys,\n this.valueCols,\n \"columnValueChanged\",\n false,\n false,\n (added, column) => this.setValueActive(added, column, source),\n source\n );\n }\n setValueActive(active, column, source) {\n if (active === column.isValueActive()) {\n return;\n }\n column.setValueActive(active, source);\n if (active && !column.getAggFunc() && this.aggFuncService) {\n const initialAggFunc = this.aggFuncService.getDefaultAggFunc(column);\n column.setAggFunc(initialAggFunc);\n }\n }\n addValueColumns(keys, source) {\n this.updateColList(\n keys,\n this.valueCols,\n true,\n false,\n (column) => this.setValueActive(true, column, source),\n \"columnValueChanged\",\n source\n );\n }\n removeValueColumns(keys, source) {\n this.updateColList(\n keys,\n this.valueCols,\n false,\n false,\n (column) => this.setValueActive(false, column, source),\n \"columnValueChanged\",\n source\n );\n }\n moveRowGroupColumn(fromIndex, toIndex, source) {\n if (this.isRowGroupEmpty()) {\n return;\n }\n const column = this.rowGroupCols[fromIndex];\n const impactedColumns = this.rowGroupCols.slice(fromIndex, toIndex);\n this.rowGroupCols.splice(fromIndex, 1);\n this.rowGroupCols.splice(toIndex, 0, column);\n this.eventDispatcher.rowGroupChanged(impactedColumns, source);\n }\n setColList(colKeys, masterList, eventName, detectOrderChange, autoGroupsNeedBuilding, columnCallback, source) {\n if (!this.columnModel.getCols()) {\n return;\n }\n const changes = /* @__PURE__ */ new Map();\n masterList.forEach((col, idx) => changes.set(col, idx));\n masterList.length = 0;\n if (_exists(colKeys)) {\n colKeys.forEach((key) => {\n const column = this.columnModel.getColDefCol(key);\n if (column) {\n masterList.push(column);\n }\n });\n }\n masterList.forEach((col, idx) => {\n const oldIndex = changes.get(col);\n if (oldIndex === void 0) {\n changes.set(col, 0);\n return;\n }\n if (detectOrderChange && oldIndex !== idx) {\n return;\n }\n changes.delete(col);\n });\n const primaryCols = this.columnModel.getColDefCols();\n (primaryCols || []).forEach((column) => {\n const added = masterList.indexOf(column) >= 0;\n columnCallback(added, column);\n });\n autoGroupsNeedBuilding && this.columnModel.refreshCols(false);\n this.visibleColsService.refresh(source);\n this.eventDispatcher.columnChanged(eventName, [...changes.keys()], source);\n }\n updateColList(keys, masterList, actionIsAdd, autoGroupsNeedBuilding, columnCallback, eventType, source) {\n if (!keys || _missingOrEmpty(keys)) {\n return;\n }\n let atLeastOne = false;\n const updatedCols = /* @__PURE__ */ new Set();\n keys.forEach((key) => {\n if (!key) {\n return;\n }\n const columnToAdd = this.columnModel.getColDefCol(key);\n if (!columnToAdd) {\n return;\n }\n updatedCols.add(columnToAdd);\n if (actionIsAdd) {\n if (masterList.indexOf(columnToAdd) >= 0) {\n return;\n }\n masterList.push(columnToAdd);\n } else {\n const currentIndex = masterList.indexOf(columnToAdd);\n if (currentIndex < 0) {\n return;\n }\n for (let i = currentIndex + 1; i < masterList.length; i++) {\n updatedCols.add(masterList[i]);\n }\n _removeFromArray(masterList, columnToAdd);\n }\n columnCallback(columnToAdd);\n atLeastOne = true;\n });\n if (!atLeastOne) {\n return;\n }\n if (autoGroupsNeedBuilding) {\n this.columnModel.refreshCols(false);\n }\n this.visibleColsService.refresh(source);\n this.eventDispatcher.genericColumnEvent(eventType, Array.from(updatedCols), source);\n }\n extractCols(source, oldProvidedCols) {\n this.extractRowGroupCols(source, oldProvidedCols);\n this.extractPivotCols(source, oldProvidedCols);\n this.extractValueCols(source, oldProvidedCols);\n }\n extractValueCols(source, oldProvidedCols) {\n this.valueCols = this.extractColsCommon(\n oldProvidedCols,\n this.valueCols,\n (col, flag) => col.setValueActive(flag, source),\n // aggFunc doesn't have index variant, cos order of value cols doesn't matter, so always return null\n () => void 0,\n () => void 0,\n // aggFunc is a string, so return it's existence\n (colDef) => {\n const aggFunc = colDef.aggFunc;\n if (aggFunc === null || aggFunc === \"\") {\n return null;\n }\n if (aggFunc === void 0) {\n return;\n }\n return !!aggFunc;\n },\n (colDef) => {\n return colDef.initialAggFunc != null && colDef.initialAggFunc != \"\";\n }\n );\n this.valueCols.forEach((col) => {\n const colDef = col.getColDef();\n if (colDef.aggFunc != null && colDef.aggFunc != \"\") {\n col.setAggFunc(colDef.aggFunc);\n } else {\n if (!col.getAggFunc()) {\n col.setAggFunc(colDef.initialAggFunc);\n }\n }\n });\n }\n extractRowGroupCols(source, oldProvidedCols) {\n this.rowGroupCols = this.extractColsCommon(\n oldProvidedCols,\n this.rowGroupCols,\n (col, flag) => col.setRowGroupActive(flag, source),\n (colDef) => colDef.rowGroupIndex,\n (colDef) => colDef.initialRowGroupIndex,\n (colDef) => colDef.rowGroup,\n (colDef) => colDef.initialRowGroup\n );\n }\n extractPivotCols(source, oldProvidedCols) {\n this.pivotCols = this.extractColsCommon(\n oldProvidedCols,\n this.pivotCols,\n (col, flag) => col.setPivotActive(flag, source),\n (colDef) => colDef.pivotIndex,\n (colDef) => colDef.initialPivotIndex,\n (colDef) => colDef.pivot,\n (colDef) => colDef.initialPivot\n );\n }\n extractColsCommon(oldProvidedCols = [], previousCols = [], setFlagFunc, getIndexFunc, getInitialIndexFunc, getValueFunc, getInitialValueFunc) {\n const colsWithIndex = [];\n const colsWithValue = [];\n const primaryCols = this.columnModel.getColDefCols() || [];\n primaryCols.forEach((col) => {\n const colIsNew = oldProvidedCols.indexOf(col) < 0;\n const colDef = col.getColDef();\n const value = _attrToBoolean(getValueFunc(colDef));\n const initialValue = _attrToBoolean(getInitialValueFunc(colDef));\n const index = _attrToNumber(getIndexFunc(colDef));\n const initialIndex = _attrToNumber(getInitialIndexFunc(colDef));\n let include;\n const valuePresent = value !== void 0;\n const indexPresent = index !== void 0;\n const initialValuePresent = initialValue !== void 0;\n const initialIndexPresent = initialIndex !== void 0;\n if (valuePresent) {\n include = value;\n } else if (indexPresent) {\n if (index === null) {\n include = false;\n } else {\n include = index >= 0;\n }\n } else {\n if (colIsNew) {\n if (initialValuePresent) {\n include = initialValue;\n } else if (initialIndexPresent) {\n include = initialIndex != null && initialIndex >= 0;\n } else {\n include = false;\n }\n } else {\n include = previousCols.indexOf(col) >= 0;\n }\n }\n if (include) {\n const useIndex = colIsNew ? index != null || initialIndex != null : index != null;\n useIndex ? colsWithIndex.push(col) : colsWithValue.push(col);\n }\n });\n const getIndexForCol = (col) => {\n const index = getIndexFunc(col.getColDef());\n const defaultIndex = getInitialIndexFunc(col.getColDef());\n return index != null ? index : defaultIndex;\n };\n colsWithIndex.sort((colA, colB) => {\n const indexA = getIndexForCol(colA);\n const indexB = getIndexForCol(colB);\n if (indexA === indexB) {\n return 0;\n }\n if (indexA < indexB) {\n return -1;\n }\n return 1;\n });\n const res = [].concat(colsWithIndex);\n previousCols.forEach((col) => {\n if (colsWithValue.indexOf(col) >= 0) {\n res.push(col);\n }\n });\n colsWithValue.forEach((col) => {\n if (res.indexOf(col) < 0) {\n res.push(col);\n }\n });\n previousCols.forEach((col) => {\n if (res.indexOf(col) < 0) {\n setFlagFunc(col, false);\n }\n });\n res.forEach((col) => {\n if (previousCols.indexOf(col) < 0) {\n setFlagFunc(col, true);\n }\n });\n return res;\n }\n generateColumnStateForRowGroupAndPivotIndexes(updatedRowGroupColumnState, updatedPivotColumnState) {\n const existingColumnStateUpdates = {};\n const orderColumns = (updatedColumnState, colList, enableProp, initialEnableProp, indexProp, initialIndexProp) => {\n const primaryCols = this.columnModel.getColDefCols();\n if (!colList.length || !primaryCols) {\n return [];\n }\n const updatedColIdArray = Object.keys(updatedColumnState);\n const updatedColIds = new Set(updatedColIdArray);\n const newColIds = new Set(updatedColIdArray);\n const allColIds = new Set(\n colList.map((column) => {\n const colId = column.getColId();\n newColIds.delete(colId);\n return colId;\n }).concat(updatedColIdArray)\n );\n const colIdsInOriginalOrder = [];\n const originalOrderMap = {};\n let orderIndex = 0;\n for (let i = 0; i < primaryCols.length; i++) {\n const colId = primaryCols[i].getColId();\n if (allColIds.has(colId)) {\n colIdsInOriginalOrder.push(colId);\n originalOrderMap[colId] = orderIndex++;\n }\n }\n let index = 1e3;\n let hasAddedNewCols = false;\n let lastIndex = 0;\n const processPrecedingNewCols = (colId) => {\n const originalOrderIndex = originalOrderMap[colId];\n for (let i = lastIndex; i < originalOrderIndex; i++) {\n const newColId = colIdsInOriginalOrder[i];\n if (newColIds.has(newColId)) {\n updatedColumnState[newColId][indexProp] = index++;\n newColIds.delete(newColId);\n }\n }\n lastIndex = originalOrderIndex;\n };\n colList.forEach((column) => {\n const colId = column.getColId();\n if (updatedColIds.has(colId)) {\n processPrecedingNewCols(colId);\n updatedColumnState[colId][indexProp] = index++;\n } else {\n const colDef = column.getColDef();\n const missingIndex = colDef[indexProp] === null || colDef[indexProp] === void 0 && colDef[initialIndexProp] == null;\n if (missingIndex) {\n if (!hasAddedNewCols) {\n const propEnabled = colDef[enableProp] || colDef[enableProp] === void 0 && colDef[initialEnableProp];\n if (propEnabled) {\n processPrecedingNewCols(colId);\n } else {\n newColIds.forEach((newColId) => {\n updatedColumnState[newColId][indexProp] = index + originalOrderMap[newColId];\n });\n index += colIdsInOriginalOrder.length;\n hasAddedNewCols = true;\n }\n }\n if (!existingColumnStateUpdates[colId]) {\n existingColumnStateUpdates[colId] = { colId };\n }\n existingColumnStateUpdates[colId][indexProp] = index++;\n }\n }\n });\n };\n orderColumns(\n updatedRowGroupColumnState,\n this.rowGroupCols,\n \"rowGroup\",\n \"initialRowGroup\",\n \"rowGroupIndex\",\n \"initialRowGroupIndex\"\n );\n orderColumns(\n updatedPivotColumnState,\n this.pivotCols,\n \"pivot\",\n \"initialPivot\",\n \"pivotIndex\",\n \"initialPivotIndex\"\n );\n return Object.values(existingColumnStateUpdates);\n }\n};\n\n// community-modules/core/src/columns/columnApplyStateService.ts\nvar ColumnApplyStateService = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"columnApplyStateService\";\n }\n wireBeans(beans) {\n this.columnModel = beans.columnModel;\n this.eventDispatcher = beans.columnEventDispatcher;\n this.sortController = beans.sortController;\n this.columnGetStateService = beans.columnGetStateService;\n this.funcColsService = beans.funcColsService;\n this.visibleColsService = beans.visibleColsService;\n this.columnAnimationService = beans.columnAnimationService;\n this.pivotResultColsService = beans.pivotResultColsService;\n }\n applyColumnState(params, source) {\n const providedCols = this.columnModel.getColDefCols() || [];\n if (_missingOrEmpty(providedCols)) {\n return false;\n }\n if (params && params.state && !params.state.forEach) {\n _warnOnce(\n \"applyColumnState() - the state attribute should be an array, however an array was not found. Please provide an array of items (one for each col you want to change) for state.\"\n );\n return false;\n }\n const callbacks = this.funcColsService.getModifyColumnsNoEventsCallbacks();\n const applyStates = (states, existingColumns, getById) => {\n const dispatchEventsFunc = this.compareColumnStatesAndDispatchEvents(source);\n const columnsWithNoState = existingColumns.slice();\n const rowGroupIndexes = {};\n const pivotIndexes = {};\n const autoColStates = [];\n const unmatchedAndAutoStates2 = [];\n let unmatchedCount2 = 0;\n const previousRowGroupCols = this.funcColsService.getRowGroupColumns().slice();\n const previousPivotCols = this.funcColsService.getPivotColumns().slice();\n states.forEach((state) => {\n const colId = state.colId || \"\";\n const isAutoGroupColumn = colId.startsWith(GROUP_AUTO_COLUMN_ID);\n if (isAutoGroupColumn) {\n autoColStates.push(state);\n unmatchedAndAutoStates2.push(state);\n return;\n }\n const column = getById(colId);\n if (!column) {\n unmatchedAndAutoStates2.push(state);\n unmatchedCount2 += 1;\n } else {\n this.syncColumnWithStateItem(\n column,\n state,\n params.defaultState,\n rowGroupIndexes,\n pivotIndexes,\n false,\n source,\n callbacks\n );\n _removeFromArray(columnsWithNoState, column);\n }\n });\n const applyDefaultsFunc = (col) => this.syncColumnWithStateItem(\n col,\n null,\n params.defaultState,\n rowGroupIndexes,\n pivotIndexes,\n false,\n source,\n callbacks\n );\n columnsWithNoState.forEach(applyDefaultsFunc);\n this.funcColsService.sortRowGroupColumns(\n comparatorByIndex.bind(this, rowGroupIndexes, previousRowGroupCols)\n );\n this.funcColsService.sortPivotColumns(comparatorByIndex.bind(this, pivotIndexes, previousPivotCols));\n this.columnModel.refreshCols(false);\n const autoCols = this.columnModel.getAutoCols() || [];\n const autoColsCopy = autoCols.slice();\n autoColStates.forEach((stateItem) => {\n const autoCol = this.columnModel.getAutoCol(stateItem.colId);\n _removeFromArray(autoColsCopy, autoCol);\n this.syncColumnWithStateItem(\n autoCol,\n stateItem,\n params.defaultState,\n null,\n null,\n true,\n source,\n callbacks\n );\n });\n autoColsCopy.forEach(applyDefaultsFunc);\n this.orderLiveColsLikeState(params);\n this.visibleColsService.refresh(source);\n this.eventDispatcher.everythingChanged(source);\n dispatchEventsFunc();\n return { unmatchedAndAutoStates: unmatchedAndAutoStates2, unmatchedCount: unmatchedCount2 };\n };\n this.columnAnimationService.start();\n let { unmatchedAndAutoStates, unmatchedCount } = applyStates(\n params.state || [],\n providedCols,\n (id) => this.columnModel.getColDefCol(id)\n );\n if (unmatchedAndAutoStates.length > 0 || _exists(params.defaultState)) {\n const pivotResultCols = this.pivotResultColsService.getPivotResultCols();\n const pivotResultColsList = pivotResultCols?.list;\n unmatchedCount = applyStates(\n unmatchedAndAutoStates,\n pivotResultColsList || [],\n (id) => this.pivotResultColsService.getPivotResultCol(id)\n ).unmatchedCount;\n }\n this.columnAnimationService.finish();\n return unmatchedCount === 0;\n }\n resetColumnState(source) {\n const primaryCols = this.columnModel.getColDefCols();\n if (_missingOrEmpty(primaryCols)) {\n return;\n }\n const primaryColumnTree = this.columnModel.getColDefColTree();\n const primaryColumns = getColumnsFromTree(primaryColumnTree);\n const columnStates = [];\n let letRowGroupIndex = 1e3;\n let letPivotIndex = 1e3;\n let colsToProcess = [];\n const groupAutoCols = this.columnModel.getAutoCols();\n if (groupAutoCols) {\n colsToProcess = colsToProcess.concat(groupAutoCols);\n }\n if (primaryColumns) {\n colsToProcess = colsToProcess.concat(primaryColumns);\n }\n colsToProcess.forEach((column) => {\n const stateItem = this.getColumnStateFromColDef(column);\n if (_missing(stateItem.rowGroupIndex) && stateItem.rowGroup) {\n stateItem.rowGroupIndex = letRowGroupIndex++;\n }\n if (_missing(stateItem.pivotIndex) && stateItem.pivot) {\n stateItem.pivotIndex = letPivotIndex++;\n }\n columnStates.push(stateItem);\n });\n this.applyColumnState({ state: columnStates, applyOrder: true }, source);\n }\n getColumnStateFromColDef(column) {\n const getValueOrNull = (a, b) => a != null ? a : b != null ? b : null;\n const colDef = column.getColDef();\n const sort = getValueOrNull(colDef.sort, colDef.initialSort);\n const sortIndex = getValueOrNull(colDef.sortIndex, colDef.initialSortIndex);\n const hide = getValueOrNull(colDef.hide, colDef.initialHide);\n const pinned = getValueOrNull(colDef.pinned, colDef.initialPinned);\n const width = getValueOrNull(colDef.width, colDef.initialWidth);\n const flex = getValueOrNull(colDef.flex, colDef.initialFlex);\n let rowGroupIndex = getValueOrNull(\n colDef.rowGroupIndex,\n colDef.initialRowGroupIndex\n );\n let rowGroup = getValueOrNull(colDef.rowGroup, colDef.initialRowGroup);\n if (rowGroupIndex == null && (rowGroup == null || rowGroup == false)) {\n rowGroupIndex = null;\n rowGroup = null;\n }\n let pivotIndex = getValueOrNull(colDef.pivotIndex, colDef.initialPivotIndex);\n let pivot = getValueOrNull(colDef.pivot, colDef.initialPivot);\n if (pivotIndex == null && (pivot == null || pivot == false)) {\n pivotIndex = null;\n pivot = null;\n }\n const aggFunc = getValueOrNull(colDef.aggFunc, colDef.initialAggFunc);\n return {\n colId: column.getColId(),\n sort,\n sortIndex,\n hide,\n pinned,\n width,\n flex,\n rowGroup,\n rowGroupIndex,\n pivot,\n pivotIndex,\n aggFunc\n };\n }\n syncColumnWithStateItem(column, stateItem, defaultState, rowGroupIndexes, pivotIndexes, autoCol, source, callbacks) {\n if (!column) {\n return;\n }\n const getValue2 = (key1, key2) => {\n const obj = {\n value1: void 0,\n value2: void 0\n };\n let calculated = false;\n if (stateItem) {\n if (stateItem[key1] !== void 0) {\n obj.value1 = stateItem[key1];\n calculated = true;\n }\n if (_exists(key2) && stateItem[key2] !== void 0) {\n obj.value2 = stateItem[key2];\n calculated = true;\n }\n }\n if (!calculated && defaultState) {\n if (defaultState[key1] !== void 0) {\n obj.value1 = defaultState[key1];\n }\n if (_exists(key2) && defaultState[key2] !== void 0) {\n obj.value2 = defaultState[key2];\n }\n }\n return obj;\n };\n const hide = getValue2(\"hide\").value1;\n if (hide !== void 0) {\n column.setVisible(!hide, source);\n }\n const pinned = getValue2(\"pinned\").value1;\n if (pinned !== void 0) {\n column.setPinned(pinned);\n }\n const minColWidth = column.getColDef().minWidth ?? this.gos.environment.getDefaultColumnMinWidth();\n const flex = getValue2(\"flex\").value1;\n if (flex !== void 0) {\n column.setFlex(flex);\n }\n if (flex == null) {\n const width = getValue2(\"width\").value1;\n if (width != null) {\n if (minColWidth != null && width >= minColWidth) {\n column.setActualWidth(width, source);\n }\n }\n }\n const sort = getValue2(\"sort\").value1;\n if (sort !== void 0) {\n if (sort === \"desc\" || sort === \"asc\") {\n column.setSort(sort, source);\n } else {\n column.setSort(void 0, source);\n }\n }\n const sortIndex = getValue2(\"sortIndex\").value1;\n if (sortIndex !== void 0) {\n column.setSortIndex(sortIndex);\n }\n if (autoCol || !column.isPrimary()) {\n return;\n }\n const aggFunc = getValue2(\"aggFunc\").value1;\n if (aggFunc !== void 0) {\n if (typeof aggFunc === \"string\") {\n column.setAggFunc(aggFunc);\n if (!column.isValueActive()) {\n column.setValueActive(true, source);\n callbacks.addValueCol(column);\n }\n } else {\n if (_exists(aggFunc)) {\n _warnOnce(\n \"stateItem.aggFunc must be a string. if using your own aggregation functions, register the functions first before using them in get/set state. This is because it is intended for the column state to be stored and retrieved as simple JSON.\"\n );\n }\n if (column.isValueActive()) {\n column.setValueActive(false, source);\n callbacks.removeValueCol(column);\n }\n }\n }\n const { value1: rowGroup, value2: rowGroupIndex } = getValue2(\"rowGroup\", \"rowGroupIndex\");\n if (rowGroup !== void 0 || rowGroupIndex !== void 0) {\n if (typeof rowGroupIndex === \"number\" || rowGroup) {\n if (!column.isRowGroupActive()) {\n column.setRowGroupActive(true, source);\n callbacks.addGroupCol(column);\n }\n if (rowGroupIndexes && typeof rowGroupIndex === \"number\") {\n rowGroupIndexes[column.getId()] = rowGroupIndex;\n }\n } else {\n if (column.isRowGroupActive()) {\n column.setRowGroupActive(false, source);\n callbacks.removeGroupCol(column);\n }\n }\n }\n const { value1: pivot, value2: pivotIndex } = getValue2(\"pivot\", \"pivotIndex\");\n if (pivot !== void 0 || pivotIndex !== void 0) {\n if (typeof pivotIndex === \"number\" || pivot) {\n if (!column.isPivotActive()) {\n column.setPivotActive(true, source);\n callbacks.addPivotCol(column);\n }\n if (pivotIndexes && typeof pivotIndex === \"number\") {\n pivotIndexes[column.getId()] = pivotIndex;\n }\n } else {\n if (column.isPivotActive()) {\n column.setPivotActive(false, source);\n callbacks.removePivotCol(column);\n }\n }\n }\n }\n orderLiveColsLikeState(params) {\n if (!params.applyOrder || !params.state) {\n return;\n }\n const colIds = [];\n params.state.forEach((item) => {\n if (item.colId != null) {\n colIds.push(item.colId);\n }\n });\n this.columnModel.sortColsLikeKeys(colIds);\n }\n // calculates what events to fire between column state changes. gets used when:\n // a) apply column state\n // b) apply new column definitions (so changes from old cols)\n compareColumnStatesAndDispatchEvents(source) {\n const startState = {\n rowGroupColumns: this.funcColsService.getRowGroupColumns().slice(),\n pivotColumns: this.funcColsService.getPivotColumns().slice(),\n valueColumns: this.funcColsService.getValueColumns().slice()\n };\n const columnStateBefore = this.columnGetStateService.getColumnState();\n const columnStateBeforeMap = {};\n columnStateBefore.forEach((col) => {\n columnStateBeforeMap[col.colId] = col;\n });\n return () => {\n const colsForState = this.columnModel.getAllCols();\n const dispatchWhenListsDifferent = (eventType, colsBefore, colsAfter, idMapper) => {\n const beforeList = colsBefore.map(idMapper);\n const afterList = colsAfter.map(idMapper);\n const unchanged = _areEqual(beforeList, afterList);\n if (unchanged) {\n return;\n }\n const changes = new Set(colsBefore);\n colsAfter.forEach((id) => {\n if (!changes.delete(id)) {\n changes.add(id);\n }\n });\n const changesArr = [...changes];\n this.eventService.dispatchEvent({\n type: eventType,\n columns: changesArr,\n column: changesArr.length === 1 ? changesArr[0] : null,\n source\n });\n };\n const getChangedColumns = (changedPredicate) => {\n const changedColumns2 = [];\n colsForState.forEach((column) => {\n const colStateBefore = columnStateBeforeMap[column.getColId()];\n if (colStateBefore && changedPredicate(colStateBefore, column)) {\n changedColumns2.push(column);\n }\n });\n return changedColumns2;\n };\n const columnIdMapper = (c) => c.getColId();\n dispatchWhenListsDifferent(\n \"columnRowGroupChanged\",\n startState.rowGroupColumns,\n this.funcColsService.getRowGroupColumns(),\n columnIdMapper\n );\n dispatchWhenListsDifferent(\n \"columnPivotChanged\",\n startState.pivotColumns,\n this.funcColsService.getPivotColumns(),\n columnIdMapper\n );\n const valueChangePredicate = (cs, c) => {\n const oldActive = cs.aggFunc != null;\n const activeChanged = oldActive != c.isValueActive();\n const aggFuncChanged = oldActive && cs.aggFunc != c.getAggFunc();\n return activeChanged || aggFuncChanged;\n };\n const changedValues = getChangedColumns(valueChangePredicate);\n if (changedValues.length > 0) {\n this.eventDispatcher.columnChanged(\"columnValueChanged\", changedValues, source);\n }\n const resizeChangePredicate = (cs, c) => cs.width != c.getActualWidth();\n this.eventDispatcher.columnResized(getChangedColumns(resizeChangePredicate), true, source);\n const pinnedChangePredicate = (cs, c) => cs.pinned != c.getPinned();\n this.eventDispatcher.columnPinned(getChangedColumns(pinnedChangePredicate), source);\n const visibilityChangePredicate = (cs, c) => cs.hide == c.isVisible();\n this.eventDispatcher.columnVisible(getChangedColumns(visibilityChangePredicate), source);\n const sortChangePredicate = (cs, c) => cs.sort != c.getSort() || cs.sortIndex != c.getSortIndex();\n const changedColumns = getChangedColumns(sortChangePredicate);\n if (changedColumns.length > 0) {\n this.sortController.dispatchSortChangedEvents(source, changedColumns);\n }\n this.normaliseColumnMovedEventForColumnState(columnStateBefore, source);\n };\n }\n normaliseColumnMovedEventForColumnState(colStateBefore, source) {\n const colStateAfter = this.columnGetStateService.getColumnState();\n const colStateAfterMapped = {};\n colStateAfter.forEach((s) => colStateAfterMapped[s.colId] = s);\n const colsIntersectIds = {};\n colStateBefore.forEach((s) => {\n if (colStateAfterMapped[s.colId]) {\n colsIntersectIds[s.colId] = true;\n }\n });\n const beforeFiltered = colStateBefore.filter((c) => colsIntersectIds[c.colId]);\n const afterFiltered = colStateAfter.filter((c) => colsIntersectIds[c.colId]);\n const movedColumns = [];\n afterFiltered.forEach((csAfter, index) => {\n const csBefore = beforeFiltered && beforeFiltered[index];\n if (csBefore && csBefore.colId !== csAfter.colId) {\n const gridCol = this.columnModel.getCol(csBefore.colId);\n if (gridCol) {\n movedColumns.push(gridCol);\n }\n }\n });\n if (!movedColumns.length) {\n return;\n }\n this.eventDispatcher.columnMoved({ movedColumns, source, finished: true });\n }\n};\nvar comparatorByIndex = (indexes, oldList, colA, colB) => {\n const indexA = indexes[colA.getId()];\n const indexB = indexes[colB.getId()];\n const aHasIndex = indexA != null;\n const bHasIndex = indexB != null;\n if (aHasIndex && bHasIndex) {\n return indexA - indexB;\n }\n if (aHasIndex) {\n return -1;\n }\n if (bHasIndex) {\n return 1;\n }\n const oldIndexA = oldList.indexOf(colA);\n const oldIndexB = oldList.indexOf(colB);\n const aHasOldIndex = oldIndexA >= 0;\n const bHasOldIndex = oldIndexB >= 0;\n if (aHasOldIndex && bHasOldIndex) {\n return oldIndexA - oldIndexB;\n }\n if (aHasOldIndex) {\n return -1;\n }\n return 1;\n};\n\n// community-modules/core/src/columns/columnMoveService.ts\nvar ColumnMoveService = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"columnMoveService\";\n }\n wireBeans(beans) {\n this.columnModel = beans.columnModel;\n this.columnAnimationService = beans.columnAnimationService;\n this.eventDispatcher = beans.columnEventDispatcher;\n }\n moveColumnByIndex(fromIndex, toIndex, source) {\n const gridColumns = this.columnModel.getCols();\n if (!gridColumns) {\n return;\n }\n const column = gridColumns[fromIndex];\n this.moveColumns([column], toIndex, source);\n }\n moveColumns(columnsToMoveKeys, toIndex, source, finished = true) {\n const gridColumns = this.columnModel.getCols();\n if (!gridColumns) {\n return;\n }\n if (toIndex > gridColumns.length - columnsToMoveKeys.length) {\n _warnOnce(\"tried to insert columns in invalid location, toIndex = \", toIndex);\n _warnOnce(\"remember that you should not count the moving columns when calculating the new index\");\n return;\n }\n this.columnAnimationService.start();\n const movedColumns = this.columnModel.getColsForKeys(columnsToMoveKeys);\n if (this.doesMovePassRules(movedColumns, toIndex)) {\n this.columnModel.moveInCols(movedColumns, toIndex, source);\n this.eventDispatcher.columnMoved({ movedColumns, source, toIndex, finished });\n }\n this.columnAnimationService.finish();\n }\n doesMovePassRules(columnsToMove, toIndex) {\n const proposedColumnOrder = this.getProposedColumnOrder(columnsToMove, toIndex);\n return this.doesOrderPassRules(proposedColumnOrder);\n }\n doesOrderPassRules(gridOrder) {\n if (!this.doesMovePassMarryChildren(gridOrder)) {\n return false;\n }\n if (!this.doesMovePassLockedPositions(gridOrder)) {\n return false;\n }\n return true;\n }\n getProposedColumnOrder(columnsToMove, toIndex) {\n const gridColumns = this.columnModel.getCols();\n const proposedColumnOrder = gridColumns.slice();\n _moveInArray(proposedColumnOrder, columnsToMove, toIndex);\n return proposedColumnOrder;\n }\n doesMovePassLockedPositions(proposedColumnOrder) {\n const lockPositionToPlacement = (position) => {\n if (!position) {\n return 0 /* NONE */;\n }\n return position === \"left\" || position === true ? -1 /* LEFT */ : 1 /* RIGHT */;\n };\n const isRtl = this.gos.get(\"enableRtl\");\n let lastPlacement = isRtl ? 1 /* RIGHT */ : -1 /* LEFT */;\n let rulePassed = true;\n proposedColumnOrder.forEach((col) => {\n const placement = lockPositionToPlacement(col.getColDef().lockPosition);\n if (isRtl) {\n if (placement > lastPlacement) {\n rulePassed = false;\n }\n } else {\n if (placement < lastPlacement) {\n rulePassed = false;\n }\n }\n lastPlacement = placement;\n });\n return rulePassed;\n }\n doesMovePassMarryChildren(allColumnsCopy) {\n let rulePassed = true;\n const gridBalancedTree = this.columnModel.getColTree();\n depthFirstOriginalTreeSearch(null, gridBalancedTree, (child) => {\n if (!isProvidedColumnGroup(child)) {\n return;\n }\n const columnGroup = child;\n const colGroupDef = columnGroup.getColGroupDef();\n const marryChildren = colGroupDef && colGroupDef.marryChildren;\n if (!marryChildren) {\n return;\n }\n const newIndexes = [];\n columnGroup.getLeafColumns().forEach((col) => {\n const newColIndex = allColumnsCopy.indexOf(col);\n newIndexes.push(newColIndex);\n });\n const maxIndex = Math.max.apply(Math, newIndexes);\n const minIndex = Math.min.apply(Math, newIndexes);\n const spread = maxIndex - minIndex;\n const maxSpread = columnGroup.getLeafColumns().length - 1;\n if (spread > maxSpread) {\n rulePassed = false;\n }\n });\n return rulePassed;\n }\n placeLockedColumns(cols) {\n const left = [];\n const normal = [];\n const right = [];\n cols.forEach((col) => {\n const position = col.getColDef().lockPosition;\n if (position === \"right\") {\n right.push(col);\n } else if (position === \"left\" || position === true) {\n left.push(col);\n } else {\n normal.push(col);\n }\n });\n const isRtl = this.gos.get(\"enableRtl\");\n if (isRtl) {\n return [...right, ...normal, ...left];\n }\n return [...left, ...normal, ...right];\n }\n};\n\n// community-modules/core/src/utils/string.ts\nvar reUnescapedHtml = /[&<>\"']/g;\nvar HTML_ESCAPES = {\n \"&\": \"&\",\n \"<\": \"<\",\n \">\": \">\",\n '\"': \""\",\n \"'\": \"'\"\n};\nfunction _utf8_encode(s) {\n const stringFromCharCode = String.fromCharCode;\n function ucs2decode(string) {\n const output = [];\n if (!string) {\n return [];\n }\n const len = string.length;\n let counter = 0;\n let value;\n let extra;\n while (counter < len) {\n value = string.charCodeAt(counter++);\n if (value >= 55296 && value <= 56319 && counter < len) {\n extra = string.charCodeAt(counter++);\n if ((extra & 64512) == 56320) {\n output.push(((value & 1023) << 10) + (extra & 1023) + 65536);\n } else {\n output.push(value);\n counter--;\n }\n } else {\n output.push(value);\n }\n }\n return output;\n }\n function checkScalarValue(point) {\n if (point >= 55296 && point <= 57343) {\n throw Error(\"Lone surrogate U+\" + point.toString(16).toUpperCase() + \" is not a scalar value\");\n }\n }\n function createByte(point, shift) {\n return stringFromCharCode(point >> shift & 63 | 128);\n }\n function encodeCodePoint(point) {\n if ((point & 4294967168) == 0) {\n return stringFromCharCode(point);\n }\n let symbol = \"\";\n if ((point & 4294965248) == 0) {\n symbol = stringFromCharCode(point >> 6 & 31 | 192);\n } else if ((point & 4294901760) == 0) {\n checkScalarValue(point);\n symbol = stringFromCharCode(point >> 12 & 15 | 224);\n symbol += createByte(point, 6);\n } else if ((point & 4292870144) == 0) {\n symbol = stringFromCharCode(point >> 18 & 7 | 240);\n symbol += createByte(point, 12);\n symbol += createByte(point, 6);\n }\n symbol += stringFromCharCode(point & 63 | 128);\n return symbol;\n }\n const codePoints = ucs2decode(s);\n const length = codePoints.length;\n let index = -1;\n let codePoint;\n let byteString = \"\";\n while (++index < length) {\n codePoint = codePoints[index];\n byteString += encodeCodePoint(codePoint);\n }\n return byteString;\n}\nfunction _capitalise(str) {\n return str[0].toUpperCase() + str.substring(1).toLowerCase();\n}\nfunction _escapeString(toEscape, skipEscapingHtmlChars) {\n if (toEscape == null) {\n return null;\n }\n const stringResult = toEscape.toString().toString();\n if (skipEscapingHtmlChars) {\n return stringResult;\n }\n return stringResult.replace(reUnescapedHtml, (chr) => HTML_ESCAPES[chr]);\n}\nfunction _camelCaseToHumanText(camelCase) {\n if (!camelCase || camelCase == null) {\n return null;\n }\n const rex = /([a-z])([A-Z])/g;\n const rexCaps = /([A-Z]+)([A-Z])([a-z])/g;\n const words = camelCase.replace(rex, \"$1 $2\").replace(rexCaps, \"$1 $2$3\").replace(/\\./g, \" \").split(\" \");\n return words.map((word) => word.substring(0, 1).toUpperCase() + (word.length > 1 ? word.substring(1, word.length) : \"\")).join(\" \");\n}\nfunction _camelCaseToHyphenated(camelCase) {\n return camelCase.replace(/[A-Z]/g, (s) => `-${s.toLocaleLowerCase()}`);\n}\n\n// community-modules/core/src/columns/columnNameService.ts\nvar ColumnNameService = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"columnNameService\";\n }\n wireBeans(beans) {\n this.expressionService = beans.expressionService;\n this.funcColsService = beans.funcColsService;\n this.columnModel = beans.columnModel;\n }\n getDisplayNameForColumn(column, location, includeAggFunc = false) {\n if (!column) {\n return null;\n }\n const headerName = this.getHeaderName(column.getColDef(), column, null, null, location);\n if (includeAggFunc) {\n return this.wrapHeaderNameWithAggFunc(column, headerName);\n }\n return headerName;\n }\n getDisplayNameForProvidedColumnGroup(columnGroup, providedColumnGroup, location) {\n const colGroupDef = providedColumnGroup ? providedColumnGroup.getColGroupDef() : null;\n if (colGroupDef) {\n return this.getHeaderName(colGroupDef, null, columnGroup, providedColumnGroup, location);\n }\n return null;\n }\n getDisplayNameForColumnGroup(columnGroup, location) {\n return this.getDisplayNameForProvidedColumnGroup(columnGroup, columnGroup.getProvidedColumnGroup(), location);\n }\n // location is where the column is going to appear, ie who is calling us\n getHeaderName(colDef, column, columnGroup, providedColumnGroup, location) {\n const headerValueGetter = colDef.headerValueGetter;\n if (headerValueGetter) {\n const params = this.gos.addGridCommonParams({\n colDef,\n column,\n columnGroup,\n providedColumnGroup,\n location\n });\n if (typeof headerValueGetter === \"function\") {\n return headerValueGetter(params);\n } else if (typeof headerValueGetter === \"string\") {\n return this.expressionService.evaluate(headerValueGetter, params);\n }\n _warnOnce(\"headerValueGetter must be a function or a string\");\n return \"\";\n } else if (colDef.headerName != null) {\n return colDef.headerName;\n } else if (colDef.field) {\n return _camelCaseToHumanText(colDef.field);\n }\n return \"\";\n }\n wrapHeaderNameWithAggFunc(column, headerName) {\n if (this.gos.get(\"suppressAggFuncInHeader\")) {\n return headerName;\n }\n const pivotValueColumn = column.getColDef().pivotValueColumn;\n const pivotActiveOnThisColumn = _exists(pivotValueColumn);\n let aggFunc = null;\n let aggFuncFound;\n if (pivotActiveOnThisColumn) {\n const valueColumns = this.funcColsService.getValueColumns();\n const isCollapsedHeaderEnabled = this.gos.get(\"removePivotHeaderRowWhenSingleValueColumn\") && valueColumns.length === 1;\n const isTotalColumn = column.getColDef().pivotTotalColumnIds !== void 0;\n if (isCollapsedHeaderEnabled && !isTotalColumn) {\n return headerName;\n }\n aggFunc = pivotValueColumn ? pivotValueColumn.getAggFunc() : null;\n aggFuncFound = true;\n } else {\n const measureActive = column.isValueActive();\n const aggregationPresent = this.columnModel.isPivotMode() || !this.funcColsService.isRowGroupEmpty();\n if (measureActive && aggregationPresent) {\n aggFunc = column.getAggFunc();\n aggFuncFound = true;\n } else {\n aggFuncFound = false;\n }\n }\n if (aggFuncFound) {\n const aggFuncString = typeof aggFunc === \"string\" ? aggFunc : \"func\";\n const localeTextFunc = this.localeService.getLocaleTextFunc();\n const aggFuncStringTranslated = localeTextFunc(aggFuncString, aggFuncString);\n return `${aggFuncStringTranslated}(${headerName})`;\n }\n return headerName;\n }\n};\n\n// community-modules/core/src/columns/pivotResultColsService.ts\nvar PivotResultColsService = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"pivotResultColsService\";\n }\n wireBeans(beans) {\n this.context = beans.context;\n this.columnModel = beans.columnModel;\n this.columnFactory = beans.columnFactory;\n this.visibleColsService = beans.visibleColsService;\n }\n destroy() {\n destroyColumnTree(this.context, this.pivotResultCols?.tree);\n super.destroy();\n }\n isPivotResultColsPresent() {\n return this.pivotResultCols != null;\n }\n lookupPivotResultCol(pivotKeys, valueColKey) {\n if (this.pivotResultCols == null) {\n return null;\n }\n const valueColumnToFind = this.columnModel.getColDefCol(valueColKey);\n let foundColumn = null;\n this.pivotResultCols.list.forEach((column) => {\n const thisPivotKeys = column.getColDef().pivotKeys;\n const pivotValueColumn = column.getColDef().pivotValueColumn;\n const pivotKeyMatches = _areEqual(thisPivotKeys, pivotKeys);\n const pivotValueMatches = pivotValueColumn === valueColumnToFind;\n if (pivotKeyMatches && pivotValueMatches) {\n foundColumn = column;\n }\n });\n return foundColumn;\n }\n getPivotResultCols() {\n return this.pivotResultCols;\n }\n getPivotResultCol(key) {\n if (!this.pivotResultCols) {\n return null;\n }\n return this.columnModel.getColFromCollection(key, this.pivotResultCols);\n }\n setPivotResultCols(colDefs, source) {\n if (!this.columnModel.isReady()) {\n return;\n }\n if (colDefs == null && this.pivotResultCols == null) {\n return;\n }\n if (colDefs) {\n this.processPivotResultColDef(colDefs);\n const balancedTreeResult = this.columnFactory.createColumnTree(\n colDefs,\n false,\n this.pivotResultCols?.tree || this.previousPivotResultCols || void 0,\n source\n );\n destroyColumnTree(this.context, this.pivotResultCols?.tree, balancedTreeResult.columnTree);\n const tree = balancedTreeResult.columnTree;\n const treeDepth = balancedTreeResult.treeDept;\n const list = getColumnsFromTree(tree);\n const map = {};\n this.pivotResultCols = { tree, treeDepth, list, map };\n this.pivotResultCols.list.forEach((col) => this.pivotResultCols.map[col.getId()] = col);\n const hasPreviousCols = !!this.previousPivotResultCols;\n this.previousPivotResultCols = null;\n this.columnModel.refreshCols(!hasPreviousCols);\n } else {\n this.previousPivotResultCols = this.pivotResultCols ? this.pivotResultCols.tree : null;\n this.pivotResultCols = null;\n this.columnModel.refreshCols(false);\n }\n this.visibleColsService.refresh(source);\n }\n processPivotResultColDef(colDefs) {\n const columnCallback = this.gos.get(\"processPivotResultColDef\");\n const groupCallback = this.gos.get(\"processPivotResultColGroupDef\");\n if (!columnCallback && !groupCallback) {\n return void 0;\n }\n const searchForColDefs = (colDefs2) => {\n colDefs2.forEach((abstractColDef) => {\n const isGroup = _exists(abstractColDef.children);\n if (isGroup) {\n const colGroupDef = abstractColDef;\n if (groupCallback) {\n groupCallback(colGroupDef);\n }\n searchForColDefs(colGroupDef.children);\n } else {\n const colDef = abstractColDef;\n if (columnCallback) {\n columnCallback(colDef);\n }\n }\n });\n };\n if (colDefs) {\n searchForColDefs(colDefs);\n }\n }\n};\n\n// community-modules/core/src/columns/columnSizeService.ts\nvar ColumnSizeService = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"columnSizeService\";\n }\n wireBeans(beans) {\n this.columnModel = beans.columnModel;\n this.columnViewportService = beans.columnViewportService;\n this.eventDispatcher = beans.columnEventDispatcher;\n this.visibleColsService = beans.visibleColsService;\n this.ctrlsService = beans.ctrlsService;\n }\n setColumnWidths(columnWidths, shiftKey, finished, source) {\n const sets = [];\n columnWidths.forEach((columnWidth) => {\n const col = this.columnModel.getColDefCol(columnWidth.key) || this.columnModel.getCol(columnWidth.key);\n if (!col) {\n return;\n }\n sets.push({\n width: columnWidth.newWidth,\n ratios: [1],\n columns: [col]\n });\n const defaultIsShift = this.gos.get(\"colResizeDefault\") === \"shift\";\n if (defaultIsShift) {\n shiftKey = !shiftKey;\n }\n if (shiftKey) {\n const otherCol = this.visibleColsService.getColAfter(col);\n if (!otherCol) {\n return;\n }\n const widthDiff = col.getActualWidth() - columnWidth.newWidth;\n const otherColWidth = otherCol.getActualWidth() + widthDiff;\n sets.push({\n width: otherColWidth,\n ratios: [1],\n columns: [otherCol]\n });\n }\n });\n if (sets.length === 0) {\n return;\n }\n this.resizeColumnSets({\n resizeSets: sets,\n finished,\n source\n });\n }\n // method takes sets of columns and resizes them. either all sets will be resized, or nothing\n // be resized. this is used for example when user tries to resize a group and holds shift key,\n // then both the current group (grows), and the adjacent group (shrinks), will get resized,\n // so that's two sets for this method.\n resizeColumnSets(params) {\n const { resizeSets, finished, source } = params;\n const passMinMaxCheck = !resizeSets || resizeSets.every((columnResizeSet) => this.checkMinAndMaxWidthsForSet(columnResizeSet));\n if (!passMinMaxCheck) {\n if (finished) {\n const columns = resizeSets && resizeSets.length > 0 ? resizeSets[0].columns : null;\n this.eventDispatcher.columnResized(columns, finished, source);\n }\n return;\n }\n const changedCols = [];\n const allResizedCols = [];\n resizeSets.forEach((set) => {\n const { width, columns, ratios } = set;\n const newWidths = {};\n const finishedCols = {};\n columns.forEach((col) => allResizedCols.push(col));\n let finishedColsGrew = true;\n let loopCount = 0;\n while (finishedColsGrew) {\n loopCount++;\n if (loopCount > 1e3) {\n _errorOnce(\"infinite loop in resizeColumnSets\");\n break;\n }\n finishedColsGrew = false;\n const subsetCols = [];\n let subsetRatioTotal = 0;\n let pixelsToDistribute = width;\n columns.forEach((col, index) => {\n const thisColFinished = finishedCols[col.getId()];\n if (thisColFinished) {\n pixelsToDistribute -= newWidths[col.getId()];\n } else {\n subsetCols.push(col);\n const ratioThisCol = ratios[index];\n subsetRatioTotal += ratioThisCol;\n }\n });\n const ratioScale = 1 / subsetRatioTotal;\n subsetCols.forEach((col, index) => {\n const lastCol = index === subsetCols.length - 1;\n let colNewWidth;\n if (lastCol) {\n colNewWidth = pixelsToDistribute;\n } else {\n colNewWidth = Math.round(ratios[index] * width * ratioScale);\n pixelsToDistribute -= colNewWidth;\n }\n const minWidth = col.getMinWidth();\n const maxWidth = col.getMaxWidth();\n if (colNewWidth < minWidth) {\n colNewWidth = minWidth;\n finishedCols[col.getId()] = true;\n finishedColsGrew = true;\n } else if (maxWidth > 0 && colNewWidth > maxWidth) {\n colNewWidth = maxWidth;\n finishedCols[col.getId()] = true;\n finishedColsGrew = true;\n }\n newWidths[col.getId()] = colNewWidth;\n });\n }\n columns.forEach((col) => {\n const newWidth = newWidths[col.getId()];\n const actualWidth = col.getActualWidth();\n if (actualWidth !== newWidth) {\n col.setActualWidth(newWidth, source);\n changedCols.push(col);\n }\n });\n });\n const atLeastOneColChanged = changedCols.length > 0;\n let flexedCols = [];\n if (atLeastOneColChanged) {\n flexedCols = this.refreshFlexedColumns({ resizingCols: allResizedCols, skipSetLeft: true });\n this.visibleColsService.setLeftValues(source);\n this.visibleColsService.updateBodyWidths();\n this.columnViewportService.checkViewportColumns();\n }\n const colsForEvent = allResizedCols.concat(flexedCols);\n if (atLeastOneColChanged || finished) {\n this.eventDispatcher.columnResized(colsForEvent, finished, source, flexedCols);\n }\n }\n checkMinAndMaxWidthsForSet(columnResizeSet) {\n const { columns, width } = columnResizeSet;\n let minWidthAccumulated = 0;\n let maxWidthAccumulated = 0;\n let maxWidthActive = true;\n columns.forEach((col) => {\n const minWidth = col.getMinWidth();\n minWidthAccumulated += minWidth || 0;\n const maxWidth = col.getMaxWidth();\n if (maxWidth > 0) {\n maxWidthAccumulated += maxWidth;\n } else {\n maxWidthActive = false;\n }\n });\n const minWidthPasses = width >= minWidthAccumulated;\n const maxWidthPasses = !maxWidthActive || width <= maxWidthAccumulated;\n return minWidthPasses && maxWidthPasses;\n }\n refreshFlexedColumns(params = {}) {\n const source = params.source ? params.source : \"flex\";\n if (params.viewportWidth != null) {\n this.flexViewportWidth = params.viewportWidth;\n }\n if (!this.flexViewportWidth) {\n return [];\n }\n const displayedCenterCols = this.visibleColsService.getCenterCols();\n let flexAfterDisplayIndex = -1;\n if (params.resizingCols) {\n const allResizingCols = new Set(params.resizingCols);\n for (let i = displayedCenterCols.length - 1; i >= 0; i--) {\n if (allResizingCols.has(displayedCenterCols[i])) {\n flexAfterDisplayIndex = i;\n break;\n }\n }\n }\n let knownColumnsWidth = 0;\n let flexingColumns = [];\n let minimumFlexedWidth = 0;\n let totalFlex = 0;\n for (let i = 0; i < displayedCenterCols.length; i++) {\n const isFlex = displayedCenterCols[i].getFlex() && i > flexAfterDisplayIndex;\n if (isFlex) {\n flexingColumns.push(displayedCenterCols[i]);\n totalFlex += displayedCenterCols[i].getFlex();\n minimumFlexedWidth += displayedCenterCols[i].getMinWidth();\n } else {\n knownColumnsWidth += displayedCenterCols[i].getActualWidth();\n }\n }\n if (!flexingColumns.length) {\n return [];\n }\n let changedColumns = [];\n if (knownColumnsWidth + minimumFlexedWidth > this.flexViewportWidth) {\n flexingColumns.forEach((col) => col.setActualWidth(col.getMinWidth(), source));\n changedColumns = flexingColumns;\n flexingColumns = [];\n }\n const flexingColumnSizes = [];\n let spaceForFlexingColumns;\n outer:\n while (true) {\n spaceForFlexingColumns = this.flexViewportWidth - knownColumnsWidth;\n const spacePerFlex = spaceForFlexingColumns / totalFlex;\n for (let i = 0; i < flexingColumns.length; i++) {\n const col = flexingColumns[i];\n const widthByFlexRule = spacePerFlex * col.getFlex();\n let constrainedWidth = 0;\n const minWidth = col.getMinWidth();\n const maxWidth = col.getMaxWidth();\n if (widthByFlexRule < minWidth) {\n constrainedWidth = minWidth;\n } else if (widthByFlexRule > maxWidth) {\n constrainedWidth = maxWidth;\n }\n if (constrainedWidth) {\n col.setActualWidth(constrainedWidth, source);\n _removeFromUnorderedArray(flexingColumns, col);\n totalFlex -= col.getFlex();\n changedColumns.push(col);\n knownColumnsWidth += col.getActualWidth();\n continue outer;\n }\n flexingColumnSizes[i] = Math.floor(widthByFlexRule);\n }\n break;\n }\n let remainingSpace = spaceForFlexingColumns;\n flexingColumns.forEach((col, i) => {\n const size = i < flexingColumns.length - 1 ? Math.min(flexingColumnSizes[i], remainingSpace) : (\n // ensure flex columns fill available width by growing the last column to fit available space if there is more available\n Math.max(flexingColumnSizes[i], remainingSpace)\n );\n col.setActualWidth(size, source);\n changedColumns.push(col);\n remainingSpace -= flexingColumnSizes[i];\n });\n if (!params.skipSetLeft) {\n this.visibleColsService.setLeftValues(source);\n }\n if (params.updateBodyWidths) {\n this.visibleColsService.updateBodyWidths();\n }\n if (params.fireResizedEvent) {\n this.eventDispatcher.columnResized(changedColumns, true, source, flexingColumns);\n }\n return flexingColumns;\n }\n // called from api\n sizeColumnsToFit(gridWidth, source = \"sizeColumnsToFit\", silent, params) {\n if (this.columnModel.isShouldQueueResizeOperations()) {\n this.columnModel.pushResizeOperation(() => this.sizeColumnsToFit(gridWidth, source, silent, params));\n return;\n }\n const limitsMap = {};\n if (params) {\n params?.columnLimits?.forEach(({ key, ...dimensions }) => {\n limitsMap[typeof key === \"string\" ? key : key.getColId()] = dimensions;\n });\n }\n const allDisplayedColumns = this.visibleColsService.getAllCols();\n const doColumnsAlreadyFit = gridWidth === getWidthOfColsInList(allDisplayedColumns);\n if (gridWidth <= 0 || !allDisplayedColumns.length || doColumnsAlreadyFit) {\n return;\n }\n const colsToSpread = [];\n const colsToNotSpread = [];\n allDisplayedColumns.forEach((column) => {\n if (column.getColDef().suppressSizeToFit === true) {\n colsToNotSpread.push(column);\n } else {\n colsToSpread.push(column);\n }\n });\n const colsToDispatchEventFor = colsToSpread.slice(0);\n let finishedResizing = false;\n const moveToNotSpread = (column) => {\n _removeFromArray(colsToSpread, column);\n colsToNotSpread.push(column);\n };\n colsToSpread.forEach((column) => {\n column.resetActualWidth(source);\n const widthOverride = limitsMap?.[column.getId()];\n const minOverride = widthOverride?.minWidth ?? params?.defaultMinWidth;\n const maxOverride = widthOverride?.maxWidth ?? params?.defaultMaxWidth;\n const colWidth = column.getActualWidth();\n if (typeof minOverride === \"number\" && colWidth < minOverride) {\n column.setActualWidth(minOverride, source, true);\n } else if (typeof maxOverride === \"number\" && colWidth > maxOverride) {\n column.setActualWidth(maxOverride, source, true);\n }\n });\n while (!finishedResizing) {\n finishedResizing = true;\n const availablePixels = gridWidth - getWidthOfColsInList(colsToNotSpread);\n if (availablePixels <= 0) {\n colsToSpread.forEach((column) => {\n const widthOverride = limitsMap?.[column.getId()]?.minWidth ?? params?.defaultMinWidth;\n if (typeof widthOverride === \"number\") {\n column.setActualWidth(widthOverride, source, true);\n return;\n }\n column.setMinimum(source);\n });\n } else {\n const scale = availablePixels / getWidthOfColsInList(colsToSpread);\n let pixelsForLastCol = availablePixels;\n for (let i = colsToSpread.length - 1; i >= 0; i--) {\n const column = colsToSpread[i];\n const widthOverride = limitsMap?.[column.getId()];\n const minOverride = widthOverride?.minWidth ?? params?.defaultMinWidth;\n const maxOverride = widthOverride?.maxWidth ?? params?.defaultMaxWidth;\n const colMinWidth = column.getMinWidth();\n const colMaxWidth = column.getMaxWidth();\n const minWidth = typeof minOverride === \"number\" && minOverride > colMinWidth ? minOverride : colMinWidth;\n const maxWidth = typeof maxOverride === \"number\" && maxOverride < colMaxWidth ? maxOverride : colMaxWidth;\n let newWidth = Math.round(column.getActualWidth() * scale);\n if (newWidth < minWidth) {\n newWidth = minWidth;\n moveToNotSpread(column);\n finishedResizing = false;\n } else if (newWidth > maxWidth) {\n newWidth = maxWidth;\n moveToNotSpread(column);\n finishedResizing = false;\n } else if (i === 0) {\n newWidth = pixelsForLastCol;\n }\n column.setActualWidth(newWidth, source, true);\n pixelsForLastCol -= newWidth;\n }\n }\n }\n colsToDispatchEventFor.forEach((col) => {\n col.fireColumnWidthChangedEvent(source);\n });\n this.visibleColsService.setLeftValues(source);\n this.visibleColsService.updateBodyWidths();\n if (silent) {\n return;\n }\n this.eventDispatcher.columnResized(colsToDispatchEventFor, true, source);\n }\n applyAutosizeStrategy() {\n const autoSizeStrategy = this.gos.get(\"autoSizeStrategy\");\n if (!autoSizeStrategy) {\n return;\n }\n const { type } = autoSizeStrategy;\n setTimeout(() => {\n if (type === \"fitGridWidth\") {\n const { columnLimits: propColumnLimits, defaultMinWidth, defaultMaxWidth } = autoSizeStrategy;\n const columnLimits = propColumnLimits?.map(({ colId: key, minWidth, maxWidth }) => ({\n key,\n minWidth,\n maxWidth\n }));\n this.ctrlsService.getGridBodyCtrl().sizeColumnsToFit({\n defaultMinWidth,\n defaultMaxWidth,\n columnLimits\n });\n } else if (type === \"fitProvidedWidth\") {\n this.sizeColumnsToFit(autoSizeStrategy.width, \"sizeColumnsToFit\");\n }\n });\n }\n};\n\n// community-modules/core/src/entities/agColumnGroup.ts\nfunction createUniqueColumnGroupId(groupId, instanceId) {\n return groupId + \"_\" + instanceId;\n}\nfunction isColumnGroup(col) {\n return col instanceof AgColumnGroup;\n}\nvar AgColumnGroup = class extends BeanStub {\n constructor(providedColumnGroup, groupId, partId, pinned) {\n super();\n this.isColumn = false;\n // depends on the open/closed state of the group, only displaying columns are stored here\n this.displayedChildren = [];\n // The measured height of this column's header when autoHeaderHeight is enabled\n this.autoHeaderHeight = null;\n this.parent = null;\n this.groupId = groupId;\n this.partId = partId;\n this.providedColumnGroup = providedColumnGroup;\n this.pinned = pinned;\n }\n // as the user is adding and removing columns, the groups are recalculated.\n // this reset clears out all children, ready for children to be added again\n reset() {\n this.parent = null;\n this.children = null;\n this.displayedChildren = null;\n }\n getParent() {\n return this.parent;\n }\n setParent(parent) {\n this.parent = parent;\n }\n getUniqueId() {\n return createUniqueColumnGroupId(this.groupId, this.partId);\n }\n isEmptyGroup() {\n return this.displayedChildren.length === 0;\n }\n isMoving() {\n const allLeafColumns = this.getProvidedColumnGroup().getLeafColumns();\n if (!allLeafColumns || allLeafColumns.length === 0) {\n return false;\n }\n return allLeafColumns.every((col) => col.isMoving());\n }\n checkLeft() {\n this.displayedChildren.forEach((child) => {\n if (isColumnGroup(child)) {\n child.checkLeft();\n }\n });\n if (this.displayedChildren.length > 0) {\n if (this.gos.get(\"enableRtl\")) {\n const lastChild = _last(this.displayedChildren);\n const lastChildLeft = lastChild.getLeft();\n this.setLeft(lastChildLeft);\n } else {\n const firstChildLeft = this.displayedChildren[0].getLeft();\n this.setLeft(firstChildLeft);\n }\n } else {\n this.setLeft(null);\n }\n }\n getLeft() {\n return this.left;\n }\n getOldLeft() {\n return this.oldLeft;\n }\n setLeft(left) {\n this.oldLeft = this.left;\n if (this.left !== left) {\n this.left = left;\n this.dispatchLocalEvent({ type: \"leftChanged\" });\n }\n }\n getPinned() {\n return this.pinned;\n }\n getGroupId() {\n return this.groupId;\n }\n getPartId() {\n return this.partId;\n }\n getActualWidth() {\n let groupActualWidth = 0;\n if (this.displayedChildren) {\n this.displayedChildren.forEach((child) => {\n groupActualWidth += child.getActualWidth();\n });\n }\n return groupActualWidth;\n }\n isResizable() {\n if (!this.displayedChildren) {\n return false;\n }\n let result = false;\n this.displayedChildren.forEach((child) => {\n if (child.isResizable()) {\n result = true;\n }\n });\n return result;\n }\n getMinWidth() {\n let result = 0;\n this.displayedChildren.forEach((groupChild) => {\n result += groupChild.getMinWidth();\n });\n return result;\n }\n addChild(child) {\n if (!this.children) {\n this.children = [];\n }\n this.children.push(child);\n }\n getDisplayedChildren() {\n return this.displayedChildren;\n }\n getLeafColumns() {\n const result = [];\n this.addLeafColumns(result);\n return result;\n }\n getDisplayedLeafColumns() {\n const result = [];\n this.addDisplayedLeafColumns(result);\n return result;\n }\n getDefinition() {\n return this.providedColumnGroup.getColGroupDef();\n }\n getColGroupDef() {\n return this.providedColumnGroup.getColGroupDef();\n }\n isPadding() {\n return this.providedColumnGroup.isPadding();\n }\n isExpandable() {\n return this.providedColumnGroup.isExpandable();\n }\n isExpanded() {\n return this.providedColumnGroup.isExpanded();\n }\n setExpanded(expanded) {\n this.providedColumnGroup.setExpanded(expanded);\n }\n isAutoHeaderHeight() {\n return !!this.getColGroupDef()?.autoHeaderHeight;\n }\n getAutoHeaderHeight() {\n return this.autoHeaderHeight;\n }\n /** Returns true if the header height has changed */\n setAutoHeaderHeight(height) {\n const changed = height !== this.autoHeaderHeight;\n this.autoHeaderHeight = height;\n return changed;\n }\n addDisplayedLeafColumns(leafColumns) {\n this.displayedChildren.forEach((child) => {\n if (isColumn(child)) {\n leafColumns.push(child);\n } else if (isColumnGroup(child)) {\n child.addDisplayedLeafColumns(leafColumns);\n }\n });\n }\n addLeafColumns(leafColumns) {\n this.children.forEach((child) => {\n if (isColumn(child)) {\n leafColumns.push(child);\n } else if (isColumnGroup(child)) {\n child.addLeafColumns(leafColumns);\n }\n });\n }\n getChildren() {\n return this.children;\n }\n getColumnGroupShow() {\n return this.providedColumnGroup.getColumnGroupShow();\n }\n getProvidedColumnGroup() {\n return this.providedColumnGroup;\n }\n getPaddingLevel() {\n const parent = this.getParent();\n if (!this.isPadding() || !parent || !parent.isPadding()) {\n return 0;\n }\n return 1 + parent.getPaddingLevel();\n }\n calculateDisplayedColumns() {\n this.displayedChildren = [];\n let parentWithExpansion = this;\n while (parentWithExpansion != null && parentWithExpansion.isPadding()) {\n parentWithExpansion = parentWithExpansion.getParent();\n }\n const isExpandable = parentWithExpansion ? parentWithExpansion.getProvidedColumnGroup().isExpandable() : false;\n if (!isExpandable) {\n this.displayedChildren = this.children;\n this.dispatchLocalEvent({ type: \"displayedChildrenChanged\" });\n return;\n }\n this.children.forEach((child) => {\n const emptyGroup = isColumnGroup(child) && (!child.displayedChildren || !child.displayedChildren.length);\n if (emptyGroup) {\n return;\n }\n const headerGroupShow = child.getColumnGroupShow();\n switch (headerGroupShow) {\n case \"open\":\n if (parentWithExpansion.getProvidedColumnGroup().isExpanded()) {\n this.displayedChildren.push(child);\n }\n break;\n case \"closed\":\n if (!parentWithExpansion.getProvidedColumnGroup().isExpanded()) {\n this.displayedChildren.push(child);\n }\n break;\n default:\n this.displayedChildren.push(child);\n break;\n }\n });\n this.dispatchLocalEvent({ type: \"displayedChildrenChanged\" });\n }\n};\n\n// community-modules/core/src/columns/groupInstanceIdCreator.ts\nvar GroupInstanceIdCreator = class {\n constructor() {\n // this map contains keys to numbers, so we remember what the last call was\n this.existingIds = {};\n }\n getInstanceIdForKey(key) {\n const lastResult = this.existingIds[key];\n let result;\n if (typeof lastResult !== \"number\") {\n result = 0;\n } else {\n result = lastResult + 1;\n }\n this.existingIds[key] = result;\n return result;\n }\n};\n\n// community-modules/core/src/columns/visibleColsService.ts\nvar VisibleColsService = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"visibleColsService\";\n // for fast lookup, to see if a column or group is still visible\n this.colsAndGroupsMap = {};\n // leave level columns of the displayed trees\n this.columnsLeft = [];\n this.columnsRight = [];\n this.columnsCenter = [];\n // all three lists above combined\n this.columns = [];\n this.bodyWidth = 0;\n this.leftWidth = 0;\n this.rightWidth = 0;\n this.bodyWidthDirty = true;\n }\n wireBeans(beans) {\n this.columnModel = beans.columnModel;\n this.columnSizeService = beans.columnSizeService;\n this.columnViewportService = beans.columnViewportService;\n this.eventDispatcher = beans.columnEventDispatcher;\n }\n refresh(source, skipTreeBuild = false) {\n if (!skipTreeBuild) {\n this.buildTrees();\n }\n this.updateOpenClosedVisibilityInColumnGroups();\n this.columnsLeft = pickDisplayedCols(this.treeLeft);\n this.columnsCenter = pickDisplayedCols(this.treeCenter);\n this.columnsRight = pickDisplayedCols(this.treeRight);\n this.joinColsAriaOrder();\n this.joinCols();\n this.setLeftValues(source);\n this.autoHeightCols = this.columns.filter((col) => col.isAutoHeight());\n this.columnSizeService.refreshFlexedColumns();\n this.updateBodyWidths();\n this.columnViewportService.checkViewportColumns(false);\n this.setFirstRightAndLastLeftPinned(source);\n this.eventDispatcher.visibleCols(source);\n }\n // after setColumnWidth or updateGroupsAndPresentedCols\n updateBodyWidths() {\n const newBodyWidth = getWidthOfColsInList(this.columnsCenter);\n const newLeftWidth = getWidthOfColsInList(this.columnsLeft);\n const newRightWidth = getWidthOfColsInList(this.columnsRight);\n this.bodyWidthDirty = this.bodyWidth !== newBodyWidth;\n const atLeastOneChanged = this.bodyWidth !== newBodyWidth || this.leftWidth !== newLeftWidth || this.rightWidth !== newRightWidth;\n if (atLeastOneChanged) {\n this.bodyWidth = newBodyWidth;\n this.leftWidth = newLeftWidth;\n this.rightWidth = newRightWidth;\n this.eventService.dispatchEvent({\n type: \"columnContainerWidthChanged\"\n });\n this.eventService.dispatchEvent({\n type: \"displayedColumnsWidthChanged\"\n });\n }\n }\n // sets the left pixel position of each column\n setLeftValues(source) {\n this.setLeftValuesOfCols(source);\n this.setLeftValuesOfGroups();\n }\n setFirstRightAndLastLeftPinned(source) {\n let lastLeft;\n let firstRight;\n if (this.gos.get(\"enableRtl\")) {\n lastLeft = this.columnsLeft ? this.columnsLeft[0] : null;\n firstRight = this.columnsRight ? _last(this.columnsRight) : null;\n } else {\n lastLeft = this.columnsLeft ? _last(this.columnsLeft) : null;\n firstRight = this.columnsRight ? this.columnsRight[0] : null;\n }\n this.columnModel.getCols().forEach((col) => {\n col.setLastLeftPinned(col === lastLeft, source);\n col.setFirstRightPinned(col === firstRight, source);\n });\n }\n buildTrees() {\n const cols = this.columnModel.getColsToShow();\n const leftCols = cols.filter((col) => col.getPinned() == \"left\");\n const rightCols = cols.filter((col) => col.getPinned() == \"right\");\n const centerCols = cols.filter((col) => col.getPinned() != \"left\" && col.getPinned() != \"right\");\n const idCreator = new GroupInstanceIdCreator();\n this.treeLeft = this.createGroups({\n columns: leftCols,\n idCreator,\n pinned: \"left\",\n oldDisplayedGroups: this.treeLeft\n });\n this.treeRight = this.createGroups({\n columns: rightCols,\n idCreator,\n pinned: \"right\",\n oldDisplayedGroups: this.treeRight\n });\n this.treeCenter = this.createGroups({\n columns: centerCols,\n idCreator,\n pinned: null,\n oldDisplayedGroups: this.treeCenter\n });\n this.updateColsAndGroupsMap();\n }\n clear() {\n this.columnsLeft = [];\n this.columnsRight = [];\n this.columnsCenter = [];\n this.columns = [];\n this.ariaOrderColumns = [];\n }\n joinColsAriaOrder() {\n const allColumns = this.columnModel.getCols();\n const pinnedLeft = [];\n const center = [];\n const pinnedRight = [];\n for (const col of allColumns) {\n const pinned = col.getPinned();\n if (!pinned) {\n center.push(col);\n } else if (pinned === true || pinned === \"left\") {\n pinnedLeft.push(col);\n } else {\n pinnedRight.push(col);\n }\n }\n this.ariaOrderColumns = pinnedLeft.concat(center).concat(pinnedRight);\n }\n getAriaColIndex(colOrGroup) {\n let col;\n if (isColumnGroup(colOrGroup)) {\n col = colOrGroup.getLeafColumns()[0];\n } else {\n col = colOrGroup;\n }\n return this.ariaOrderColumns.indexOf(col) + 1;\n }\n getAllAutoHeightCols() {\n return this.autoHeightCols;\n }\n setLeftValuesOfGroups() {\n [this.treeLeft, this.treeRight, this.treeCenter].forEach((columns) => {\n columns.forEach((column) => {\n if (isColumnGroup(column)) {\n const columnGroup = column;\n columnGroup.checkLeft();\n }\n });\n });\n }\n setLeftValuesOfCols(source) {\n const primaryCols = this.columnModel.getColDefCols();\n if (!primaryCols) {\n return;\n }\n const allColumns = this.columnModel.getCols().slice(0);\n const doingRtl = this.gos.get(\"enableRtl\");\n [this.columnsLeft, this.columnsRight, this.columnsCenter].forEach((columns) => {\n if (doingRtl) {\n let left = getWidthOfColsInList(columns);\n columns.forEach((column) => {\n left -= column.getActualWidth();\n column.setLeft(left, source);\n });\n } else {\n let left = 0;\n columns.forEach((column) => {\n column.setLeft(left, source);\n left += column.getActualWidth();\n });\n }\n _removeAllFromUnorderedArray(allColumns, columns);\n });\n allColumns.forEach((column) => {\n column.setLeft(null, source);\n });\n }\n joinCols() {\n if (this.gos.get(\"enableRtl\")) {\n this.columns = this.columnsRight.concat(this.columnsCenter).concat(this.columnsLeft);\n } else {\n this.columns = this.columnsLeft.concat(this.columnsCenter).concat(this.columnsRight);\n }\n }\n getColsCenter() {\n return this.columnsCenter;\n }\n getAllTrees() {\n if (this.treeLeft && this.treeRight && this.treeCenter) {\n return this.treeLeft.concat(this.treeCenter).concat(this.treeRight);\n }\n return null;\n }\n // + headerRenderer -> setting pinned body width\n getTreeLeft() {\n return this.treeLeft;\n }\n // + headerRenderer -> setting pinned body width\n getTreeRight() {\n return this.treeRight;\n }\n // + headerRenderer -> setting pinned body width\n getTreeCenter() {\n return this.treeCenter;\n }\n // + csvCreator\n getAllCols() {\n return this.columns;\n }\n // gridPanel -> ensureColumnVisible\n isColDisplayed(column) {\n return this.getAllCols().indexOf(column) >= 0;\n }\n getLeftColsForRow(rowNode) {\n const colSpanActive = this.columnModel.isColSpanActive();\n if (!colSpanActive) {\n return this.columnsLeft;\n }\n return this.getColsForRow(rowNode, this.columnsLeft);\n }\n getRightColsForRow(rowNode) {\n const colSpanActive = this.columnModel.isColSpanActive();\n if (!colSpanActive) {\n return this.columnsRight;\n }\n return this.getColsForRow(rowNode, this.columnsRight);\n }\n getColsForRow(rowNode, displayedColumns, filterCallback, emptySpaceBeforeColumn) {\n const result = [];\n let lastConsideredCol = null;\n for (let i = 0; i < displayedColumns.length; i++) {\n const col = displayedColumns[i];\n const maxAllowedColSpan = displayedColumns.length - i;\n const colSpan = Math.min(col.getColSpan(rowNode), maxAllowedColSpan);\n const columnsToCheckFilter = [col];\n if (colSpan > 1) {\n const colsToRemove = colSpan - 1;\n for (let j = 1; j <= colsToRemove; j++) {\n columnsToCheckFilter.push(displayedColumns[i + j]);\n }\n i += colsToRemove;\n }\n let filterPasses;\n if (filterCallback) {\n filterPasses = false;\n columnsToCheckFilter.forEach((colForFilter) => {\n if (filterCallback(colForFilter)) {\n filterPasses = true;\n }\n });\n } else {\n filterPasses = true;\n }\n if (filterPasses) {\n if (result.length === 0 && lastConsideredCol) {\n const gapBeforeColumn = emptySpaceBeforeColumn ? emptySpaceBeforeColumn(col) : false;\n if (gapBeforeColumn) {\n result.push(lastConsideredCol);\n }\n }\n result.push(col);\n }\n lastConsideredCol = col;\n }\n return result;\n }\n // used by:\n // + angularGrid -> for setting body width\n // + rowController -> setting main row widths (when inserting and resizing)\n // need to cache this\n getBodyContainerWidth() {\n return this.bodyWidth;\n }\n getContainerWidth(pinned) {\n switch (pinned) {\n case \"left\":\n return this.leftWidth;\n case \"right\":\n return this.rightWidth;\n default:\n return this.bodyWidth;\n }\n }\n // + rowController -> while inserting rows\n getCenterCols() {\n return this.columnsCenter;\n }\n // + rowController -> while inserting rows\n getLeftCols() {\n return this.columnsLeft;\n }\n getRightCols() {\n return this.columnsRight;\n }\n getColBefore(col) {\n const allDisplayedColumns = this.getAllCols();\n const oldIndex = allDisplayedColumns.indexOf(col);\n if (oldIndex > 0) {\n return allDisplayedColumns[oldIndex - 1];\n }\n return null;\n }\n getGroupAtDirection(columnGroup, direction) {\n const requiredLevel = columnGroup.getProvidedColumnGroup().getLevel() + columnGroup.getPaddingLevel();\n const colGroupLeafColumns = columnGroup.getDisplayedLeafColumns();\n const col = direction === \"After\" ? _last(colGroupLeafColumns) : colGroupLeafColumns[0];\n const getDisplayColMethod = `getCol${direction}`;\n while (true) {\n const column = this[getDisplayColMethod](col);\n if (!column) {\n return null;\n }\n const groupPointer = this.getColGroupAtLevel(column, requiredLevel);\n if (groupPointer !== columnGroup) {\n return groupPointer;\n }\n }\n }\n getColGroupAtLevel(column, level) {\n let groupPointer = column.getParent();\n let originalGroupLevel;\n let groupPointerLevel;\n while (true) {\n const groupPointerProvidedColumnGroup = groupPointer.getProvidedColumnGroup();\n originalGroupLevel = groupPointerProvidedColumnGroup.getLevel();\n groupPointerLevel = groupPointer.getPaddingLevel();\n if (originalGroupLevel + groupPointerLevel <= level) {\n break;\n }\n groupPointer = groupPointer.getParent();\n }\n return groupPointer;\n }\n isPinningLeft() {\n return this.columnsLeft.length > 0;\n }\n isPinningRight() {\n return this.columnsRight.length > 0;\n }\n updateColsAndGroupsMap() {\n this.colsAndGroupsMap = {};\n const func = (child) => {\n this.colsAndGroupsMap[child.getUniqueId()] = child;\n };\n depthFirstAllColumnTreeSearch(this.treeCenter, false, func);\n depthFirstAllColumnTreeSearch(this.treeLeft, false, func);\n depthFirstAllColumnTreeSearch(this.treeRight, false, func);\n }\n isVisible(item) {\n const fromMap = this.colsAndGroupsMap[item.getUniqueId()];\n return fromMap === item;\n }\n updateOpenClosedVisibilityInColumnGroups() {\n const allColumnGroups = this.getAllTrees();\n depthFirstAllColumnTreeSearch(allColumnGroups, false, (child) => {\n if (isColumnGroup(child)) {\n child.calculateDisplayedColumns();\n }\n });\n }\n getFirstColumn() {\n const isRtl = this.gos.get(\"enableRtl\");\n const queryOrder = [\n \"getLeftCols\",\n \"getCenterCols\",\n \"getRightCols\"\n ];\n if (isRtl) {\n queryOrder.reverse();\n }\n for (let i = 0; i < queryOrder.length; i++) {\n const container = this[queryOrder[i]]();\n if (container.length) {\n return isRtl ? _last(container) : container[0];\n }\n }\n return null;\n }\n // returns the group with matching colId and instanceId. If instanceId is missing,\n // matches only on the colId.\n getColumnGroup(colId, partId) {\n if (!colId) {\n return null;\n }\n if (isColumnGroup(colId)) {\n return colId;\n }\n const allColumnGroups = this.getAllTrees();\n const checkPartId = typeof partId === \"number\";\n let result = null;\n depthFirstAllColumnTreeSearch(allColumnGroups, false, (child) => {\n if (isColumnGroup(child)) {\n const columnGroup = child;\n let matched;\n if (checkPartId) {\n matched = colId === columnGroup.getGroupId() && partId === columnGroup.getPartId();\n } else {\n matched = colId === columnGroup.getGroupId();\n }\n if (matched) {\n result = columnGroup;\n }\n }\n });\n return result;\n }\n // used by:\n // + rowRenderer -> for navigation\n getColAfter(col) {\n const allDisplayedColumns = this.getAllCols();\n const oldIndex = allDisplayedColumns.indexOf(col);\n if (oldIndex < allDisplayedColumns.length - 1) {\n return allDisplayedColumns[oldIndex + 1];\n }\n return null;\n }\n isBodyWidthDirty() {\n return this.bodyWidthDirty;\n }\n setBodyWidthDirty() {\n this.bodyWidthDirty = true;\n }\n // used by:\n // + angularGrid -> setting pinned body width\n // note: this should be cached\n getColsLeftWidth() {\n return getWidthOfColsInList(this.columnsLeft);\n }\n // note: this should be cached\n getDisplayedColumnsRightWidth() {\n return getWidthOfColsInList(this.columnsRight);\n }\n isColAtEdge(col, edge) {\n const allColumns = this.getAllCols();\n if (!allColumns.length) {\n return false;\n }\n const isFirst = edge === \"first\";\n let columnToCompare;\n if (isColumnGroup(col)) {\n const leafColumns = col.getDisplayedLeafColumns();\n if (!leafColumns.length) {\n return false;\n }\n columnToCompare = isFirst ? leafColumns[0] : _last(leafColumns);\n } else {\n columnToCompare = col;\n }\n return (isFirst ? allColumns[0] : _last(allColumns)) === columnToCompare;\n }\n createGroups(params) {\n const { columns, idCreator, pinned, oldDisplayedGroups, isStandaloneStructure } = params;\n const oldColumnsMapped = this.mapOldGroupsById(oldDisplayedGroups);\n const topLevelResultCols = [];\n let groupsOrColsAtCurrentLevel = columns;\n while (groupsOrColsAtCurrentLevel.length) {\n const currentlyIterating = groupsOrColsAtCurrentLevel;\n groupsOrColsAtCurrentLevel = [];\n let lastGroupedColIdx = 0;\n const createGroupToIndex = (to) => {\n const from = lastGroupedColIdx;\n lastGroupedColIdx = to;\n const previousNode = currentlyIterating[from];\n const previousNodeProvided = isColumnGroup(previousNode) ? previousNode.getProvidedColumnGroup() : previousNode;\n const previousNodeParent = previousNodeProvided.getOriginalParent();\n if (previousNodeParent == null) {\n for (let i = from; i < to; i++) {\n topLevelResultCols.push(currentlyIterating[i]);\n }\n return;\n }\n const newGroup = this.createColGroup(\n previousNodeParent,\n idCreator,\n oldColumnsMapped,\n pinned,\n isStandaloneStructure\n );\n for (let i = from; i < to; i++) {\n newGroup.addChild(currentlyIterating[i]);\n }\n groupsOrColsAtCurrentLevel.push(newGroup);\n };\n for (let i = 1; i < currentlyIterating.length; i++) {\n const thisNode = currentlyIterating[i];\n const thisNodeProvided = isColumnGroup(thisNode) ? thisNode.getProvidedColumnGroup() : thisNode;\n const thisNodeParent = thisNodeProvided.getOriginalParent();\n const previousNode = currentlyIterating[lastGroupedColIdx];\n const previousNodeProvided = isColumnGroup(previousNode) ? previousNode.getProvidedColumnGroup() : previousNode;\n const previousNodeParent = previousNodeProvided.getOriginalParent();\n if (thisNodeParent !== previousNodeParent) {\n createGroupToIndex(i);\n }\n }\n if (lastGroupedColIdx < currentlyIterating.length) {\n createGroupToIndex(currentlyIterating.length);\n }\n }\n if (!isStandaloneStructure) {\n this.setupParentsIntoCols(topLevelResultCols, null);\n }\n return topLevelResultCols;\n }\n createColGroup(providedGroup, groupInstanceIdCreator, oldColumnsMapped, pinned, isStandaloneStructure) {\n const groupId = providedGroup.getGroupId();\n const instanceId = groupInstanceIdCreator.getInstanceIdForKey(groupId);\n const uniqueId = createUniqueColumnGroupId(groupId, instanceId);\n let columnGroup = oldColumnsMapped[uniqueId];\n if (columnGroup && columnGroup.getProvidedColumnGroup() !== providedGroup) {\n columnGroup = null;\n }\n if (_exists(columnGroup)) {\n columnGroup.reset();\n } else {\n columnGroup = new AgColumnGroup(providedGroup, groupId, instanceId, pinned);\n if (!isStandaloneStructure) {\n this.createBean(columnGroup);\n }\n }\n return columnGroup;\n }\n // returns back a 2d map of ColumnGroup as follows: groupId -> instanceId -> ColumnGroup\n mapOldGroupsById(displayedGroups) {\n const result = {};\n const recursive = (columnsOrGroups) => {\n columnsOrGroups.forEach((columnOrGroup) => {\n if (isColumnGroup(columnOrGroup)) {\n const columnGroup = columnOrGroup;\n result[columnOrGroup.getUniqueId()] = columnGroup;\n recursive(columnGroup.getChildren());\n }\n });\n };\n if (displayedGroups) {\n recursive(displayedGroups);\n }\n return result;\n }\n setupParentsIntoCols(columnsOrGroups, parent) {\n columnsOrGroups.forEach((columnsOrGroup) => {\n columnsOrGroup.setParent(parent);\n if (isColumnGroup(columnsOrGroup)) {\n const columnGroup = columnsOrGroup;\n this.setupParentsIntoCols(columnGroup.getChildren(), columnGroup);\n }\n });\n }\n};\nfunction depthFirstAllColumnTreeSearch(tree, useDisplayedChildren, callback) {\n if (!tree) {\n return;\n }\n for (let i = 0; i < tree.length; i++) {\n const child = tree[i];\n if (isColumnGroup(child)) {\n const childTree = useDisplayedChildren ? child.getDisplayedChildren() : child.getChildren();\n depthFirstAllColumnTreeSearch(childTree, useDisplayedChildren, callback);\n }\n callback(child);\n }\n}\nfunction pickDisplayedCols(tree) {\n const res = [];\n depthFirstAllColumnTreeSearch(tree, true, (child) => {\n if (isColumn(child)) {\n res.push(child);\n }\n });\n return res;\n}\n\n// community-modules/core/src/eventTypes.ts\nvar PUBLIC_EVENTS = [\n \"columnEverythingChanged\",\n \"newColumnsLoaded\",\n \"columnPivotModeChanged\",\n \"pivotMaxColumnsExceeded\",\n \"columnRowGroupChanged\",\n \"expandOrCollapseAll\",\n \"columnPivotChanged\",\n \"gridColumnsChanged\",\n \"columnValueChanged\",\n \"columnMoved\",\n \"columnVisible\",\n \"columnPinned\",\n \"columnGroupOpened\",\n \"columnResized\",\n \"displayedColumnsChanged\",\n \"virtualColumnsChanged\",\n \"columnHeaderMouseOver\",\n \"columnHeaderMouseLeave\",\n \"columnHeaderClicked\",\n \"columnHeaderContextMenu\",\n \"asyncTransactionsFlushed\",\n \"rowGroupOpened\",\n \"rowDataUpdated\",\n \"pinnedRowDataChanged\",\n \"rangeSelectionChanged\",\n \"cellSelectionChanged\",\n \"chartCreated\",\n \"chartRangeSelectionChanged\",\n \"chartOptionsChanged\",\n \"chartDestroyed\",\n \"toolPanelVisibleChanged\",\n \"toolPanelSizeChanged\",\n \"modelUpdated\",\n \"cutStart\",\n \"cutEnd\",\n \"pasteStart\",\n \"pasteEnd\",\n \"fillStart\",\n \"fillEnd\",\n \"cellSelectionDeleteStart\",\n \"cellSelectionDeleteEnd\",\n \"rangeDeleteStart\",\n \"rangeDeleteEnd\",\n \"undoStarted\",\n \"undoEnded\",\n \"redoStarted\",\n \"redoEnded\",\n \"cellClicked\",\n \"cellDoubleClicked\",\n \"cellMouseDown\",\n \"cellContextMenu\",\n \"cellValueChanged\",\n \"cellEditRequest\",\n \"rowValueChanged\",\n \"headerFocused\",\n \"cellFocused\",\n \"rowSelected\",\n \"selectionChanged\",\n \"tooltipShow\",\n \"tooltipHide\",\n \"cellKeyDown\",\n \"cellMouseOver\",\n \"cellMouseOut\",\n \"filterChanged\",\n \"filterModified\",\n \"filterOpened\",\n \"advancedFilterBuilderVisibleChanged\",\n \"sortChanged\",\n \"virtualRowRemoved\",\n \"rowClicked\",\n \"rowDoubleClicked\",\n \"gridReady\",\n \"gridPreDestroyed\",\n \"gridSizeChanged\",\n \"viewportChanged\",\n \"firstDataRendered\",\n \"dragStarted\",\n \"dragStopped\",\n \"dragCancelled\",\n \"rowEditingStarted\",\n \"rowEditingStopped\",\n \"cellEditingStarted\",\n \"cellEditingStopped\",\n \"bodyScroll\",\n \"bodyScrollEnd\",\n \"paginationChanged\",\n \"componentStateChanged\",\n \"storeRefreshed\",\n \"stateUpdated\",\n \"columnMenuVisibleChanged\",\n \"contextMenuVisibleChanged\",\n \"rowDragEnter\",\n \"rowDragMove\",\n \"rowDragLeave\",\n \"rowDragEnd\",\n \"rowDragCancel\"\n];\nvar INTERNAL_EVENTS = [\n \"scrollbarWidthChanged\",\n \"keyShortcutChangedCellStart\",\n \"keyShortcutChangedCellEnd\",\n \"pinnedHeightChanged\",\n \"cellFocusCleared\",\n \"fullWidthRowFocused\",\n \"checkboxChanged\",\n \"heightScaleChanged\",\n \"suppressMovableColumns\",\n \"suppressMenuHide\",\n \"suppressFieldDotNotation\",\n \"columnPanelItemDragStart\",\n \"columnPanelItemDragEnd\",\n \"bodyHeightChanged\",\n \"columnContainerWidthChanged\",\n \"displayedColumnsWidthChanged\",\n \"scrollVisibilityChanged\",\n \"scrollGapChanged\",\n \"columnHoverChanged\",\n \"flashCells\",\n \"paginationPixelOffsetChanged\",\n \"displayedRowsChanged\",\n \"leftPinnedWidthChanged\",\n \"rightPinnedWidthChanged\",\n \"rowContainerHeightChanged\",\n \"headerHeightChanged\",\n \"columnGroupHeaderHeightChanged\",\n \"columnHeaderHeightChanged\",\n \"gridStylesChanged\",\n \"storeUpdated\",\n \"filterDestroyed\",\n \"rowDataUpdateStarted\",\n \"rowCountReady\",\n \"advancedFilterEnabledChanged\",\n \"dataTypesInferred\",\n \"fieldValueChanged\",\n \"fieldPickerValueSelected\",\n \"richSelectListRowSelected\",\n \"sideBarUpdated\",\n \"alignedGridScroll\",\n \"alignedGridColumn\",\n \"gridOptionsChanged\",\n \"chartTitleEdit\",\n \"recalculateRowBounds\",\n \"stickyTopOffsetChanged\",\n \"overlayExclusiveChanged\"\n];\nvar ALL_EVENTS = [...PUBLIC_EVENTS, ...INTERNAL_EVENTS];\n\n// community-modules/core/src/propertyKeys.ts\nvar INITIAL_GRID_OPTION_KEYS = {\n enableBrowserTooltips: true,\n tooltipTrigger: true,\n tooltipMouseTrack: true,\n tooltipShowMode: true,\n tooltipInteraction: true,\n defaultColGroupDef: true,\n suppressAutoSize: true,\n skipHeaderOnAutoSize: true,\n autoSizeStrategy: true,\n components: true,\n stopEditingWhenCellsLoseFocus: true,\n undoRedoCellEditing: true,\n undoRedoCellEditingLimit: true,\n excelStyles: true,\n cacheQuickFilter: true,\n advancedFilterModel: true,\n customChartThemes: true,\n chartThemeOverrides: true,\n chartToolPanelsDef: true,\n loadingCellRendererSelector: true,\n localeText: true,\n keepDetailRows: true,\n keepDetailRowsCount: true,\n detailRowHeight: true,\n detailRowAutoHeight: true,\n tabIndex: true,\n valueCache: true,\n valueCacheNeverExpires: true,\n enableCellExpressions: true,\n suppressTouch: true,\n suppressAsyncEvents: true,\n suppressBrowserResizeObserver: true,\n suppressPropertyNamesCheck: true,\n debug: true,\n dragAndDropImageComponent: true,\n loadingOverlayComponent: true,\n suppressLoadingOverlay: true,\n noRowsOverlayComponent: true,\n paginationPageSizeSelector: true,\n paginateChildRows: true,\n pivotPanelShow: true,\n pivotSuppressAutoColumn: true,\n suppressExpandablePivotGroups: true,\n aggFuncs: true,\n suppressAggFuncInHeader: true,\n allowShowChangeAfterFilter: true,\n ensureDomOrder: true,\n enableRtl: true,\n suppressColumnVirtualisation: true,\n suppressMaxRenderedRowRestriction: true,\n suppressRowVirtualisation: true,\n rowDragText: true,\n suppressGroupMaintainValueType: true,\n groupLockGroupColumns: true,\n rowGroupPanelSuppressSort: true,\n suppressGroupRowsSticky: true,\n rowModelType: true,\n cacheOverflowSize: true,\n infiniteInitialRowCount: true,\n serverSideInitialRowCount: true,\n suppressServerSideInfiniteScroll: true,\n maxBlocksInCache: true,\n maxConcurrentDatasourceRequests: true,\n blockLoadDebounceMillis: true,\n serverSideOnlyRefreshFilteredGroups: true,\n serverSidePivotResultFieldSeparator: true,\n viewportRowModelPageSize: true,\n viewportRowModelBufferSize: true,\n debounceVerticalScrollbar: true,\n suppressAnimationFrame: true,\n suppressPreventDefaultOnMouseWheel: true,\n scrollbarWidth: true,\n icons: true,\n suppressRowTransform: true,\n gridId: true,\n enableGroupEdit: true,\n initialState: true,\n processUnpinnedColumns: true,\n createChartContainer: true,\n getLocaleText: true,\n getRowId: true,\n reactiveCustomComponents: true,\n columnMenu: true,\n suppressSetFilterByDefault: true\n};\nvar _PropertyKeys = class _PropertyKeys {\n};\n_PropertyKeys.STRING_PROPERTIES = [\n \"overlayLoadingTemplate\",\n \"overlayNoRowsTemplate\",\n \"gridId\",\n \"quickFilterText\",\n \"rowModelType\",\n \"editType\",\n \"domLayout\",\n \"clipboardDelimiter\",\n \"rowGroupPanelShow\",\n \"multiSortKey\",\n \"pivotColumnGroupTotals\",\n \"pivotRowTotals\",\n \"pivotPanelShow\",\n \"fillHandleDirection\",\n \"groupDisplayType\",\n \"treeDataDisplayType\",\n \"colResizeDefault\",\n \"tooltipTrigger\",\n \"serverSidePivotResultFieldSeparator\",\n \"columnMenu\",\n \"tooltipShowMode\",\n \"grandTotalRow\"\n];\n_PropertyKeys.OBJECT_PROPERTIES = [\n \"components\",\n \"rowStyle\",\n \"context\",\n \"autoGroupColumnDef\",\n \"localeText\",\n \"icons\",\n \"datasource\",\n \"dragAndDropImageComponentParams\",\n \"serverSideDatasource\",\n \"viewportDatasource\",\n \"groupRowRendererParams\",\n \"aggFuncs\",\n \"fullWidthCellRendererParams\",\n \"defaultColGroupDef\",\n \"defaultColDef\",\n \"defaultCsvExportParams\",\n \"defaultExcelExportParams\",\n \"columnTypes\",\n \"rowClassRules\",\n \"detailCellRendererParams\",\n \"loadingCellRendererParams\",\n \"loadingOverlayComponentParams\",\n \"noRowsOverlayComponentParams\",\n \"popupParent\",\n \"statusBar\",\n \"sideBar\",\n \"theme\",\n \"chartThemeOverrides\",\n \"customChartThemes\",\n \"chartToolPanelsDef\",\n \"dataTypeDefinitions\",\n \"advancedFilterModel\",\n \"advancedFilterParent\",\n \"advancedFilterBuilderParams\",\n \"initialState\",\n \"autoSizeStrategy\",\n \"cellSelection\",\n \"selectionColumnDef\"\n];\n_PropertyKeys.ARRAY_PROPERTIES = [\n \"sortingOrder\",\n \"alignedGrids\",\n \"rowData\",\n \"columnDefs\",\n \"excelStyles\",\n \"pinnedTopRowData\",\n \"pinnedBottomRowData\",\n \"chartThemes\",\n \"rowClass\",\n \"paginationPageSizeSelector\"\n];\n// These properties are coerced at runtime, do not do union types\n_PropertyKeys.NUMBER_PROPERTIES = [\n \"rowHeight\",\n \"detailRowHeight\",\n \"rowBuffer\",\n \"headerHeight\",\n \"groupHeaderHeight\",\n \"groupLockGroupColumns\",\n \"floatingFiltersHeight\",\n \"pivotHeaderHeight\",\n \"pivotGroupHeaderHeight\",\n \"groupDefaultExpanded\",\n \"pivotDefaultExpanded\",\n \"viewportRowModelPageSize\",\n \"viewportRowModelBufferSize\",\n \"autoSizePadding\",\n \"maxBlocksInCache\",\n \"maxConcurrentDatasourceRequests\",\n \"tooltipShowDelay\",\n \"tooltipHideDelay\",\n \"cacheOverflowSize\",\n \"paginationPageSize\",\n \"cacheBlockSize\",\n \"infiniteInitialRowCount\",\n \"serverSideInitialRowCount\",\n \"scrollbarWidth\",\n \"asyncTransactionWaitMillis\",\n \"blockLoadDebounceMillis\",\n \"keepDetailRowsCount\",\n \"undoRedoCellEditingLimit\",\n \"cellFlashDelay\",\n \"cellFadeDelay\",\n \"cellFlashDuration\",\n \"cellFadeDuration\",\n \"tabIndex\",\n \"pivotMaxGeneratedColumns\"\n];\n// These properties are coerced at runtime, do not do union types\n_PropertyKeys.BOOLEAN_PROPERTIES = [\n \"suppressMakeColumnVisibleAfterUnGroup\",\n \"suppressRowClickSelection\",\n \"suppressCellFocus\",\n \"suppressHeaderFocus\",\n \"suppressHorizontalScroll\",\n \"groupSelectsChildren\",\n \"alwaysShowHorizontalScroll\",\n \"alwaysShowVerticalScroll\",\n \"debug\",\n \"enableBrowserTooltips\",\n \"enableCellExpressions\",\n \"groupIncludeTotalFooter\",\n \"groupSuppressBlankHeader\",\n \"suppressMenuHide\",\n \"suppressRowDeselection\",\n \"unSortIcon\",\n \"suppressMultiSort\",\n \"alwaysMultiSort\",\n \"singleClickEdit\",\n \"suppressLoadingOverlay\",\n \"suppressNoRowsOverlay\",\n \"suppressAutoSize\",\n \"skipHeaderOnAutoSize\",\n \"suppressColumnMoveAnimation\",\n \"suppressMoveWhenColumnDragging\",\n \"suppressMovableColumns\",\n \"suppressFieldDotNotation\",\n \"enableRangeSelection\",\n \"enableRangeHandle\",\n \"enableFillHandle\",\n \"suppressClearOnFillReduction\",\n \"deltaSort\",\n \"suppressTouch\",\n \"suppressAsyncEvents\",\n \"allowContextMenuWithControlKey\",\n \"suppressContextMenu\",\n \"enableCellChangeFlash\",\n \"suppressDragLeaveHidesColumns\",\n \"suppressRowGroupHidesColumns\",\n \"suppressMiddleClickScrolls\",\n \"suppressPreventDefaultOnMouseWheel\",\n \"suppressCopyRowsToClipboard\",\n \"copyHeadersToClipboard\",\n \"copyGroupHeadersToClipboard\",\n \"pivotMode\",\n \"suppressAggFuncInHeader\",\n \"suppressColumnVirtualisation\",\n \"alwaysAggregateAtRootLevel\",\n \"suppressFocusAfterRefresh\",\n \"functionsReadOnly\",\n \"animateRows\",\n \"groupSelectsFiltered\",\n \"groupRemoveSingleChildren\",\n \"groupRemoveLowestSingleChildren\",\n \"enableRtl\",\n \"suppressClickEdit\",\n \"rowDragEntireRow\",\n \"rowDragManaged\",\n \"suppressRowDrag\",\n \"suppressMoveWhenRowDragging\",\n \"rowDragMultiRow\",\n \"enableGroupEdit\",\n \"embedFullWidthRows\",\n \"suppressPaginationPanel\",\n \"groupHideOpenParents\",\n \"groupAllowUnbalanced\",\n \"pagination\",\n \"paginationAutoPageSize\",\n \"suppressScrollOnNewData\",\n \"suppressScrollWhenPopupsAreOpen\",\n \"purgeClosedRowNodes\",\n \"cacheQuickFilter\",\n \"includeHiddenColumnsInQuickFilter\",\n \"ensureDomOrder\",\n \"accentedSort\",\n \"suppressChangeDetection\",\n \"valueCache\",\n \"valueCacheNeverExpires\",\n \"aggregateOnlyChangedColumns\",\n \"suppressAnimationFrame\",\n \"suppressExcelExport\",\n \"suppressCsvExport\",\n \"includeHiddenColumnsInAdvancedFilter\",\n \"suppressMultiRangeSelection\",\n \"enterNavigatesVerticallyAfterEdit\",\n \"enterNavigatesVertically\",\n \"suppressPropertyNamesCheck\",\n \"rowMultiSelectWithClick\",\n \"suppressRowHoverHighlight\",\n \"suppressRowTransform\",\n \"suppressClipboardPaste\",\n \"suppressLastEmptyLineOnPaste\",\n \"enableCharts\",\n \"suppressMaintainUnsortedOrder\",\n \"enableCellTextSelection\",\n \"suppressBrowserResizeObserver\",\n \"suppressMaxRenderedRowRestriction\",\n \"excludeChildrenWhenTreeDataFiltering\",\n \"tooltipMouseTrack\",\n \"tooltipInteraction\",\n \"keepDetailRows\",\n \"paginateChildRows\",\n \"preventDefaultOnContextMenu\",\n \"undoRedoCellEditing\",\n \"allowDragFromColumnsToolPanel\",\n \"pivotSuppressAutoColumn\",\n \"suppressExpandablePivotGroups\",\n \"debounceVerticalScrollbar\",\n \"detailRowAutoHeight\",\n \"serverSideSortAllLevels\",\n \"serverSideEnableClientSideSort\",\n \"serverSideOnlyRefreshFilteredGroups\",\n \"serverSideSortOnServer\",\n \"serverSideFilterOnServer\",\n \"suppressAggFilteredOnly\",\n \"showOpenedGroup\",\n \"suppressClipboardApi\",\n \"suppressModelUpdateAfterUpdateTransaction\",\n \"stopEditingWhenCellsLoseFocus\",\n \"groupMaintainOrder\",\n \"columnHoverHighlight\",\n \"readOnlyEdit\",\n \"suppressRowVirtualisation\",\n \"enableCellEditingOnBackspace\",\n \"resetRowDataOnUpdate\",\n \"removePivotHeaderRowWhenSingleValueColumn\",\n \"suppressCopySingleCellRanges\",\n \"suppressGroupRowsSticky\",\n \"suppressCutToClipboard\",\n \"suppressServerSideInfiniteScroll\",\n \"rowGroupPanelSuppressSort\",\n \"allowShowChangeAfterFilter\",\n \"enableAdvancedFilter\",\n \"masterDetail\",\n \"treeData\",\n \"suppressGroupMaintainValueType\",\n \"reactiveCustomComponents\",\n \"applyQuickFilterBeforePivotOrAgg\",\n \"suppressServerSideFullWidthLoadingRow\",\n \"suppressAdvancedFilterEval\",\n \"loading\",\n \"maintainColumnOrder\",\n \"enableStrictPivotColumnOrder\",\n \"suppressSetFilterByDefault\"\n];\n// If property does not fit above, i.e union that should not be coerced.\n_PropertyKeys.OTHER_PROPERTIES = [\n \"suppressStickyTotalRow\",\n // needs avoid coercion to boolean so that we can warn if it's unset\n \"loadThemeGoogleFonts\",\n \"rowSelection\"\n];\n_PropertyKeys.FUNCTION_PROPERTIES = [\n \"doesExternalFilterPass\",\n \"processPivotResultColDef\",\n \"processPivotResultColGroupDef\",\n \"getBusinessKeyForNode\",\n \"isRowSelectable\",\n \"rowDragText\",\n \"groupRowRenderer\",\n \"dragAndDropImageComponent\",\n \"fullWidthCellRenderer\",\n \"loadingCellRenderer\",\n \"loadingOverlayComponent\",\n \"noRowsOverlayComponent\",\n \"detailCellRenderer\",\n \"quickFilterParser\",\n \"quickFilterMatcher\",\n \"getLocaleText\",\n \"isExternalFilterPresent\",\n \"getRowHeight\",\n \"getRowClass\",\n \"getRowStyle\",\n \"getContextMenuItems\",\n \"getMainMenuItems\",\n \"processRowPostCreate\",\n \"processCellForClipboard\",\n \"getGroupRowAgg\",\n \"isFullWidthRow\",\n \"sendToClipboard\",\n \"focusGridInnerElement\",\n \"navigateToNextHeader\",\n \"tabToNextHeader\",\n \"navigateToNextCell\",\n \"tabToNextCell\",\n \"processCellFromClipboard\",\n \"getDocument\",\n \"postProcessPopup\",\n \"getChildCount\",\n \"getDataPath\",\n \"isRowMaster\",\n \"postSortRows\",\n \"processHeaderForClipboard\",\n \"processUnpinnedColumns\",\n \"processGroupHeaderForClipboard\",\n \"paginationNumberFormatter\",\n \"processDataFromClipboard\",\n \"getServerSideGroupKey\",\n \"isServerSideGroup\",\n \"createChartContainer\",\n \"getChartToolbarItems\",\n \"fillOperation\",\n \"isApplyServerSideTransaction\",\n \"getServerSideGroupLevelParams\",\n \"isServerSideGroupOpenByDefault\",\n \"isGroupOpenByDefault\",\n \"initialGroupOrderComparator\",\n \"groupIncludeFooter\",\n \"loadingCellRendererSelector\",\n \"getRowId\",\n \"groupAggFiltering\",\n \"chartMenuItems\",\n \"groupTotalRow\"\n];\n_PropertyKeys.ALL_PROPERTIES = [\n ..._PropertyKeys.ARRAY_PROPERTIES,\n ..._PropertyKeys.OBJECT_PROPERTIES,\n ..._PropertyKeys.STRING_PROPERTIES,\n ..._PropertyKeys.NUMBER_PROPERTIES,\n ..._PropertyKeys.FUNCTION_PROPERTIES,\n ..._PropertyKeys.BOOLEAN_PROPERTIES,\n ..._PropertyKeys.OTHER_PROPERTIES\n];\nvar PropertyKeys = _PropertyKeys;\n\n// community-modules/core/src/components/componentUtil.ts\nvar _ComponentUtil = class _ComponentUtil {\n static getCallbackForEvent(eventName) {\n if (!eventName || eventName.length < 2) {\n return eventName;\n }\n return \"on\" + eventName[0].toUpperCase() + eventName.substring(1);\n }\n};\n_ComponentUtil.VUE_OMITTED_PROPERTY = \"AG-VUE-OMITTED-PROPERTY\";\n_ComponentUtil.PUBLIC_EVENTS = PUBLIC_EVENTS;\n// onXXX methods, based on the above events\n_ComponentUtil.EVENT_CALLBACKS = ALL_EVENTS.map((event) => _ComponentUtil.getCallbackForEvent(event));\n_ComponentUtil.BOOLEAN_PROPERTIES = PropertyKeys.BOOLEAN_PROPERTIES;\n_ComponentUtil.ALL_PROPERTIES = PropertyKeys.ALL_PROPERTIES;\n_ComponentUtil.ALL_PROPERTIES_AND_CALLBACKS = [..._ComponentUtil.ALL_PROPERTIES, ..._ComponentUtil.EVENT_CALLBACKS];\n_ComponentUtil.ALL_PROPERTIES_AND_CALLBACKS_SET = new Set(_ComponentUtil.ALL_PROPERTIES_AND_CALLBACKS);\nvar ComponentUtil = _ComponentUtil;\nfunction _combineAttributesAndGridOptions(gridOptions, component) {\n if (typeof gridOptions !== \"object\") {\n gridOptions = {};\n }\n const mergedOptions = { ...gridOptions };\n const keys = ComponentUtil.ALL_PROPERTIES_AND_CALLBACKS;\n keys.forEach((key) => {\n const value = component[key];\n if (typeof value !== \"undefined\" && value !== ComponentUtil.VUE_OMITTED_PROPERTY) {\n mergedOptions[key] = value;\n }\n });\n return mergedOptions;\n}\nfunction _processOnChange(changes, api) {\n if (!changes) {\n return;\n }\n const gridChanges = {};\n let hasChanges = false;\n Object.keys(changes).filter((key) => ComponentUtil.ALL_PROPERTIES_AND_CALLBACKS_SET.has(key)).forEach((key) => {\n gridChanges[key] = changes[key];\n hasChanges = true;\n });\n if (!hasChanges) {\n return;\n }\n const internalUpdateEvent = {\n type: \"gridOptionsChanged\",\n options: gridChanges\n };\n api.dispatchEvent(internalUpdateEvent);\n const event = {\n type: \"componentStateChanged\"\n };\n _iterateObject(gridChanges, (key, value) => {\n event[key] = value;\n });\n api.dispatchEvent(event);\n}\n\n// community-modules/core/src/components/emptyBean.ts\nvar EmptyBean = class extends BeanStub {\n};\nfunction setupCompBean(ctrl, ctx, compBean) {\n if (compBean) {\n ctrl.addDestroyFunc(() => ctx.destroyBean(compBean));\n }\n return compBean ?? ctrl;\n}\n\n// community-modules/core/src/rendering/cssClassManager.ts\nvar CssClassManager = class {\n constructor(getGui) {\n // to minimise DOM hits, we only apply CSS classes if they have changed. as adding a CSS class that is already\n // there, or removing one that wasn't present, all takes CPU.\n this.cssClassStates = {};\n this.getGui = getGui;\n }\n addCssClass(className) {\n const list = (className || \"\").split(\" \");\n if (list.length > 1) {\n list.forEach((cls) => this.addCssClass(cls));\n return;\n }\n const updateNeeded = this.cssClassStates[className] !== true;\n if (updateNeeded && className.length) {\n const eGui = this.getGui();\n if (eGui) {\n eGui.classList.add(className);\n }\n this.cssClassStates[className] = true;\n }\n }\n removeCssClass(className) {\n const list = (className || \"\").split(\" \");\n if (list.length > 1) {\n list.forEach((cls) => this.removeCssClass(cls));\n return;\n }\n const updateNeeded = this.cssClassStates[className] !== false;\n if (updateNeeded && className.length) {\n const eGui = this.getGui();\n if (eGui) {\n eGui.classList.remove(className);\n }\n this.cssClassStates[className] = false;\n }\n }\n containsCssClass(className) {\n const eGui = this.getGui();\n if (!eGui) {\n return false;\n }\n return eGui.classList.contains(className);\n }\n addOrRemoveCssClass(className, addOrRemove) {\n if (!className) {\n return;\n }\n if (className.indexOf(\" \") >= 0) {\n const list = (className || \"\").split(\" \");\n if (list.length > 1) {\n list.forEach((cls) => this.addOrRemoveCssClass(cls, addOrRemove));\n return;\n }\n }\n const updateNeeded = this.cssClassStates[className] !== addOrRemove;\n if (updateNeeded && className.length) {\n const eGui = this.getGui();\n if (eGui) {\n eGui.classList.toggle(className, addOrRemove);\n }\n this.cssClassStates[className] = addOrRemove;\n }\n }\n};\n\n// community-modules/core/src/utils/aria.ts\nfunction _toggleAriaAttribute(element, attribute, value) {\n if (value == null || typeof value === \"string\" && value == \"\") {\n _removeAriaAttribute(element, attribute);\n } else {\n _setAriaAttribute(element, attribute, value);\n }\n}\nfunction _setAriaAttribute(element, attribute, value) {\n element.setAttribute(_ariaAttributeName(attribute), value.toString());\n}\nfunction _removeAriaAttribute(element, attribute) {\n element.removeAttribute(_ariaAttributeName(attribute));\n}\nfunction _ariaAttributeName(attribute) {\n return `aria-${attribute}`;\n}\nfunction _setAriaRole(element, role) {\n if (role) {\n element.setAttribute(\"role\", role);\n } else {\n element.removeAttribute(\"role\");\n }\n}\nfunction _getAriaSortState(sortDirection) {\n let sort;\n if (sortDirection === \"asc\") {\n sort = \"ascending\";\n } else if (sortDirection === \"desc\") {\n sort = \"descending\";\n } else if (sortDirection === \"mixed\") {\n sort = \"other\";\n } else {\n sort = \"none\";\n }\n return sort;\n}\nfunction _getAriaPosInSet(element) {\n return parseInt(element.getAttribute(\"aria-posinset\"), 10);\n}\nfunction _getAriaLabel(element) {\n return element.getAttribute(\"aria-label\");\n}\nfunction _setAriaLabel(element, label) {\n _toggleAriaAttribute(element, \"label\", label);\n}\nfunction _setAriaLabelledBy(element, labelledBy) {\n _toggleAriaAttribute(element, \"labelledby\", labelledBy);\n}\nfunction _setAriaDescribedBy(element, describedby) {\n _toggleAriaAttribute(element, \"describedby\", describedby);\n}\nfunction _setAriaLive(element, live) {\n _toggleAriaAttribute(element, \"live\", live);\n}\nfunction _setAriaAtomic(element, atomic) {\n _toggleAriaAttribute(element, \"atomic\", atomic);\n}\nfunction _setAriaRelevant(element, relevant) {\n _toggleAriaAttribute(element, \"relevant\", relevant);\n}\nfunction _setAriaLevel(element, level) {\n _toggleAriaAttribute(element, \"level\", level);\n}\nfunction _setAriaDisabled(element, disabled) {\n _toggleAriaAttribute(element, \"disabled\", disabled);\n}\nfunction _setAriaHidden(element, hidden) {\n _toggleAriaAttribute(element, \"hidden\", hidden);\n}\nfunction _setAriaActiveDescendant(element, descendantId) {\n _toggleAriaAttribute(element, \"activedescendant\", descendantId);\n}\nfunction _setAriaExpanded(element, expanded) {\n _setAriaAttribute(element, \"expanded\", expanded);\n}\nfunction _removeAriaExpanded(element) {\n _removeAriaAttribute(element, \"expanded\");\n}\nfunction _setAriaSetSize(element, setsize) {\n _setAriaAttribute(element, \"setsize\", setsize);\n}\nfunction _setAriaPosInSet(element, position) {\n _setAriaAttribute(element, \"posinset\", position);\n}\nfunction _setAriaMultiSelectable(element, multiSelectable) {\n _setAriaAttribute(element, \"multiselectable\", multiSelectable);\n}\nfunction _setAriaRowCount(element, rowCount) {\n _setAriaAttribute(element, \"rowcount\", rowCount);\n}\nfunction _setAriaRowIndex(element, rowIndex) {\n _setAriaAttribute(element, \"rowindex\", rowIndex);\n}\nfunction _setAriaColCount(element, colCount) {\n _setAriaAttribute(element, \"colcount\", colCount);\n}\nfunction _setAriaColIndex(element, colIndex) {\n _setAriaAttribute(element, \"colindex\", colIndex);\n}\nfunction _setAriaColSpan(element, colSpan) {\n _setAriaAttribute(element, \"colspan\", colSpan);\n}\nfunction _setAriaSort(element, sort) {\n _setAriaAttribute(element, \"sort\", sort);\n}\nfunction _removeAriaSort(element) {\n _removeAriaAttribute(element, \"sort\");\n}\nfunction _setAriaSelected(element, selected) {\n _toggleAriaAttribute(element, \"selected\", selected);\n}\nfunction _setAriaChecked(element, checked) {\n _setAriaAttribute(element, \"checked\", checked === void 0 ? \"mixed\" : checked);\n}\nfunction _setAriaControls(controllerElement, controlledElement) {\n _toggleAriaAttribute(controllerElement, \"controls\", controlledElement.id);\n _setAriaLabelledBy(controlledElement, controllerElement.id);\n}\nfunction _getAriaCheckboxStateName(translate, state) {\n return state === void 0 ? translate(\"ariaIndeterminate\", \"indeterminate\") : state === true ? translate(\"ariaChecked\", \"checked\") : translate(\"ariaUnchecked\", \"unchecked\");\n}\n\n// community-modules/core/src/utils/browser.ts\nvar isSafari;\nvar safariVersion;\nvar isChrome;\nvar isFirefox;\nvar isMacOs;\nvar isIOS;\nvar invisibleScrollbar;\nvar browserScrollbarWidth;\nvar maxDivHeight;\nfunction _isBrowserSafari() {\n if (isSafari === void 0) {\n isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n }\n return isSafari;\n}\nfunction _getSafariVersion() {\n if (safariVersion === void 0) {\n if (_isBrowserSafari()) {\n const versionMatch = navigator.userAgent.match(/version\\/(\\d+)/i);\n if (versionMatch) {\n safariVersion = versionMatch[1] != null ? parseFloat(versionMatch[1]) : 0;\n }\n } else {\n safariVersion = 0;\n }\n }\n return safariVersion;\n}\nfunction _isBrowserChrome() {\n if (isChrome === void 0) {\n const win = window;\n isChrome = !!win.chrome && (!!win.chrome.webstore || !!win.chrome.runtime) || /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor);\n }\n return isChrome;\n}\nfunction _isBrowserFirefox() {\n if (isFirefox === void 0) {\n isFirefox = /(firefox)/i.test(navigator.userAgent);\n }\n return isFirefox;\n}\nfunction _isMacOsUserAgent() {\n if (isMacOs === void 0) {\n isMacOs = /(Mac|iPhone|iPod|iPad)/i.test(navigator.platform);\n }\n return isMacOs;\n}\nfunction _isIOSUserAgent() {\n if (isIOS === void 0) {\n isIOS = /iPad|iPhone|iPod/.test(navigator.platform) || navigator.platform === \"MacIntel\" && navigator.maxTouchPoints > 1;\n }\n return isIOS;\n}\nfunction _browserSupportsPreventScroll() {\n return !_isBrowserSafari() || _getSafariVersion() >= 15;\n}\nfunction _getTabIndex(el) {\n if (!el) {\n return null;\n }\n const numberTabIndex = el.tabIndex;\n const tabIndex = el.getAttribute(\"tabIndex\");\n if (numberTabIndex === -1 && (tabIndex === null || tabIndex === \"\" && !_isBrowserFirefox())) {\n return null;\n }\n return numberTabIndex.toString();\n}\nfunction _getMaxDivHeight() {\n if (maxDivHeight !== void 0) {\n return maxDivHeight;\n }\n if (!document.body) {\n return -1;\n }\n let res = 1e6;\n const testUpTo = _isBrowserFirefox() ? 6e6 : 1e9;\n const div = document.createElement(\"div\");\n document.body.appendChild(div);\n while (true) {\n const test = res * 2;\n div.style.height = test + \"px\";\n if (test > testUpTo || div.clientHeight !== test) {\n break;\n } else {\n res = test;\n }\n }\n document.body.removeChild(div);\n maxDivHeight = res;\n return res;\n}\nfunction _getBodyWidth() {\n return document.body?.clientWidth ?? (window.innerHeight || document.documentElement?.clientWidth || -1);\n}\nfunction _getBodyHeight() {\n return document.body?.clientHeight ?? (window.innerHeight || document.documentElement?.clientHeight || -1);\n}\nfunction _getScrollbarWidth() {\n if (browserScrollbarWidth == null) {\n initScrollbarWidthAndVisibility();\n }\n return browserScrollbarWidth;\n}\nfunction initScrollbarWidthAndVisibility() {\n const body = document.body;\n const div = document.createElement(\"div\");\n div.style.width = div.style.height = \"100px\";\n div.style.opacity = \"0\";\n div.style.overflow = \"scroll\";\n div.style.msOverflowStyle = \"scrollbar\";\n div.style.position = \"absolute\";\n body.appendChild(div);\n let width = div.offsetWidth - div.clientWidth;\n if (width === 0 && div.clientWidth === 0) {\n width = null;\n }\n if (div.parentNode) {\n div.parentNode.removeChild(div);\n }\n if (width != null) {\n browserScrollbarWidth = width;\n invisibleScrollbar = width === 0;\n }\n}\nfunction _isInvisibleScrollbar() {\n if (invisibleScrollbar == null) {\n initScrollbarWidthAndVisibility();\n }\n return invisibleScrollbar;\n}\n\n// community-modules/core/src/utils/dom.ts\nvar rtlNegativeScroll;\nfunction _radioCssClass(element, elementClass, otherElementClass) {\n const parent = element.parentElement;\n let sibling = parent && parent.firstChild;\n while (sibling) {\n if (elementClass) {\n sibling.classList.toggle(elementClass, sibling === element);\n }\n if (otherElementClass) {\n sibling.classList.toggle(otherElementClass, sibling !== element);\n }\n sibling = sibling.nextSibling;\n }\n}\nvar FOCUSABLE_SELECTOR = \"[tabindex], input, select, button, textarea, [href]\";\nvar FOCUSABLE_EXCLUDE = \"[disabled], .ag-disabled:not(.ag-button), .ag-disabled *\";\nfunction _isFocusableFormField(element) {\n const matches = Element.prototype.matches || Element.prototype.msMatchesSelector;\n const inputSelector = \"input, select, button, textarea\";\n const isFocusable = matches.call(element, inputSelector);\n const isNotFocusable = matches.call(element, FOCUSABLE_EXCLUDE);\n const isElementVisible = _isVisible(element);\n const focusable = isFocusable && !isNotFocusable && isElementVisible;\n return focusable;\n}\nfunction _setDisplayed(element, displayed, options = {}) {\n const { skipAriaHidden } = options;\n element.classList.toggle(\"ag-hidden\", !displayed);\n if (!skipAriaHidden) {\n _setAriaHidden(element, !displayed);\n }\n}\nfunction _setVisible(element, visible, options = {}) {\n const { skipAriaHidden } = options;\n element.classList.toggle(\"ag-invisible\", !visible);\n if (!skipAriaHidden) {\n _setAriaHidden(element, !visible);\n }\n}\nfunction _setDisabled(element, disabled) {\n const attributeName = \"disabled\";\n const addOrRemoveDisabledAttribute = disabled ? (e) => e.setAttribute(attributeName, \"\") : (e) => e.removeAttribute(attributeName);\n addOrRemoveDisabledAttribute(element);\n _nodeListForEach(element.querySelectorAll(\"input\"), (input) => addOrRemoveDisabledAttribute(input));\n}\nfunction _isElementChildOfClass(element, cls, maxNest) {\n let counter = 0;\n while (element) {\n if (element.classList.contains(cls)) {\n return true;\n }\n element = element.parentElement;\n if (typeof maxNest == \"number\") {\n if (++counter > maxNest) {\n break;\n }\n } else if (element === maxNest) {\n break;\n }\n }\n return false;\n}\nfunction _getElementSize(el) {\n const {\n height,\n width,\n borderTopWidth,\n borderRightWidth,\n borderBottomWidth,\n borderLeftWidth,\n paddingTop,\n paddingRight,\n paddingBottom,\n paddingLeft,\n marginTop,\n marginRight,\n marginBottom,\n marginLeft,\n boxSizing\n } = window.getComputedStyle(el);\n return {\n height: parseFloat(height || \"0\"),\n width: parseFloat(width || \"0\"),\n borderTopWidth: parseFloat(borderTopWidth || \"0\"),\n borderRightWidth: parseFloat(borderRightWidth || \"0\"),\n borderBottomWidth: parseFloat(borderBottomWidth || \"0\"),\n borderLeftWidth: parseFloat(borderLeftWidth || \"0\"),\n paddingTop: parseFloat(paddingTop || \"0\"),\n paddingRight: parseFloat(paddingRight || \"0\"),\n paddingBottom: parseFloat(paddingBottom || \"0\"),\n paddingLeft: parseFloat(paddingLeft || \"0\"),\n marginTop: parseFloat(marginTop || \"0\"),\n marginRight: parseFloat(marginRight || \"0\"),\n marginBottom: parseFloat(marginBottom || \"0\"),\n marginLeft: parseFloat(marginLeft || \"0\"),\n boxSizing\n };\n}\nfunction _getInnerHeight(el) {\n const size = _getElementSize(el);\n if (size.boxSizing === \"border-box\") {\n return size.height - size.paddingTop - size.paddingBottom;\n }\n return size.height;\n}\nfunction _getInnerWidth(el) {\n const size = _getElementSize(el);\n if (size.boxSizing === \"border-box\") {\n return size.width - size.paddingLeft - size.paddingRight;\n }\n return size.width;\n}\nfunction _getAbsoluteHeight(el) {\n const { height, marginBottom, marginTop } = _getElementSize(el);\n return Math.floor(height + marginBottom + marginTop);\n}\nfunction _getAbsoluteWidth(el) {\n const { width, marginLeft, marginRight } = _getElementSize(el);\n return Math.floor(width + marginLeft + marginRight);\n}\nfunction _getElementRectWithOffset(el) {\n const offsetElementRect = el.getBoundingClientRect();\n const { borderTopWidth, borderLeftWidth, borderRightWidth, borderBottomWidth } = _getElementSize(el);\n return {\n top: offsetElementRect.top + (borderTopWidth || 0),\n left: offsetElementRect.left + (borderLeftWidth || 0),\n right: offsetElementRect.right + (borderRightWidth || 0),\n bottom: offsetElementRect.bottom + (borderBottomWidth || 0)\n };\n}\nfunction _isRtlNegativeScroll() {\n if (typeof rtlNegativeScroll === \"boolean\") {\n return rtlNegativeScroll;\n }\n const template = document.createElement(\"div\");\n template.style.direction = \"rtl\";\n template.style.width = \"1px\";\n template.style.height = \"1px\";\n template.style.position = \"fixed\";\n template.style.top = \"0px\";\n template.style.overflow = \"hidden\";\n template.dir = \"rtl\";\n template.innerHTML = /* html */\n `
\n \n \n
`;\n document.body.appendChild(template);\n template.scrollLeft = 1;\n rtlNegativeScroll = Math.floor(template.scrollLeft) === 0;\n document.body.removeChild(template);\n return rtlNegativeScroll;\n}\nfunction _getScrollLeft(element, rtl) {\n let scrollLeft = element.scrollLeft;\n if (rtl) {\n scrollLeft = Math.abs(scrollLeft);\n if (_isBrowserChrome() && !_isRtlNegativeScroll()) {\n scrollLeft = element.scrollWidth - element.getBoundingClientRect().width - scrollLeft;\n }\n }\n return scrollLeft;\n}\nfunction _setScrollLeft(element, value, rtl) {\n if (rtl) {\n if (_isRtlNegativeScroll()) {\n value *= -1;\n } else if (_isBrowserSafari() || _isBrowserChrome()) {\n value = element.scrollWidth - element.getBoundingClientRect().width - value;\n }\n }\n element.scrollLeft = value;\n}\nfunction _clearElement(el) {\n while (el && el.firstChild) {\n el.removeChild(el.firstChild);\n }\n}\nfunction _removeFromParent(node) {\n if (node && node.parentNode) {\n node.parentNode.removeChild(node);\n }\n}\nfunction _isInDOM(element) {\n return !!element.offsetParent;\n}\nfunction _isVisible(element) {\n const el = element;\n if (el.checkVisibility) {\n return el.checkVisibility({ checkVisibilityCSS: true });\n }\n const isHidden = !_isInDOM(element) || window.getComputedStyle(element).visibility !== \"visible\";\n return !isHidden;\n}\nfunction _loadTemplate(template) {\n const tempDiv = document.createElement(\"div\");\n tempDiv.innerHTML = (template || \"\").trim();\n return tempDiv.firstChild;\n}\nfunction _ensureDomOrder(eContainer, eChild, eChildBefore) {\n if (eChildBefore && eChildBefore.nextSibling === eChild) {\n return;\n }\n if (eChildBefore) {\n if (eChildBefore.nextSibling) {\n eContainer.insertBefore(eChild, eChildBefore.nextSibling);\n } else {\n eContainer.appendChild(eChild);\n }\n } else {\n if (eContainer.firstChild && eContainer.firstChild !== eChild) {\n eContainer.insertAdjacentElement(\"afterbegin\", eChild);\n }\n }\n}\nfunction _setDomChildOrder(eContainer, orderedChildren) {\n for (let i = 0; i < orderedChildren.length; i++) {\n const correctCellAtIndex = orderedChildren[i];\n const actualCellAtIndex = eContainer.children[i];\n if (actualCellAtIndex !== correctCellAtIndex) {\n eContainer.insertBefore(correctCellAtIndex, actualCellAtIndex);\n }\n }\n}\nfunction _insertWithDomOrder(eContainer, eToInsert, eChildBefore) {\n if (eChildBefore) {\n eChildBefore.insertAdjacentElement(\"afterend\", eToInsert);\n } else {\n if (eContainer.firstChild) {\n eContainer.insertAdjacentElement(\"afterbegin\", eToInsert);\n } else {\n eContainer.appendChild(eToInsert);\n }\n }\n}\nfunction _addStylesToElement(eElement, styles) {\n if (!styles) {\n return;\n }\n for (const [key, value] of Object.entries(styles)) {\n if (!key || !key.length || value == null) {\n continue;\n }\n const parsedKey = _camelCaseToHyphenated(key);\n const valueAsString = value.toString();\n const parsedValue = valueAsString.replace(/\\s*!important/g, \"\");\n const priority = parsedValue.length != valueAsString.length ? \"important\" : void 0;\n eElement.style.setProperty(parsedKey, parsedValue, priority);\n }\n}\nfunction _isHorizontalScrollShowing(element) {\n return element.clientWidth < element.scrollWidth;\n}\nfunction _isVerticalScrollShowing(element) {\n return element.clientHeight < element.scrollHeight;\n}\nfunction _setElementWidth(element, width) {\n if (width === \"flex\") {\n element.style.removeProperty(\"width\");\n element.style.removeProperty(\"minWidth\");\n element.style.removeProperty(\"maxWidth\");\n element.style.flex = \"1 1 auto\";\n } else {\n _setFixedWidth(element, width);\n }\n}\nfunction _setFixedWidth(element, width) {\n width = _formatSize(width);\n element.style.width = width.toString();\n element.style.maxWidth = width.toString();\n element.style.minWidth = width.toString();\n}\nfunction _setFixedHeight(element, height) {\n height = _formatSize(height);\n element.style.height = height.toString();\n element.style.maxHeight = height.toString();\n element.style.minHeight = height.toString();\n}\nfunction _formatSize(size) {\n if (typeof size === \"number\") {\n return `${size}px`;\n }\n return size;\n}\nfunction _isNodeOrElement(o) {\n return o instanceof Node || o instanceof HTMLElement;\n}\nfunction _copyNodeList(nodeList) {\n if (nodeList == null) {\n return [];\n }\n const result = [];\n _nodeListForEach(nodeList, (node) => result.push(node));\n return result;\n}\nfunction _iterateNamedNodeMap(map, callback) {\n if (!map) {\n return;\n }\n for (let i = 0; i < map.length; i++) {\n const attr = map[i];\n callback(attr.name, attr.value);\n }\n}\nfunction _addOrRemoveAttribute(element, name, value) {\n if (value == null || value === \"\") {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value.toString());\n }\n}\nfunction _nodeListForEach(nodeList, action) {\n if (nodeList == null) {\n return;\n }\n for (let i = 0; i < nodeList.length; i++) {\n action(nodeList[i]);\n }\n}\nfunction _bindCellRendererToHtmlElement(cellRendererPromise, eTarget) {\n cellRendererPromise.then((cellRenderer) => {\n const gui = cellRenderer.getGui();\n if (gui != null) {\n if (typeof gui === \"object\") {\n eTarget.appendChild(gui);\n } else {\n eTarget.innerHTML = gui;\n }\n }\n });\n}\n\n// community-modules/core/src/utils/numberSequence.ts\nvar NumberSequence = class {\n constructor(initValue = 0, step = 1) {\n this.nextValue = initValue;\n this.step = step;\n }\n next() {\n const valToReturn = this.nextValue;\n this.nextValue += this.step;\n return valToReturn;\n }\n peek() {\n return this.nextValue;\n }\n skip(count) {\n this.nextValue += count;\n }\n};\n\n// community-modules/core/src/widgets/tooltipStateManager.ts\nvar SHOW_QUICK_TOOLTIP_DIFF = 1e3;\nvar FADE_OUT_TOOLTIP_TIMEOUT = 1e3;\nvar INTERACTIVE_HIDE_DELAY = 100;\nvar _TooltipStateManager = class _TooltipStateManager extends BeanStub {\n constructor(parentComp, tooltipShowDelayOverride, tooltipHideDelayOverride, shouldDisplayTooltip) {\n super();\n this.parentComp = parentComp;\n this.tooltipShowDelayOverride = tooltipShowDelayOverride;\n this.tooltipHideDelayOverride = tooltipHideDelayOverride;\n this.shouldDisplayTooltip = shouldDisplayTooltip;\n this.interactionEnabled = false;\n this.isInteractingWithTooltip = false;\n this.state = 0 /* NOTHING */;\n // when showing the tooltip, we need to make sure it's the most recent instance we request, as due to\n // async we could request two tooltips before the first instance returns, in which case we should\n // disregard the second instance.\n this.tooltipInstanceCount = 0;\n this.tooltipMouseTrack = false;\n }\n wireBeans(beans) {\n this.popupService = beans.popupService;\n this.userComponentFactory = beans.userComponentFactory;\n }\n postConstruct() {\n if (this.gos.get(\"tooltipInteraction\")) {\n this.interactionEnabled = true;\n }\n this.tooltipTrigger = this.getTooltipTrigger();\n this.tooltipMouseTrack = this.gos.get(\"tooltipMouseTrack\");\n const el = this.parentComp.getGui();\n if (this.tooltipTrigger === 0 /* HOVER */) {\n this.addManagedListeners(el, {\n mouseenter: this.onMouseEnter.bind(this),\n mouseleave: this.onMouseLeave.bind(this)\n });\n }\n if (this.tooltipTrigger === 1 /* FOCUS */) {\n this.addManagedListeners(el, {\n focusin: this.onFocusIn.bind(this),\n focusout: this.onFocusOut.bind(this)\n });\n }\n this.addManagedListeners(el, { mousemove: this.onMouseMove.bind(this) });\n if (!this.interactionEnabled) {\n this.addManagedListeners(el, {\n mousedown: this.onMouseDown.bind(this),\n keydown: this.onKeyDown.bind(this)\n });\n }\n }\n getGridOptionsTooltipDelay(delayOption) {\n const delay = this.gos.get(delayOption);\n if (delay < 0) {\n _warnOnce(`${delayOption} should not be lower than 0`);\n }\n return Math.max(200, delay);\n }\n getTooltipDelay(type) {\n if (type === \"show\") {\n return this.tooltipShowDelayOverride ?? this.getGridOptionsTooltipDelay(\"tooltipShowDelay\");\n }\n return this.tooltipHideDelayOverride ?? this.getGridOptionsTooltipDelay(\"tooltipHideDelay\");\n }\n destroy() {\n this.setToDoNothing();\n super.destroy();\n }\n getTooltipTrigger() {\n const trigger = this.gos.get(\"tooltipTrigger\");\n if (!trigger || trigger === \"hover\") {\n return 0 /* HOVER */;\n }\n return 1 /* FOCUS */;\n }\n onMouseEnter(e) {\n if (this.interactionEnabled && this.interactiveTooltipTimeoutId) {\n this.unlockService();\n this.startHideTimeout();\n }\n if (_isIOSUserAgent()) {\n return;\n }\n if (_TooltipStateManager.isLocked) {\n this.showTooltipTimeoutId = window.setTimeout(() => {\n this.prepareToShowTooltip(e);\n }, INTERACTIVE_HIDE_DELAY);\n } else {\n this.prepareToShowTooltip(e);\n }\n }\n onMouseMove(e) {\n if (this.lastMouseEvent) {\n this.lastMouseEvent = e;\n }\n if (this.tooltipMouseTrack && this.state === 2 /* SHOWING */ && this.tooltipComp) {\n this.positionTooltip();\n }\n }\n onMouseDown() {\n this.setToDoNothing();\n }\n onMouseLeave() {\n if (this.interactionEnabled) {\n this.lockService();\n } else {\n this.setToDoNothing();\n }\n }\n onFocusIn() {\n this.prepareToShowTooltip();\n }\n onFocusOut(e) {\n const relatedTarget = e.relatedTarget;\n const parentCompGui = this.parentComp.getGui();\n const tooltipGui = this.tooltipComp?.getGui();\n if (this.isInteractingWithTooltip || parentCompGui.contains(relatedTarget) || this.interactionEnabled && tooltipGui?.contains(relatedTarget)) {\n return;\n }\n this.setToDoNothing();\n }\n onKeyDown() {\n if (this.isInteractingWithTooltip) {\n this.isInteractingWithTooltip = false;\n }\n this.setToDoNothing();\n }\n prepareToShowTooltip(mouseEvent) {\n if (this.state != 0 /* NOTHING */ || _TooltipStateManager.isLocked) {\n return;\n }\n let delay = 0;\n if (mouseEvent) {\n delay = this.isLastTooltipHiddenRecently() ? 200 : this.getTooltipDelay(\"show\");\n }\n this.lastMouseEvent = mouseEvent || null;\n this.showTooltipTimeoutId = window.setTimeout(this.showTooltip.bind(this), delay);\n this.state = 1 /* WAITING_TO_SHOW */;\n }\n isLastTooltipHiddenRecently() {\n const now = (/* @__PURE__ */ new Date()).getTime();\n const then = _TooltipStateManager.lastTooltipHideTime;\n return now - then < SHOW_QUICK_TOOLTIP_DIFF;\n }\n setToDoNothing(fromHideTooltip) {\n if (!fromHideTooltip && this.state === 2 /* SHOWING */) {\n this.hideTooltip();\n }\n if (this.onBodyScrollEventCallback) {\n this.onBodyScrollEventCallback();\n this.onBodyScrollEventCallback = void 0;\n }\n if (this.onColumnMovedEventCallback) {\n this.onColumnMovedEventCallback();\n this.onColumnMovedEventCallback = void 0;\n }\n if (this.onDocumentKeyDownCallback) {\n this.onDocumentKeyDownCallback();\n this.onDocumentKeyDownCallback = void 0;\n }\n this.clearTimeouts();\n this.state = 0 /* NOTHING */;\n this.lastMouseEvent = null;\n }\n showTooltip() {\n const params = {\n ...this.parentComp.getTooltipParams()\n };\n if (!_exists(params.value) || this.shouldDisplayTooltip && !this.shouldDisplayTooltip()) {\n this.setToDoNothing();\n return;\n }\n this.state = 2 /* SHOWING */;\n this.tooltipInstanceCount++;\n const callback = this.newTooltipComponentCallback.bind(this, this.tooltipInstanceCount);\n const userDetails = this.userComponentFactory.getTooltipCompDetails(params);\n userDetails.newAgStackInstance().then(callback);\n }\n hideTooltip(forceHide) {\n if (!forceHide && this.isInteractingWithTooltip) {\n return;\n }\n if (this.tooltipComp) {\n this.destroyTooltipComp();\n _TooltipStateManager.lastTooltipHideTime = (/* @__PURE__ */ new Date()).getTime();\n }\n this.eventService.dispatchEvent({\n type: \"tooltipHide\",\n parentGui: this.parentComp.getGui()\n });\n if (forceHide) {\n this.isInteractingWithTooltip = false;\n }\n this.setToDoNothing(true);\n }\n newTooltipComponentCallback(tooltipInstanceCopy, tooltipComp) {\n const compNoLongerNeeded = this.state !== 2 /* SHOWING */ || this.tooltipInstanceCount !== tooltipInstanceCopy;\n if (compNoLongerNeeded) {\n this.destroyBean(tooltipComp);\n return;\n }\n const eGui = tooltipComp.getGui();\n this.tooltipComp = tooltipComp;\n if (!eGui.classList.contains(\"ag-tooltip\")) {\n eGui.classList.add(\"ag-tooltip-custom\");\n }\n if (this.tooltipTrigger === 0 /* HOVER */) {\n eGui.classList.add(\"ag-tooltip-animate\");\n }\n if (this.interactionEnabled) {\n eGui.classList.add(\"ag-tooltip-interactive\");\n }\n const translate = this.localeService.getLocaleTextFunc();\n const addPopupRes = this.popupService.addPopup({\n eChild: eGui,\n ariaLabel: translate(\"ariaLabelTooltip\", \"Tooltip\")\n });\n if (addPopupRes) {\n this.tooltipPopupDestroyFunc = addPopupRes.hideFunc;\n }\n this.positionTooltip();\n if (this.tooltipTrigger === 1 /* FOCUS */) {\n const listener = () => this.setToDoNothing();\n [this.onBodyScrollEventCallback, this.onColumnMovedEventCallback] = this.addManagedEventListeners({\n bodyScroll: listener,\n columnMoved: listener\n });\n }\n if (this.interactionEnabled) {\n [this.tooltipMouseEnterListener, this.tooltipMouseLeaveListener] = this.addManagedElementListeners(eGui, {\n mouseenter: this.onTooltipMouseEnter.bind(this),\n mouseleave: this.onTooltipMouseLeave.bind(this)\n });\n [this.onDocumentKeyDownCallback] = this.addManagedElementListeners(_getDocument(this.gos), {\n keydown: (e) => {\n if (!eGui.contains(e?.target)) {\n this.onKeyDown();\n }\n }\n });\n if (this.tooltipTrigger === 1 /* FOCUS */) {\n [this.tooltipFocusInListener, this.tooltipFocusOutListener] = this.addManagedElementListeners(eGui, {\n focusin: this.onTooltipFocusIn.bind(this),\n focusout: this.onTooltipFocusOut.bind(this)\n });\n }\n }\n this.eventService.dispatchEvent({\n type: \"tooltipShow\",\n tooltipGui: eGui,\n parentGui: this.parentComp.getGui()\n });\n this.startHideTimeout();\n }\n onTooltipMouseEnter() {\n this.isInteractingWithTooltip = true;\n this.unlockService();\n }\n onTooltipMouseLeave() {\n if (this.isTooltipFocused()) {\n return;\n }\n this.isInteractingWithTooltip = false;\n this.lockService();\n }\n onTooltipFocusIn() {\n this.isInteractingWithTooltip = true;\n }\n isTooltipFocused() {\n const tooltipGui = this.tooltipComp?.getGui();\n const activeEl = _getActiveDomElement(this.gos);\n return !!tooltipGui && tooltipGui.contains(activeEl);\n }\n onTooltipFocusOut(e) {\n const parentGui = this.parentComp.getGui();\n if (this.isTooltipFocused()) {\n return;\n }\n this.isInteractingWithTooltip = false;\n if (parentGui.contains(e.relatedTarget)) {\n this.startHideTimeout();\n } else {\n this.hideTooltip();\n }\n }\n positionTooltip() {\n const params = {\n type: \"tooltip\",\n ePopup: this.tooltipComp.getGui(),\n nudgeY: 18,\n skipObserver: this.tooltipMouseTrack\n };\n if (this.lastMouseEvent) {\n this.popupService.positionPopupUnderMouseEvent({\n ...params,\n mouseEvent: this.lastMouseEvent\n });\n } else {\n this.popupService.positionPopupByComponent({\n ...params,\n eventSource: this.parentComp.getGui(),\n position: \"under\",\n keepWithinBounds: true,\n nudgeY: 5\n });\n }\n }\n destroyTooltipComp() {\n this.tooltipComp.getGui().classList.add(\"ag-tooltip-hiding\");\n const tooltipPopupDestroyFunc = this.tooltipPopupDestroyFunc;\n const tooltipComp = this.tooltipComp;\n const delay = this.tooltipTrigger === 0 /* HOVER */ ? FADE_OUT_TOOLTIP_TIMEOUT : 0;\n window.setTimeout(() => {\n tooltipPopupDestroyFunc();\n this.destroyBean(tooltipComp);\n }, delay);\n this.clearTooltipListeners();\n this.tooltipPopupDestroyFunc = void 0;\n this.tooltipComp = void 0;\n }\n clearTooltipListeners() {\n [\n this.tooltipMouseEnterListener,\n this.tooltipMouseLeaveListener,\n this.tooltipFocusInListener,\n this.tooltipFocusOutListener\n ].forEach((listener) => {\n if (listener) {\n listener();\n }\n });\n this.tooltipMouseEnterListener = this.tooltipMouseLeaveListener = this.tooltipFocusInListener = this.tooltipFocusOutListener = null;\n }\n lockService() {\n _TooltipStateManager.isLocked = true;\n this.interactiveTooltipTimeoutId = window.setTimeout(() => {\n this.unlockService();\n this.setToDoNothing();\n }, INTERACTIVE_HIDE_DELAY);\n }\n unlockService() {\n _TooltipStateManager.isLocked = false;\n this.clearInteractiveTimeout();\n }\n startHideTimeout() {\n this.clearHideTimeout();\n this.hideTooltipTimeoutId = window.setTimeout(this.hideTooltip.bind(this), this.getTooltipDelay(\"hide\"));\n }\n clearShowTimeout() {\n if (!this.showTooltipTimeoutId) {\n return;\n }\n window.clearTimeout(this.showTooltipTimeoutId);\n this.showTooltipTimeoutId = void 0;\n }\n clearHideTimeout() {\n if (!this.hideTooltipTimeoutId) {\n return;\n }\n window.clearTimeout(this.hideTooltipTimeoutId);\n this.hideTooltipTimeoutId = void 0;\n }\n clearInteractiveTimeout() {\n if (!this.interactiveTooltipTimeoutId) {\n return;\n }\n window.clearTimeout(this.interactiveTooltipTimeoutId);\n this.interactiveTooltipTimeoutId = void 0;\n }\n clearTimeouts() {\n this.clearShowTimeout();\n this.clearHideTimeout();\n this.clearInteractiveTimeout();\n }\n};\n_TooltipStateManager.isLocked = false;\nvar TooltipStateManager = _TooltipStateManager;\n\n// community-modules/core/src/widgets/tooltipFeature.ts\nvar TooltipFeature = class extends BeanStub {\n constructor(ctrl, beans) {\n super();\n this.ctrl = ctrl;\n if (beans) {\n this.beans = beans;\n }\n }\n wireBeans(beans) {\n this.beans = beans;\n }\n postConstruct() {\n this.refreshToolTip();\n }\n setBrowserTooltip(tooltip) {\n const name = \"title\";\n const eGui = this.ctrl.getGui();\n if (!eGui) {\n return;\n }\n if (tooltip != null && tooltip != \"\") {\n eGui.setAttribute(name, tooltip);\n } else {\n eGui.removeAttribute(name);\n }\n }\n updateTooltipText() {\n this.tooltip = this.ctrl.getTooltipValue();\n }\n createTooltipFeatureIfNeeded() {\n if (this.tooltipManager != null) {\n return;\n }\n const parent = {\n getTooltipParams: () => this.getTooltipParams(),\n getGui: () => this.ctrl.getGui()\n };\n this.tooltipManager = this.createBean(\n new TooltipStateManager(\n parent,\n this.ctrl.getTooltipShowDelayOverride?.(),\n this.ctrl.getTooltipHideDelayOverride?.(),\n this.ctrl.shouldDisplayTooltip\n ),\n this.beans.context\n );\n }\n refreshToolTip() {\n this.browserTooltips = this.beans.gos.get(\"enableBrowserTooltips\");\n this.updateTooltipText();\n if (this.browserTooltips) {\n this.setBrowserTooltip(this.tooltip);\n if (this.tooltipManager) {\n this.tooltipManager = this.destroyBean(this.tooltipManager, this.beans.context);\n }\n } else {\n this.setBrowserTooltip(null);\n this.createTooltipFeatureIfNeeded();\n }\n }\n getTooltipParams() {\n const ctrl = this.ctrl;\n const column = ctrl.getColumn?.();\n const colDef = ctrl.getColDef?.();\n const rowNode = ctrl.getRowNode?.();\n return {\n location: ctrl.getLocation(),\n //'cell',\n colDef,\n column,\n rowIndex: ctrl.getRowIndex?.(),\n node: rowNode,\n data: rowNode?.data,\n value: this.getTooltipText(),\n valueFormatted: ctrl.getValueFormatted?.(),\n hideTooltipCallback: () => this.tooltipManager?.hideTooltip(true)\n };\n }\n getTooltipText() {\n return this.tooltip;\n }\n // overriding to make public, as we don't dispose this bean via context\n destroy() {\n if (this.tooltipManager) {\n this.tooltipManager = this.destroyBean(this.tooltipManager, this.beans.context);\n }\n super.destroy();\n }\n};\n\n// community-modules/core/src/widgets/component.ts\nvar compIdSequence = new NumberSequence();\nvar RefPlaceholder = null;\nvar Component = class _Component extends BeanStub {\n constructor(template, componentSelectors) {\n super();\n this.suppressDataRefValidation = false;\n // if false, then CSS class \"ag-hidden\" is applied, which sets \"display: none\"\n this.displayed = true;\n // if false, then CSS class \"ag-invisible\" is applied, which sets \"visibility: hidden\"\n this.visible = true;\n // unique id for this row component. this is used for getting a reference to the HTML dom.\n // we cannot use the RowNode id as this is not unique (due to animation, old rows can be lying\n // around as we create a new rowComp instance for the same row node).\n this.compId = compIdSequence.next();\n this.cssClassManager = new CssClassManager(() => this.eGui);\n this.componentSelectors = new Map((componentSelectors ?? []).map((comp) => [comp.selector, comp]));\n if (template) {\n this.setTemplate(template);\n }\n }\n preWireBeans(beans) {\n super.preWireBeans(beans);\n }\n preConstruct() {\n this.usingBrowserTooltips = this.gos.get(\"enableBrowserTooltips\");\n this.wireTemplate(this.getGui());\n }\n wireTemplate(element, paramsMap) {\n if (element && this.gos) {\n this.applyElementsToComponent(element);\n this.createChildComponentsFromTags(element, paramsMap);\n }\n }\n getCompId() {\n return this.compId;\n }\n getTooltipParams() {\n return {\n value: this.tooltipText,\n location: \"UNKNOWN\"\n };\n }\n setTooltip(params) {\n const { newTooltipText, showDelayOverride, hideDelayOverride, location, shouldDisplayTooltip } = params || {};\n if (this.tooltipFeature) {\n this.tooltipFeature = this.destroyBean(this.tooltipFeature);\n }\n if (this.tooltipText !== newTooltipText) {\n this.tooltipText = newTooltipText;\n }\n const getTooltipValue = () => this.tooltipText;\n if (newTooltipText != null) {\n this.tooltipFeature = this.createBean(\n new TooltipFeature({\n getTooltipValue,\n getGui: () => this.getGui(),\n getLocation: () => location ?? \"UNKNOWN\",\n getColDef: params?.getColDef,\n getColumn: params?.getColumn,\n getTooltipShowDelayOverride: showDelayOverride != null ? () => showDelayOverride : void 0,\n getTooltipHideDelayOverride: hideDelayOverride != null ? () => hideDelayOverride : void 0,\n shouldDisplayTooltip\n })\n );\n }\n }\n getDataRefAttribute(element) {\n if (element.getAttribute) {\n return element.getAttribute(\"data-ref\");\n }\n return null;\n }\n applyElementsToComponent(element, elementRef, paramsMap, newComponent = null) {\n if (elementRef === void 0) {\n elementRef = this.getDataRefAttribute(element);\n }\n if (elementRef) {\n const current = this[elementRef];\n if (current === RefPlaceholder) {\n this[elementRef] = newComponent ?? element;\n } else {\n const usedAsParamRef = paramsMap && paramsMap[elementRef];\n if (!this.suppressDataRefValidation && !usedAsParamRef) {\n _warnOnce(`Issue with data-ref: ${elementRef} on ${this.constructor.name} with ${current}`);\n }\n }\n }\n }\n // for registered components only, eg creates AgCheckbox instance from ag-checkbox HTML tag\n createChildComponentsFromTags(parentNode, paramsMap) {\n const childNodeList = _copyNodeList(parentNode.childNodes);\n childNodeList.forEach((childNode) => {\n if (!(childNode instanceof HTMLElement)) {\n return;\n }\n const childComp = this.createComponentFromElement(\n childNode,\n (childComp2) => {\n const childGui = childComp2.getGui();\n if (childGui) {\n this.copyAttributesFromNode(childNode, childComp2.getGui());\n }\n },\n paramsMap\n );\n if (childComp) {\n if (childComp.addItems && childNode.children.length) {\n this.createChildComponentsFromTags(childNode, paramsMap);\n const items = Array.prototype.slice.call(childNode.children);\n childComp.addItems(items);\n }\n this.swapComponentForNode(childComp, parentNode, childNode);\n } else if (childNode.childNodes) {\n this.createChildComponentsFromTags(childNode, paramsMap);\n }\n });\n }\n createComponentFromElement(element, afterPreCreateCallback, paramsMap) {\n const key = element.nodeName;\n const elementRef = this.getDataRefAttribute(element);\n const isAgGridComponent = key.indexOf(\"AG-\") === 0;\n const componentSelector = isAgGridComponent ? this.componentSelectors.get(key) : null;\n let newComponent = null;\n if (componentSelector) {\n _Component.elementGettingCreated = element;\n const componentParams = paramsMap && elementRef ? paramsMap[elementRef] : void 0;\n newComponent = new componentSelector.component(componentParams);\n newComponent.setParentComponent(this);\n this.createBean(newComponent, null, afterPreCreateCallback);\n } else if (isAgGridComponent) {\n _warnOnce(`Missing selector: ${key}`);\n }\n this.applyElementsToComponent(element, elementRef, paramsMap, newComponent);\n return newComponent;\n }\n copyAttributesFromNode(source, dest) {\n _iterateNamedNodeMap(source.attributes, (name, value) => dest.setAttribute(name, value));\n }\n swapComponentForNode(newComponent, parentNode, childNode) {\n const eComponent = newComponent.getGui();\n parentNode.replaceChild(eComponent, childNode);\n parentNode.insertBefore(document.createComment(childNode.nodeName), eComponent);\n this.addDestroyFunc(this.destroyBean.bind(this, newComponent));\n }\n activateTabIndex(elements) {\n const tabIndex = this.gos.get(\"tabIndex\");\n if (!elements) {\n elements = [];\n }\n if (!elements.length) {\n elements.push(this.getGui());\n }\n elements.forEach((el) => el.setAttribute(\"tabindex\", tabIndex.toString()));\n }\n setTemplate(template, componentSelectors, paramsMap) {\n const eGui = _loadTemplate(template);\n this.setTemplateFromElement(eGui, componentSelectors, paramsMap);\n }\n setTemplateFromElement(element, components, paramsMap, suppressDataRefValidation = false) {\n this.eGui = element;\n this.suppressDataRefValidation = suppressDataRefValidation;\n if (components) {\n for (let i = 0; i < components.length; i++) {\n const component = components[i];\n this.componentSelectors.set(component.selector, component);\n }\n }\n this.wireTemplate(element, paramsMap);\n }\n getGui() {\n return this.eGui;\n }\n getFocusableElement() {\n return this.eGui;\n }\n getAriaElement() {\n return this.getFocusableElement();\n }\n setParentComponent(component) {\n this.parentComponent = component;\n }\n getParentComponent() {\n return this.parentComponent;\n }\n // this method is for older code, that wants to provide the gui element,\n // it is not intended for this to be in ag-Stack\n setGui(eGui) {\n this.eGui = eGui;\n }\n queryForHtmlElement(cssSelector) {\n return this.eGui.querySelector(cssSelector);\n }\n getContainerAndElement(newChild, container) {\n let parent = container;\n if (newChild == null) {\n return null;\n }\n if (!parent) {\n parent = this.eGui;\n }\n if (_isNodeOrElement(newChild)) {\n return {\n element: newChild,\n parent\n };\n }\n return {\n element: newChild.getGui(),\n parent\n };\n }\n prependChild(newChild, container) {\n const { element, parent } = this.getContainerAndElement(newChild, container) || {};\n if (!element || !parent) {\n return;\n }\n parent.insertAdjacentElement(\"afterbegin\", element);\n }\n appendChild(newChild, container) {\n const { element, parent } = this.getContainerAndElement(newChild, container) || {};\n if (!element || !parent) {\n return;\n }\n parent.appendChild(element);\n }\n isDisplayed() {\n return this.displayed;\n }\n setVisible(visible, options = {}) {\n if (visible !== this.visible) {\n this.visible = visible;\n const { skipAriaHidden } = options;\n _setVisible(this.eGui, visible, { skipAriaHidden });\n }\n }\n setDisplayed(displayed, options = {}) {\n if (displayed !== this.displayed) {\n this.displayed = displayed;\n const { skipAriaHidden } = options;\n _setDisplayed(this.eGui, displayed, { skipAriaHidden });\n const event = {\n type: \"displayChanged\",\n visible: this.displayed\n };\n this.dispatchLocalEvent(event);\n }\n }\n destroy() {\n if (this.parentComponent) {\n this.parentComponent = void 0;\n }\n if (this.tooltipFeature) {\n this.tooltipFeature = this.destroyBean(this.tooltipFeature);\n }\n super.destroy();\n }\n addGuiEventListener(event, listener, options) {\n this.eGui.addEventListener(event, listener, options);\n this.addDestroyFunc(() => this.eGui.removeEventListener(event, listener));\n }\n addCssClass(className) {\n this.cssClassManager.addCssClass(className);\n }\n removeCssClass(className) {\n this.cssClassManager.removeCssClass(className);\n }\n containsCssClass(className) {\n return this.cssClassManager.containsCssClass(className);\n }\n addOrRemoveCssClass(className, addOrRemove) {\n this.cssClassManager.addOrRemoveCssClass(className, addOrRemove);\n }\n};\n\n// community-modules/core/src/utils/icon.ts\nvar iconNameClassMap = {\n // header column group shown when expanded (click to contract)\n columnGroupOpened: \"expanded\",\n // header column group shown when contracted (click to expand)\n columnGroupClosed: \"contracted\",\n // tool panel column group contracted (click to expand)\n columnSelectClosed: \"tree-closed\",\n // tool panel column group expanded (click to contract)\n columnSelectOpen: \"tree-open\",\n // column tool panel header expand/collapse all button, shown when some children are expanded and\n // others are collapsed\n columnSelectIndeterminate: \"tree-indeterminate\",\n // shown on drag and drop image component icon while dragging column to the side of the grid to pin\n columnMovePin: \"pin\",\n // shown on drag and drop image component icon while dragging over part of the page that is not a drop zone\n columnMoveHide: \"eye-slash\",\n // shown on drag and drop image component icon while dragging columns to reorder\n columnMoveMove: \"arrows\",\n // animating icon shown when dragging a column to the right of the grid causes horizontal scrolling\n columnMoveLeft: \"left\",\n // animating icon shown when dragging a column to the left of the grid causes horizontal scrolling\n columnMoveRight: \"right\",\n // shown on drag and drop image component icon while dragging over Row Groups drop zone\n columnMoveGroup: \"group\",\n // shown on drag and drop image component icon while dragging over Values drop zone\n columnMoveValue: \"aggregation\",\n // shown on drag and drop image component icon while dragging over pivot drop zone\n columnMovePivot: \"pivot\",\n // shown on drag and drop image component icon while dragging over drop zone that doesn't support it, e.g.\n // string column over aggregation drop zone\n dropNotAllowed: \"not-allowed\",\n // shown on row group when contracted (click to expand)\n groupContracted: \"tree-closed\",\n // shown on row group when expanded (click to contract)\n groupExpanded: \"tree-open\",\n // set filter tree list group contracted (click to expand)\n setFilterGroupClosed: \"tree-closed\",\n // set filter tree list group expanded (click to contract)\n setFilterGroupOpen: \"tree-open\",\n // set filter tree list expand/collapse all button, shown when some children are expanded and\n // others are collapsed\n setFilterGroupIndeterminate: \"tree-indeterminate\",\n // context menu chart item\n chart: \"chart\",\n // chart window title bar\n close: \"cross\",\n // X (remove) on column 'pill' after adding it to a drop zone list\n cancel: \"cancel\",\n // indicates the currently active pin state in the \"Pin column\" sub-menu of the column menu\n check: \"tick\",\n // \"go to first\" button in pagination controls\n first: \"first\",\n // \"go to previous\" button in pagination controls\n previous: \"previous\",\n // \"go to next\" button in pagination controls\n next: \"next\",\n // \"go to last\" button in pagination controls\n last: \"last\",\n // shown on top right of chart when chart is linked to range data (click to unlink)\n linked: \"linked\",\n // shown on top right of chart when chart is not linked to range data (click to link)\n unlinked: \"unlinked\",\n // \"Choose colour\" button on chart settings tab\n colorPicker: \"color-picker\",\n // rotating spinner shown by the loading cell renderer\n groupLoading: \"loading\",\n // button to launch enterprise column menu\n menu: \"menu\",\n menuAlt: \"menu-alt\",\n // filter tool panel tab\n filter: \"filter\",\n // column tool panel tab\n columns: \"columns\",\n // button in chart regular size window title bar (click to maximise)\n maximize: \"maximize\",\n // button in chart maximised window title bar (click to make regular size)\n minimize: \"minimize\",\n // \"Pin column\" item in column header menu\n menuPin: \"pin\",\n // \"Value aggregation\" column menu item (shown on numeric columns when grouping is active)\"\n menuValue: \"aggregation\",\n // \"Group by {column-name}\" item in column header menu\n menuAddRowGroup: \"group\",\n // \"Un-Group by {column-name}\" item in column header menu\n menuRemoveRowGroup: \"group\",\n // context menu copy item\n clipboardCopy: \"copy\",\n // context menu cut item\n clipboardCut: \"cut\",\n // context menu paste item\n clipboardPaste: \"paste\",\n // identifies the pivot drop zone\n pivotPanel: \"pivot\",\n // \"Row groups\" drop zone in column tool panel\n rowGroupPanel: \"group\",\n // columns tool panel Values drop zone\n valuePanel: \"aggregation\",\n // drag handle used to pick up draggable columns\n columnDrag: \"grip\",\n // drag handle used to pick up draggable rows\n rowDrag: \"grip\",\n // context menu export item\n save: \"save\",\n // csv export\n csvExport: \"csv\",\n // excel export,\n excelExport: \"excel\",\n // icon on dropdown editors\n smallDown: \"small-down\",\n // version of small-right used in RTL mode\n smallLeft: \"small-left\",\n // separater between column 'pills' when you add multiple columns to the header drop zone\n smallRight: \"small-right\",\n smallUp: \"small-up\",\n // show on column header when column is sorted ascending\n sortAscending: \"asc\",\n // show on column header when column is sorted descending\n sortDescending: \"desc\",\n // show on column header when column has no sort, only when enabled with gridOptions.unSortIcon=true\n sortUnSort: \"none\",\n // Builder button in Advanced Filter\n advancedFilterBuilder: \"group\",\n // drag handle used to pick up Advanced Filter Builder rows\n advancedFilterBuilderDrag: \"grip\",\n // Advanced Filter Builder row validation error\n advancedFilterBuilderInvalid: \"not-allowed\",\n // shown on Advanced Filter Builder rows to move them up\n advancedFilterBuilderMoveUp: \"up\",\n // shown on Advanced Filter Builder rows to move them down\n advancedFilterBuilderMoveDown: \"down\",\n // shown on Advanced Filter Builder rows to add new rows\n advancedFilterBuilderAdd: \"plus\",\n // shown on Advanced Filter Builder rows to remove row\n advancedFilterBuilderRemove: \"minus\",\n // Edit Chart menu item shown in Integrated Charts menu\n chartsMenuEdit: \"chart\",\n // Advanced Settings menu item shown in Integrated Charts menu\n chartsMenuAdvancedSettings: \"settings\",\n // shown in Integrated Charts menu add fields\n chartsMenuAdd: \"plus\",\n // checked checkbox\n checkboxChecked: \"checkbox-checked\",\n // indeterminate checkbox\n checkboxIndeterminate: \"checkbox-indeterminate\",\n // unchecked checkbox\n checkboxUnchecked: \"checkbox-unchecked\",\n // radio button on\n radioButtonOn: \"radio-button-on\",\n // radio button off\n radioButtonOff: \"radio-button-off\"\n};\nvar ICONS = (() => {\n const icons = new Set(Object.values(iconNameClassMap));\n icons.add(\"eye\");\n return icons;\n})();\nfunction _createIcon(iconName, gos, column) {\n const iconContents = _createIconNoSpan(iconName, gos, column);\n if (iconContents) {\n const { className } = iconContents;\n if (typeof className === \"string\" && className.indexOf(\"ag-icon\") > -1 || typeof className === \"object\" && className[\"ag-icon\"]) {\n return iconContents;\n }\n }\n const eResult = document.createElement(\"span\");\n eResult.appendChild(iconContents);\n return eResult;\n}\nfunction _createIconNoSpan(iconName, gos, column, forceCreate) {\n let userProvidedIcon = null;\n const icons = column && column.getColDef().icons;\n if (icons) {\n userProvidedIcon = icons[iconName];\n }\n if (gos && !userProvidedIcon) {\n const optionsIcons = gos.get(\"icons\");\n if (optionsIcons) {\n userProvidedIcon = optionsIcons[iconName];\n }\n }\n if (userProvidedIcon) {\n let rendererResult;\n if (typeof userProvidedIcon === \"function\") {\n rendererResult = userProvidedIcon();\n } else if (typeof userProvidedIcon === \"string\") {\n rendererResult = userProvidedIcon;\n } else {\n throw new Error(\"icon from grid options needs to be a string or a function\");\n }\n if (typeof rendererResult === \"string\") {\n return _loadTemplate(rendererResult);\n }\n if (_isNodeOrElement(rendererResult)) {\n return rendererResult;\n }\n _warnOnce(\"iconRenderer should return back a string or a dom object\");\n } else {\n const span = document.createElement(\"span\");\n let cssClass = iconNameClassMap[iconName] ?? (ICONS.has(iconName) ? iconName : void 0);\n if (!cssClass) {\n if (!forceCreate) {\n _warnOnce(`Did not find icon ${iconName}`);\n cssClass = \"\";\n } else {\n cssClass = iconName;\n }\n }\n span.setAttribute(\"class\", `ag-icon ag-icon-${cssClass}`);\n span.setAttribute(\"unselectable\", \"on\");\n _setAriaRole(span, \"presentation\");\n return span;\n }\n}\n\n// community-modules/core/src/dragAndDrop/dragAndDropImageComponent.ts\nvar DragAndDropImageComponent = class extends Component {\n constructor() {\n super(...arguments);\n this.dragSource = null;\n this.eIcon = RefPlaceholder;\n this.eLabel = RefPlaceholder;\n }\n postConstruct() {\n const create = (iconName) => _createIcon(iconName, this.gos, null);\n this.dropIconMap = {\n pinned: create(\"columnMovePin\"),\n hide: create(\"columnMoveHide\"),\n move: create(\"columnMoveMove\"),\n left: create(\"columnMoveLeft\"),\n right: create(\"columnMoveRight\"),\n group: create(\"columnMoveGroup\"),\n aggregate: create(\"columnMoveValue\"),\n pivot: create(\"columnMovePivot\"),\n notAllowed: create(\"dropNotAllowed\")\n };\n }\n init(params) {\n this.dragSource = params.dragSource;\n this.setTemplate(\n /* html */\n `
\n \n
\n
`\n );\n }\n // this is a user component, and IComponent has \"public destroy()\" as part of the interface.\n // so we need to override destroy() just to make the method public.\n destroy() {\n this.dragSource = null;\n super.destroy();\n }\n setIcon(iconName, shake = false) {\n _clearElement(this.eIcon);\n let eIcon = null;\n if (!iconName) {\n iconName = this.dragSource?.getDefaultIconName ? this.dragSource?.getDefaultIconName() : \"notAllowed\";\n }\n eIcon = this.dropIconMap[iconName];\n this.eIcon.classList.toggle(\"ag-shake-left-to-right\", shake);\n if (eIcon === this.dropIconMap[\"hide\"] && this.gos.get(\"suppressDragLeaveHidesColumns\")) {\n return;\n }\n if (eIcon) {\n this.eIcon.appendChild(eIcon);\n }\n }\n setLabel(label) {\n this.eLabel.textContent = _escapeString(label);\n }\n};\n\n// community-modules/core/src/utils/mouse.ts\nfunction _areEventsNear(e1, e2, pixelCount) {\n if (pixelCount === 0) {\n return false;\n }\n const diffX = Math.abs(e1.clientX - e2.clientX);\n const diffY = Math.abs(e1.clientY - e2.clientY);\n return Math.max(diffX, diffY) <= pixelCount;\n}\n\n// community-modules/core/src/widgets/touchListener.ts\nvar TouchListener = class {\n constructor(eElement, preventMouseClick = false) {\n this.DOUBLE_TAP_MILLIS = 500;\n this.destroyFuncs = [];\n this.touching = false;\n this.localEventService = new LocalEventService();\n this.eElement = eElement;\n this.preventMouseClick = preventMouseClick;\n const startListener = this.onTouchStart.bind(this);\n const moveListener = this.onTouchMove.bind(this);\n const endListener = this.onTouchEnd.bind(this);\n this.eElement.addEventListener(\"touchstart\", startListener, { passive: true });\n this.eElement.addEventListener(\"touchmove\", moveListener, { passive: true });\n this.eElement.addEventListener(\"touchend\", endListener, { passive: false });\n this.destroyFuncs.push(() => {\n this.eElement.removeEventListener(\"touchstart\", startListener, { passive: true });\n this.eElement.removeEventListener(\"touchmove\", moveListener, { passive: true });\n this.eElement.removeEventListener(\"touchend\", endListener, { passive: false });\n });\n }\n getActiveTouch(touchList) {\n for (let i = 0; i < touchList.length; i++) {\n const matches = touchList[i].identifier === this.touchStart.identifier;\n if (matches) {\n return touchList[i];\n }\n }\n return null;\n }\n addEventListener(eventType, listener) {\n this.localEventService.addEventListener(eventType, listener);\n }\n removeEventListener(eventType, listener) {\n this.localEventService.removeEventListener(eventType, listener);\n }\n onTouchStart(touchEvent) {\n if (this.touching) {\n return;\n }\n this.touchStart = touchEvent.touches[0];\n this.touching = true;\n this.moved = false;\n const touchStartCopy = this.touchStart;\n window.setTimeout(() => {\n const touchesMatch = this.touchStart === touchStartCopy;\n if (this.touching && touchesMatch && !this.moved) {\n this.moved = true;\n const event = {\n type: \"longTap\",\n touchStart: this.touchStart,\n touchEvent\n };\n this.localEventService.dispatchEvent(event);\n }\n }, 500);\n }\n onTouchMove(touchEvent) {\n if (!this.touching) {\n return;\n }\n const touch = this.getActiveTouch(touchEvent.touches);\n if (!touch) {\n return;\n }\n const eventIsFarAway = !_areEventsNear(touch, this.touchStart, 4);\n if (eventIsFarAway) {\n this.moved = true;\n }\n }\n onTouchEnd(touchEvent) {\n if (!this.touching) {\n return;\n }\n if (!this.moved) {\n const event = {\n type: \"tap\",\n touchStart: this.touchStart\n };\n this.localEventService.dispatchEvent(event);\n this.checkForDoubleTap();\n }\n if (this.preventMouseClick && touchEvent.cancelable) {\n touchEvent.preventDefault();\n }\n this.touching = false;\n }\n checkForDoubleTap() {\n const now = (/* @__PURE__ */ new Date()).getTime();\n if (this.lastTapTime && this.lastTapTime > 0) {\n const interval = now - this.lastTapTime;\n if (interval > this.DOUBLE_TAP_MILLIS) {\n const event = {\n type: \"doubleTap\",\n touchStart: this.touchStart\n };\n this.localEventService.dispatchEvent(event);\n this.lastTapTime = null;\n } else {\n this.lastTapTime = now;\n }\n } else {\n this.lastTapTime = now;\n }\n }\n destroy() {\n this.destroyFuncs.forEach((func) => func());\n }\n};\n\n// community-modules/core/src/headerRendering/cells/column/sortIndicatorComp.ts\nfunction makeSpan(dataRefSuffix, classSuffix) {\n return (\n /* html */\n ``\n );\n}\nvar SortIndicatorTemplate = (\n /* html */\n `\n ${makeSpan(\"Order\", \"order\")}\n ${makeSpan(\"Asc\", \"ascending-icon\")}\n ${makeSpan(\"Desc\", \"descending-icon\")}\n ${makeSpan(\"Mixed\", \"mixed-icon\")}\n ${makeSpan(\"None\", \"none-icon\")}\n `\n);\nvar SortIndicatorComp = class extends Component {\n constructor(skipTemplate) {\n super();\n this.eSortOrder = RefPlaceholder;\n this.eSortAsc = RefPlaceholder;\n this.eSortDesc = RefPlaceholder;\n this.eSortMixed = RefPlaceholder;\n this.eSortNone = RefPlaceholder;\n if (!skipTemplate) {\n this.setTemplate(SortIndicatorTemplate);\n }\n }\n wireBeans(beans) {\n this.sortController = beans.sortController;\n }\n attachCustomElements(eSortOrder, eSortAsc, eSortDesc, eSortMixed, eSortNone) {\n this.eSortOrder = eSortOrder;\n this.eSortAsc = eSortAsc;\n this.eSortDesc = eSortDesc;\n this.eSortMixed = eSortMixed;\n this.eSortNone = eSortNone;\n }\n setupSort(column, suppressOrder = false) {\n this.column = column;\n this.suppressOrder = suppressOrder;\n this.setupMultiSortIndicator();\n if (!this.column.isSortable() && !this.column.getColDef().showRowGroup) {\n return;\n }\n this.addInIcon(\"sortAscending\", this.eSortAsc, column);\n this.addInIcon(\"sortDescending\", this.eSortDesc, column);\n this.addInIcon(\"sortUnSort\", this.eSortNone, column);\n const updateIcons = this.updateIcons.bind(this);\n const sortUpdated = this.onSortChanged.bind(this);\n this.addManagedPropertyListener(\"unSortIcon\", updateIcons);\n this.addManagedEventListeners({\n newColumnsLoaded: updateIcons,\n // Watch global events, as row group columns can effect their display column.\n sortChanged: sortUpdated,\n // when grouping changes so can sort indexes and icons\n columnRowGroupChanged: sortUpdated\n });\n this.onSortChanged();\n }\n addInIcon(iconName, eParent, column) {\n if (eParent == null) {\n return;\n }\n const eIcon = _createIconNoSpan(iconName, this.gos, column);\n if (eIcon) {\n eParent.appendChild(eIcon);\n }\n }\n onSortChanged() {\n this.updateIcons();\n if (!this.suppressOrder) {\n this.updateSortOrder();\n }\n }\n updateIcons() {\n const sortDirection = this.sortController.getDisplaySortForColumn(this.column);\n if (this.eSortAsc) {\n const isAscending = sortDirection === \"asc\";\n _setDisplayed(this.eSortAsc, isAscending, { skipAriaHidden: true });\n }\n if (this.eSortDesc) {\n const isDescending = sortDirection === \"desc\";\n _setDisplayed(this.eSortDesc, isDescending, { skipAriaHidden: true });\n }\n if (this.eSortNone) {\n const alwaysHideNoSort = !this.column.getColDef().unSortIcon && !this.gos.get(\"unSortIcon\");\n const isNone = sortDirection === null || sortDirection === void 0;\n _setDisplayed(this.eSortNone, !alwaysHideNoSort && isNone, { skipAriaHidden: true });\n }\n }\n setupMultiSortIndicator() {\n this.addInIcon(\"sortUnSort\", this.eSortMixed, this.column);\n const isColumnShowingRowGroup = this.column.getColDef().showRowGroup;\n const areGroupsCoupled = _isColumnsSortingCoupledToGroup(this.gos);\n if (areGroupsCoupled && isColumnShowingRowGroup) {\n this.addManagedEventListeners({\n // Watch global events, as row group columns can effect their display column.\n sortChanged: this.updateMultiSortIndicator.bind(this),\n // when grouping changes so can sort indexes and icons\n columnRowGroupChanged: this.updateMultiSortIndicator.bind(this)\n });\n this.updateMultiSortIndicator();\n }\n }\n updateMultiSortIndicator() {\n if (this.eSortMixed) {\n const isMixedSort = this.sortController.getDisplaySortForColumn(this.column) === \"mixed\";\n _setDisplayed(this.eSortMixed, isMixedSort, { skipAriaHidden: true });\n }\n }\n // we listen here for global sort events, NOT column sort events, as we want to do this\n // when sorting has been set on all column (if we listened just for our col (where we\n // set the asc / desc icons) then it's possible other cols are yet to get their sorting state.\n updateSortOrder() {\n if (!this.eSortOrder) {\n return;\n }\n const allColumnsWithSorting = this.sortController.getColumnsWithSortingOrdered();\n const indexThisCol = this.sortController.getDisplaySortIndexForColumn(this.column) ?? -1;\n const moreThanOneColSorting = allColumnsWithSorting.some(\n (col) => this.sortController.getDisplaySortIndexForColumn(col) ?? -1 >= 1\n );\n const showIndex = indexThisCol >= 0 && moreThanOneColSorting;\n _setDisplayed(this.eSortOrder, showIndex, { skipAriaHidden: true });\n if (indexThisCol >= 0) {\n this.eSortOrder.textContent = (indexThisCol + 1).toString();\n } else {\n _clearElement(this.eSortOrder);\n }\n }\n};\nvar SortIndicatorSelector = {\n selector: \"AG-SORT-INDICATOR\",\n component: SortIndicatorComp\n};\n\n// community-modules/core/src/headerRendering/cells/column/headerComp.ts\nvar HeaderCompTemplate = (\n /* html */\n `
\n \n \n
\n \n \n \n
\n
`\n);\nvar HeaderComp = class extends Component {\n constructor() {\n super(...arguments);\n this.eFilter = RefPlaceholder;\n this.eFilterButton = RefPlaceholder;\n this.eSortIndicator = RefPlaceholder;\n this.eMenu = RefPlaceholder;\n this.eLabel = RefPlaceholder;\n this.eText = RefPlaceholder;\n /**\n * Selectors for custom headers templates\n */\n this.eSortOrder = RefPlaceholder;\n this.eSortAsc = RefPlaceholder;\n this.eSortDesc = RefPlaceholder;\n this.eSortMixed = RefPlaceholder;\n this.eSortNone = RefPlaceholder;\n this.lastMovingChanged = 0;\n }\n wireBeans(beans) {\n this.sortController = beans.sortController;\n this.menuService = beans.menuService;\n this.funcColsService = beans.funcColsService;\n }\n // this is a user component, and IComponent has \"public destroy()\" as part of the interface.\n // so we need to override destroy() just to make the method public.\n destroy() {\n super.destroy();\n }\n refresh(params) {\n const oldParams = this.params;\n this.params = params;\n if (this.workOutTemplate() != this.currentTemplate || this.workOutShowMenu() != this.currentShowMenu || this.workOutSort() != this.currentSort || this.shouldSuppressMenuHide() != this.currentSuppressMenuHide || oldParams.enableFilterButton != params.enableFilterButton || oldParams.enableFilterIcon != params.enableFilterIcon) {\n return false;\n }\n this.setDisplayName(params);\n return true;\n }\n workOutTemplate() {\n let template = this.params.template ?? HeaderCompTemplate;\n template = template && template.trim ? template.trim() : template;\n return template;\n }\n init(params) {\n this.params = params;\n this.currentTemplate = this.workOutTemplate();\n this.setTemplate(this.currentTemplate, [SortIndicatorSelector]);\n this.setupTap();\n this.setMenu();\n this.setupSort();\n this.setupFilterIcon();\n this.setupFilterButton();\n this.setDisplayName(params);\n }\n setDisplayName(params) {\n if (this.currentDisplayName != params.displayName) {\n this.currentDisplayName = params.displayName;\n const displayNameSanitised = _escapeString(this.currentDisplayName, true);\n if (this.eText) {\n this.eText.textContent = displayNameSanitised;\n }\n }\n }\n addInIcon(iconName, eParent, column) {\n if (eParent == null) {\n return;\n }\n const eIcon = _createIconNoSpan(iconName, this.gos, column);\n if (eIcon) {\n eParent.appendChild(eIcon);\n }\n }\n setupTap() {\n const { gos } = this;\n if (gos.get(\"suppressTouch\")) {\n return;\n }\n const touchListener = new TouchListener(this.getGui(), true);\n const suppressMenuHide = this.shouldSuppressMenuHide();\n const tapMenuButton = suppressMenuHide && _exists(this.eMenu);\n const menuTouchListener = tapMenuButton ? new TouchListener(this.eMenu, true) : touchListener;\n if (this.params.enableMenu) {\n const eventType = tapMenuButton ? \"tap\" : \"longTap\";\n const showMenuFn = (event) => this.params.showColumnMenuAfterMouseClick(event.touchStart);\n this.addManagedListeners(menuTouchListener, { [eventType]: showMenuFn });\n }\n if (this.params.enableSorting) {\n const tapListener = (event) => {\n const target = event.touchStart.target;\n if (suppressMenuHide && (this.eMenu?.contains(target) || this.eFilterButton?.contains(target))) {\n return;\n }\n this.sortController.progressSort(this.params.column, false, \"uiColumnSorted\");\n };\n this.addManagedListeners(touchListener, { tap: tapListener });\n }\n if (this.params.enableFilterButton) {\n const filterButtonTouchListener = new TouchListener(this.eFilterButton, true);\n this.addManagedListeners(filterButtonTouchListener, {\n tap: () => this.params.showFilter(this.eFilterButton)\n });\n this.addDestroyFunc(() => filterButtonTouchListener.destroy());\n }\n this.addDestroyFunc(() => touchListener.destroy());\n if (tapMenuButton) {\n this.addDestroyFunc(() => menuTouchListener.destroy());\n }\n }\n workOutShowMenu() {\n return this.params.enableMenu && this.menuService.isHeaderMenuButtonEnabled();\n }\n shouldSuppressMenuHide() {\n return this.menuService.isHeaderMenuButtonAlwaysShowEnabled();\n }\n setMenu() {\n if (!this.eMenu) {\n return;\n }\n this.currentShowMenu = this.workOutShowMenu();\n if (!this.currentShowMenu) {\n _removeFromParent(this.eMenu);\n this.eMenu = void 0;\n return;\n }\n const isLegacyMenu = this.menuService.isLegacyMenuEnabled();\n this.addInIcon(isLegacyMenu ? \"menu\" : \"menuAlt\", this.eMenu, this.params.column);\n this.eMenu.classList.toggle(\"ag-header-menu-icon\", !isLegacyMenu);\n this.currentSuppressMenuHide = this.shouldSuppressMenuHide();\n this.addManagedElementListeners(this.eMenu, { click: () => this.params.showColumnMenu(this.eMenu) });\n this.eMenu.classList.toggle(\"ag-header-menu-always-show\", this.currentSuppressMenuHide);\n }\n onMenuKeyboardShortcut(isFilterShortcut) {\n const column = this.params.column;\n const isLegacyMenuEnabled = this.menuService.isLegacyMenuEnabled();\n if (isFilterShortcut && !isLegacyMenuEnabled) {\n if (this.menuService.isFilterMenuInHeaderEnabled(column)) {\n this.params.showFilter(this.eFilterButton ?? this.eMenu ?? this.getGui());\n return true;\n }\n } else if (this.params.enableMenu) {\n this.params.showColumnMenu(this.eMenu ?? this.eFilterButton ?? this.getGui());\n return true;\n }\n return false;\n }\n workOutSort() {\n return this.params.enableSorting;\n }\n setupSort() {\n this.currentSort = this.params.enableSorting;\n if (!this.eSortIndicator) {\n this.eSortIndicator = this.createBean(new SortIndicatorComp(true));\n this.eSortIndicator.attachCustomElements(\n this.eSortOrder,\n this.eSortAsc,\n this.eSortDesc,\n this.eSortMixed,\n this.eSortNone\n );\n }\n this.eSortIndicator.setupSort(this.params.column);\n if (!this.currentSort) {\n return;\n }\n this.addManagedListeners(this.params.column, {\n movingChanged: () => {\n this.lastMovingChanged = (/* @__PURE__ */ new Date()).getTime();\n }\n });\n if (this.eLabel) {\n this.addManagedElementListeners(this.eLabel, {\n click: (event) => {\n const moving = this.params.column.isMoving();\n const nowTime = (/* @__PURE__ */ new Date()).getTime();\n const movedRecently = nowTime - this.lastMovingChanged < 50;\n const columnMoving = moving || movedRecently;\n if (!columnMoving) {\n const sortUsingCtrl = this.gos.get(\"multiSortKey\") === \"ctrl\";\n const multiSort = sortUsingCtrl ? event.ctrlKey || event.metaKey : event.shiftKey;\n this.params.progressSort(multiSort);\n }\n }\n });\n }\n const onSortingChanged = () => {\n const sort = this.params.column.getSort();\n this.addOrRemoveCssClass(\"ag-header-cell-sorted-asc\", sort === \"asc\");\n this.addOrRemoveCssClass(\"ag-header-cell-sorted-desc\", sort === \"desc\");\n this.addOrRemoveCssClass(\"ag-header-cell-sorted-none\", !sort);\n if (this.params.column.getColDef().showRowGroup) {\n const sourceColumns = this.funcColsService.getSourceColumnsForGroupColumn(\n this.params.column\n );\n const sortDirectionsMatch = sourceColumns?.every(\n (sourceCol) => this.params.column.getSort() == sourceCol.getSort()\n );\n const isMultiSorting = !sortDirectionsMatch;\n this.addOrRemoveCssClass(\"ag-header-cell-sorted-mixed\", isMultiSorting);\n }\n };\n this.addManagedEventListeners({\n sortChanged: onSortingChanged,\n columnRowGroupChanged: onSortingChanged\n });\n }\n setupFilterIcon() {\n if (!this.eFilter) {\n return;\n }\n this.configureFilter(this.params.enableFilterIcon, this.eFilter, this.onFilterChangedIcon.bind(this));\n }\n setupFilterButton() {\n if (!this.eFilterButton) {\n return;\n }\n const configured = this.configureFilter(\n this.params.enableFilterButton,\n this.eFilterButton,\n this.onFilterChangedButton.bind(this)\n );\n if (configured) {\n this.addManagedElementListeners(this.eFilterButton, {\n click: () => this.params.showFilter(this.eFilterButton)\n });\n } else {\n this.eFilterButton = void 0;\n }\n }\n configureFilter(enabled, element, filterChangedCallback) {\n if (!enabled) {\n _removeFromParent(element);\n return false;\n }\n const column = this.params.column;\n this.addInIcon(\"filter\", element, column);\n this.addManagedListeners(column, { filterChanged: filterChangedCallback });\n filterChangedCallback();\n return true;\n }\n onFilterChangedIcon() {\n const filterPresent = this.params.column.isFilterActive();\n _setDisplayed(this.eFilter, filterPresent, { skipAriaHidden: true });\n }\n onFilterChangedButton() {\n const filterPresent = this.params.column.isFilterActive();\n this.eFilterButton.classList.toggle(\"ag-filter-active\", filterPresent);\n }\n getAnchorElementForMenu(isFilter) {\n if (isFilter) {\n return this.eFilterButton ?? this.eMenu ?? this.getGui();\n }\n return this.eMenu ?? this.eFilterButton ?? this.getGui();\n }\n};\n\n// community-modules/core/src/headerRendering/cells/columnGroup/headerGroupComp.ts\nvar HeaderGroupComp = class extends Component {\n constructor() {\n super(\n /* html */\n `
\n \n \n \n
`\n );\n this.agOpened = RefPlaceholder;\n this.agClosed = RefPlaceholder;\n this.agLabel = RefPlaceholder;\n }\n wireBeans(beans) {\n this.columnModel = beans.columnModel;\n }\n // this is a user component, and IComponent has \"public destroy()\" as part of the interface.\n // so we need to override destroy() just to make the method public.\n destroy() {\n super.destroy();\n }\n init(params) {\n this.params = params;\n this.checkWarnings();\n this.setupLabel();\n this.addGroupExpandIcon();\n this.setupExpandIcons();\n }\n checkWarnings() {\n const paramsAny = this.params;\n if (paramsAny.template) {\n _warnOnce(\n `A template was provided for Header Group Comp - templates are only supported for Header Comps (not groups)`\n );\n }\n }\n setupExpandIcons() {\n this.addInIcon(\"columnGroupOpened\", this.agOpened);\n this.addInIcon(\"columnGroupClosed\", this.agClosed);\n const expandAction = (event) => {\n if (_isStopPropagationForAgGrid(event)) {\n return;\n }\n const newExpandedValue = !this.params.columnGroup.isExpanded();\n this.columnModel.setColumnGroupOpened(\n this.params.columnGroup.getProvidedColumnGroup(),\n newExpandedValue,\n \"uiColumnExpanded\"\n );\n };\n this.addTouchAndClickListeners(this.agClosed, expandAction);\n this.addTouchAndClickListeners(this.agOpened, expandAction);\n const stopPropagationAction = (event) => {\n _stopPropagationForAgGrid(event);\n };\n this.addManagedElementListeners(this.agClosed, { dblclick: stopPropagationAction });\n this.addManagedElementListeners(this.agOpened, { dblclick: stopPropagationAction });\n this.addManagedElementListeners(this.getGui(), { dblclick: expandAction });\n this.updateIconVisibility();\n const providedColumnGroup = this.params.columnGroup.getProvidedColumnGroup();\n const updateIcon = this.updateIconVisibility.bind(this);\n this.addManagedListeners(providedColumnGroup, {\n expandedChanged: updateIcon,\n expandableChanged: updateIcon\n });\n }\n addTouchAndClickListeners(eElement, action) {\n const touchListener = new TouchListener(eElement, true);\n this.addManagedListeners(touchListener, { tap: action });\n this.addDestroyFunc(() => touchListener.destroy());\n this.addManagedElementListeners(eElement, { click: action });\n }\n updateIconVisibility() {\n const columnGroup = this.params.columnGroup;\n if (columnGroup.isExpandable()) {\n const expanded = this.params.columnGroup.isExpanded();\n _setDisplayed(this.agOpened, expanded);\n _setDisplayed(this.agClosed, !expanded);\n } else {\n _setDisplayed(this.agOpened, false);\n _setDisplayed(this.agClosed, false);\n }\n }\n addInIcon(iconName, element) {\n const eIcon = _createIconNoSpan(iconName, this.gos, null);\n if (eIcon) {\n element.appendChild(eIcon);\n }\n }\n addGroupExpandIcon() {\n if (!this.params.columnGroup.isExpandable()) {\n _setDisplayed(this.agOpened, false);\n _setDisplayed(this.agClosed, false);\n return;\n }\n }\n setupLabel() {\n const { displayName, columnGroup } = this.params;\n if (_exists(displayName)) {\n const displayNameSanitised = _escapeString(displayName, true);\n this.agLabel.textContent = displayNameSanitised;\n }\n this.addOrRemoveCssClass(\"ag-sticky-label\", !columnGroup.getColGroupDef()?.suppressStickyLabel);\n }\n};\n\n// community-modules/core/src/rendering/cellRenderers/animateShowChangeCellRenderer.ts\nvar ARROW_UP = \"\\u2191\";\nvar ARROW_DOWN = \"\\u2193\";\nvar AnimateShowChangeCellRenderer = class extends Component {\n constructor() {\n super();\n this.refreshCount = 0;\n const template = document.createElement(\"span\");\n const delta = document.createElement(\"span\");\n delta.setAttribute(\"class\", \"ag-value-change-delta\");\n const value = document.createElement(\"span\");\n value.setAttribute(\"class\", \"ag-value-change-value\");\n template.appendChild(delta);\n template.appendChild(value);\n this.setTemplateFromElement(template);\n }\n wireBeans(beans) {\n this.filterManager = beans.filterManager;\n }\n init(params) {\n this.eValue = this.queryForHtmlElement(\".ag-value-change-value\");\n this.eDelta = this.queryForHtmlElement(\".ag-value-change-delta\");\n this.refresh(params, true);\n }\n showDelta(params, delta) {\n const absDelta = Math.abs(delta);\n const valueFormatted = params.formatValue(absDelta);\n const valueToUse = _exists(valueFormatted) ? valueFormatted : absDelta;\n const deltaUp = delta >= 0;\n if (deltaUp) {\n this.eDelta.textContent = ARROW_UP + valueToUse;\n } else {\n this.eDelta.textContent = ARROW_DOWN + valueToUse;\n }\n this.eDelta.classList.toggle(\"ag-value-change-delta-up\", deltaUp);\n this.eDelta.classList.toggle(\"ag-value-change-delta-down\", !deltaUp);\n }\n setTimerToRemoveDelta() {\n this.refreshCount++;\n const refreshCountCopy = this.refreshCount;\n this.getFrameworkOverrides().wrapIncoming(() => {\n window.setTimeout(() => {\n if (refreshCountCopy === this.refreshCount) {\n this.hideDeltaValue();\n }\n }, 2e3);\n });\n }\n hideDeltaValue() {\n this.eValue.classList.remove(\"ag-value-change-value-highlight\");\n _clearElement(this.eDelta);\n }\n refresh(params, isInitialRender = false) {\n const value = params.value;\n if (value === this.lastValue) {\n return false;\n }\n if (_exists(params.valueFormatted)) {\n this.eValue.textContent = params.valueFormatted;\n } else if (_exists(params.value)) {\n this.eValue.textContent = value;\n } else {\n _clearElement(this.eValue);\n }\n if (this.filterManager?.isSuppressFlashingCellsBecauseFiltering()) {\n return false;\n }\n if (typeof value === \"number\" && typeof this.lastValue === \"number\") {\n const delta = value - this.lastValue;\n this.showDelta(params, delta);\n }\n if (this.lastValue) {\n this.eValue.classList.add(\"ag-value-change-value-highlight\");\n }\n if (!isInitialRender) {\n this.setTimerToRemoveDelta();\n }\n this.lastValue = value;\n return true;\n }\n};\n\n// community-modules/core/src/rendering/cellRenderers/animateSlideCellRenderer.ts\nvar AnimateSlideCellRenderer = class extends Component {\n constructor() {\n super();\n this.refreshCount = 0;\n const template = document.createElement(\"span\");\n const slide = document.createElement(\"span\");\n slide.setAttribute(\"class\", \"ag-value-slide-current\");\n template.appendChild(slide);\n this.setTemplateFromElement(template);\n this.eCurrent = this.queryForHtmlElement(\".ag-value-slide-current\");\n }\n wireBeans(beans) {\n this.filterManager = beans.filterManager;\n }\n init(params) {\n this.refresh(params, true);\n }\n addSlideAnimation() {\n this.refreshCount++;\n const refreshCountCopy = this.refreshCount;\n if (this.ePrevious) {\n this.getGui().removeChild(this.ePrevious);\n }\n const prevElement = document.createElement(\"span\");\n prevElement.setAttribute(\"class\", \"ag-value-slide-previous ag-value-slide-out\");\n this.ePrevious = prevElement;\n this.ePrevious.textContent = this.eCurrent.textContent;\n this.getGui().insertBefore(this.ePrevious, this.eCurrent);\n this.getFrameworkOverrides().wrapIncoming(() => {\n window.setTimeout(() => {\n if (refreshCountCopy !== this.refreshCount) {\n return;\n }\n this.ePrevious.classList.add(\"ag-value-slide-out-end\");\n }, 50);\n window.setTimeout(() => {\n if (refreshCountCopy !== this.refreshCount) {\n return;\n }\n this.getGui().removeChild(this.ePrevious);\n this.ePrevious = null;\n }, 3e3);\n });\n }\n refresh(params, isInitialRender = false) {\n let value = params.value;\n if (_missing(value)) {\n value = \"\";\n }\n if (value === this.lastValue) {\n return false;\n }\n if (this.filterManager?.isSuppressFlashingCellsBecauseFiltering()) {\n return false;\n }\n if (!isInitialRender) {\n this.addSlideAnimation();\n }\n this.lastValue = value;\n if (_exists(params.valueFormatted)) {\n this.eCurrent.textContent = params.valueFormatted;\n } else if (_exists(params.value)) {\n this.eCurrent.textContent = value;\n } else {\n _clearElement(this.eCurrent);\n }\n return true;\n }\n};\n\n// community-modules/core/src/constants/keyCode.ts\nvar KeyCode = class {\n};\nKeyCode.BACKSPACE = \"Backspace\";\nKeyCode.TAB = \"Tab\";\nKeyCode.ENTER = \"Enter\";\nKeyCode.ESCAPE = \"Escape\";\nKeyCode.SPACE = \" \";\nKeyCode.LEFT = \"ArrowLeft\";\nKeyCode.UP = \"ArrowUp\";\nKeyCode.RIGHT = \"ArrowRight\";\nKeyCode.DOWN = \"ArrowDown\";\nKeyCode.DELETE = \"Delete\";\nKeyCode.F2 = \"F2\";\nKeyCode.PAGE_UP = \"PageUp\";\nKeyCode.PAGE_DOWN = \"PageDown\";\nKeyCode.PAGE_HOME = \"Home\";\nKeyCode.PAGE_END = \"End\";\n// these should be used with `event.code` instead of `event.key`\n// as `event.key` changes when non-latin keyboards are used\nKeyCode.A = \"KeyA\";\nKeyCode.C = \"KeyC\";\nKeyCode.D = \"KeyD\";\nKeyCode.V = \"KeyV\";\nKeyCode.X = \"KeyX\";\nKeyCode.Y = \"KeyY\";\nKeyCode.Z = \"KeyZ\";\n\n// community-modules/core/src/widgets/agAbstractLabel.ts\nvar AgAbstractLabel = class extends Component {\n constructor(config, template, components) {\n super(template, components);\n this.labelSeparator = \"\";\n this.labelAlignment = \"left\";\n this.disabled = false;\n this.label = \"\";\n this.config = config || {};\n }\n postConstruct() {\n this.addCssClass(\"ag-labeled\");\n this.eLabel.classList.add(\"ag-label\");\n const { labelSeparator, label, labelWidth, labelAlignment, disabled } = this.config;\n if (disabled != null) {\n this.setDisabled(disabled);\n }\n if (labelSeparator != null) {\n this.setLabelSeparator(labelSeparator);\n }\n if (label != null) {\n this.setLabel(label);\n }\n if (labelWidth != null) {\n this.setLabelWidth(labelWidth);\n }\n this.setLabelAlignment(labelAlignment || this.labelAlignment);\n this.refreshLabel();\n }\n refreshLabel() {\n _clearElement(this.eLabel);\n if (typeof this.label === \"string\") {\n this.eLabel.innerText = this.label + this.labelSeparator;\n } else if (this.label) {\n this.eLabel.appendChild(this.label);\n }\n if (this.label === \"\") {\n _setDisplayed(this.eLabel, false);\n _setAriaRole(this.eLabel, \"presentation\");\n } else {\n _setDisplayed(this.eLabel, true);\n _setAriaRole(this.eLabel, null);\n }\n }\n setLabelSeparator(labelSeparator) {\n if (this.labelSeparator === labelSeparator) {\n return this;\n }\n this.labelSeparator = labelSeparator;\n if (this.label != null) {\n this.refreshLabel();\n }\n return this;\n }\n getLabelId() {\n this.eLabel.id = this.eLabel.id || `ag-${this.getCompId()}-label`;\n return this.eLabel.id;\n }\n getLabel() {\n return this.label;\n }\n setLabel(label) {\n if (this.label === label) {\n return this;\n }\n this.label = label;\n this.refreshLabel();\n return this;\n }\n setLabelAlignment(alignment) {\n const eGui = this.getGui();\n const eGuiClassList = eGui.classList;\n eGuiClassList.toggle(\"ag-label-align-left\", alignment === \"left\");\n eGuiClassList.toggle(\"ag-label-align-right\", alignment === \"right\");\n eGuiClassList.toggle(\"ag-label-align-top\", alignment === \"top\");\n return this;\n }\n setLabelEllipsis(hasEllipsis) {\n this.eLabel.classList.toggle(\"ag-label-ellipsis\", hasEllipsis);\n return this;\n }\n setLabelWidth(width) {\n if (this.label == null) {\n return this;\n }\n _setElementWidth(this.eLabel, width);\n return this;\n }\n setDisabled(disabled) {\n disabled = !!disabled;\n const element = this.getGui();\n _setDisabled(element, disabled);\n element.classList.toggle(\"ag-disabled\", disabled);\n this.disabled = disabled;\n return this;\n }\n isDisabled() {\n return !!this.disabled;\n }\n};\n\n// community-modules/core/src/widgets/agAbstractField.ts\nvar AgAbstractField = class extends AgAbstractLabel {\n constructor(config, template, components, className) {\n super(config, template, components);\n this.className = className;\n }\n postConstruct() {\n super.postConstruct();\n const { width, value, onValueChange } = this.config;\n if (width != null) {\n this.setWidth(width);\n }\n if (value != null) {\n this.setValue(value);\n }\n if (onValueChange != null) {\n this.onValueChange(onValueChange);\n }\n if (this.className) {\n this.addCssClass(this.className);\n }\n this.refreshAriaLabelledBy();\n }\n setLabel(label) {\n super.setLabel(label);\n this.refreshAriaLabelledBy();\n return this;\n }\n refreshAriaLabelledBy() {\n const ariaEl = this.getAriaElement();\n const labelId = this.getLabelId();\n const label = this.getLabel();\n if (label == null || label == \"\" || _getAriaLabel(ariaEl) !== null) {\n _setAriaLabelledBy(ariaEl, \"\");\n } else {\n _setAriaLabelledBy(ariaEl, labelId ?? \"\");\n }\n }\n setAriaLabel(label) {\n _setAriaLabel(this.getAriaElement(), label);\n this.refreshAriaLabelledBy();\n return this;\n }\n onValueChange(callbackFn) {\n this.addManagedListeners(this, { fieldValueChanged: () => callbackFn(this.getValue()) });\n return this;\n }\n getWidth() {\n return this.getGui().clientWidth;\n }\n setWidth(width) {\n _setFixedWidth(this.getGui(), width);\n return this;\n }\n getPreviousValue() {\n return this.previousValue;\n }\n getValue() {\n return this.value;\n }\n setValue(value, silent) {\n if (this.value === value) {\n return this;\n }\n this.previousValue = this.value;\n this.value = value;\n if (!silent) {\n this.dispatchLocalEvent({ type: \"fieldValueChanged\" });\n }\n return this;\n }\n};\n\n// community-modules/core/src/widgets/agAbstractInputField.ts\nvar AgAbstractInputField = class extends AgAbstractField {\n constructor(config, className, inputType = \"text\", displayFieldTag = \"input\") {\n super(\n config,\n config?.template ?? /* html */\n `\n
\n
\n
\n <${displayFieldTag} data-ref=\"eInput\" class=\"ag-input-field-input\">\n
\n
`,\n [],\n className\n );\n this.inputType = inputType;\n this.displayFieldTag = displayFieldTag;\n this.eLabel = RefPlaceholder;\n this.eWrapper = RefPlaceholder;\n this.eInput = RefPlaceholder;\n }\n postConstruct() {\n super.postConstruct();\n this.setInputType();\n this.eLabel.classList.add(`${this.className}-label`);\n this.eWrapper.classList.add(`${this.className}-input-wrapper`);\n this.eInput.classList.add(`${this.className}-input`);\n this.addCssClass(\"ag-input-field\");\n this.eInput.id = this.eInput.id || `ag-${this.getCompId()}-input`;\n const { inputName, inputWidth } = this.config;\n if (inputName != null) {\n this.setInputName(inputName);\n }\n if (inputWidth != null) {\n this.setInputWidth(inputWidth);\n }\n this.addInputListeners();\n this.activateTabIndex([this.eInput]);\n }\n addInputListeners() {\n this.addManagedElementListeners(this.eInput, { input: (e) => this.setValue(e.target.value) });\n }\n setInputType() {\n if (this.displayFieldTag === \"input\") {\n this.eInput.setAttribute(\"type\", this.inputType);\n }\n }\n getInputElement() {\n return this.eInput;\n }\n setInputWidth(width) {\n _setElementWidth(this.eWrapper, width);\n return this;\n }\n setInputName(name) {\n this.getInputElement().setAttribute(\"name\", name);\n return this;\n }\n getFocusableElement() {\n return this.eInput;\n }\n setMaxLength(length) {\n const eInput = this.eInput;\n eInput.maxLength = length;\n return this;\n }\n setInputPlaceholder(placeholder) {\n _addOrRemoveAttribute(this.eInput, \"placeholder\", placeholder);\n return this;\n }\n setInputAriaLabel(label) {\n _setAriaLabel(this.eInput, label);\n this.refreshAriaLabelledBy();\n return this;\n }\n setDisabled(disabled) {\n _setDisabled(this.eInput, disabled);\n return super.setDisabled(disabled);\n }\n setAutoComplete(value) {\n if (value === true) {\n _addOrRemoveAttribute(this.eInput, \"autocomplete\", null);\n } else {\n const autoCompleteValue = typeof value === \"string\" ? value : \"off\";\n _addOrRemoveAttribute(this.eInput, \"autocomplete\", autoCompleteValue);\n }\n return this;\n }\n};\n\n// community-modules/core/src/widgets/agCheckbox.ts\nvar AgCheckbox = class extends AgAbstractInputField {\n constructor(config, className = \"ag-checkbox\", inputType = \"checkbox\") {\n super(config, className, inputType);\n this.labelAlignment = \"right\";\n this.selected = false;\n this.readOnly = false;\n this.passive = false;\n }\n postConstruct() {\n super.postConstruct();\n const { readOnly, passive } = this.config;\n if (typeof readOnly === \"boolean\")\n this.setReadOnly(readOnly);\n if (typeof passive === \"boolean\")\n this.setPassive(passive);\n }\n addInputListeners() {\n this.addManagedElementListeners(this.eInput, { click: this.onCheckboxClick.bind(this) });\n this.addManagedElementListeners(this.eLabel, { click: this.toggle.bind(this) });\n }\n getNextValue() {\n return this.selected === void 0 ? true : !this.selected;\n }\n setPassive(passive) {\n this.passive = passive;\n }\n isReadOnly() {\n return this.readOnly;\n }\n setReadOnly(readOnly) {\n this.eWrapper.classList.toggle(\"ag-disabled\", readOnly);\n this.eInput.disabled = readOnly;\n this.readOnly = readOnly;\n }\n setDisabled(disabled) {\n this.eWrapper.classList.toggle(\"ag-disabled\", disabled);\n return super.setDisabled(disabled);\n }\n toggle() {\n if (this.eInput.disabled) {\n return;\n }\n const previousValue = this.isSelected();\n const nextValue = this.getNextValue();\n if (this.passive) {\n this.dispatchChange(nextValue, previousValue);\n } else {\n this.setValue(nextValue);\n }\n }\n getValue() {\n return this.isSelected();\n }\n setValue(value, silent) {\n this.refreshSelectedClass(value);\n this.setSelected(value, silent);\n return this;\n }\n setName(name) {\n const input = this.getInputElement();\n input.name = name;\n return this;\n }\n isSelected() {\n return this.selected;\n }\n setSelected(selected, silent) {\n if (this.isSelected() === selected) {\n return;\n }\n this.previousValue = this.isSelected();\n selected = this.selected = typeof selected === \"boolean\" ? selected : void 0;\n this.eInput.checked = selected;\n this.eInput.indeterminate = selected === void 0;\n if (!silent) {\n this.dispatchChange(this.selected, this.previousValue);\n }\n }\n dispatchChange(selected, previousValue, event) {\n this.dispatchLocalEvent({ type: \"fieldValueChanged\", selected, previousValue, event });\n const input = this.getInputElement();\n this.eventService.dispatchEvent({\n type: \"checkboxChanged\",\n id: input.id,\n name: input.name,\n selected,\n previousValue\n });\n }\n onCheckboxClick(e) {\n if (this.passive || this.eInput.disabled) {\n return;\n }\n const previousValue = this.isSelected();\n const selected = this.selected = e.target.checked;\n this.refreshSelectedClass(selected);\n this.dispatchChange(selected, previousValue, e);\n }\n refreshSelectedClass(value) {\n this.eWrapper.classList.toggle(\"ag-checked\", value === true);\n this.eWrapper.classList.toggle(\"ag-indeterminate\", value == null);\n }\n};\nvar AgCheckboxSelector = {\n selector: \"AG-CHECKBOX\",\n component: AgCheckbox\n};\n\n// community-modules/core/src/rendering/cellRenderers/checkboxCellRenderer.ts\nvar CheckboxCellRenderer = class extends Component {\n constructor() {\n super(\n /* html*/\n `\n
\n \n
`,\n [AgCheckboxSelector]\n );\n this.eCheckbox = RefPlaceholder;\n }\n init(params) {\n this.refresh(params);\n const inputEl = this.eCheckbox.getInputElement();\n inputEl.setAttribute(\"tabindex\", \"-1\");\n _setAriaLive(inputEl, \"polite\");\n this.addManagedListeners(inputEl, {\n click: (event) => {\n _stopPropagationForAgGrid(event);\n if (this.eCheckbox.isDisabled()) {\n return;\n }\n const isSelected = this.eCheckbox.getValue();\n this.onCheckboxChanged(isSelected);\n },\n dblclick: (event) => {\n _stopPropagationForAgGrid(event);\n }\n });\n this.addManagedElementListeners(this.params.eGridCell, {\n keydown: (event) => {\n if (event.key === KeyCode.SPACE && !this.eCheckbox.isDisabled()) {\n if (this.params.eGridCell === _getActiveDomElement(this.gos)) {\n this.eCheckbox.toggle();\n }\n const isSelected = this.eCheckbox.getValue();\n this.onCheckboxChanged(isSelected);\n event.preventDefault();\n }\n }\n });\n }\n refresh(params) {\n this.params = params;\n this.updateCheckbox(params);\n return true;\n }\n updateCheckbox(params) {\n let isSelected;\n let displayed = true;\n if (params.node.group && params.column) {\n if (typeof params.value === \"boolean\") {\n isSelected = params.value;\n } else {\n const colId = params.column.getColId();\n if (colId.startsWith(GROUP_AUTO_COLUMN_ID)) {\n isSelected = params.value == null || params.value === \"\" ? void 0 : params.value === \"true\";\n } else if (params.node.aggData && params.node.aggData[colId] !== void 0) {\n isSelected = params.value ?? void 0;\n } else {\n displayed = false;\n }\n }\n } else {\n isSelected = params.value ?? void 0;\n }\n if (!displayed) {\n this.eCheckbox.setDisplayed(false);\n return;\n }\n this.eCheckbox.setValue(isSelected);\n const disabled = params.disabled != null ? params.disabled : !params.column?.isCellEditable(params.node);\n this.eCheckbox.setDisabled(disabled);\n const translate = this.localeService.getLocaleTextFunc();\n const stateName = _getAriaCheckboxStateName(translate, isSelected);\n const ariaLabel = disabled ? stateName : `${translate(\"ariaToggleCellValue\", \"Press SPACE to toggle cell value\")} (${stateName})`;\n this.eCheckbox.setInputAriaLabel(ariaLabel);\n }\n onCheckboxChanged(isSelected) {\n const { column, node, value } = this.params;\n this.eventService.dispatchEvent({\n type: \"cellEditingStarted\",\n column,\n colDef: column?.getColDef(),\n data: node.data,\n node,\n rowIndex: node.rowIndex,\n rowPinned: node.rowPinned,\n value\n });\n const valueChanged = this.params.node.setDataValue(this.params.column, isSelected, \"edit\");\n this.eventService.dispatchEvent({\n type: \"cellEditingStopped\",\n column,\n colDef: column?.getColDef(),\n data: node.data,\n node,\n rowIndex: node.rowIndex,\n rowPinned: node.rowPinned,\n value,\n oldValue: value,\n newValue: isSelected,\n valueChanged\n });\n if (!valueChanged) {\n this.updateCheckbox(this.params);\n }\n }\n};\n\n// community-modules/core/src/rendering/cellRenderers/loadingCellRenderer.ts\nvar LoadingCellRenderer = class extends Component {\n constructor() {\n super(\n /* html */\n `
\n \n \n
`\n );\n this.eLoadingIcon = RefPlaceholder;\n this.eLoadingText = RefPlaceholder;\n }\n init(params) {\n params.node.failedLoad ? this.setupFailed() : this.setupLoading();\n }\n setupFailed() {\n const localeTextFunc = this.localeService.getLocaleTextFunc();\n this.eLoadingText.innerText = localeTextFunc(\"loadingError\", \"ERR\");\n }\n setupLoading() {\n const eLoadingIcon = _createIconNoSpan(\"groupLoading\", this.gos, null);\n if (eLoadingIcon) {\n this.eLoadingIcon.appendChild(eLoadingIcon);\n }\n const localeTextFunc = this.localeService.getLocaleTextFunc();\n this.eLoadingText.innerText = localeTextFunc(\"loadingOoo\", \"Loading\");\n }\n refresh(params) {\n return false;\n }\n // this is a user component, and IComponent has \"public destroy()\" as part of the interface.\n // so we need to override destroy() just to make the method public.\n destroy() {\n super.destroy();\n }\n};\n\n// community-modules/core/src/rendering/cellRenderers/skeletonCellRenderer.ts\nvar SkeletonCellRenderer = class extends Component {\n constructor() {\n super(\n /* html */\n `
`\n );\n }\n init(params) {\n const id = `ag-cell-skeleton-renderer-${this.getCompId()}`;\n this.getGui().setAttribute(\"id\", id);\n this.addDestroyFunc(() => _setAriaLabelledBy(params.eParentOfValue));\n _setAriaLabelledBy(params.eParentOfValue, id);\n params.node.failedLoad ? this.setupFailed() : this.setupLoading(params);\n }\n setupFailed() {\n const localeTextFunc = this.localeService.getLocaleTextFunc();\n this.getGui().innerText = localeTextFunc(\"loadingError\", \"ERR\");\n const ariaFailed = localeTextFunc(\"ariaSkeletonCellLoadingFailed\", \"Row failed to load\");\n _setAriaLabel(this.getGui(), ariaFailed);\n }\n setupLoading(params) {\n const eDocument = _getDocument(this.gos);\n const skeletonEffect = eDocument.createElement(\"div\");\n skeletonEffect.classList.add(\"ag-skeleton-effect\");\n const rowIndex = params.node.rowIndex;\n if (rowIndex != null) {\n const width = 75 + 25 * (rowIndex % 2 === 0 ? Math.sin(rowIndex) : Math.cos(rowIndex));\n skeletonEffect.style.width = `${width}%`;\n }\n this.getGui().appendChild(skeletonEffect);\n const localeTextFunc = this.localeService.getLocaleTextFunc();\n const ariaLoading = localeTextFunc(\"ariaSkeletonCellLoading\", \"Row data is loading\");\n _setAriaLabel(this.getGui(), ariaLoading);\n }\n refresh(params) {\n return false;\n }\n // this is a user component, and IComponent has \"public destroy()\" as part of the interface.\n // so we need to override destroy() just to make the method public.\n destroy() {\n super.destroy();\n }\n};\n\n// community-modules/core/src/rendering/overlays/overlayComponent.ts\nvar OverlayComponent = class extends Component {\n constructor() {\n super();\n }\n // this is a user component, and IComponent has \"public destroy()\" as part of the interface.\n // so we need to override destroy() just to make the method public.\n destroy() {\n super.destroy();\n }\n};\n\n// community-modules/core/src/rendering/overlays/loadingOverlayComponent.ts\nvar LoadingOverlayComponent = class extends OverlayComponent {\n init() {\n const customTemplate = _makeNull(this.gos.get(\"overlayLoadingTemplate\")?.trim());\n this.setTemplate(\n customTemplate ?? /* html */\n ``\n );\n if (!customTemplate) {\n const localeTextFunc = this.localeService.getLocaleTextFunc();\n setTimeout(() => {\n this.getGui().textContent = localeTextFunc(\"loadingOoo\", \"Loading...\");\n });\n }\n }\n};\n\n// community-modules/core/src/rendering/overlays/noRowsOverlayComponent.ts\nvar NoRowsOverlayComponent = class extends OverlayComponent {\n init() {\n const customTemplate = _makeNull(this.gos.get(\"overlayNoRowsTemplate\")?.trim());\n this.setTemplate(customTemplate ?? /* html */\n ``);\n if (!customTemplate) {\n const localeTextFunc = this.localeService.getLocaleTextFunc();\n setTimeout(() => {\n this.getGui().textContent = localeTextFunc(\"noRowsToShow\", \"No Rows To Show\");\n });\n }\n }\n};\n\n// community-modules/core/src/widgets/popupComponent.ts\nvar PopupComponent = class extends Component {\n isPopup() {\n return true;\n }\n setParentComponent(container) {\n container.addCssClass(\"ag-has-popup\");\n super.setParentComponent(container);\n }\n destroy() {\n const parentComp = this.parentComponent;\n const hasParent = parentComp && parentComp.isAlive();\n if (hasParent) {\n parentComp.getGui().classList.remove(\"ag-has-popup\");\n }\n super.destroy();\n }\n};\n\n// community-modules/core/src/rendering/tooltipComponent.ts\nvar TooltipComponent = class extends PopupComponent {\n constructor() {\n super(\n /* html */\n `
`\n );\n }\n // will need to type params\n init(params) {\n const { value } = params;\n this.getGui().textContent = _escapeString(value, true);\n }\n};\n\n// community-modules/core/src/utils/fuzzyMatch.ts\nfunction _fuzzySuggestions(params) {\n const { inputValue, allSuggestions, hideIrrelevant, filterByPercentageOfBestMatch, addSequentialWeight } = params;\n let thisSuggestions = allSuggestions.map((text, idx) => ({\n value: text,\n relevance: levenshteinDistance(inputValue.toLowerCase(), text.toLocaleLowerCase(), addSequentialWeight),\n idx\n }));\n thisSuggestions.sort((a, b) => b.relevance - a.relevance);\n if (hideIrrelevant) {\n thisSuggestions = thisSuggestions.filter((suggestion) => suggestion.relevance !== 0);\n }\n if (thisSuggestions.length > 0 && filterByPercentageOfBestMatch && filterByPercentageOfBestMatch > 0) {\n const bestMatch = thisSuggestions[0].relevance;\n const limit = bestMatch * filterByPercentageOfBestMatch;\n thisSuggestions = thisSuggestions.filter((suggestion) => limit - suggestion.relevance < 0);\n }\n const values = [];\n const indices = [];\n for (const suggestion of thisSuggestions) {\n values.push(suggestion.value);\n indices.push(suggestion.idx);\n }\n return { values, indices };\n}\nfunction getAllSubstrings(str) {\n const result = [];\n const size = str.length;\n for (let len = 1; len <= size; len++) {\n for (let i = 0; i <= size - len; i++) {\n const j = i + len - 1;\n result.push(str.slice(i, j + 1));\n }\n }\n return result;\n}\nfunction levenshteinDistance(str1, str2, addSequentialWeight = false) {\n const a = str1.replace(/\\s/g, \"\");\n const b = str2.replace(/\\s/g, \"\");\n const len1 = a.length;\n const len2 = b.length;\n const m = new Array(len1 + 1).fill(null).map(() => new Array(len2 + 1).fill(0));\n for (let i = 0; i <= len1; i += 1) {\n m[i][0] = i;\n }\n for (let j = 0; j <= len2; j += 1) {\n m[0][j] = j;\n }\n for (let i = 1; i <= len1; i++) {\n for (let j = 1; j <= len2; j++) {\n if (a[i - 1] === b[j - 1]) {\n m[i][j] = m[i - 1][j - 1];\n } else {\n m[i][j] = 1 + Math.min(m[i][j - 1], Math.min(m[i - 1][j], m[i - 1][j - 1]));\n }\n }\n }\n const distance = m[len1][len2];\n const maxDistance = Math.max(len1, len2);\n let weight = maxDistance - distance;\n if (addSequentialWeight) {\n const substrings = getAllSubstrings(a);\n for (let i = 0; i < substrings.length; i++) {\n const currentSubstring = substrings[i];\n if (b.indexOf(currentSubstring) !== -1) {\n weight += 1;\n weight *= currentSubstring.length;\n }\n }\n }\n return weight;\n}\n\n// community-modules/core/src/components/framework/userComponentRegistry.ts\nvar UserComponentRegistry = class extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"userComponentRegistry\";\n this.agGridDefaults = {\n // drag and drop\n agDragAndDropImage: DragAndDropImageComponent,\n //header\n agColumnHeader: HeaderComp,\n agColumnGroupHeader: HeaderGroupComp,\n agSortIndicator: SortIndicatorComp,\n // renderers\n agAnimateShowChangeCellRenderer: AnimateShowChangeCellRenderer,\n agAnimateSlideCellRenderer: AnimateSlideCellRenderer,\n agLoadingCellRenderer: LoadingCellRenderer,\n agSkeletonCellRenderer: SkeletonCellRenderer,\n agCheckboxCellRenderer: CheckboxCellRenderer,\n //overlays\n agLoadingOverlay: LoadingOverlayComponent,\n agNoRowsOverlay: NoRowsOverlayComponent,\n // tooltips\n agTooltipComponent: TooltipComponent\n };\n this.agGridDefaultParams = {};\n /** Used to provide useful error messages if a user is trying to use an enterprise component without loading the module. */\n this.enterpriseAgDefaultCompsModule = {\n agSetColumnFilter: \"@ag-grid-enterprise/set-filter\" /* SetFilterModule */,\n agSetColumnFloatingFilter: \"@ag-grid-enterprise/set-filter\" /* SetFilterModule */,\n agMultiColumnFilter: \"@ag-grid-enterprise/multi-filter\" /* MultiFilterModule */,\n agMultiColumnFloatingFilter: \"@ag-grid-enterprise/multi-filter\" /* MultiFilterModule */,\n agGroupColumnFilter: \"@ag-grid-enterprise/row-grouping\" /* RowGroupingModule */,\n agGroupColumnFloatingFilter: \"@ag-grid-enterprise/row-grouping\" /* RowGroupingModule */,\n agGroupCellRenderer: \"@ag-grid-enterprise/row-grouping\" /* RowGroupingModule */,\n // Actually in enterprise core as used by MasterDetail too but best guess is they are grouping\n agGroupRowRenderer: \"@ag-grid-enterprise/row-grouping\" /* RowGroupingModule */,\n // Actually in enterprise core as used by MasterDetail but best guess is they are grouping\n agRichSelect: \"@ag-grid-enterprise/rich-select\" /* RichSelectModule */,\n agRichSelectCellEditor: \"@ag-grid-enterprise/rich-select\" /* RichSelectModule */,\n agDetailCellRenderer: \"@ag-grid-enterprise/master-detail\" /* MasterDetailModule */,\n agSparklineCellRenderer: \"@ag-grid-enterprise/sparklines\" /* SparklinesModule */\n };\n this.jsComps = {};\n }\n postConstruct() {\n const comps = this.gos.get(\"components\");\n if (comps != null) {\n _iterateObject(comps, (key, component) => this.registerJsComponent(key, component));\n }\n }\n registerDefaultComponent(name, component, params) {\n this.agGridDefaults[name] = component;\n if (params) {\n this.agGridDefaultParams[name] = params;\n }\n }\n registerJsComponent(name, component) {\n this.jsComps[name] = component;\n }\n retrieve(propertyName, name) {\n const createResult = (component, componentFromFramework, params) => ({\n componentFromFramework,\n component,\n params\n });\n const registeredViaFrameworkComp = this.getFrameworkOverrides().frameworkComponent(\n name,\n this.gos.get(\"components\")\n );\n if (registeredViaFrameworkComp != null) {\n return createResult(registeredViaFrameworkComp, true);\n }\n const jsComponent = this.jsComps[name];\n if (jsComponent) {\n const isFwkComp = this.getFrameworkOverrides().isFrameworkComponent(jsComponent);\n return createResult(jsComponent, isFwkComp);\n }\n const defaultComponent = this.agGridDefaults[name];\n if (defaultComponent) {\n return createResult(defaultComponent, false, this.agGridDefaultParams[name]);\n }\n const moduleForComponent = this.enterpriseAgDefaultCompsModule[name];\n if (moduleForComponent) {\n this.gos.assertModuleRegistered(moduleForComponent, `AG Grid '${propertyName}' component: ${name}`);\n } else {\n _doOnce(() => {\n this.warnAboutMissingComponent(propertyName, name);\n }, \"MissingComp\" + name);\n }\n return null;\n }\n warnAboutMissingComponent(propertyName, componentName) {\n const validComponents = [\n // Don't include the old names / internals in potential suggestions\n ...Object.keys(this.agGridDefaults).filter(\n (k) => ![\"agCellEditor\", \"agGroupRowRenderer\", \"agSortIndicator\"].includes(k)\n ),\n ...Object.keys(this.jsComps)\n ];\n const suggestions = _fuzzySuggestions({\n inputValue: componentName,\n allSuggestions: validComponents,\n hideIrrelevant: true,\n filterByPercentageOfBestMatch: 0.8\n }).values;\n _warnOnce(\n `Could not find '${componentName}' component. It was configured as \"${propertyName}: '${componentName}'\" but it wasn't found in the list of registered components.`\n );\n if (suggestions.length > 0) {\n _warnOnce(` Did you mean: [${suggestions.slice(0, 3)}]?`);\n }\n _warnOnce(\n `If using a custom component check it has been registered as described in: ${this.getFrameworkOverrides().getDocLink(\"components/\")}`\n );\n }\n};\n\n// community-modules/core/src/utils/promise.ts\nvar AgPromise = class _AgPromise {\n constructor(callback) {\n this.status = 0 /* IN_PROGRESS */;\n this.resolution = null;\n this.waiters = [];\n callback(\n (value) => this.onDone(value),\n (params) => this.onReject(params)\n );\n }\n static all(promises) {\n return promises.length ? new _AgPromise((resolve) => {\n let remainingToResolve = promises.length;\n const combinedValues = new Array(remainingToResolve);\n promises.forEach((promise, index) => {\n promise.then((value) => {\n combinedValues[index] = value;\n remainingToResolve--;\n if (remainingToResolve === 0) {\n resolve(combinedValues);\n }\n });\n });\n }) : _AgPromise.resolve();\n }\n static resolve(value = null) {\n return new _AgPromise((resolve) => resolve(value));\n }\n then(func) {\n return new _AgPromise((resolve) => {\n if (this.status === 1 /* RESOLVED */) {\n resolve(func(this.resolution));\n } else {\n this.waiters.push((value) => resolve(func(value)));\n }\n });\n }\n onDone(value) {\n this.status = 1 /* RESOLVED */;\n this.resolution = value;\n this.waiters.forEach((waiter) => waiter(value));\n }\n onReject(params) {\n }\n};\n\n// community-modules/core/src/components/framework/componentTypes.ts\nvar DateComponent = {\n propertyName: \"dateComponent\",\n cellRenderer: false\n};\nvar DragAndDropImageComponent2 = {\n propertyName: \"dragAndDropImageComponent\",\n cellRenderer: false\n};\nvar HeaderComponent = {\n propertyName: \"headerComponent\",\n cellRenderer: false\n};\nvar HeaderGroupComponent = {\n propertyName: \"headerGroupComponent\",\n cellRenderer: false\n};\nvar CellRendererComponent = {\n propertyName: \"cellRenderer\",\n cellRenderer: true\n};\nvar EditorRendererComponent = {\n propertyName: \"cellRenderer\",\n cellRenderer: false\n};\nvar LoadingCellRendererComponent = {\n propertyName: \"loadingCellRenderer\",\n cellRenderer: true\n};\nvar CellEditorComponent = {\n propertyName: \"cellEditor\",\n cellRenderer: false\n};\nvar InnerRendererComponent = {\n propertyName: \"innerRenderer\",\n cellRenderer: true\n};\nvar LoadingOverlayComponent2 = {\n propertyName: \"loadingOverlayComponent\",\n cellRenderer: false\n};\nvar NoRowsOverlayComponent2 = {\n propertyName: \"noRowsOverlayComponent\",\n cellRenderer: false\n};\nvar TooltipComponent2 = {\n propertyName: \"tooltipComponent\",\n cellRenderer: false\n};\nvar FilterComponent = {\n propertyName: \"filter\",\n cellRenderer: false\n};\nvar FloatingFilterComponent = {\n propertyName: \"floatingFilterComponent\",\n cellRenderer: false\n};\nvar ToolPanelComponent = {\n propertyName: \"toolPanel\",\n cellRenderer: false\n};\nvar StatusPanelComponent = {\n propertyName: \"statusPanel\",\n cellRenderer: false\n};\nvar FullWidth = {\n propertyName: \"fullWidthCellRenderer\",\n cellRenderer: true\n};\nvar FullWidthLoading = {\n propertyName: \"loadingCellRenderer\",\n cellRenderer: true\n};\nvar FullWidthGroup = {\n propertyName: \"groupRowRenderer\",\n cellRenderer: true\n};\nvar FullWidthDetail = {\n propertyName: \"detailCellRenderer\",\n cellRenderer: true\n};\nvar MenuItemComponent = {\n propertyName: \"menuItem\",\n cellRenderer: false\n};\n\n// community-modules/core/src/components/framework/userComponentFactory.ts\nvar UserComponentFactory = class _UserComponentFactory extends BeanStub {\n constructor() {\n super(...arguments);\n this.beanName = \"userComponentFactory\";\n }\n wireBeans(beans) {\n this.agComponentUtils = beans.agComponentUtils;\n this.componentMetadataProvider = beans.componentMetadataProvider;\n this.userComponentRegistry = beans.userComponentRegistry;\n this.frameworkComponentWrapper = beans.frameworkComponentWrapper;\n this.gridOptions = beans.gridOptions;\n }\n getDragAndDropImageCompDetails(params) {\n return this.getCompDetails(this.gridOptions, DragAndDropImageComponent2, \"agDragAndDropImage\", params, true);\n }\n getHeaderCompDetails(colDef, params) {\n return this.getCompDetails(colDef, HeaderComponent, \"agColumnHeader\", params);\n }\n getHeaderGroupCompDetails(params) {\n const colGroupDef = params.columnGroup.getColGroupDef();\n return this.getCompDetails(colGroupDef, HeaderGroupComponent, \"agColumnGroupHeader\", params);\n }\n // this one is unusual, as it can be LoadingCellRenderer, DetailCellRenderer, FullWidthCellRenderer or GroupRowRenderer.\n // so we have to pass the type in.\n getFullWidthCellRendererDetails(params) {\n return this.getCompDetails(this.gridOptions, FullWidth, null, params, true);\n }\n getFullWidthLoadingCellRendererDetails(params) {\n return this.getCompDetails(this.gridOptions, FullWidthLoading, \"agLoadingCellRenderer\", params, true);\n }\n getFullWidthGroupCellRendererDetails(params) {\n return this.getCompDetails(this.gridOptions, FullWidthGroup, \"agGroupRowRenderer\", params, true);\n }\n getFullWidthDetailCellRendererDetails(params) {\n return this.getCompDetails(this.gridOptions, FullWidthDetail, \"agDetailCellRenderer\", params, true);\n }\n // CELL RENDERER\n getInnerRendererDetails(def, params) {\n return this.getCompDetails(def, InnerRendererComponent, null, params);\n }\n getFullWidthGroupRowInnerCellRenderer(def, params) {\n return this.getCompDetails(def, InnerRendererComponent, null, params);\n }\n getCellRendererDetails(def, params) {\n return this.getCompDetails(def, CellRendererComponent, null, params);\n }\n getEditorRendererDetails(def, params) {\n return this.getCompDetails(def, EditorRendererComponent, null, params);\n }\n getLoadingCellRendererDetails(def, params) {\n return this.getCompDetails(def, LoadingCellRendererComponent, \"agSkeletonCellRenderer\", params, true);\n }\n // CELL EDITOR\n getCellEditorDetails(def, params) {\n return this.getCompDetails(def, CellEditorComponent, \"agCellEditor\", params, true);\n }\n // FILTER\n getFilterDetails(def, params, defaultFilter) {\n return this.getCompDetails(def, FilterComponent, defaultFilter, params, true);\n }\n getDateCompDetails(params) {\n return this.getCompDetails(this.gridOptions, DateComponent, \"agDateInput\", params, true);\n }\n getLoadingOverlayCompDetails(params) {\n return this.getCompDetails(this.gridOptions, LoadingOverlayComponent2, \"agLoadingOverlay\", params, true);\n }\n getNoRowsOverlayCompDetails(params) {\n return this.getCompDetails(this.gridOptions, NoRowsOverlayComponent2, \"agNoRowsOverlay\", params, true);\n }\n getTooltipCompDetails(params) {\n return this.getCompDetails(params.colDef, TooltipComponent2, \"agTooltipComponent\", params, true);\n }\n getSetFilterCellRendererDetails(def, params) {\n return this.getCompDetails(def, CellRendererComponent, null, params);\n }\n getFloatingFilterCompDetails(def, params, defaultFloatingFilter) {\n return this.getCompDetails(def, FloatingFilterComponent, defaultFloatingFilter, params);\n }\n getToolPanelCompDetails(toolPanelDef, params) {\n return this.getCompDetails(toolPanelDef, ToolPanelComponent, null, params, true);\n }\n getStatusPanelCompDetails(def, params) {\n return this.getCompDetails(def, StatusPanelComponent, null, params, true);\n }\n getMenuItemCompDetails(def, params) {\n return this.getCompDetails(def, MenuItemComponent, \"agMenuItem\", params, true);\n }\n getCompDetails(defObject, type, defaultName, params, mandatory = false) {\n const { propertyName, cellRenderer } = type;\n let { compName, jsComp, fwComp, paramsFromSelector, popupFromSelector, popupPositionFromSelector } = _UserComponentFactory.getCompKeys(this.frameworkOverrides, defObject, type, params);\n let defaultCompParams;\n const lookupFromRegistry = (key) => {\n const item = this.userComponentRegistry.retrieve(propertyName, key);\n if (item) {\n jsComp = !item.componentFromFramework ? item.component : void 0;\n fwComp = item.componentFromFramework ? item.component : void 0;\n defaultCompParams = item.params;\n }\n };\n if (compName != null) {\n lookupFromRegistry(compName);\n }\n if (jsComp == null && fwComp == null && defaultName != null) {\n lookupFromRegistry(defaultName);\n }\n if (jsComp && cellRenderer && !this.agComponentUtils.doesImplementIComponent(jsComp)) {\n jsComp = this.agComponentUtils.adaptFunction(propertyName, jsComp);\n }\n if (!jsComp && !fwComp) {\n if (mandatory) {\n _errorOnce(`Could not find component ${compName}, did you forget to configure this component?`);\n }\n return;\n }\n const paramsMerged = this.mergeParamsWithApplicationProvidedParams(\n defObject,\n type,\n params,\n paramsFromSelector,\n defaultCompParams\n );\n const componentFromFramework = jsComp == null;\n const componentClass = jsComp ? jsComp : fwComp;\n return {\n componentFromFramework,\n componentClass,\n params: paramsMerged,\n type,\n popupFromSelector,\n popupPositionFromSelector,\n newAgStackInstance: () => this.newAgStackInstance(componentClass, componentFromFramework, paramsMerged, type)\n };\n }\n static getCompKeys(frameworkOverrides, defObject, type, params) {\n const { propertyName } = type;\n let compName;\n let jsComp;\n let fwComp;\n let paramsFromSelector;\n let popupFromSelector;\n let popupPositionFromSelector;\n if (defObject) {\n const defObjectAny = defObject;\n const selectorFunc = defObjectAny[propertyName + \"Selector\"];\n const selectorRes = selectorFunc ? selectorFunc(params) : null;\n const assignComp = (providedJsComp) => {\n if (typeof providedJsComp === \"string\") {\n compName = providedJsComp;\n } else if (providedJsComp != null && providedJsComp !== true) {\n const isFwkComp = frameworkOverrides.isFrameworkComponent(providedJsComp);\n if (isFwkComp) {\n fwComp = providedJsComp;\n } else {\n jsComp = providedJsComp;\n }\n }\n };\n if (selectorRes) {\n assignComp(selectorRes.component);\n paramsFromSelector = selectorRes.params;\n popupFromSelector = selectorRes.popup;\n popupPositionFromSelector = selectorRes.popupPosition;\n } else {\n assignComp(defObjectAny[propertyName]);\n }\n }\n return { compName, jsComp, fwComp, paramsFromSelector, popupFromSelector, popupPositionFromSelector };\n }\n newAgStackInstance(ComponentClass, componentFromFramework, params, type) {\n const propertyName = type.propertyName;\n const jsComponent = !componentFromFramework;\n let instance;\n if (jsComponent) {\n instance = new ComponentClass();\n } else {\n const thisComponentConfig = this.componentMetadataProvider.retrieve(propertyName);\n instance = this.frameworkComponentWrapper.wrap(\n ComponentClass,\n thisComponentConfig.mandatoryMethodList,\n thisComponentConfig.optionalMethodList,\n type\n );\n }\n const deferredInit = this.initComponent(instance, params);\n if (deferredInit == null) {\n return AgPromise.resolve(instance);\n }\n return deferredInit.then(() => instance);\n }\n // used by Floating Filter\n mergeParamsWithApplicationProvidedParams(defObject, type, paramsFromGrid, paramsFromSelector = null, defaultCompParams) {\n const params = this.gos.getGridCommonParams();\n _mergeDeep(params, paramsFromGrid);\n if (defaultCompParams) {\n _mergeDeep(params, defaultCompParams);\n }\n const defObjectAny = defObject;\n const userParams = defObjectAny && defObjectAny[type.propertyName + \"Params\"];\n if (typeof userParams === \"function\") {\n const userParamsFromFunc = userParams(paramsFromGrid);\n _mergeDeep(params, userParamsFromFunc);\n } else if (typeof userParams === \"object\") {\n _mergeDeep(params, userParams);\n }\n _mergeDeep(params, paramsFromSelector);\n return params;\n }\n initComponent(component, params) {\n this.createBean(component);\n if (component.init == null) {\n return;\n }\n return component.init(params);\n }\n};\n\n// community-modules/core/src/components/framework/unwrapUserComp.ts\nfunction _unwrapUserComp(comp) {\n const compAsAny = comp;\n const isProxy = compAsAny != null && compAsAny.getFrameworkComponentInstance != null;\n return isProxy ? compAsAny.getFrameworkComponentInstance() : comp;\n}\n\n// community-modules/core/src/modules/moduleRegistry.ts\nvar _ModuleRegistry = class _ModuleRegistry {\n /**\n * Globally register the given module for all grids.\n * @param module - module to register\n */\n static register(module) {\n _ModuleRegistry.__register(module, true, void 0);\n }\n /**\n * Globally register the given modules for all grids.\n * @param modules - modules to register\n */\n static registerModules(modules) {\n _ModuleRegistry.__registerModules(modules, true, void 0);\n }\n /** AG GRID INTERNAL - Module registration helper. */\n static __register(module, moduleBased, gridId) {\n _ModuleRegistry.runVersionChecks(module);\n if (gridId !== void 0) {\n _ModuleRegistry.areGridScopedModules = true;\n if (_ModuleRegistry.gridModulesMap[gridId] === void 0) {\n _ModuleRegistry.gridModulesMap[gridId] = {};\n }\n _ModuleRegistry.gridModulesMap[gridId][module.moduleName] = module;\n } else {\n _ModuleRegistry.globalModulesMap[module.moduleName] = module;\n }\n _ModuleRegistry.setModuleBased(moduleBased);\n }\n /** AG GRID INTERNAL - Unregister grid scoped module. */\n static __unRegisterGridModules(gridId) {\n delete _ModuleRegistry.gridModulesMap[gridId];\n }\n /** AG GRID INTERNAL - Module registration helper. */\n static __registerModules(modules, moduleBased, gridId) {\n _ModuleRegistry.setModuleBased(moduleBased);\n if (!modules) {\n return;\n }\n modules.forEach((module) => _ModuleRegistry.__register(module, moduleBased, gridId));\n }\n static isValidModuleVersion(module) {\n const [moduleMajor, moduleMinor] = module.version.split(\".\") || [];\n const [currentModuleMajor, currentModuleMinor] = _ModuleRegistry.currentModuleVersion.split(\".\") || [];\n return moduleMajor === currentModuleMajor && moduleMinor === currentModuleMinor;\n }\n static runVersionChecks(module) {\n if (!_ModuleRegistry.currentModuleVersion) {\n _ModuleRegistry.currentModuleVersion = module.version;\n }\n const errorMsg = (details) => `You are using incompatible versions of AG Grid modules. Major and minor versions should always match across modules. ${details} Please update all modules to the same version.`;\n if (!module.version) {\n _errorOnce(errorMsg(`'${module.moduleName}' is incompatible.`));\n } else if (!_ModuleRegistry.isValidModuleVersion(module)) {\n _errorOnce(\n errorMsg(\n `'${module.moduleName}' is version ${module.version} but the other modules are version ${_ModuleRegistry.currentModuleVersion}.`\n )\n );\n }\n if (module.validate) {\n const result = module.validate();\n if (!result.isValid) {\n const errorResult = result;\n _errorOnce(`${errorResult.message}`);\n }\n }\n }\n static setModuleBased(moduleBased) {\n if (_ModuleRegistry.moduleBased === void 0) {\n _ModuleRegistry.moduleBased = moduleBased;\n } else {\n if (_ModuleRegistry.moduleBased !== moduleBased) {\n _errorOnce(\n `AG Grid: You are mixing modules (i.e. @ag-grid-community/core) and packages (ag-grid-community) - you can only use one or the other of these mechanisms.`\n );\n _errorOnce(\"Please see https://www.ag-grid.com/javascript-grid/modules/ for more information.\");\n }\n }\n }\n /**\n * AG GRID INTERNAL - Set if files are being served from a single UMD bundle to provide accurate enterprise upgrade steps.\n */\n static __setIsBundled() {\n _ModuleRegistry.isBundled = true;\n }\n /** AG GRID INTERNAL - Assert a given module has been register, globally or individually with this grid. */\n static __assertRegistered(moduleName, reason, gridId) {\n if (this.__isRegistered(moduleName, gridId)) {\n return true;\n }\n let warningMessage;\n if (_ModuleRegistry.isBundled) {\n {\n warningMessage = `AG Grid: unable to use ${reason} as 'ag-grid-enterprise' has not been loaded. Check you are using the Enterprise bundle:\n \n \n * ```\n *\n * Elements by their ID are made available in browsers on the `window` object.\n * Using a prefix prevents this from being a problem.\n * @property {string} [footnoteLabel='Footnotes']\n * Label to use for the footnotes section.\n * Affects screen reader users.\n * Change it if you’re authoring in a different language.\n * @property {string} [footnoteLabelTagName='h2']\n * HTML tag to use for the footnote label.\n * Can be changed to match your document structure and play well with your choice of css.\n * @property {Properties} [footnoteLabelProperties={className: ['sr-only']}]\n * Properties to use on the footnote label.\n * A 'sr-only' class is added by default to hide this from sighted users.\n * Change it to make the label visible, or add classes for other purposes.\n * @property {string} [footnoteBackLabel='Back to content']\n * Label to use from backreferences back to their footnote call.\n * Affects screen reader users.\n * Change it if you’re authoring in a different language.\n * @property {Handlers} [handlers]\n * Object mapping mdast nodes to functions handling them\n * @property {Array} [passThrough]\n * List of custom mdast node types to pass through (keep) in hast\n * @property {Handler} [unknownHandler]\n * Handler for all unknown nodes.\n *\n * @typedef {Record} Handlers\n * Map of node types to handlers\n * @typedef {HFunctionProps & HFunctionNoProps & HFields} H\n * Handle context\n */\n\nimport {u} from 'unist-builder'\nimport {visit} from 'unist-util-visit'\nimport {pointStart, pointEnd} from 'unist-util-position'\nimport {generated} from 'unist-util-generated'\nimport {definitions} from 'mdast-util-definitions'\nimport {one} from './traverse.js'\nimport {footer} from './footer.js'\nimport {handlers} from './handlers/index.js'\n\nconst own = {}.hasOwnProperty\n\n/**\n * Turn mdast into hast.\n *\n * @param {MdastNode} tree\n * mdast node.\n * @param {Options} [options]\n * Configuration (optional).\n * @returns {H}\n * `h` function.\n */\nfunction factory(tree, options) {\n const settings = options || {}\n const dangerous = settings.allowDangerousHtml || false\n /** @type {Record} */\n const footnoteById = {}\n\n h.dangerous = dangerous\n h.clobberPrefix =\n settings.clobberPrefix === undefined || settings.clobberPrefix === null\n ? 'user-content-'\n : settings.clobberPrefix\n h.footnoteLabel = settings.footnoteLabel || 'Footnotes'\n h.footnoteLabelTagName = settings.footnoteLabelTagName || 'h2'\n h.footnoteLabelProperties = settings.footnoteLabelProperties || {\n className: ['sr-only']\n }\n h.footnoteBackLabel = settings.footnoteBackLabel || 'Back to content'\n h.definition = definitions(tree)\n h.footnoteById = footnoteById\n /** @type {Array} */\n h.footnoteOrder = []\n /** @type {Record} */\n h.footnoteCounts = {}\n h.augment = augment\n h.handlers = {...handlers, ...settings.handlers}\n h.unknownHandler = settings.unknownHandler\n h.passThrough = settings.passThrough\n\n visit(tree, 'footnoteDefinition', (definition) => {\n const id = String(definition.identifier).toUpperCase()\n\n // Mimick CM behavior of link definitions.\n // See: .\n if (!own.call(footnoteById, id)) {\n footnoteById[id] = definition\n }\n })\n\n // @ts-expect-error Hush, it’s fine!\n return h\n\n /**\n * Finalise the created `right`, a hast node, from `left`, an mdast node.\n *\n * @param {(NodeWithData|PositionLike)?} left\n * @param {Content} right\n * @returns {Content}\n */\n function augment(left, right) {\n // Handle `data.hName`, `data.hProperties, `data.hChildren`.\n if (left && 'data' in left && left.data) {\n /** @type {Data} */\n const data = left.data\n\n if (data.hName) {\n if (right.type !== 'element') {\n right = {\n type: 'element',\n tagName: '',\n properties: {},\n children: []\n }\n }\n\n right.tagName = data.hName\n }\n\n if (right.type === 'element' && data.hProperties) {\n right.properties = {...right.properties, ...data.hProperties}\n }\n\n if ('children' in right && right.children && data.hChildren) {\n right.children = data.hChildren\n }\n }\n\n if (left) {\n const ctx = 'type' in left ? left : {position: left}\n\n if (!generated(ctx)) {\n // @ts-expect-error: fine.\n right.position = {start: pointStart(ctx), end: pointEnd(ctx)}\n }\n }\n\n return right\n }\n\n /**\n * Create an element for `node`.\n *\n * @type {HFunctionProps}\n */\n function h(node, tagName, props, children) {\n if (Array.isArray(props)) {\n children = props\n props = {}\n }\n\n // @ts-expect-error augmenting an element yields an element.\n return augment(node, {\n type: 'element',\n tagName,\n properties: props || {},\n children: children || []\n })\n }\n}\n\n/**\n * Transform `tree` (an mdast node) to a hast node.\n *\n * @param {MdastNode} tree mdast node\n * @param {Options} [options] Configuration\n * @returns {HastNode|null|undefined} hast node\n */\nexport function toHast(tree, options) {\n const h = factory(tree, options)\n const node = one(h, tree, null)\n const foot = footer(h)\n\n if (foot) {\n // @ts-expect-error If there’s a footer, there were definitions, meaning block\n // content.\n // So assume `node` is a parent node.\n node.children.push(u('text', '\\n'), foot)\n }\n\n return Array.isArray(node) ? {type: 'root', children: node} : node\n}\n\nexport {handlers as defaultHandlers} from './handlers/index.js'\n","/**\n * @typedef {Object} PointLike\n * @property {number} [line]\n * @property {number} [column]\n * @property {number} [offset]\n *\n * @typedef {Object} PositionLike\n * @property {PointLike} [start]\n * @property {PointLike} [end]\n *\n * @typedef {Object} NodeLike\n * @property {PositionLike} [position]\n */\n\n/**\n * Check if `node` is *generated*.\n *\n * @param {NodeLike} [node]\n * @returns {boolean}\n */\nexport function generated(node) {\n return (\n !node ||\n !node.position ||\n !node.position.start ||\n !node.position.start.line ||\n !node.position.start.column ||\n !node.position.end ||\n !node.position.end.line ||\n !node.position.end.column\n )\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('./index.js').H} H\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\nimport {u} from 'unist-builder'\nimport {all} from './traverse.js'\nimport {wrap} from './wrap.js'\n\n/**\n * @param {H} h\n * @returns {Element|null}\n */\nexport function footer(h) {\n let index = -1\n /** @type {Array} */\n const listItems = []\n\n while (++index < h.footnoteOrder.length) {\n const def = h.footnoteById[h.footnoteOrder[index].toUpperCase()]\n\n if (!def) {\n continue\n }\n\n const content = all(h, def)\n const id = String(def.identifier)\n const safeId = normalizeUri(id.toLowerCase())\n let referenceIndex = 0\n /** @type {Array} */\n const backReferences = []\n\n while (++referenceIndex <= h.footnoteCounts[id]) {\n /** @type {Element} */\n const backReference = {\n type: 'element',\n tagName: 'a',\n properties: {\n href:\n '#' +\n h.clobberPrefix +\n 'fnref-' +\n safeId +\n (referenceIndex > 1 ? '-' + referenceIndex : ''),\n dataFootnoteBackref: true,\n className: ['data-footnote-backref'],\n ariaLabel: h.footnoteBackLabel\n },\n children: [{type: 'text', value: '↩'}]\n }\n\n if (referenceIndex > 1) {\n backReference.children.push({\n type: 'element',\n tagName: 'sup',\n children: [{type: 'text', value: String(referenceIndex)}]\n })\n }\n\n if (backReferences.length > 0) {\n backReferences.push({type: 'text', value: ' '})\n }\n\n backReferences.push(backReference)\n }\n\n const tail = content[content.length - 1]\n\n if (tail && tail.type === 'element' && tail.tagName === 'p') {\n const tailTail = tail.children[tail.children.length - 1]\n if (tailTail && tailTail.type === 'text') {\n tailTail.value += ' '\n } else {\n tail.children.push({type: 'text', value: ' '})\n }\n\n tail.children.push(...backReferences)\n } else {\n content.push(...backReferences)\n }\n\n /** @type {Element} */\n const listItem = {\n type: 'element',\n tagName: 'li',\n properties: {id: h.clobberPrefix + 'fn-' + safeId},\n children: wrap(content, true)\n }\n\n if (def.position) {\n listItem.position = def.position\n }\n\n listItems.push(listItem)\n }\n\n if (listItems.length === 0) {\n return null\n }\n\n return {\n type: 'element',\n tagName: 'section',\n properties: {dataFootnotes: true, className: ['footnotes']},\n children: [\n {\n type: 'element',\n tagName: h.footnoteLabelTagName,\n properties: {\n ...JSON.parse(JSON.stringify(h.footnoteLabelProperties)),\n id: 'footnote-label'\n },\n children: [u('text', h.footnoteLabel)]\n },\n {type: 'text', value: '\\n'},\n {\n type: 'element',\n tagName: 'ol',\n properties: {},\n children: wrap(listItems, true)\n },\n {type: 'text', value: '\\n'}\n ]\n }\n}\n","/**\n * @typedef {import('hast').Root} HastRoot\n * @typedef {import('mdast').Root} MdastRoot\n * @typedef {import('mdast-util-to-hast').Options} Options\n * @typedef {import('unified').Processor} Processor\n *\n * @typedef {import('mdast-util-to-hast')} DoNotTouchAsThisImportIncludesRawInTree\n */\n\nimport {toHast} from 'mdast-util-to-hast'\n\n// Note: the `` overload doesn’t seem to work :'(\n\n/**\n * Plugin that turns markdown into HTML to support rehype.\n *\n * * If a destination processor is given, that processor runs with a new HTML\n * (hast) tree (bridge-mode).\n * As the given processor runs with a hast tree, and rehype plugins support\n * hast, that means rehype plugins can be used with the given processor.\n * The hast tree is discarded in the end.\n * It’s highly unlikely that you want to do this.\n * * The common case is to not pass a destination processor, in which case the\n * current processor continues running with a new HTML (hast) tree\n * (mutate-mode).\n * As the current processor continues with a hast tree, and rehype plugins\n * support hast, that means rehype plugins can be used after\n * `remark-rehype`.\n * It’s likely that this is what you want to do.\n *\n * @param destination\n * Optional unified processor.\n * @param options\n * Options passed to `mdast-util-to-hast`.\n */\nconst remarkRehype =\n /** @type {(import('unified').Plugin<[Processor, Options?]|[null|undefined, Options?]|[Options]|[], MdastRoot>)} */\n (\n function (destination, options) {\n return destination && 'run' in destination\n ? bridge(destination, options)\n : mutate(destination || options)\n }\n )\n\nexport default remarkRehype\n\n/**\n * Bridge-mode.\n * Runs the destination with the new hast tree.\n *\n * @type {import('unified').Plugin<[Processor, Options?], MdastRoot>}\n */\nfunction bridge(destination, options) {\n return (node, file, next) => {\n destination.run(toHast(node, options), file, (error) => {\n next(error)\n })\n }\n}\n\n/**\n * Mutate-mode.\n * Further plugins run on the hast tree.\n *\n * @type {import('unified').Plugin<[Options?]|void[], MdastRoot, HastRoot>}\n */\nfunction mutate(options) {\n // @ts-expect-error: assume a corresponding node is returned by `toHast`.\n return (node) => toHast(node, options)\n}\n","/**\n * @typedef {import('./info.js').Info} Info\n * @typedef {Record} Properties\n * @typedef {Record} Normal\n */\n\nexport class Schema {\n /**\n * @constructor\n * @param {Properties} property\n * @param {Normal} normal\n * @param {string} [space]\n */\n constructor(property, normal, space) {\n this.property = property\n this.normal = normal\n if (space) {\n this.space = space\n }\n }\n}\n\n/** @type {Properties} */\nSchema.prototype.property = {}\n/** @type {Normal} */\nSchema.prototype.normal = {}\n/** @type {string|null} */\nSchema.prototype.space = null\n","/**\n * @typedef {import('./schema.js').Properties} Properties\n * @typedef {import('./schema.js').Normal} Normal\n */\n\nimport {Schema} from './schema.js'\n\n/**\n * @param {Schema[]} definitions\n * @param {string} [space]\n * @returns {Schema}\n */\nexport function merge(definitions, space) {\n /** @type {Properties} */\n const property = {}\n /** @type {Normal} */\n const normal = {}\n let index = -1\n\n while (++index < definitions.length) {\n Object.assign(property, definitions[index].property)\n Object.assign(normal, definitions[index].normal)\n }\n\n return new Schema(property, normal, space)\n}\n","/**\n * @param {string} value\n * @returns {string}\n */\nexport function normalize(value) {\n return value.toLowerCase()\n}\n","export class Info {\n /**\n * @constructor\n * @param {string} property\n * @param {string} attribute\n */\n constructor(property, attribute) {\n /** @type {string} */\n this.property = property\n /** @type {string} */\n this.attribute = attribute\n }\n}\n\n/** @type {string|null} */\nInfo.prototype.space = null\nInfo.prototype.boolean = false\nInfo.prototype.booleanish = false\nInfo.prototype.overloadedBoolean = false\nInfo.prototype.number = false\nInfo.prototype.commaSeparated = false\nInfo.prototype.spaceSeparated = false\nInfo.prototype.commaOrSpaceSeparated = false\nInfo.prototype.mustUseProperty = false\nInfo.prototype.defined = false\n","let powers = 0\n\nexport const boolean = increment()\nexport const booleanish = increment()\nexport const overloadedBoolean = increment()\nexport const number = increment()\nexport const spaceSeparated = increment()\nexport const commaSeparated = increment()\nexport const commaOrSpaceSeparated = increment()\n\nfunction increment() {\n return 2 ** ++powers\n}\n","import {Info} from './info.js'\nimport * as types from './types.js'\n\n/** @type {Array} */\n// @ts-expect-error: hush.\nconst checks = Object.keys(types)\n\nexport class DefinedInfo extends Info {\n /**\n * @constructor\n * @param {string} property\n * @param {string} attribute\n * @param {number|null} [mask]\n * @param {string} [space]\n */\n constructor(property, attribute, mask, space) {\n let index = -1\n\n super(property, attribute)\n\n mark(this, 'space', space)\n\n if (typeof mask === 'number') {\n while (++index < checks.length) {\n const check = checks[index]\n mark(this, checks[index], (mask & types[check]) === types[check])\n }\n }\n }\n}\n\nDefinedInfo.prototype.defined = true\n\n/**\n * @param {DefinedInfo} values\n * @param {string} key\n * @param {unknown} value\n */\nfunction mark(values, key, value) {\n if (value) {\n // @ts-expect-error: assume `value` matches the expected value of `key`.\n values[key] = value\n }\n}\n","/**\n * @typedef {import('./schema.js').Properties} Properties\n * @typedef {import('./schema.js').Normal} Normal\n *\n * @typedef {Record} Attributes\n *\n * @typedef {Object} Definition\n * @property {Record} properties\n * @property {(attributes: Attributes, property: string) => string} transform\n * @property {string} [space]\n * @property {Attributes} [attributes]\n * @property {Array} [mustUseProperty]\n */\n\nimport {normalize} from '../normalize.js'\nimport {Schema} from './schema.js'\nimport {DefinedInfo} from './defined-info.js'\n\nconst own = {}.hasOwnProperty\n\n/**\n * @param {Definition} definition\n * @returns {Schema}\n */\nexport function create(definition) {\n /** @type {Properties} */\n const property = {}\n /** @type {Normal} */\n const normal = {}\n /** @type {string} */\n let prop\n\n for (prop in definition.properties) {\n if (own.call(definition.properties, prop)) {\n const value = definition.properties[prop]\n const info = new DefinedInfo(\n prop,\n definition.transform(definition.attributes || {}, prop),\n value,\n definition.space\n )\n\n if (\n definition.mustUseProperty &&\n definition.mustUseProperty.includes(prop)\n ) {\n info.mustUseProperty = true\n }\n\n property[prop] = info\n\n normal[normalize(prop)] = prop\n normal[normalize(info.attribute)] = prop\n }\n }\n\n return new Schema(property, normal, definition.space)\n}\n","import {create} from './util/create.js'\n\nexport const xlink = create({\n space: 'xlink',\n transform(_, prop) {\n return 'xlink:' + prop.slice(5).toLowerCase()\n },\n properties: {\n xLinkActuate: null,\n xLinkArcRole: null,\n xLinkHref: null,\n xLinkRole: null,\n xLinkShow: null,\n xLinkTitle: null,\n xLinkType: null\n }\n})\n","import {create} from './util/create.js'\n\nexport const xml = create({\n space: 'xml',\n transform(_, prop) {\n return 'xml:' + prop.slice(3).toLowerCase()\n },\n properties: {xmlLang: null, xmlBase: null, xmlSpace: null}\n})\n","/**\n * @param {Record} attributes\n * @param {string} attribute\n * @returns {string}\n */\nexport function caseSensitiveTransform(attributes, attribute) {\n return attribute in attributes ? attributes[attribute] : attribute\n}\n","import {caseSensitiveTransform} from './case-sensitive-transform.js'\n\n/**\n * @param {Record} attributes\n * @param {string} property\n * @returns {string}\n */\nexport function caseInsensitiveTransform(attributes, property) {\n return caseSensitiveTransform(attributes, property.toLowerCase())\n}\n","import {create} from './util/create.js'\nimport {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\n\nexport const xmlns = create({\n space: 'xmlns',\n attributes: {xmlnsxlink: 'xmlns:xlink'},\n transform: caseInsensitiveTransform,\n properties: {xmlns: null, xmlnsXLink: null}\n})\n","import {booleanish, number, spaceSeparated} from './util/types.js'\nimport {create} from './util/create.js'\n\nexport const aria = create({\n transform(_, prop) {\n return prop === 'role' ? prop : 'aria-' + prop.slice(4).toLowerCase()\n },\n properties: {\n ariaActiveDescendant: null,\n ariaAtomic: booleanish,\n ariaAutoComplete: null,\n ariaBusy: booleanish,\n ariaChecked: booleanish,\n ariaColCount: number,\n ariaColIndex: number,\n ariaColSpan: number,\n ariaControls: spaceSeparated,\n ariaCurrent: null,\n ariaDescribedBy: spaceSeparated,\n ariaDetails: null,\n ariaDisabled: booleanish,\n ariaDropEffect: spaceSeparated,\n ariaErrorMessage: null,\n ariaExpanded: booleanish,\n ariaFlowTo: spaceSeparated,\n ariaGrabbed: booleanish,\n ariaHasPopup: null,\n ariaHidden: booleanish,\n ariaInvalid: null,\n ariaKeyShortcuts: null,\n ariaLabel: null,\n ariaLabelledBy: spaceSeparated,\n ariaLevel: number,\n ariaLive: null,\n ariaModal: booleanish,\n ariaMultiLine: booleanish,\n ariaMultiSelectable: booleanish,\n ariaOrientation: null,\n ariaOwns: spaceSeparated,\n ariaPlaceholder: null,\n ariaPosInSet: number,\n ariaPressed: booleanish,\n ariaReadOnly: booleanish,\n ariaRelevant: null,\n ariaRequired: booleanish,\n ariaRoleDescription: spaceSeparated,\n ariaRowCount: number,\n ariaRowIndex: number,\n ariaRowSpan: number,\n ariaSelected: booleanish,\n ariaSetSize: number,\n ariaSort: null,\n ariaValueMax: number,\n ariaValueMin: number,\n ariaValueNow: number,\n ariaValueText: null,\n role: null\n }\n})\n","import {\n boolean,\n overloadedBoolean,\n booleanish,\n number,\n spaceSeparated,\n commaSeparated\n} from './util/types.js'\nimport {create} from './util/create.js'\nimport {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\n\nexport const html = create({\n space: 'html',\n attributes: {\n acceptcharset: 'accept-charset',\n classname: 'class',\n htmlfor: 'for',\n httpequiv: 'http-equiv'\n },\n transform: caseInsensitiveTransform,\n mustUseProperty: ['checked', 'multiple', 'muted', 'selected'],\n properties: {\n // Standard Properties.\n abbr: null,\n accept: commaSeparated,\n acceptCharset: spaceSeparated,\n accessKey: spaceSeparated,\n action: null,\n allow: null,\n allowFullScreen: boolean,\n allowPaymentRequest: boolean,\n allowUserMedia: boolean,\n alt: null,\n as: null,\n async: boolean,\n autoCapitalize: null,\n autoComplete: spaceSeparated,\n autoFocus: boolean,\n autoPlay: boolean,\n capture: boolean,\n charSet: null,\n checked: boolean,\n cite: null,\n className: spaceSeparated,\n cols: number,\n colSpan: null,\n content: null,\n contentEditable: booleanish,\n controls: boolean,\n controlsList: spaceSeparated,\n coords: number | commaSeparated,\n crossOrigin: null,\n data: null,\n dateTime: null,\n decoding: null,\n default: boolean,\n defer: boolean,\n dir: null,\n dirName: null,\n disabled: boolean,\n download: overloadedBoolean,\n draggable: booleanish,\n encType: null,\n enterKeyHint: null,\n form: null,\n formAction: null,\n formEncType: null,\n formMethod: null,\n formNoValidate: boolean,\n formTarget: null,\n headers: spaceSeparated,\n height: number,\n hidden: boolean,\n high: number,\n href: null,\n hrefLang: null,\n htmlFor: spaceSeparated,\n httpEquiv: spaceSeparated,\n id: null,\n imageSizes: null,\n imageSrcSet: null,\n inputMode: null,\n integrity: null,\n is: null,\n isMap: boolean,\n itemId: null,\n itemProp: spaceSeparated,\n itemRef: spaceSeparated,\n itemScope: boolean,\n itemType: spaceSeparated,\n kind: null,\n label: null,\n lang: null,\n language: null,\n list: null,\n loading: null,\n loop: boolean,\n low: number,\n manifest: null,\n max: null,\n maxLength: number,\n media: null,\n method: null,\n min: null,\n minLength: number,\n multiple: boolean,\n muted: boolean,\n name: null,\n nonce: null,\n noModule: boolean,\n noValidate: boolean,\n onAbort: null,\n onAfterPrint: null,\n onAuxClick: null,\n onBeforeMatch: null,\n onBeforePrint: null,\n onBeforeUnload: null,\n onBlur: null,\n onCancel: null,\n onCanPlay: null,\n onCanPlayThrough: null,\n onChange: null,\n onClick: null,\n onClose: null,\n onContextLost: null,\n onContextMenu: null,\n onContextRestored: null,\n onCopy: null,\n onCueChange: null,\n onCut: null,\n onDblClick: null,\n onDrag: null,\n onDragEnd: null,\n onDragEnter: null,\n onDragExit: null,\n onDragLeave: null,\n onDragOver: null,\n onDragStart: null,\n onDrop: null,\n onDurationChange: null,\n onEmptied: null,\n onEnded: null,\n onError: null,\n onFocus: null,\n onFormData: null,\n onHashChange: null,\n onInput: null,\n onInvalid: null,\n onKeyDown: null,\n onKeyPress: null,\n onKeyUp: null,\n onLanguageChange: null,\n onLoad: null,\n onLoadedData: null,\n onLoadedMetadata: null,\n onLoadEnd: null,\n onLoadStart: null,\n onMessage: null,\n onMessageError: null,\n onMouseDown: null,\n onMouseEnter: null,\n onMouseLeave: null,\n onMouseMove: null,\n onMouseOut: null,\n onMouseOver: null,\n onMouseUp: null,\n onOffline: null,\n onOnline: null,\n onPageHide: null,\n onPageShow: null,\n onPaste: null,\n onPause: null,\n onPlay: null,\n onPlaying: null,\n onPopState: null,\n onProgress: null,\n onRateChange: null,\n onRejectionHandled: null,\n onReset: null,\n onResize: null,\n onScroll: null,\n onScrollEnd: null,\n onSecurityPolicyViolation: null,\n onSeeked: null,\n onSeeking: null,\n onSelect: null,\n onSlotChange: null,\n onStalled: null,\n onStorage: null,\n onSubmit: null,\n onSuspend: null,\n onTimeUpdate: null,\n onToggle: null,\n onUnhandledRejection: null,\n onUnload: null,\n onVolumeChange: null,\n onWaiting: null,\n onWheel: null,\n open: boolean,\n optimum: number,\n pattern: null,\n ping: spaceSeparated,\n placeholder: null,\n playsInline: boolean,\n poster: null,\n preload: null,\n readOnly: boolean,\n referrerPolicy: null,\n rel: spaceSeparated,\n required: boolean,\n reversed: boolean,\n rows: number,\n rowSpan: number,\n sandbox: spaceSeparated,\n scope: null,\n scoped: boolean,\n seamless: boolean,\n selected: boolean,\n shape: null,\n size: number,\n sizes: null,\n slot: null,\n span: number,\n spellCheck: booleanish,\n src: null,\n srcDoc: null,\n srcLang: null,\n srcSet: null,\n start: number,\n step: null,\n style: null,\n tabIndex: number,\n target: null,\n title: null,\n translate: null,\n type: null,\n typeMustMatch: boolean,\n useMap: null,\n value: booleanish,\n width: number,\n wrap: null,\n\n // Legacy.\n // See: https://html.spec.whatwg.org/#other-elements,-attributes-and-apis\n align: null, // Several. Use CSS `text-align` instead,\n aLink: null, // ``. Use CSS `a:active {color}` instead\n archive: spaceSeparated, // ``. List of URIs to archives\n axis: null, // `` and ``. Use `scope` on ``\n background: null, // ``. Use CSS `background-image` instead\n bgColor: null, // `` and table elements. Use CSS `background-color` instead\n border: number, // ``. Use CSS `border-width` instead,\n borderColor: null, // `
`. Use CSS `border-color` instead,\n bottomMargin: number, // ``\n cellPadding: null, // `
`\n cellSpacing: null, // `
`\n char: null, // Several table elements. When `align=char`, sets the character to align on\n charOff: null, // Several table elements. When `char`, offsets the alignment\n classId: null, // ``\n clear: null, // `
`. Use CSS `clear` instead\n code: null, // ``\n codeBase: null, // ``\n codeType: null, // ``\n color: null, // `` and `
`. Use CSS instead\n compact: boolean, // Lists. Use CSS to reduce space between items instead\n declare: boolean, // ``\n event: null, // `