Cheap
\n####### ########## ############## ############## ####### #########
\nFast
\n####### ########## ############## ############## ####### #########
\nSimple
\n####### ########## ############## ############## ####### #########
\n{"version":3,"sources":["webpack://search-example-site/./node_modules/@babel/runtime/helpers/arrayLikeToArray.js","webpack://search-example-site/./node_modules/@babel/runtime/helpers/arrayWithHoles.js","webpack://search-example-site/./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","webpack://search-example-site/./node_modules/@babel/runtime/helpers/classCallCheck.js","webpack://search-example-site/./node_modules/@babel/runtime/helpers/createClass.js","webpack://search-example-site/./node_modules/@babel/runtime/helpers/defineProperty.js","webpack://search-example-site/./node_modules/@babel/runtime/helpers/esm/AwaitValue.js","webpack://search-example-site/./node_modules/@babel/runtime/helpers/esm/asyncIterator.js","webpack://search-example-site/./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack://search-example-site/./node_modules/@babel/runtime/helpers/esm/awaitAsyncGenerator.js","webpack://search-example-site/./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://search-example-site/./node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelperLoose.js","webpack://search-example-site/./node_modules/@babel/runtime/helpers/esm/objectDestructuringEmpty.js","webpack://search-example-site/./node_modules/@babel/runtime/helpers/esm/objectSpread2.js","webpack://search-example-site/./node_modules/@babel/runtime/helpers/esm/AsyncGenerator.js","webpack://search-example-site/./node_modules/@babel/runtime/helpers/esm/wrapAsyncGenerator.js","webpack://search-example-site/./node_modules/@babel/runtime/helpers/getPrototypeOf.js","webpack://search-example-site/./node_modules/@babel/runtime/helpers/inherits.js","webpack://search-example-site/./node_modules/@babel/runtime/helpers/iterableToArray.js","webpack://search-example-site/./node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","webpack://search-example-site/./node_modules/@babel/runtime/helpers/nonIterableRest.js","webpack://search-example-site/./node_modules/@babel/runtime/helpers/nonIterableSpread.js","webpack://search-example-site/./node_modules/@babel/runtime/helpers/objectWithoutProperties.js","webpack://search-example-site/./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","webpack://search-example-site/./node_modules/@babel/runtime/helpers/slicedToArray.js","webpack://search-example-site/./node_modules/@babel/runtime/helpers/toConsumableArray.js","webpack://search-example-site/./node_modules/@babel/runtime/helpers/typeof.js","webpack://search-example-site/./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","webpack://search-example-site/./node_modules/@babel/runtime/regenerator/index.js","webpack://search-example-site/./node_modules/loglevel/lib/loglevel.js","webpack://search-example-site/./node_modules/mingo/aggregator.js","webpack://search-example-site/./node_modules/mingo/core.js","webpack://search-example-site/./node_modules/mingo/cursor.js","webpack://search-example-site/./node_modules/mingo/index.js","webpack://search-example-site/./node_modules/mingo/init/basic.js","webpack://search-example-site/./node_modules/mingo/lazy.js","webpack://search-example-site/./node_modules/mingo/operators/_predicates.js","webpack://search-example-site/./node_modules/mingo/operators/expression/array/slice.js","webpack://search-example-site/./node_modules/mingo/operators/expression/boolean/and.js","webpack://search-example-site/./node_modules/mingo/operators/expression/boolean/index.js","webpack://search-example-site/./node_modules/mingo/operators/expression/boolean/not.js","webpack://search-example-site/./node_modules/mingo/operators/expression/boolean/or.js","webpack://search-example-site/./node_modules/mingo/operators/expression/comparison.js","webpack://search-example-site/./node_modules/mingo/operators/pipeline/addFields.js","webpack://search-example-site/./node_modules/mingo/operators/pipeline/bucket.js","webpack://search-example-site/./node_modules/mingo/operators/pipeline/bucketAuto.js","webpack://search-example-site/./node_modules/mingo/operators/pipeline/count.js","webpack://search-example-site/./node_modules/mingo/operators/pipeline/facet.js","webpack://search-example-site/./node_modules/mingo/operators/pipeline/group.js","webpack://search-example-site/./node_modules/mingo/operators/pipeline/index.js","webpack://search-example-site/./node_modules/mingo/operators/pipeline/limit.js","webpack://search-example-site/./node_modules/mingo/operators/pipeline/lookup.js","webpack://search-example-site/./node_modules/mingo/operators/pipeline/match.js","webpack://search-example-site/./node_modules/mingo/operators/pipeline/out.js","webpack://search-example-site/./node_modules/mingo/operators/pipeline/project.js","webpack://search-example-site/./node_modules/mingo/operators/pipeline/redact.js","webpack://search-example-site/./node_modules/mingo/operators/pipeline/replaceRoot.js","webpack://search-example-site/./node_modules/mingo/operators/pipeline/replaceWith.js","webpack://search-example-site/./node_modules/mingo/operators/pipeline/sample.js","webpack://search-example-site/./node_modules/mingo/operators/pipeline/set.js","webpack://search-example-site/./node_modules/mingo/operators/pipeline/skip.js","webpack://search-example-site/./node_modules/mingo/operators/pipeline/sort.js","webpack://search-example-site/./node_modules/mingo/operators/pipeline/sortByCount.js","webpack://search-example-site/./node_modules/mingo/operators/pipeline/unset.js","webpack://search-example-site/./node_modules/mingo/operators/pipeline/unwind.js","webpack://search-example-site/./node_modules/mingo/operators/projection/elemMatch.js","webpack://search-example-site/./node_modules/mingo/operators/projection/index.js","webpack://search-example-site/./node_modules/mingo/operators/projection/slice.js","webpack://search-example-site/./node_modules/mingo/operators/query/array/all.js","webpack://search-example-site/./node_modules/mingo/operators/query/array/elemMatch.js","webpack://search-example-site/./node_modules/mingo/operators/query/array/index.js","webpack://search-example-site/./node_modules/mingo/operators/query/array/size.js","webpack://search-example-site/./node_modules/mingo/operators/query/comparison.js","webpack://search-example-site/./node_modules/mingo/operators/query/element/exists.js","webpack://search-example-site/./node_modules/mingo/operators/query/element/index.js","webpack://search-example-site/./node_modules/mingo/operators/query/element/type.js","webpack://search-example-site/./node_modules/mingo/operators/query/evaluation/expr.js","webpack://search-example-site/./node_modules/mingo/operators/query/evaluation/index.js","webpack://search-example-site/./node_modules/mingo/operators/query/evaluation/mod.js","webpack://search-example-site/./node_modules/mingo/operators/query/evaluation/regex.js","webpack://search-example-site/./node_modules/mingo/operators/query/index.js","webpack://search-example-site/./node_modules/mingo/operators/query/logical/and.js","webpack://search-example-site/./node_modules/mingo/operators/query/logical/index.js","webpack://search-example-site/./node_modules/mingo/operators/query/logical/nor.js","webpack://search-example-site/./node_modules/mingo/operators/query/logical/not.js","webpack://search-example-site/./node_modules/mingo/operators/query/logical/or.js","webpack://search-example-site/./node_modules/mingo/query.js","webpack://search-example-site/./node_modules/mingo/util.js","webpack://search-example-site/./node_modules/n-gram/index.js","webpack://search-example-site/./node_modules/clsx/dist/clsx.m.js","webpack://search-example-site/./node_modules/react-virtualized/dist/es/Grid/utils/calculateSizeAndPositionDataAndUpdateScrollOffset.js","webpack://search-example-site/./node_modules/react-virtualized/dist/es/Grid/utils/CellSizeAndPositionManager.js","webpack://search-example-site/./node_modules/react-virtualized/dist/es/Grid/utils/maxElementSize.js","webpack://search-example-site/./node_modules/react-virtualized/dist/es/Grid/utils/ScalingCellSizeAndPositionManager.js","webpack://search-example-site/./node_modules/react-virtualized/dist/es/utils/createCallbackMemoizer.js","webpack://search-example-site/./node_modules/react-virtualized/dist/es/Grid/utils/updateScrollIndexHelper.js","webpack://search-example-site/./node_modules/dom-helpers/esm/canUseDOM.js","webpack://search-example-site/./node_modules/dom-helpers/esm/scrollbarSize.js","webpack://search-example-site/./node_modules/react-virtualized/dist/es/utils/animationFrame.js","webpack://search-example-site/./node_modules/react-virtualized/dist/es/Grid/Grid.js","webpack://search-example-site/./node_modules/react-virtualized/dist/es/utils/requestAnimationTimeout.js","webpack://search-example-site/./node_modules/react-virtualized/dist/es/Grid/defaultOverscanIndicesGetter.js","webpack://search-example-site/./node_modules/react-virtualized/dist/es/Grid/defaultCellRangeRenderer.js","webpack://search-example-site/./node_modules/react-virtualized/dist/es/Grid/accessibilityOverscanIndicesGetter.js","webpack://search-example-site/./node_modules/react-virtualized/dist/es/ArrowKeyStepper/types.js","webpack://search-example-site/./node_modules/react-virtualized/dist/es/ArrowKeyStepper/ArrowKeyStepper.js","webpack://search-example-site/./node_modules/react-virtualized/dist/es/AutoSizer/AutoSizer.js","webpack://search-example-site/./node_modules/react-virtualized/dist/es/vendor/detectElementResize.js","webpack://search-example-site/./node_modules/react-virtualized/dist/es/CellMeasurer/CellMeasurer.js","webpack://search-example-site/./node_modules/react-virtualized/dist/es/Collection/CollectionView.js","webpack://search-example-site/./node_modules/react-virtualized/dist/es/Collection/Section.js","webpack://search-example-site/./node_modules/react-virtualized/dist/es/Collection/SectionManager.js","webpack://search-example-site/./node_modules/react-virtualized/dist/es/utils/getUpdatedOffsetForIndex.js","webpack://search-example-site/./node_modules/react-virtualized/dist/es/Collection/Collection.js","webpack://search-example-site/./node_modules/react-virtualized/dist/es/Collection/utils/calculateSizeAndPositionData.js","webpack://search-example-site/./node_modules/react-virtualized/dist/es/ColumnSizer/ColumnSizer.js","webpack://search-example-site/./node_modules/react-virtualized/dist/es/ColumnSizer/index.js","webpack://search-example-site/./node_modules/react-virtualized/dist/es/InfiniteLoader/InfiniteLoader.js","webpack://search-example-site/./node_modules/react-virtualized/dist/es/InfiniteLoader/index.js","webpack://search-example-site/./node_modules/react-virtualized/dist/es/List/List.js","webpack://search-example-site/./node_modules/react-virtualized/dist/es/vendor/binarySearchBounds.js","webpack://search-example-site/./node_modules/react-virtualized/dist/es/vendor/intervalTree.js","webpack://search-example-site/./node_modules/react-virtualized/dist/es/Masonry/PositionCache.js","webpack://search-example-site/./node_modules/react-virtualized/dist/es/Masonry/Masonry.js","webpack://search-example-site/./node_modules/react-virtualized/dist/es/Masonry/index.js","webpack://search-example-site/./node_modules/react-virtualized/dist/es/MultiGrid/CellMeasurerCacheDecorator.js","webpack://search-example-site/./node_modules/react-virtualized/dist/es/MultiGrid/MultiGrid.js","webpack://search-example-site/./node_modules/react-virtualized/dist/es/ScrollSync/ScrollSync.js","webpack://search-example-site/./node_modules/react-virtualized/dist/es/Table/SortDirection.js","webpack://search-example-site/./node_modules/react-virtualized/dist/es/Table/SortIndicator.js","webpack://search-example-site/./node_modules/react-virtualized/dist/es/Table/defaultHeaderRenderer.js","webpack://search-example-site/./node_modules/react-virtualized/dist/es/Table/Column.js","webpack://search-example-site/./node_modules/react-virtualized/dist/es/Table/Table.js","webpack://search-example-site/./node_modules/react-virtualized/dist/es/Table/defaultCellDataGetter.js","webpack://search-example-site/./node_modules/react-virtualized/dist/es/Table/defaultCellRenderer.js","webpack://search-example-site/./node_modules/react-virtualized/dist/es/Table/defaultRowRenderer.js","webpack://search-example-site/./node_modules/react-virtualized/dist/es/Table/defaultHeaderRowRenderer.js","webpack://search-example-site/./node_modules/react-virtualized/dist/es/Table/index.js","webpack://search-example-site/./node_modules/react-virtualized/dist/es/WindowScroller/utils/onScroll.js","webpack://search-example-site/./node_modules/react-virtualized/dist/es/WindowScroller/utils/dimensions.js","webpack://search-example-site/./node_modules/react-virtualized/dist/es/WindowScroller/WindowScroller.js","webpack://search-example-site/./node_modules/use-debounce/esm/useDebounce.js","webpack://search-example-site/./node_modules/use-debounce/esm/useDebouncedCallback.js","webpack://search-example-site/./node_modules/core-js/internals/add-to-unscopables.js","webpack://search-example-site/./node_modules/core-js/internals/array-species-create.js","webpack://search-example-site/./node_modules/core-js/internals/flatten-into-array.js","webpack://search-example-site/./node_modules/core-js/internals/function-bind-context.js","webpack://search-example-site/./node_modules/core-js/internals/html.js","webpack://search-example-site/./node_modules/core-js/internals/is-array.js","webpack://search-example-site/./node_modules/core-js/internals/object-create.js","webpack://search-example-site/./node_modules/core-js/internals/object-define-properties.js","webpack://search-example-site/./node_modules/core-js/internals/object-keys.js","webpack://search-example-site/./node_modules/core-js/modules/es.array.flat-map.js","webpack://search-example-site/./node_modules/core-js/modules/es.array.unscopables.flat-map.js","webpack://search-example-site/index.ts","webpack://search-example-site/./src/layout/index.js","webpack://search-example-site/./node_modules/regenerator-runtime/runtime.js"],"names":["module","exports","arr","len","length","i","arr2","Array","__esModule","isArray","arrayLikeToArray","instance","Constructor","TypeError","_defineProperties","target","props","descriptor","enumerable","configurable","writable","Object","defineProperty","key","protoProps","staticProps","prototype","obj","value","_AwaitValue","this","wrapped","_asyncIterator","iterable","method","Symbol","asyncIterator","iterator","call","asyncGeneratorStep","gen","resolve","reject","_next","_throw","arg","info","error","done","Promise","then","_asyncToGenerator","fn","self","args","arguments","apply","err","undefined","_awaitAsyncGenerator","_createClass","_createForOfIteratorHelperLoose","o","allowArrayLike","it","next","bind","_objectDestructuringEmpty","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","push","_objectSpread2","source","forEach","getOwnPropertyDescriptors","defineProperties","AsyncGenerator","front","back","resume","result","wrappedAwait","AwaitValue","settle","type","_invoke","request","_wrapAsyncGenerator","_getPrototypeOf","setPrototypeOf","getPrototypeOf","__proto__","subClass","superClass","create","constructor","iter","from","_i","_s","_e","_arr","_n","_d","objectWithoutPropertiesLoose","excluded","sourceSymbolKeys","indexOf","propertyIsEnumerable","_typeof","assertThisInitialized","arrayWithHoles","iterableToArrayLimit","unsupportedIterableToArray","nonIterableRest","arrayWithoutHoles","iterableToArray","nonIterableSpread","minLen","n","toString","slice","name","test","root","definition","noop","undefinedType","isIE","window","navigator","userAgent","logMethods","bindMethod","methodName","Function","e","traceForIE","console","log","trace","realMethod","replaceLoggingMethods","level","loggerName","methodFactory","debug","enableLoggingWhenConsoleArrives","defaultMethodFactory","Logger","defaultLevel","factory","currentLevel","storageKey","persistLevelIfPossible","levelNum","levelName","toUpperCase","localStorage","ignore","document","cookie","encodeURIComponent","getPersistedLevel","storedLevel","location","exec","levels","getLevel","setLevel","persist","SILENT","setDefaultLevel","enableAll","TRACE","disableAll","initialLevel","defaultLogger","_loggersByName","getLogger","logger","_log","noConflict","getLoggers","Aggregator","core_1","lazy_1","util_1","pipeline","options","__pipeline","__options","makeOptions","stream","collection","Lazy","isEmpty","_a","operator","operatorKeys","op","getOperator","OperatorType","PIPELINE","assert","run","__spreadArray","to","il","j","redact","computeValue","addOperators","useOperators","assign","idKey","OPERATORS","ACCUMULATOR","EXPRESSION","PROJECTION","QUERY","validateOperatorMap","operators","entries","_b","k","v","isOperator","cls","into","has","operatorType","operatorFactory","customOperators","normalizedOperators","_loop_1","f","selector","lhs","unwrapArray","_c","_loop_2","expr","_f","_g","_h","_loop_3","_j","_k","_l","systemVariables","$$ROOT","$$CURRENT","$$REMOVE","redactVariables","$$KEEP","$$PRUNE","$$DESCEND","newObj","cloneDeep","current","isObjectLike","array","current_1","elem","isObject","isNil","Error","isString","split","substr","map","item","_loop_4","val","some","c","JSON","stringify","state_1","Cursor","aggregator_1","predicate","projection","__predicateFn","__source","__projection","__operators","__result","__stack","_fetch","$project","all","count","skip","$skip","limit","$limit","sort","modifier","$sort","collation","spec","pop","hasNext","callback","each","query_1","aggregator_2","query_2","find","criteria","Query","remove","aggregate","__createBinding","m","k2","get","__setModuleDefault","__importStar","mod","hasOwnProperty","booleanOperators","comparisonOperators","pipeline_1","projectionOperators","queryOperators","Iterator","dropItem","rest","splice","Action","DONE","nextVal","nextFn","iteratees","buffer","index","bufferIndex","__iteratees","__first","__done","__buf","src_1","data_1","size_1","index_1","__next","storeResult","outer","size","innerDone","r","action","MAP","func","FILTER","TAKE","DROP","_validate","_push","take","drop","transform","first","reduce","initialValue","acc","_","$type","$elemMatch","$size","$all","$exists","$regex","$mod","$gte","$gt","$lte","$lt","$nin","$in","$ne","$eq","createExpressionOperator","createQueryOperator","a","b","isEqual","eq","flatten","isNull","intersection","ensureArray","hashFunction","isNonBooleanOperator","format","x","every","temp","query","compareType","BsonType","DOUBLE","DECIMAL","isNumber","JsType","STRING","OBJECT","ARRAY","UNDEFINED","BOOLEAN","BOOL","isBoolean","DATE","isDate","NULL","REGEXP","REGEX","isRegExp","INT","MIN_INT","MAX_INT","LONG","MIN_LONG","MAX_LONG","compare","getType","opts","y","match","matched","inArray","findIndex","t","$slice","Math","max","$and","truthy","__exportStar","p","$not","booleanExpr","$or","$cmp","_predicates_1","$addFields","newFields","newFields_1","field","newValue","setValue","removeValue","$bucket","boundaries","defaultKey","default","lower","upper","outputExpr","output","$sum","boundType","grouped","boundaries_1","groupBy","sorted","lo","hi","mid","round","findInsertIndex","boundKey","_id","$bucketAuto","groupByExpr","bucketCount","buckets","coll","approxBucketSize","computeValueOptimized","memoize","remaining","sortBy","bucketItems","min","values","$count","trim","$facet","objectMap","$group","id","partitions","groups","$lookup","joinColl","collectionResolver","hash","joinColl_1","hashCode","foreignField","localField","as","$match","q","$out","outputColl","processObject","expressionKeys","idOnlyExcluded","foundSlice","foundExclusion","dropKeys","subExpr","subExprObj_1","subExprKeys_1","validateExpression","objPathGraph","resolveGraph","preserveMissing","merge","notInArray","expressionKeys_1","filterMissing","dropKeys_1","check","ID_KEY","$redact","$replaceRoot","newRoot","$replaceWith","replaceRoot_1","$sample","xs","floor","random","$set","addFields_1","sortKeys","cmp","collationSpec","locale","localeOpt","sensitivity","COLLATION_STRENGTH","strength","caseFirst","numeric","numericOrdering","ignorePunctuation","alternate","caseLevel","collator","Intl","Collator","collationComparator","sortedIndex","indexKeys","reverse","indexKeys_1","1","2","3","$sortByCount","group_1","sort_1","newExpr","$unset","project_1","doc","expr_1","$unwind","path","includeArrayIndex","preserveNullAndEmptyArrays","tmp","wrapper","slice_1","exprAsArray","$expr","queries","$nor","or_1","normalize","cursor_1","__criteria","__compiled","_compile","whereOperator","_processOperator","_this","traverse","unique","union","isUndefined","isFunction","Number","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","MISSING","DEFAULT_HASH_FUNC","s","encode","charCodeAt","JS_SIMPLE_TYPES","NUMBER","OBJECT_PROTOTYPE","OBJECT_TYPE_RE","proto","RegExp","prop","objKeys","toLowerCase","toISOString","join","prefix","condition","message","Date","isNaN","FUNCTION","includes","inputs","input","flipped","maxSize","maxResult","lookup","memo","indexes","ys","filtered","depth","flatten2","rhs","nativeType","ka","kb","tempKey","h","xs_1","keyFn","comparator","collection_1","MAX_ARRAY_PUSH","ceil","begin","getValue","force","names","resolve2","subpath_1","unwrap","isIndex","obj_1","parseInt","item_1","OPERATOR_NAME_PATTERN","nGram","Infinity","nGrams","String","bigram","trigram","toVal","mix","str","calculateSizeAndPositionDataAndUpdateScrollOffset","_ref","cellCount","cellSize","computeMetadataCallback","computeMetadataCallbackProps","nextCellsCount","nextCellSize","nextScrollToIndex","scrollToIndex","updateScrollOffsetForScrollToIndex","CellSizeAndPositionManager","cellSizeGetter","estimatedCellSize","_cellSizeGetter","_cellCount","_estimatedCellSize","_ref2","_lastMeasuredIndex","concat","lastMeasuredCellSizeAndPosition","getSizeAndPositionOfLastMeasuredCell","offset","_cellSizeAndPositionData","_lastBatchedIndex","_ref3","_ref3$align","align","containerSize","currentOffset","targetIndex","idealOffset","datum","getSizeAndPositionOfCell","maxOffset","minOffset","totalSize","getTotalSize","params","start","_findNearestCell","stop","high","low","middle","interval","_binarySearch","lastMeasuredIndex","_exponentialSearch","getMaxElementSize","chrome","ScalingCellSizeAndPositionManager","_ref$maxScrollSize","maxScrollSize","_cellSizeAndPositionManager","_maxScrollSize","configure","getCellCount","getEstimatedCellSize","getLastMeasuredIndex","safeTotalSize","offsetPercentage","_getOffsetPercentage","_safeOffsetToOffset","getUpdatedOffsetForIndex","_offsetToSafeOffset","_ref4","getVisibleCellRange","resetCell","_ref5","_ref6","_ref7","createCallbackMemoizer","requireAllKeys","cachedIndices","indices","allInitialized","indexChanged","cachedValue","updateScrollIndexHelper","cellSizeAndPositionManager","previousCellsCount","previousCellSize","previousScrollToAlignment","previousScrollToIndex","previousSize","scrollOffset","scrollToAlignment","sizeJustIncreasedFromZero","updateScrollIndexCallback","hasScrollToIndex","win","createElement","scrollbarSize","recalc","canUseDOM","scrollDiv","style","position","top","width","height","overflow","body","appendChild","offsetWidth","clientWidth","removeChild","_class","_temp","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","setTimeout","cancel","cancelAnimationFrame","webkitCancelAnimationFrame","mozCancelAnimationFrame","oCancelAnimationFrame","msCancelAnimationFrame","clearTimeout","raf","caf","cancelAnimationTimeout","frame","requestAnimationTimeout","delay","now","timeout","_objectSpread","SCROLL_POSITION_CHANGE_REASONS","Grid","_React$PureComponent","_disablePointerEventsTimeoutId","setState","isScrolling","needToResetStyleCache","onSectionRendered","_onGridRenderedMemoizer","columnOverscanStartIndex","_columnStartIndex","columnOverscanStopIndex","_columnStopIndex","columnStartIndex","_renderedColumnStartIndex","columnStopIndex","_renderedColumnStopIndex","rowOverscanStartIndex","_rowStartIndex","rowOverscanStopIndex","_rowStopIndex","rowStartIndex","_renderedRowStartIndex","rowStopIndex","_renderedRowStopIndex","ref","_scrollingContainer","event","handleScrollEvent","columnSizeAndPositionManager","columnCount","_wrapSizeGetter","columnWidth","_getEstimatedColumnSize","rowSizeAndPositionManager","rowCount","rowHeight","_getEstimatedRowSize","state","instanceProps","prevColumnWidth","prevRowHeight","prevColumnCount","prevRowCount","prevIsScrolling","prevScrollToColumn","scrollToColumn","prevScrollToRow","scrollToRow","scrollbarSizeMeasured","scrollDirectionHorizontal","scrollDirectionVertical","scrollLeft","scrollTop","scrollPositionChangeReason","_initialScrollTop","_getCalculatedScrollTop","_initialScrollLeft","_getCalculatedScrollLeft","_ref$alignment","alignment","_ref$columnIndex","columnIndex","_ref$rowIndex","rowIndex","offsetProps","_ref2$scrollLeft","scrollLeftParam","_ref2$scrollTop","scrollTopParam","_debounceScrollEnded","_this$props","autoHeight","autoWidth","totalRowsHeight","totalColumnsWidth","newState","_invokeOnScrollMemoizer","_deferredInvalidateColumnIndex","_deferredInvalidateRowIndex","_this$props2","_ref4$columnIndex","_ref4$rowIndex","_this$props3","_recomputeScrollLeftFlag","_recomputeScrollTopFlag","_styleCache","_cellCache","forceUpdate","_updateScrollLeftForScrollToColumn","_updateScrollTopForScrollToRow","_this$props4","getScrollbarSize","_handleInvalidatedGridSize","prevState","stateUpdate","_getScrollToPositionStateUpdate","sizeIsBiggerThanZero","_invokeOnGridRenderedHelper","_maybeCallOnScrollbarPresenceChange","prevProps","_this2","_this$props5","_this$state","columnOrRowCountJustIncreasedFromZero","_this$props6","autoContainerWidth","className","containerProps","containerRole","containerStyle","noContentRenderer","role","tabIndex","_this$state2","_isScrolling","gridStyle","boxSizing","direction","WebkitOverflowScrolling","willChange","_resetStyleCache","_calculateChildrenToRender","verticalScrollBarSize","horizontalScrollBarSize","_horizontalScrollBarSize","_verticalScrollBarSize","_scrollbarPresenceChanged","overflowX","overflowY","childrenToDisplay","_childrenToDisplay","showNoContentRenderer","_setScrollingContainerRef","onScroll","_onScroll","maxWidth","maxHeight","pointerEvents","cellRenderer","cellRangeRenderer","deferredMeasurementCache","overscanColumnCount","overscanIndicesGetter","overscanRowCount","isScrollingOptOut","visibleColumnIndices","visibleRowIndices","horizontalOffsetAdjustment","getOffsetAdjustment","verticalOffsetAdjustment","overscanColumnIndices","overscanCellsCount","scrollDirection","startIndex","stopIndex","overscanRowIndices","overscanStartIndex","overscanStopIndex","hasFixedHeight","hasFixedWidth","cellCache","parent","styleCache","scrollingResetTimeInterval","_debounceScrollEndedCallback","recomputeGridSize","_this3","_onScrollMemoizer","_this3$props","clientHeight","scrollHeight","scrollWidth","Boolean","onScrollbarPresenceChange","horizontal","vertical","_ref8","_getScrollLeftForScrollToColumnStateUpdate","_getScrollTopForScrollToRowStateUpdate","nextProps","maybeStateA","maybeStateB","estimatedColumnSize","estimatedRowSize","_ref9","finalColumn","scrollBarSize","calculatedScrollLeft","finalRow","calculatedScrollTop","renderedCells","areOffsetsAdjusted","canCacheStyle","rowDatum","columnDatum","isVisible","left","cellRendererParams","renderedCell","ArrowKeyStepper","_getPrototypeOf2","_len","_key","disabled","mode","_this$_getScrollState","_getScrollState","scrollToColumnPrevious","scrollToRowPrevious","_this$_getScrollState2","preventDefault","_updateScrollState","children","_this$_getScrollState3","onKeyDown","_onKeyDown","_onSectionRendered","isControlled","onScrollToChange","createDetectElementResize","nonce","hostWindow","_window","attachEvent","g","requestFrame","cancelFrame","resetTriggers","element","triggers","__resizeTriggers__","expand","firstElementChild","contract","lastElementChild","expandChild","offsetHeight","scrollListener","__resizeRAF__","__resizeLast__","checkTriggers","__resizeListeners__","animation","keyframeprefix","animationstartevent","domPrefixes","startEvents","elm","animationName","animationKeyframes","animationStyle","addResizeListener","ownerDocument","elementStyle","getComputedStyle","getElementById","css","head","getElementsByTagName","setAttribute","styleSheet","cssText","createTextNode","createStyles","resizeTriggersHtml","trustedTypes","staticPolicy","createPolicy","createHTML","innerHTML","addEventListener","__animationListener__","removeResizeListener","detachEvent","removeEventListener","AutoSizer","_React$Component","defaultHeight","defaultWidth","disableHeight","disableWidth","onResize","_parentNode","paddingLeft","paddingRight","paddingTop","paddingBottom","newHeight","newWidth","autoSizer","_autoSizer","parentNode","defaultView","HTMLElement","_detectElementResize","_onResize","outerStyle","childParams","_setRef","CellMeasurer","cache","_this$props$columnInd","_this$props$rowIndex","_this$_getCellMeasure","_getCellMeasurements","getHeight","getWidth","set","Element","warn","_child","_maybeMeasureCell","measure","_measure","registerChild","_registerChild","node","findDOMNode","styleWidth","styleHeight","_this$props2$columnIn","_this$props2$rowIndex","_this$_getCellMeasure2","invalidateCellSizeAfterRender","CollectionView","cellLayoutManager","_onSectionRenderedMemoizer","getLastRenderedIndices","scrollToCell","scrollPosition","getScrollPositionForCell","cellIndex","_setScrollPosition","_enablePointerEventsAfterDelay","isScrollingChange","_scrollbarSize","_cellLayoutManager$ge","totalHeight","totalWidth","cancelable","_scrollbarSizeMeasured","_calculateSizeAndPositionDataOnNextUpdate","_updateScrollPositionForScrollToCell","_invokeOnSectionRenderedHelper","_cellLayoutManager$ge2","horizontalOverscanSize","verticalOverscanSize","_this$state3","_lastRenderedCellCount","_lastRenderedCellLayoutManager","calculateSizeAndPositionData","_cellLayoutManager$ge3","right","bottom","cellRenderers","collectionStyle","Section","_indexMap","_indices","SectionManager","sectionSize","_sectionSize","_cellMetadata","_sections","getSections","section","getCellIndices","sectionXStart","sectionXStop","sectionYStart","sectionYStop","sections","sectionX","sectionY","cellMetadatum","addCellIndex","_ref$align","cellOffset","Collection","context","_lastRenderedCellIndices","_isScrollingChange","_setCollectionViewRef","_collectionView","recomputeCellSizesAndPositions","data","cellSizeAndPositionGetter","cellMetadata","sectionManager","registerCell","_sectionManager","_height","_width","cellGroupRenderer","getCellMetadata","cellRendererProps","ColumnSizer","columnMaxWidth","columnMinWidth","_registeredChild","safeColumnMinWidth","safeColumnMaxWidth","adjustedWidth","getColumnWidth","child","propTypes","InfiniteLoader","_loadMoreRowsMemoizer","_onRowsRendered","autoReload","_doStuff","_lastRenderedStartIndex","_lastRenderedStopIndex","onRowsRendered","unloadedRanges","loadMoreRows","unloadedRange","promise","lastRenderedStartIndex","lastRenderedStopIndex","component","currentIndex","recomputeSize","recomputeRowHeights","forceUpdateReactVirtualizedComponent","isRowLoaded","minimumBatchSize","threshold","rangeStartIndex","rangeStopIndex","potentialStopIndex","_index","firstUnloadedRange","_index2","scanForUnloadedRanges","squashedUnloadedRanges","_loadUnloadedRanges","registeredChild","List","rowRenderer","widthDescriptor","getOffsetForCell","measureAllCells","_ref6$columnIndex","_ref6$rowIndex","scrollToPosition","noRowsRenderer","classNames","_cellRenderer","ge","l","_GEP","_GEA","gt","_GTP","_GTA","lt","_LTP","_LTA","le","_LEP","_LEA","_EQP","_EQA","IntervalTreeNode","leftPoints","rightPoints","copy","rebuild","intervals","ntree","createIntervalTree","rebuildWithInterval","rebuildWithoutInterval","idx","reportLeftRange","cb","reportRightRange","reportRange","compareNumbers","compareBegin","d","compareEnd","pts","leftIntervals","rightIntervals","centerIntervals","IntervalTree","insert","weight","queryPoint","queryInterval","tproto","PositionCache","defaultCellHeight","unmeasuredCellCount","tallestColumnSize","renderCallback","_intervalTree","_leftMap","columnSizeMap","_columnSizeMap","columnHeight","Masonry","eventScrollTop","currentTarget","_getEstimatedTotalHeight","_debounceResetIsScrolling","_positionCache","_invalidateOnUpdateStartIndex","_invalidateOnUpdateStopIndex","_populatePositionCache","_checkInvalidateOnUpdate","_invokeOnScrollCallback","_invokeOnCellsRenderedCallback","_debounceResetIsScrollingId","cellMeasurerCache","keyMapper","overscanByPixels","rowDirection","estimateTotalHeight","shortestColumnSize","measuredCellCount","range","_style","batchSize","_startIndex","_stopIndex","_debounceResetIsScrollingCallback","estimatedColumnCount","_onScrollMemoized","_startIndexMemoized","_stopIndexMemoized","onCellsRendered","cellPositioner","_cellPositioner","setPosition","CellMeasurerCacheDecorator","_cellMeasurerCache","_columnIndexOffset","_rowIndexOffset","_params$columnIndexOf","columnIndexOffset","_params$rowIndexOffse","rowIndexOffset","clear","clearAll","MultiGrid","showHorizontalScrollbar","showVerticalScrollbar","_bottomLeftGrid","_bottomRightGrid","fixedRowCount","fixedColumnCount","scrollInfo","_topLeftGrid","_topRightGrid","_fixedColumnCount","_fixedRowCount","_maybeCalculateCachedStyles","_deferredMeasurementCacheBottomLeftGrid","_deferredMeasurementCacheBottomRightGrid","_deferredMeasurementCacheTopRightGrid","_ref7$columnIndex","_ref7$rowIndex","_ref8$columnIndex","_ref8$rowIndex","adjustedColumnIndex","adjustedRowIndex","_leftGridWidth","_topGridHeight","_this$props7","_this$props8","_prepareForRender","_this$state4","_containerOuterStyle","_containerTopStyle","_renderTopLeftGrid","_renderTopRightGrid","_containerBottomStyle","_renderBottomLeftGrid","_renderBottomRightGrid","_getTopGridHeight","leftGridWidth","_getLeftGridWidth","topGridHeight","resetAll","_this$props9","enableFixedColumnScroll","enableFixedRowScroll","styleBottomLeftGrid","styleBottomRightGrid","styleTopLeftGrid","styleTopRightGrid","sizeChange","_lastRenderedHeight","_lastRenderedWidth","leftSizeChange","_lastRenderedColumnWidth","_lastRenderedFixedColumnCount","topSizeChange","_lastRenderedFixedRowCount","_lastRenderedRowHeight","_lastRenderedStyle","_lastRenderedStyleBottomLeftGrid","_bottomLeftGridStyle","_lastRenderedStyleBottomRightGrid","_bottomRightGridStyle","_lastRenderedStyleTopLeftGrid","_topLeftGridStyle","_lastRenderedStyleTopRightGrid","_topRightGridStyle","hideBottomLeftGridScrollbar","additionalRowCount","_getBottomGridHeight","gridWidth","bottomLeftGrid","_cellRendererBottomLeftGrid","classNameBottomLeftGrid","_onScrollTop","_bottomLeftGridRef","_rowHeightBottomGrid","_cellRendererBottomRightGrid","classNameBottomRightGrid","_columnWidthRightGrid","_onScrollbarPresenceChange","_bottomRightGridRef","_getRightGridWidth","classNameTopLeftGrid","_topLeftGridRef","hideTopRightGridScrollbar","_this$state5","additionalColumnCount","additionalHeight","gridHeight","topRightGrid","_cellRendererTopRightGrid","classNameTopRightGrid","_onScrollLeft","_topRightGridRef","ScrollSync","ASC","DESC","SortIndicator","sortDirection","viewBox","fill","defaultHeaderRenderer","dataKey","label","showSortIndicator","title","Column","cellDataGetter","rowData","cellData","defaultSortDirection","flexGrow","flexShrink","headerRenderer","Table","scrollbarWidth","_createColumn","_createRow","_ref3$columnIndex","_ref3$rowIndex","_Grid","_setScrollbarWidth","disableHeader","gridClassName","headerHeight","headerRowRenderer","rowClassName","rowStyle","availableRowsHeight","rowClass","rowStyleObject","_cachedColumnStyles","column","flexStyles","_getFlexStyleForColumn","columns","_getHeaderColumns","onColumnClick","_column$props","columnData","onClick","headerOnClick","headerOnKeyDown","headerTabIndex","headerAriaSort","headerAriaLabel","headerClassName","headerStyle","onHeaderClick","_column$props2","disableSort","sortEnabled","ReactVirtualized__Table__sortableHeaderColumn","renderedHeader","newSortDirection","onRowClick","onRowDoubleClick","onRowRightClick","onRowMouseOver","onRowMouseOut","rowGetter","flattenedStyle","_getRowHeight","customStyle","flexValue","flex","msFlex","WebkitFlex","minWidth","_this4","_createHeader","getScrollbarWidth","a11yProps","onDoubleClick","onMouseOut","onMouseOver","onContextMenu","mountedInstances","originalBodyPointerEvents","disablePointerEventsTimeoutId","enablePointerEventsIfDisabled","enablePointerEventsAfterDelayCallback","__resetIsScrolling","onScrollWindow","maximumTimeout","enablePointerEventsAfterDelay","scrollElement","__handleWindowScrollEvent","registerScrollListener","unregisterScrollListener","isWindow","getBoundingBox","getBoundingClientRect","getDimensions","innerHeight","innerWidth","serverHeight","serverWidth","getPositionOffset","container","documentElement","containerElement","elementRect","containerRect","getScrollOffset","_elementRect","_containerRect","scrollY","scrollX","getWindow","WindowScroller","updatePosition","scrollTo","_positionFromTop","_isMounted","_positionFromLeft","thisNode","dimensions","_registerResizeListener","prevScrollElement","_unregisterResizeListener","onChildScroll","_onChildScroll","valueEquality","adjustFunctionValueOfSetState","useDebounce","equalityFn","initialState","useState","useCallback","useStateIgnoreCallback","dispatch","debounced","wait","lastCallTime","useRef","lastInvokeTime","timerId","lastArgs","lastThis","funcRef","mounted","useRAF","leading","trailing","maxing","maxWait","useEffect","useMemo","invokeFunc","time","thisArg","startTimer","pendingFunc","shouldInvoke","timeSinceLastCall","timeSinceLastInvoke","trailingEdge","timerExpired","timeWaiting","remainingWait","isInvoking","isPending","flush","useDebouncedCallback","previousValue","wellKnownSymbol","definePropertyModule","UNSCOPABLES","ArrayPrototype","SPECIES","originalArray","C","toLength","flattenIntoArray","original","sourceLen","mapper","sourceIndex","mapFn","aFunction","that","getBuiltIn","classof","activeXDocument","anObject","enumBugKeys","hiddenKeys","html","documentCreateElement","sharedKey","IE_PROTO","EmptyConstructor","scriptTag","content","LT","NullProtoObject","domain","ActiveXObject","iframeDocument","iframe","write","close","parentWindow","NullProtoObjectViaActiveX","display","src","contentWindow","open","F","O","Properties","DESCRIPTORS","objectKeys","internalObjectKeys","$","toObject","arraySpeciesCreate","flatMap","callbackfn","A","addToUnscopables","Layout","isActive","isPartiallyCurrent","href","Link","getProps","runtime","Op","hasOwn","$Symbol","iteratorSymbol","asyncIteratorSymbol","toStringTagSymbol","toStringTag","define","wrap","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","Context","GenStateSuspendedStart","GenStateExecuting","GenStateCompleted","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","record","tryCatch","GenStateSuspendedYield","makeInvokeMethod","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","invoke","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","resultName","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","iteratorMethod","displayName","isGeneratorFunction","genFun","ctor","mark","awrap","async","skipTempReset","prev","charAt","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode"],"mappings":"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","file":"97be475781c276ce8d23146c511aa58eaa20092c-661d8e43c329bd1ccb01.js","sourcesContent":["function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nmodule.exports = _arrayLikeToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\n\nmodule.exports = _arrayWithoutHoles;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","export default function _AwaitValue(value) {\n this.wrapped = value;\n}","export default function _asyncIterator(iterable) {\n var method;\n\n if (typeof Symbol !== \"undefined\") {\n if (Symbol.asyncIterator) method = iterable[Symbol.asyncIterator];\n if (method == null && Symbol.iterator) method = iterable[Symbol.iterator];\n }\n\n if (method == null) method = iterable[\"@@asyncIterator\"];\n if (method == null) method = iterable[\"@@iterator\"];\n if (method == null) throw new TypeError(\"Object is not async iterable\");\n return method.call(iterable);\n}","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}","import AwaitValue from \"./AwaitValue.js\";\nexport default function _awaitAsyncGenerator(value) {\n return new AwaitValue(value);\n}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","import unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nexport default function _createForOfIteratorHelperLoose(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (it) return (it = it.call(o)).next.bind(it);\n\n if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n return function () {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","export default function _objectDestructuringEmpty(obj) {\n if (obj == null) throw new TypeError(\"Cannot destructure undefined\");\n}","import defineProperty from \"./defineProperty.js\";\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nexport default function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}","import AwaitValue from \"./AwaitValue.js\";\nexport default function AsyncGenerator(gen) {\n var front, back;\n\n function send(key, arg) {\n return new Promise(function (resolve, reject) {\n var request = {\n key: key,\n arg: arg,\n resolve: resolve,\n reject: reject,\n next: null\n };\n\n if (back) {\n back = back.next = request;\n } else {\n front = back = request;\n resume(key, arg);\n }\n });\n }\n\n function resume(key, arg) {\n try {\n var result = gen[key](arg);\n var value = result.value;\n var wrappedAwait = value instanceof AwaitValue;\n Promise.resolve(wrappedAwait ? value.wrapped : value).then(function (arg) {\n if (wrappedAwait) {\n resume(key === \"return\" ? \"return\" : \"next\", arg);\n return;\n }\n\n settle(result.done ? \"return\" : \"normal\", arg);\n }, function (err) {\n resume(\"throw\", err);\n });\n } catch (err) {\n settle(\"throw\", err);\n }\n }\n\n function settle(type, value) {\n switch (type) {\n case \"return\":\n front.resolve({\n value: value,\n done: true\n });\n break;\n\n case \"throw\":\n front.reject(value);\n break;\n\n default:\n front.resolve({\n value: value,\n done: false\n });\n break;\n }\n\n front = front.next;\n\n if (front) {\n resume(front.key, front.arg);\n } else {\n back = null;\n }\n }\n\n this._invoke = send;\n\n if (typeof gen[\"return\"] !== \"function\") {\n this[\"return\"] = undefined;\n }\n}\n\nAsyncGenerator.prototype[typeof Symbol === \"function\" && Symbol.asyncIterator || \"@@asyncIterator\"] = function () {\n return this;\n};\n\nAsyncGenerator.prototype.next = function (arg) {\n return this._invoke(\"next\", arg);\n};\n\nAsyncGenerator.prototype[\"throw\"] = function (arg) {\n return this._invoke(\"throw\", arg);\n};\n\nAsyncGenerator.prototype[\"return\"] = function (arg) {\n return this._invoke(\"return\", arg);\n};","import AsyncGenerator from \"./AsyncGenerator.js\";\nexport default function _wrapAsyncGenerator(fn) {\n return function () {\n return new AsyncGenerator(fn.apply(this, arguments));\n };\n}","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _iterableToArrayLimit(arr, i) {\n var _i = arr && (typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]);\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableRest;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableSpread;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var objectWithoutPropertiesLoose = require(\"./objectWithoutPropertiesLoose.js\");\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutProperties;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var _typeof = require(\"@babel/runtime/helpers/typeof\")[\"default\"];\n\nvar assertThisInitialized = require(\"./assertThisInitialized.js\");\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var arrayWithHoles = require(\"./arrayWithHoles.js\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableRest = require(\"./nonIterableRest.js\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var arrayWithoutHoles = require(\"./arrayWithoutHoles.js\");\n\nvar iterableToArray = require(\"./iterableToArray.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread.js\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return typeof obj;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","module.exports = require(\"regenerator-runtime\");\n","/*\n* loglevel - https://github.com/pimterry/loglevel\n*\n* Copyright (c) 2013 Tim Perry\n* Licensed under the MIT license.\n*/\n(function (root, definition) {\n \"use strict\";\n\n if (typeof define === 'function' && define.amd) {\n define(definition);\n } else if (typeof module === 'object' && module.exports) {\n module.exports = definition();\n } else {\n root.log = definition();\n }\n})(this, function () {\n \"use strict\"; // Slightly dubious tricks to cut down minimized file size\n\n var noop = function noop() {};\n\n var undefinedType = \"undefined\";\n var isIE = typeof window !== undefinedType && typeof window.navigator !== undefinedType && /Trident\\/|MSIE /.test(window.navigator.userAgent);\n var logMethods = [\"trace\", \"debug\", \"info\", \"warn\", \"error\"]; // Cross-browser bind equivalent that works at least back to IE6\n\n function bindMethod(obj, methodName) {\n var method = obj[methodName];\n\n if (typeof method.bind === 'function') {\n return method.bind(obj);\n } else {\n try {\n return Function.prototype.bind.call(method, obj);\n } catch (e) {\n // Missing bind shim or IE8 + Modernizr, fallback to wrapping\n return function () {\n return Function.prototype.apply.apply(method, [obj, arguments]);\n };\n }\n }\n } // Trace() doesn't print the message in IE, so for that case we need to wrap it\n\n\n function traceForIE() {\n if (console.log) {\n if (console.log.apply) {\n console.log.apply(console, arguments);\n } else {\n // In old IE, native console methods themselves don't have apply().\n Function.prototype.apply.apply(console.log, [console, arguments]);\n }\n }\n\n if (console.trace) console.trace();\n } // Build the best logging method possible for this env\n // Wherever possible we want to bind, not wrap, to preserve stack traces\n\n\n function realMethod(methodName) {\n if (methodName === 'debug') {\n methodName = 'log';\n }\n\n if (typeof console === undefinedType) {\n return false; // No method possible, for now - fixed later by enableLoggingWhenConsoleArrives\n } else if (methodName === 'trace' && isIE) {\n return traceForIE;\n } else if (console[methodName] !== undefined) {\n return bindMethod(console, methodName);\n } else if (console.log !== undefined) {\n return bindMethod(console, 'log');\n } else {\n return noop;\n }\n } // These private functions always need `this` to be set properly\n\n\n function replaceLoggingMethods(level, loggerName) {\n /*jshint validthis:true */\n for (var i = 0; i < logMethods.length; i++) {\n var methodName = logMethods[i];\n this[methodName] = i < level ? noop : this.methodFactory(methodName, level, loggerName);\n } // Define log.log as an alias for log.debug\n\n\n this.log = this.debug;\n } // In old IE versions, the console isn't present until you first open it.\n // We build realMethod() replacements here that regenerate logging methods\n\n\n function enableLoggingWhenConsoleArrives(methodName, level, loggerName) {\n return function () {\n if (typeof console !== undefinedType) {\n replaceLoggingMethods.call(this, level, loggerName);\n this[methodName].apply(this, arguments);\n }\n };\n } // By default, we use closely bound real methods wherever possible, and\n // otherwise we wait for a console to appear, and then try again.\n\n\n function defaultMethodFactory(methodName, level, loggerName) {\n /*jshint validthis:true */\n return realMethod(methodName) || enableLoggingWhenConsoleArrives.apply(this, arguments);\n }\n\n function Logger(name, defaultLevel, factory) {\n var self = this;\n var currentLevel;\n var storageKey = \"loglevel\";\n\n if (typeof name === \"string\") {\n storageKey += \":\" + name;\n } else if (typeof name === \"symbol\") {\n storageKey = undefined;\n }\n\n function persistLevelIfPossible(levelNum) {\n var levelName = (logMethods[levelNum] || 'silent').toUpperCase();\n if (typeof window === undefinedType || !storageKey) return; // Use localStorage if available\n\n try {\n window.localStorage[storageKey] = levelName;\n return;\n } catch (ignore) {} // Use session cookie as fallback\n\n\n try {\n window.document.cookie = encodeURIComponent(storageKey) + \"=\" + levelName + \";\";\n } catch (ignore) {}\n }\n\n function getPersistedLevel() {\n var storedLevel;\n if (typeof window === undefinedType || !storageKey) return;\n\n try {\n storedLevel = window.localStorage[storageKey];\n } catch (ignore) {} // Fallback to cookies if local storage gives us nothing\n\n\n if (typeof storedLevel === undefinedType) {\n try {\n var cookie = window.document.cookie;\n var location = cookie.indexOf(encodeURIComponent(storageKey) + \"=\");\n\n if (location !== -1) {\n storedLevel = /^([^;]+)/.exec(cookie.slice(location))[1];\n }\n } catch (ignore) {}\n } // If the stored level is not valid, treat it as if nothing was stored.\n\n\n if (self.levels[storedLevel] === undefined) {\n storedLevel = undefined;\n }\n\n return storedLevel;\n }\n /*\n *\n * Public logger API - see https://github.com/pimterry/loglevel for details\n *\n */\n\n\n self.name = name;\n self.levels = {\n \"TRACE\": 0,\n \"DEBUG\": 1,\n \"INFO\": 2,\n \"WARN\": 3,\n \"ERROR\": 4,\n \"SILENT\": 5\n };\n self.methodFactory = factory || defaultMethodFactory;\n\n self.getLevel = function () {\n return currentLevel;\n };\n\n self.setLevel = function (level, persist) {\n if (typeof level === \"string\" && self.levels[level.toUpperCase()] !== undefined) {\n level = self.levels[level.toUpperCase()];\n }\n\n if (typeof level === \"number\" && level >= 0 && level <= self.levels.SILENT) {\n currentLevel = level;\n\n if (persist !== false) {\n // defaults to true\n persistLevelIfPossible(level);\n }\n\n replaceLoggingMethods.call(self, level, name);\n\n if (typeof console === undefinedType && level < self.levels.SILENT) {\n return \"No console available for logging\";\n }\n } else {\n throw \"log.setLevel() called with invalid level: \" + level;\n }\n };\n\n self.setDefaultLevel = function (level) {\n if (!getPersistedLevel()) {\n self.setLevel(level, false);\n }\n };\n\n self.enableAll = function (persist) {\n self.setLevel(self.levels.TRACE, persist);\n };\n\n self.disableAll = function (persist) {\n self.setLevel(self.levels.SILENT, persist);\n }; // Initialize with the right level\n\n\n var initialLevel = getPersistedLevel();\n\n if (initialLevel == null) {\n initialLevel = defaultLevel == null ? \"WARN\" : defaultLevel;\n }\n\n self.setLevel(initialLevel, false);\n }\n /*\n *\n * Top-level API\n *\n */\n\n\n var defaultLogger = new Logger();\n var _loggersByName = {};\n\n defaultLogger.getLogger = function getLogger(name) {\n if (typeof name !== \"symbol\" && typeof name !== \"string\" || name === \"\") {\n throw new TypeError(\"You must supply a name when creating a logger.\");\n }\n\n var logger = _loggersByName[name];\n\n if (!logger) {\n logger = _loggersByName[name] = new Logger(name, defaultLogger.getLevel(), defaultLogger.methodFactory);\n }\n\n return logger;\n }; // Grab the current global log variable in case of overwrite\n\n\n var _log = typeof window !== undefinedType ? window.log : undefined;\n\n defaultLogger.noConflict = function () {\n if (typeof window !== undefinedType && window.log === defaultLogger) {\n window.log = _log;\n }\n\n return defaultLogger;\n };\n\n defaultLogger.getLoggers = function getLoggers() {\n return _loggersByName;\n }; // ES6 default export, for compatibility\n\n\n defaultLogger['default'] = defaultLogger;\n return defaultLogger;\n});","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Aggregator = void 0;\n\nvar core_1 = require(\"./core\");\n\nvar lazy_1 = require(\"./lazy\");\n\nvar util_1 = require(\"./util\");\n/**\n * Provides functionality for the mongoDB aggregation pipeline\n *\n * @param pipeline an Array of pipeline operators\n * @param options An optional Options to pass the aggregator\n * @constructor\n */\n\n\nvar Aggregator =\n/** @class */\nfunction () {\n function Aggregator(pipeline, options) {\n this.__pipeline = pipeline;\n this.__options = core_1.makeOptions(options);\n }\n /**\n * Returns an `Lazy` iterator for processing results of pipeline\n *\n * @param {*} collection An array or iterator object\n * @param {Query} query the `Query` object to use as context\n * @returns {Iterator} an iterator object\n */\n\n\n Aggregator.prototype.stream = function (collection) {\n var iterator = lazy_1.Lazy(collection);\n\n if (!util_1.isEmpty(this.__pipeline)) {\n // run aggregation pipeline\n for (var _i = 0, _a = this.__pipeline; _i < _a.length; _i++) {\n var operator = _a[_i];\n var operatorKeys = Object.keys(operator);\n var op = operatorKeys[0];\n var call = core_1.getOperator(core_1.OperatorType.PIPELINE, op);\n util_1.assert(operatorKeys.length === 1 && !!call, \"invalid aggregation operator \" + op);\n iterator = call(iterator, operator[op], this.__options);\n }\n }\n\n return iterator;\n };\n /**\n * Return the results of the aggregation as an array.\n *\n * @param {*} collection\n * @param {*} query\n */\n\n\n Aggregator.prototype.run = function (collection) {\n return this.stream(collection).value();\n };\n\n return Aggregator;\n}();\n\nexports.Aggregator = Aggregator;","\"use strict\";\n\nvar __spreadArray = this && this.__spreadArray || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++) {\n to[j] = from[i];\n }\n\n return to;\n};\n\nvar _a;\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.redact = exports.computeValue = exports.addOperators = exports.getOperator = exports.useOperators = exports.OperatorType = exports.makeOptions = void 0;\n\nvar util_1 = require(\"./util\");\n/**\n * Creates an Option from another required keys are initialized\n * @param options Options\n */\n\n\nfunction makeOptions(options) {\n return Object.assign({\n idKey: \"_id\"\n }, options || {});\n}\n\nexports.makeOptions = makeOptions;\n/**\n * The different groups of operators\n */\n\nvar OperatorType;\n\n(function (OperatorType) {\n OperatorType[\"ACCUMULATOR\"] = \"accumulator\";\n OperatorType[\"EXPRESSION\"] = \"expression\";\n OperatorType[\"PIPELINE\"] = \"pipeline\";\n OperatorType[\"PROJECTION\"] = \"projection\";\n OperatorType[\"QUERY\"] = \"query\";\n})(OperatorType = exports.OperatorType || (exports.OperatorType = {})); // operator definitions\n\n\nvar OPERATORS = (_a = {}, _a[OperatorType.ACCUMULATOR] = {}, _a[OperatorType.EXPRESSION] = {}, _a[OperatorType.PIPELINE] = {}, _a[OperatorType.PROJECTION] = {}, _a[OperatorType.QUERY] = {}, _a);\n/**\n * Validates the object collection of operators\n */\n\nfunction validateOperatorMap(operators) {\n for (var _i = 0, _a = Object.entries(operators); _i < _a.length; _i++) {\n var _b = _a[_i],\n k = _b[0],\n v = _b[1];\n util_1.assert(v instanceof Function && util_1.isOperator(k), \"invalid operator specified\");\n }\n}\n/**\n * Register fully specified operators for the given operator class.\n *\n * @param cls Category of the operator\n * @param operators Name of operator\n */\n\n\nfunction useOperators(cls, operators) {\n validateOperatorMap(operators);\n util_1.into(OPERATORS[cls], operators);\n}\n\nexports.useOperators = useOperators;\n/**\n * Returns the operator function or null if it is not found\n * @param cls Category of the operator\n * @param operator Name of the operator\n */\n\nfunction getOperator(cls, operator) {\n return util_1.has(OPERATORS[cls], operator) ? OPERATORS[cls][operator] : null;\n}\n\nexports.getOperator = getOperator;\n/**\n * Add new operators\n *\n * @param operatorType the operator class to extend\n * @param operatorFactory a callback that accepts internal object state and returns an object of new operators.\n */\n\nfunction addOperators(operatorType, operatorFactory) {\n var customOperators = operatorFactory({\n computeValue: computeValue,\n resolve: util_1.resolve\n });\n validateOperatorMap(customOperators); // check for existing operators\n\n for (var _i = 0, _a = Object.entries(customOperators); _i < _a.length; _i++) {\n var _b = _a[_i],\n op = _b[0],\n _1 = _b[1];\n var call = getOperator(operatorType, op);\n util_1.assert(!call, op + \" already exists for '\" + operatorType + \"' operators\");\n }\n\n var normalizedOperators = {};\n\n switch (operatorType) {\n case OperatorType.QUERY:\n var _loop_1 = function _loop_1(op, f) {\n var fn = f;\n\n normalizedOperators[op] = function (selector, value, options) {\n return function (obj) {\n // value of field must be fully resolved.\n var lhs = util_1.resolve(obj, selector, {\n unwrapArray: true\n });\n return fn(selector, lhs, value, options);\n };\n };\n };\n\n for (var _c = 0, _d = Object.entries(customOperators); _c < _d.length; _c++) {\n var _e = _d[_c],\n op = _e[0],\n f = _e[1];\n\n _loop_1(op, f);\n }\n\n break;\n\n case OperatorType.PROJECTION:\n var _loop_2 = function _loop_2(op, f) {\n var fn = f;\n\n normalizedOperators[op] = function (obj, expr, selector, options) {\n var lhs = util_1.resolve(obj, selector);\n return fn(selector, lhs, expr, options);\n };\n };\n\n for (var _f = 0, _g = Object.entries(customOperators); _f < _g.length; _f++) {\n var _h = _g[_f],\n op = _h[0],\n f = _h[1];\n\n _loop_2(op, f);\n }\n\n break;\n\n default:\n var _loop_3 = function _loop_3(op, fn) {\n normalizedOperators[op] = function () {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n return fn.call.apply(fn, __spreadArray([null], args));\n };\n };\n\n for (var _j = 0, _k = Object.entries(customOperators); _j < _k.length; _j++) {\n var _l = _k[_j],\n op = _l[0],\n fn = _l[1];\n\n _loop_3(op, fn);\n }\n\n } // toss the operator salad :)\n\n\n useOperators(operatorType, normalizedOperators);\n}\n\nexports.addOperators = addOperators;\n/* eslint-disable unused-imports/no-unused-vars-ts */\n\n/**\n * Implementation of system variables\n * @type {Object}\n */\n\nvar systemVariables = {\n $$ROOT: function $$ROOT(obj, expr, options) {\n return options.root;\n },\n $$CURRENT: function $$CURRENT(obj, expr, options) {\n return obj;\n },\n $$REMOVE: function $$REMOVE(obj, expr, options) {\n return undefined;\n }\n};\n/**\n * Implementation of $redact variables\n *\n * Each function accepts 3 arguments (obj, expr, opt)\n *\n * @type {Object}\n */\n\nvar redactVariables = {\n $$KEEP: function $$KEEP(obj, expr, options) {\n return obj;\n },\n $$PRUNE: function $$PRUNE(obj, expr, options) {\n return undefined;\n },\n $$DESCEND: function $$DESCEND(obj, expr, options) {\n // traverse nested documents iff there is a $cond\n if (!util_1.has(expr, \"$cond\")) return obj;\n var result;\n var newObj = util_1.cloneDeep(obj);\n\n for (var _i = 0, _a = Object.entries(newObj); _i < _a.length; _i++) {\n var _b = _a[_i],\n key = _b[0],\n current = _b[1];\n\n if (util_1.isObjectLike(current)) {\n if (current instanceof Array) {\n var array = [];\n\n for (var _c = 0, current_1 = current; _c < current_1.length; _c++) {\n var elem = current_1[_c];\n\n if (util_1.isObject(elem)) {\n elem = redact(elem, expr, options);\n }\n\n if (!util_1.isNil(elem)) {\n array.push(elem);\n }\n }\n\n result = array;\n } else {\n result = redact(current, expr, options);\n }\n\n if (util_1.isNil(result)) {\n delete newObj[key]; // pruned result\n } else {\n newObj[key] = result;\n }\n }\n }\n\n return newObj;\n }\n};\n/* eslint-enable unused-imports/no-unused-vars-ts */\n\n/**\n * Computes the value of the expression on the object for the given operator\n *\n * @param obj the current object from the collection\n * @param expr the expression for the given field\n * @param operator the operator to resolve the field with\n * @param options {Object} extra options\n * @returns {*}\n */\n\nfunction computeValue(obj, expr, operator, options) {\n // ensure valid options exist on first invocation\n options = options || makeOptions();\n\n if (util_1.isOperator(operator)) {\n // if the field of the object is a valid operator\n var call = getOperator(OperatorType.EXPRESSION, operator);\n if (call) return call(obj, expr, options); // we also handle $group accumulator operators\n\n call = getOperator(OperatorType.ACCUMULATOR, operator);\n\n if (call) {\n // if object is not an array, first try to compute using the expression\n if (!(obj instanceof Array)) {\n obj = computeValue(obj, expr, null, options);\n expr = null;\n } // validate that we have an array\n\n\n util_1.assert(obj instanceof Array, \"'\" + operator + \"' target must be an array.\"); // we pass a null expression because all values have been resolved\n\n return call(obj, expr, options);\n } // operator was not found\n\n\n throw new Error(\"operator '\" + operator + \"' is not registered\");\n } // if expr is a variable for an object field\n // field not used in this case\n\n\n if (util_1.isString(expr) && expr.length > 0 && expr[0] === \"$\") {\n // we return redact variables as literals\n if (util_1.has(redactVariables, expr)) {\n return expr;\n } // handle selectors with explicit prefix\n\n\n var arr = expr.split(\".\");\n\n if (util_1.has(systemVariables, arr[0])) {\n // set 'root' only the first time it is required to be used for all subsequent calls\n // if it already available on the options, it will be used\n obj = systemVariables[arr[0]](obj, null, util_1.into({\n root: obj\n }, options));\n if (arr.length == 1) return obj;\n expr = expr.substr(arr[0].length); // '.' prefix will be sliced off below\n }\n\n return util_1.resolve(obj, expr.slice(1));\n } // check and return value if already in a resolved state\n\n\n if (expr instanceof Array) {\n return expr.map(function (item) {\n return computeValue(obj, item, null, options);\n });\n } else if (util_1.isObject(expr)) {\n var result = {};\n\n var _loop_4 = function _loop_4(key, val) {\n result[key] = computeValue(obj, val, key, options); // must run ONLY one aggregate operator per expression\n // if so, return result of the computed value\n\n if ([OperatorType.EXPRESSION, OperatorType.ACCUMULATOR].some(function (c) {\n return util_1.has(OPERATORS[c], key);\n })) {\n // there should be only one operator\n util_1.assert(Object.keys(expr).length === 1, \"Invalid aggregation expression '\" + JSON.stringify(expr) + \"'\");\n return {\n value: result[key]\n };\n }\n };\n\n for (var _i = 0, _a = Object.entries(expr); _i < _a.length; _i++) {\n var _b = _a[_i],\n key = _b[0],\n val = _b[1];\n\n var state_1 = _loop_4(key, val);\n\n if (typeof state_1 === \"object\") return state_1.value;\n }\n\n return result;\n } else {\n return expr;\n }\n}\n\nexports.computeValue = computeValue;\n/**\n * Redact an object\n * @param {Object} obj The object to redact\n * @param {*} expr The redact expression\n * @param {*} options Options for value\n * @return {*} returns the result of the redacted object\n */\n\nfunction redact(obj, expr, options) {\n var result = computeValue(obj, expr, null, options);\n return util_1.has(redactVariables, result) ? redactVariables[result](obj, expr, util_1.into({\n root: obj\n }, options)) : result;\n}\n\nexports.redact = redact;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Cursor = void 0;\n\nvar aggregator_1 = require(\"./aggregator\");\n\nvar lazy_1 = require(\"./lazy\");\n\nvar util_1 = require(\"./util\");\n/**\n * Cursor to iterate and perform filtering on matched objects.\n * This object must not be used directly. A cursor may be obtaine from calling `find()` on an instance of `Query`.\n *\n * @param collection The input source of the collection\n * @param predicate A predicate function to test documents\n * @param projection A projection criteria\n * @param options Options\n * @constructor\n */\n\n\nvar Cursor =\n/** @class */\nfunction () {\n function Cursor(source, predicate, projection, options) {\n this.__predicateFn = predicate;\n this.__source = source;\n this.__projection = projection;\n this.__operators = [];\n this.__result = null;\n this.__stack = [];\n this.__options = options;\n }\n\n Cursor.prototype._fetch = function () {\n if (this.__result) return this.__result; // add projection operator\n\n if (util_1.isObject(this.__projection)) {\n this.__operators.push({\n $project: this.__projection\n });\n } // filter collection\n\n\n this.__result = lazy_1.Lazy(this.__source).filter(this.__predicateFn);\n\n if (this.__operators.length > 0) {\n this.__result = new aggregator_1.Aggregator(this.__operators, this.__options).stream(this.__result);\n }\n\n return this.__result;\n };\n /**\n * Return remaining objects in the cursor as an array. This method exhausts the cursor\n * @returns {Array}\n */\n\n\n Cursor.prototype.all = function () {\n return this._fetch().value();\n };\n /**\n * Returns the number of objects return in the cursor. This method exhausts the cursor\n * @returns {Number}\n */\n\n\n Cursor.prototype.count = function () {\n return this.all().length;\n };\n /**\n * Returns a cursor that begins returning results only after passing or skipping a number of documents.\n * @param {Number} n the number of results to skip.\n * @return {Cursor} Returns the cursor, so you can chain this call.\n */\n\n\n Cursor.prototype.skip = function (n) {\n this.__operators.push({\n $skip: n\n });\n\n return this;\n };\n /**\n * Constrains the size of a cursor's result set.\n * @param {Number} n the number of results to limit to.\n * @return {Cursor} Returns the cursor, so you can chain this call.\n */\n\n\n Cursor.prototype.limit = function (n) {\n this.__operators.push({\n $limit: n\n });\n\n return this;\n };\n /**\n * Returns results ordered according to a sort specification.\n * @param {Object} modifier an object of key and values specifying the sort order. 1 for ascending and -1 for descending\n * @return {Cursor} Returns the cursor, so you can chain this call.\n */\n\n\n Cursor.prototype.sort = function (modifier) {\n this.__operators.push({\n $sort: modifier\n });\n\n return this;\n };\n /**\n * Specifies the collation for the cursor returned by the `mingo.Query.find`\n * @param {*} spec\n */\n\n\n Cursor.prototype.collation = function (spec) {\n util_1.into(this.__options, {\n collation: spec\n });\n return this;\n };\n /**\n * Returns the next document in a cursor.\n * @returns {Object | Boolean}\n */\n\n\n Cursor.prototype.next = function () {\n // empty stack means processing is done\n if (!this.__stack) return; // yield value obtains in hasNext()\n\n if (this.__stack.length > 0) {\n return this.__stack.pop();\n }\n\n var o = this._fetch().next();\n\n if (!o.done) return o.value;\n this.__stack = null;\n return;\n };\n /**\n * Returns true if the cursor has documents and can be iterated.\n * @returns {boolean}\n */\n\n\n Cursor.prototype.hasNext = function () {\n if (!this.__stack) return false; // done\n // there is a value on stack\n\n if (this.__stack.length > 0) return true;\n\n var o = this._fetch().next();\n\n if (o.done) {\n this.__stack = null;\n } else {\n this.__stack.push(o.value);\n }\n\n return !!this.__stack;\n };\n /**\n * Applies a function to each document in a cursor and collects the return values in an array.\n * @param callback\n * @returns {Array}\n */\n\n\n Cursor.prototype.map = function (callback) {\n return this._fetch().map(callback).value();\n };\n /**\n * Applies a JavaScript function for every document in a cursor.\n * @param callback\n */\n\n\n Cursor.prototype.forEach = function (callback) {\n this._fetch().each(callback);\n };\n\n Cursor.prototype[Symbol.iterator] = function () {\n return this._fetch();\n /* eslint-disable-line */\n };\n\n return Cursor;\n}();\n\nexports.Cursor = Cursor;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.aggregate = exports.remove = exports.find = exports.Query = exports.Aggregator = void 0; // loads basic operators\n\nrequire(\"./init/basic\");\n\nvar aggregator_1 = require(\"./aggregator\");\n\nvar query_1 = require(\"./query\");\n\nvar aggregator_2 = require(\"./aggregator\");\n\nObject.defineProperty(exports, \"Aggregator\", {\n enumerable: true,\n get: function get() {\n return aggregator_2.Aggregator;\n }\n});\n\nvar query_2 = require(\"./query\");\n\nObject.defineProperty(exports, \"Query\", {\n enumerable: true,\n get: function get() {\n return query_2.Query;\n }\n});\n/**\n * Performs a query on a collection and returns a cursor object.\n * Shorthand for `Query(criteria).find(collection, projection)`\n *\n * @param collection Array of objects\n * @param criteria Query criteria\n * @param projection Projection criteria\n * @param options\n * @returns {Cursor} A cursor of results\n */\n\nfunction find(collection, criteria, projection, options) {\n return new query_1.Query(criteria, options).find(collection, projection);\n}\n\nexports.find = find;\n/**\n * Returns a new array without objects which match the criteria\n *\n * @param collection Array of objects\n * @param criteria Query criteria of objects to remove\n * @param options\n * @returns {Array} New filtered array\n */\n\nfunction remove(collection, criteria, options) {\n return new query_1.Query(criteria, options).remove(collection);\n}\n\nexports.remove = remove;\n/**\n * Return the result collection after running the aggregation pipeline for the given collection.\n * Shorthand for `(new Aggregator(pipeline, options)).run(collection)`\n *\n * @param collection Collection or stream of objects\n * @param pipeline The pipeline operators to use\n * @param options\n * @returns {Array} New array of results\n */\n\nfunction aggregate(collection, pipeline, options) {\n return new aggregator_1.Aggregator(pipeline, options).run(collection);\n}\n\nexports.aggregate = aggregate; // default interface\n\nexports.default = {\n Aggregator: aggregator_1.Aggregator,\n Query: query_1.Query,\n aggregate: aggregate,\n find: find,\n remove: remove\n};","\"use strict\";\n\nvar __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, {\n enumerable: true,\n get: function get() {\n return m[k];\n }\n });\n} : function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nvar __setModuleDefault = this && this.__setModuleDefault || (Object.create ? function (o, v) {\n Object.defineProperty(o, \"default\", {\n enumerable: true,\n value: v\n });\n} : function (o, v) {\n o[\"default\"] = v;\n});\n\nvar __importStar = this && this.__importStar || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) {\n if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n }\n\n __setModuleDefault(result, mod);\n\n return result;\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/**\n * Loads all Query and Projection operators\n */\n// helpers\n\nvar core_1 = require(\"../core\");\n\nvar booleanOperators = __importStar(require(\"../operators/expression/boolean\"));\n\nvar comparisonOperators = __importStar(require(\"../operators/expression/comparison\"));\n\nvar pipeline_1 = require(\"../operators/pipeline\");\n\nvar projectionOperators = __importStar(require(\"../operators/projection\"));\n\nvar queryOperators = __importStar(require(\"../operators/query\"));\n\nvar util_1 = require(\"../util\");\n/**\n * Enable basic operators. This includes only query and projection operators\n */\n\n\nfunction enableBasicOperators() {\n core_1.useOperators(core_1.OperatorType.EXPRESSION, util_1.into({}, booleanOperators, comparisonOperators));\n core_1.useOperators(core_1.OperatorType.PIPELINE, {\n $project: pipeline_1.$project,\n $skip: pipeline_1.$skip,\n $limit: pipeline_1.$limit,\n $sort: pipeline_1.$sort\n });\n core_1.useOperators(core_1.OperatorType.PROJECTION, projectionOperators);\n core_1.useOperators(core_1.OperatorType.QUERY, queryOperators);\n}\n\nenableBasicOperators();","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Iterator = exports.Lazy = void 0;\n/**\n * Returns an iterator\n * @param {*} source An iterable source (Array, Function, Generator, or Iterator)\n */\n\nfunction Lazy(source) {\n return source instanceof Iterator ? source : new Iterator(source);\n}\n\nexports.Lazy = Lazy;\n/**\n * Checks whether the given object is compatible with a generator i.e Object{next:Function}\n * @param {*} o An object\n */\n\nfunction isGenerator(o) {\n var _a;\n\n return !!o && typeof o === \"object\" && ((_a = o) === null || _a === void 0 ? void 0 : _a.next) instanceof Function;\n}\n\nfunction dropItem(array, i) {\n var rest = array.slice(i + 1);\n array.splice(i);\n Array.prototype.push.apply(array, rest);\n} // stop iteration error\n\n\nvar DONE = new Error(); // Lazy function actions\n\nvar Action;\n\n(function (Action) {\n Action[Action[\"MAP\"] = 0] = \"MAP\";\n Action[Action[\"FILTER\"] = 1] = \"FILTER\";\n Action[Action[\"TAKE\"] = 2] = \"TAKE\";\n Action[Action[\"DROP\"] = 3] = \"DROP\";\n})(Action || (Action = {}));\n\nfunction createCallback(nextFn, iteratees, buffer) {\n var done = false;\n var index = -1;\n var bufferIndex = 0; // index for the buffer\n\n return function (storeResult) {\n // special hack to collect all values into buffer\n try {\n outer: while (!done) {\n var o = nextFn();\n index++;\n var i = -1;\n var size = iteratees.length;\n var innerDone = false;\n\n while (++i < size) {\n var r = iteratees[i];\n\n switch (r.action) {\n case Action.MAP:\n o = r.func(o, index);\n break;\n\n case Action.FILTER:\n if (!r.func(o, index)) continue outer;\n break;\n\n case Action.TAKE:\n --r.count;\n if (!r.count) innerDone = true;\n break;\n\n case Action.DROP:\n --r.count;\n if (!r.count) dropItem(iteratees, i);\n continue outer;\n\n default:\n break outer;\n }\n }\n\n done = innerDone;\n\n if (storeResult) {\n buffer[bufferIndex++] = o;\n } else {\n return {\n value: o,\n done: false\n };\n }\n }\n } catch (e) {\n if (e !== DONE) throw e;\n }\n\n done = true;\n return {\n done: done\n };\n };\n}\n/**\n * A lazy collection iterator yields a single value at time upon request\n */\n\n\nvar Iterator =\n/** @class */\nfunction () {\n /**\n * @param {*} source An iterable object or function.\n * Array - return one element per cycle\n * Object{next:Function} - call next() for the next value (this also handles generator functions)\n * Function - call to return the next value\n * @param {Function} fn An optional transformation function\n */\n function Iterator(source) {\n this.__iteratees = []; // lazy function chain\n\n this.__first = false; // flag whether to return a single value\n\n this.__done = false;\n this.__buf = [];\n var nextVal;\n\n if (source instanceof Function) {\n // make iterable\n source = {\n next: source\n };\n }\n\n if (isGenerator(source)) {\n var src_1 = source;\n\n nextVal = function nextVal() {\n var o = src_1.next();\n if (o.done) throw DONE;\n return o.value;\n };\n } else if (source instanceof Array) {\n var data_1 = source;\n var size_1 = data_1.length;\n var index_1 = 0;\n\n nextVal = function nextVal() {\n if (index_1 < size_1) return data_1[index_1++];\n throw DONE;\n };\n } else if (!(source instanceof Function)) {\n throw new Error(\"Source is of type '\" + typeof source + \"'. Must be Array, Function, or Generator\");\n } // create next function\n\n\n this.__next = createCallback(nextVal, this.__iteratees, this.__buf);\n }\n\n Iterator.prototype._validate = function () {\n if (this.__first) throw new Error(\"Cannot add iteratee/transform after `first()`\");\n };\n /**\n * Add an iteratee to this lazy sequence\n * @param {Object} iteratee\n */\n\n\n Iterator.prototype._push = function (action, value) {\n this._validate();\n\n if (typeof value === \"function\") {\n this.__iteratees.push({\n action: action,\n func: value\n });\n } else if (typeof value === \"number\") {\n this.__iteratees.push({\n action: action,\n count: value\n });\n } else {\n throw Error(\"invalid value\");\n }\n\n return this;\n };\n\n Iterator.prototype.next = function () {\n return this.__next();\n }; // Iteratees methods\n\n /**\n * Transform each item in the sequence to a new value\n * @param {Function} f\n */\n\n\n Iterator.prototype.map = function (f) {\n return this._push(Action.MAP, f);\n };\n /**\n * Select only items matching the given predicate\n * @param {Function} pred\n */\n\n\n Iterator.prototype.filter = function (predicate) {\n return this._push(Action.FILTER, predicate);\n };\n /**\n * Take given numbe for values from sequence\n * @param {Number} n A number greater than 0\n */\n\n\n Iterator.prototype.take = function (n) {\n return n > 0 ? this._push(Action.TAKE, n) : this;\n };\n /**\n * Drop a number of values from the sequence\n * @param {Number} n Number of items to drop greater than 0\n */\n\n\n Iterator.prototype.drop = function (n) {\n return n > 0 ? this._push(Action.DROP, n) : this;\n }; // Transformations\n\n /**\n * Returns a new lazy object with results of the transformation\n * The entire sequence is realized.\n *\n * @param {Function} fn Tranform function of type (Array) => (Any)\n */\n\n\n Iterator.prototype.transform = function (fn) {\n this._validate();\n\n var self = this;\n var iter;\n return Lazy(function () {\n if (!iter) {\n iter = Lazy(fn(self.value()));\n }\n\n return iter.next();\n });\n };\n /**\n * Mark this lazy object to return only the first result on `lazy.value()`.\n * No more iteratees or transformations can be added after this method is called.\n */\n\n\n Iterator.prototype.first = function () {\n this.take(1);\n this.__first = true;\n return this;\n }; // Terminal methods\n\n /**\n * Returns the fully realized values of the iterators.\n * The return value will be an array unless `lazy.first()` was used.\n * The realized values are cached for subsequent calls\n */\n\n\n Iterator.prototype.value = function () {\n if (!this.__done) {\n this.__done = this.__next(true).done;\n }\n\n return this.__first ? this.__buf[0] : this.__buf;\n };\n /**\n * Execute the funcion for each value. Will stop when an execution returns false.\n * @param {Function} f\n * @returns {Boolean} false iff `f` return false for AnyVal execution, otherwise true\n */\n\n\n Iterator.prototype.each = function (f) {\n for (;;) {\n var o = this.next();\n if (o.done) break;\n if (f(o.value) === false) return false;\n }\n\n return true;\n };\n /**\n * Returns the reduction of sequence according the reducing function\n *\n * @param {*} f a reducing function\n * @param {*} init\n */\n\n\n Iterator.prototype.reduce = function (f, initialValue) {\n var o = this.next();\n var i = 0;\n\n if (initialValue === undefined && !o.done) {\n initialValue = o.value;\n o = this.next();\n i++;\n }\n\n while (!o.done) {\n initialValue = f(initialValue, o.value, i++);\n o = this.next();\n }\n\n return initialValue;\n };\n /**\n * Returns the number of matched items in the sequence\n */\n\n\n Iterator.prototype.size = function () {\n return this.reduce(function (acc, _) {\n return ++acc;\n }, 0);\n };\n\n Iterator.prototype[Symbol.iterator] = function () {\n /* eslint-disable @typescript-eslint/no-unsafe-return */\n return this;\n };\n\n return Iterator;\n}();\n\nexports.Iterator = Iterator;","\"use strict\";\n/**\n * Predicates used for Query and Expression operators.\n */\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.$type = exports.$elemMatch = exports.$size = exports.$all = exports.$exists = exports.$regex = exports.$mod = exports.$gte = exports.$gt = exports.$lte = exports.$lt = exports.$nin = exports.$in = exports.$ne = exports.$eq = exports.createExpressionOperator = exports.createQueryOperator = void 0;\n\nvar core_1 = require(\"../core\");\n\nvar query_1 = require(\"../query\");\n\nvar util_1 = require(\"../util\");\n/**\n * Returns a query operator created from the predicate\n *\n * @param predicate Predicate function\n */\n\n\nfunction createQueryOperator(predicate) {\n return function (selector, value, options) {\n var opts = {\n unwrapArray: true\n };\n return function (obj) {\n // value of field must be fully resolved.\n var lhs = util_1.resolve(obj, selector, opts);\n return predicate(lhs, value, options);\n };\n };\n}\n\nexports.createQueryOperator = createQueryOperator;\n/**\n * Returns an expression operator created from the predicate\n *\n * @param predicate Predicate function\n */\n\nfunction createExpressionOperator(predicate) {\n return function (obj, expr, options) {\n var args = core_1.computeValue(obj, expr, null, options);\n return predicate.apply(void 0, args);\n };\n}\n\nexports.createExpressionOperator = createExpressionOperator;\n/**\n * Checks that two values are equal.\n *\n * @param a The lhs operand as resolved from the object by the given selector\n * @param b The rhs operand provided by the user\n * @returns {*}\n */\n\nfunction $eq(a, b, options) {\n // start with simple equality check\n if (util_1.isEqual(a, b)) return true; // https://docs.mongodb.com/manual/tutorial/query-for-null-fields/\n\n if (util_1.isNil(a) && util_1.isNil(b)) return true; // check\n\n if (a instanceof Array) {\n var eq = util_1.isEqual.bind(null, b);\n return a.some(eq) || util_1.flatten(a, 1).some(eq);\n }\n\n return false;\n}\n\nexports.$eq = $eq;\n/**\n * Matches all values that are not equal to the value specified in the query.\n *\n * @param a\n * @param b\n * @returns {boolean}\n */\n\nfunction $ne(a, b, options) {\n return !$eq(a, b, options);\n}\n\nexports.$ne = $ne;\n/**\n * Matches any of the values that exist in an array specified in the query.\n *\n * @param a\n * @param b\n * @returns {*}\n */\n\nfunction $in(a, b, options) {\n // queries for null should be able to find undefined fields\n if (util_1.isNil(a)) return b.some(util_1.isNull);\n return util_1.intersection(util_1.ensureArray(a), b, options === null || options === void 0 ? void 0 : options.hashFunction).length > 0;\n}\n\nexports.$in = $in;\n/**\n * Matches values that do not exist in an array specified to the query.\n *\n * @param a\n * @param b\n * @returns {*|boolean}\n */\n\nfunction $nin(a, b, options) {\n return !$in(a, b, options);\n}\n\nexports.$nin = $nin;\n/**\n * Matches values that are less than the value specified in the query.\n *\n * @param a\n * @param b\n * @returns {boolean}\n */\n\nfunction $lt(a, b, options) {\n return compare(a, b, function (x, y) {\n return x < y;\n });\n}\n\nexports.$lt = $lt;\n/**\n * Matches values that are less than or equal to the value specified in the query.\n *\n * @param a\n * @param b\n * @returns {boolean}\n */\n\nfunction $lte(a, b, options) {\n return compare(a, b, function (x, y) {\n return x <= y;\n });\n}\n\nexports.$lte = $lte;\n/**\n * Matches values that are greater than the value specified in the query.\n *\n * @param a\n * @param b\n * @returns {boolean}\n */\n\nfunction $gt(a, b, options) {\n return compare(a, b, function (x, y) {\n return x > y;\n });\n}\n\nexports.$gt = $gt;\n/**\n * Matches values that are greater than or equal to the value specified in the query.\n *\n * @param a\n * @param b\n * @returns {boolean}\n */\n\nfunction $gte(a, b, options) {\n return compare(a, b, function (x, y) {\n return x >= y;\n });\n}\n\nexports.$gte = $gte;\n/**\n * Performs a modulo operation on the value of a field and selects documents with a specified result.\n *\n * @param a\n * @param b\n * @returns {boolean}\n */\n\nfunction $mod(a, b, options) {\n return util_1.ensureArray(a).some(function (x) {\n return b.length === 2 && x % b[0] === b[1];\n });\n}\n\nexports.$mod = $mod;\n/**\n * Selects documents where values match a specified regular expression.\n *\n * @param a\n * @param b\n * @returns {boolean}\n */\n\nfunction $regex(a, b, options) {\n var lhs = util_1.ensureArray(a);\n\n var match = function match(x) {\n return util_1.isString(x) && !!b.exec(x);\n };\n\n return lhs.some(match) || util_1.flatten(lhs, 1).some(match);\n}\n\nexports.$regex = $regex;\n/**\n * Matches documents that have the specified field.\n *\n * @param a\n * @param b\n * @returns {boolean}\n */\n\nfunction $exists(a, b, options) {\n return (b === false || b === 0) && a === undefined || (b === true || b === 1) && a !== undefined;\n}\n\nexports.$exists = $exists;\n/**\n * Matches arrays that contain all elements specified in the query.\n *\n * @param a\n * @param b\n * @returns boolean\n */\n\nfunction $all(a, b, options) {\n var matched = false;\n\n if (util_1.isArray(a) && util_1.isArray(b)) {\n for (var i = 0, len = b.length; i < len; i++) {\n if (util_1.isObject(b[i]) && util_1.inArray(Object.keys(b[i]), \"$elemMatch\")) {\n matched = matched || $elemMatch(a, b[i][\"$elemMatch\"], options);\n } else {\n // order of arguments matter\n return util_1.intersection(b, a, options === null || options === void 0 ? void 0 : options.hashFunction).length === len;\n }\n }\n }\n\n return matched;\n}\n\nexports.$all = $all;\n/**\n * Selects documents if the array field is a specified size.\n *\n * @param a\n * @param b\n * @returns {*|boolean}\n */\n\nfunction $size(a, b, options) {\n return a.length === b;\n}\n\nexports.$size = $size;\n\nfunction isNonBooleanOperator(name) {\n return util_1.isOperator(name) && [\"$and\", \"$or\", \"$nor\"].indexOf(name) === -1;\n}\n/**\n * Selects documents if element in the array field matches all the specified $elemMatch condition.\n *\n * @param a {Array} element to match against\n * @param b {Object} subquery\n */\n\n\nfunction $elemMatch(a, b, options) {\n // should return false for non-matching input\n if (util_1.isArray(a) && !util_1.isEmpty(a)) {\n var format = function format(x) {\n return x;\n };\n\n var criteria = b; // If we find a boolean operator in the subquery, we fake a field to point to it. This is an\n // attempt to ensure that it is a valid criteria. We cannot make this substitution for operators\n // like $and/$or/$nor; as otherwise, this faking will break our query.\n\n if (Object.keys(b).every(isNonBooleanOperator)) {\n criteria = {\n temp: b\n };\n\n format = function format(x) {\n return {\n temp: x\n };\n };\n }\n\n var query = new query_1.Query(criteria, options);\n\n for (var i = 0, len = a.length; i < len; i++) {\n if (query.test(format(a[i]))) {\n return true;\n }\n }\n }\n\n return false;\n}\n\nexports.$elemMatch = $elemMatch;\n/**\n * Selects documents if a field is of the specified type.\n *\n * @param a\n * @param b\n * @returns {boolean}\n */\n\nfunction compareType(a, b, options) {\n switch (b) {\n case 1:\n case 19:\n case util_1.BsonType.DOUBLE:\n case util_1.BsonType.DECIMAL:\n return util_1.isNumber(a);\n\n case 2:\n case util_1.JsType.STRING:\n return util_1.isString(a);\n\n case 3:\n case util_1.JsType.OBJECT:\n return util_1.isObject(a);\n\n case 4:\n case util_1.JsType.ARRAY:\n return util_1.isArray(a);\n\n case 6:\n case util_1.JsType.UNDEFINED:\n return util_1.isNil(a);\n\n case 8:\n case util_1.JsType.BOOLEAN:\n case util_1.BsonType.BOOL:\n return util_1.isBoolean(a);\n\n case 9:\n case util_1.JsType.DATE:\n return util_1.isDate(a);\n\n case 10:\n case util_1.JsType.NULL:\n return util_1.isNull(a);\n\n case 11:\n case util_1.JsType.REGEXP:\n case util_1.BsonType.REGEX:\n return util_1.isRegExp(a);\n\n case 16:\n case util_1.BsonType.INT:\n return util_1.isNumber(a) && a >= util_1.MIN_INT && a <= util_1.MAX_INT && a.toString().indexOf(\".\") === -1;\n\n case 18:\n case util_1.BsonType.LONG:\n return util_1.isNumber(a) && a >= util_1.MIN_LONG && a <= util_1.MAX_LONG && a.toString().indexOf(\".\") === -1;\n\n default:\n return false;\n }\n}\n/**\n * Selects documents if a field is of the specified type.\n *\n * @param a\n * @param b\n * @returns {boolean}\n */\n\n\nfunction $type(a, b, options) {\n return Array.isArray(b) ? b.findIndex(function (t) {\n return compareType(a, t, options);\n }) >= 0 : compareType(a, b, options);\n}\n\nexports.$type = $type;\n\nfunction compare(a, b, f) {\n return util_1.ensureArray(a).some(function (x) {\n return util_1.getType(x) === util_1.getType(b) && f(x, b);\n });\n}","\"use strict\"; // Array Expression Operators: https://docs.mongodb.com/manual/reference/operator/aggregation/#array-expression-operators\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.$slice = void 0;\n\nvar core_1 = require(\"../../../core\");\n\nvar util_1 = require(\"../../../util\");\n/**\n * Returns a subset of an array.\n *\n * @param {Object} obj\n * @param {*} expr\n * @return {*}\n */\n\n\nfunction $slice(obj, expr, options) {\n var args = core_1.computeValue(obj, expr, null, options);\n var arr = args[0];\n var skip = args[1];\n var limit = args[2]; // MongoDB $slice works a bit differently from Array.slice\n // Uses single argument for 'limit' and array argument [skip, limit]\n\n if (util_1.isNil(limit)) {\n if (skip < 0) {\n skip = Math.max(0, arr.length + skip);\n limit = arr.length - skip + 1;\n } else {\n limit = skip;\n skip = 0;\n }\n } else {\n if (skip < 0) {\n skip = Math.max(0, arr.length + skip);\n }\n\n util_1.assert(limit > 0, \"Invalid argument for $slice operator. Limit must be a positive number\");\n limit += skip;\n }\n\n return arr.slice(skip, limit);\n}\n\nexports.$slice = $slice;","\"use strict\"; // Boolean Expression Operators: https://docs.mongodb.com/manual/reference/operator/aggregation/#boolean-expression-operators\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.$and = void 0;\n\nvar core_1 = require(\"../../../core\");\n\nvar util_1 = require(\"../../../util\");\n/**\n * Returns true only when all its expressions evaluate to true. Accepts any number of argument expressions.\n *\n * @param obj\n * @param expr\n * @returns {boolean}\n */\n\n\nfunction $and(obj, expr, options) {\n var value = core_1.computeValue(obj, expr, null, options);\n return util_1.truthy(value) && value.every(util_1.truthy);\n}\n\nexports.$and = $and;","\"use strict\";\n\nvar __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, {\n enumerable: true,\n get: function get() {\n return m[k];\n }\n });\n} : function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nvar __exportStar = this && this.__exportStar || function (m, exports) {\n for (var p in m) {\n if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n }\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\n__exportStar(require(\"./and\"), exports);\n\n__exportStar(require(\"./not\"), exports);\n\n__exportStar(require(\"./or\"), exports);","\"use strict\"; // Boolean Expression Operators: https://docs.mongodb.com/manual/reference/operator/aggregation/#boolean-expression-operators\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.$not = void 0;\n\nvar core_1 = require(\"../../../core\");\n\nvar util_1 = require(\"../../../util\");\n/**\n * Returns the boolean value that is the opposite of its argument expression. Accepts a single argument expression.\n *\n * @param obj RawObject from collection\n * @param expr Right hand side expression of operator\n * @returns {boolean}\n */\n\n\nfunction $not(obj, expr, options) {\n var booleanExpr = util_1.ensureArray(expr); // array values are truthy so an emty array is false\n\n if (booleanExpr.length == 0) return false; // use provided value non-array value\n\n if (booleanExpr.length == 1) return !core_1.computeValue(obj, booleanExpr[0], null, options); // expects a single argument\n\n throw \"Expression $not takes exactly 1 argument\";\n}\n\nexports.$not = $not;","\"use strict\"; // Boolean Expression Operators: https://docs.mongodb.com/manual/reference/operator/aggregation/#boolean-expression-operators\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.$or = void 0;\n\nvar core_1 = require(\"../../../core\");\n\nvar util_1 = require(\"../../../util\");\n/**\n * Returns true when any of its expressions evaluates to true. Accepts any number of argument expressions.\n *\n * @param obj\n * @param expr\n * @returns {boolean}\n */\n\n\nfunction $or(obj, expr, options) {\n var value = core_1.computeValue(obj, expr, null, options);\n return util_1.truthy(value) && value.some(util_1.truthy);\n}\n\nexports.$or = $or;","\"use strict\"; // Comparison Expression Operators: https://docs.mongodb.com/manual/reference/operator/aggregation/#comparison-expression-operators\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.$cmp = exports.$ne = exports.$lte = exports.$lt = exports.$gte = exports.$gt = exports.$eq = void 0;\n\nvar core_1 = require(\"../../core\");\n\nvar _predicates_1 = require(\"../_predicates\");\n\nexports.$eq = _predicates_1.createExpressionOperator(_predicates_1.$eq);\nexports.$gt = _predicates_1.createExpressionOperator(_predicates_1.$gt);\nexports.$gte = _predicates_1.createExpressionOperator(_predicates_1.$gte);\nexports.$lt = _predicates_1.createExpressionOperator(_predicates_1.$lt);\nexports.$lte = _predicates_1.createExpressionOperator(_predicates_1.$lte);\nexports.$ne = _predicates_1.createExpressionOperator(_predicates_1.$ne);\n/**\n * Compares two values and returns the result of the comparison as an integer.\n *\n * @param obj\n * @param expr\n * @returns {number}\n */\n\nfunction $cmp(obj, expr, options) {\n var args = core_1.computeValue(obj, expr, null, options);\n if (args[0] > args[1]) return 1;\n if (args[0] < args[1]) return -1;\n return 0;\n}\n\nexports.$cmp = $cmp;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.$addFields = void 0;\n\nvar core_1 = require(\"../../core\");\n\nvar util_1 = require(\"../../util\");\n/**\n * Adds new fields to documents.\n * Outputs documents that contain all existing fields from the input documents and newly added fields.\n *\n * @param {Iterator} collection\n * @param {Object} expr\n * @param {Options} options\n */\n\n\nfunction $addFields(collection, expr, options) {\n var newFields = Object.keys(expr);\n if (newFields.length === 0) return collection;\n return collection.map(function (obj) {\n var newObj = util_1.cloneDeep(obj);\n\n for (var _i = 0, newFields_1 = newFields; _i < newFields_1.length; _i++) {\n var field = newFields_1[_i];\n var newValue = core_1.computeValue(obj, expr[field], null, options);\n\n if (newValue !== undefined) {\n util_1.setValue(newObj, field, newValue);\n } else {\n util_1.removeValue(newObj, field);\n }\n }\n\n return newObj;\n });\n}\n\nexports.$addFields = $addFields;","\"use strict\";\n\nvar __spreadArray = this && this.__spreadArray || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++) {\n to[j] = from[i];\n }\n\n return to;\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.$bucket = void 0;\n\nvar core_1 = require(\"../../core\");\n\nvar lazy_1 = require(\"../../lazy\");\n\nvar util_1 = require(\"../../util\");\n/**\n * Categorizes incoming documents into groups, called buckets, based on a specified expression and bucket boundaries.\n * https://docs.mongodb.com/manual/reference/operator/aggregation/bucket/\n *\n * @param {*} collection\n * @param {*} expr\n * @param {Options} opt Pipeline options\n */\n\n\nfunction $bucket(collection, expr, options) {\n var boundaries = __spreadArray([], expr.boundaries);\n\n var defaultKey = expr.default;\n var lower = boundaries[0]; // inclusive\n\n var upper = boundaries[boundaries.length - 1]; // exclusive\n\n var outputExpr = expr.output || {\n count: {\n $sum: 1\n }\n };\n util_1.assert(expr.boundaries.length > 2, \"$bucket 'boundaries' expression must have at least 3 elements\");\n var boundType = util_1.getType(lower);\n\n for (var i = 0, len = boundaries.length - 1; i < len; i++) {\n util_1.assert(boundType === util_1.getType(boundaries[i + 1]), \"$bucket 'boundaries' must all be of the same type\");\n util_1.assert(boundaries[i] < boundaries[i + 1], \"$bucket 'boundaries' must be sorted in ascending order\");\n }\n\n !util_1.isNil(defaultKey) && util_1.getType(expr.default) === util_1.getType(lower) && util_1.assert(expr.default >= upper || expr.default < lower, \"$bucket 'default' expression must be out of boundaries range\");\n var grouped = {};\n\n for (var _i = 0, boundaries_1 = boundaries; _i < boundaries_1.length; _i++) {\n var k = boundaries_1[_i];\n grouped[k] = [];\n } // add default key if provided\n\n\n if (!util_1.isNil(defaultKey)) grouped[defaultKey] = [];\n var iterator = null;\n return lazy_1.Lazy(function () {\n if (iterator === null) {\n collection.each(function (obj) {\n var key = core_1.computeValue(obj, expr.groupBy, null, options);\n\n if (util_1.isNil(key) || key < lower || key >= upper) {\n util_1.assert(!util_1.isNil(defaultKey), \"$bucket require a default for out of range values\");\n grouped[defaultKey].push(obj);\n } else {\n util_1.assert(key >= lower && key < upper, \"$bucket 'groupBy' expression must resolve to a value in range of boundaries\");\n var index = findInsertIndex(boundaries, key);\n var boundKey = boundaries[Math.max(0, index - 1)];\n grouped[boundKey].push(obj);\n }\n }); // upper bound is exclusive so we remove it\n\n boundaries.pop();\n if (!util_1.isNil(defaultKey)) boundaries.push(defaultKey);\n iterator = lazy_1.Lazy(boundaries).map(function (key) {\n var acc = core_1.computeValue(grouped[key], outputExpr, null, options);\n return util_1.into(acc, {\n _id: key\n });\n });\n }\n\n return iterator.next();\n });\n}\n\nexports.$bucket = $bucket;\n/**\n * Find the insert index for the given key in a sorted array.\n *\n * @param {*} sorted The sorted array to search\n * @param {*} item The search key\n */\n\nfunction findInsertIndex(sorted, item) {\n // uses binary search\n var lo = 0;\n var hi = sorted.length - 1;\n\n while (lo <= hi) {\n var mid = Math.round(lo + (hi - lo) / 2);\n\n if (item < sorted[mid]) {\n hi = mid - 1;\n } else if (item > sorted[mid]) {\n lo = mid + 1;\n } else {\n return mid;\n }\n }\n\n return lo;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.$bucketAuto = void 0;\n\nvar core_1 = require(\"../../core\");\n\nvar util_1 = require(\"../../util\");\n/**\n * Categorizes incoming documents into a specific number of groups, called buckets,\n * based on a specified expression. Bucket boundaries are automatically determined\n * in an attempt to evenly distribute the documents into the specified number of buckets.\n * https://docs.mongodb.com/manual/reference/operator/aggregation/bucketAuto/\n *\n * @param {*} collection\n * @param {*} expr\n * @param {*} options\n */\n\n\nfunction $bucketAuto(collection, expr, options) {\n var outputExpr = expr.output || {\n count: {\n $sum: 1\n }\n };\n var groupByExpr = expr.groupBy;\n var bucketCount = expr.buckets;\n util_1.assert(bucketCount > 0, \"The $bucketAuto 'buckets' field must be greater than 0, but found: \" + bucketCount);\n var ID_KEY = \"_id\";\n return collection.transform(function (coll) {\n var approxBucketSize = Math.max(1, Math.round(coll.length / bucketCount));\n var computeValueOptimized = util_1.memoize(core_1.computeValue, options === null || options === void 0 ? void 0 : options.hashFunction);\n var grouped = {};\n var remaining = [];\n var sorted = util_1.sortBy(coll, function (o) {\n var key = computeValueOptimized(o, groupByExpr, null, options);\n\n if (util_1.isNil(key)) {\n remaining.push(o);\n } else {\n grouped[key] || (grouped[key] = []);\n grouped[key].push(o);\n }\n\n return key;\n });\n var result = [];\n var index = 0; // counter for sorted collection\n\n for (var i = 0, len = sorted.length; i < bucketCount && index < len; i++) {\n var boundaries = {};\n var bucketItems = [];\n\n for (var j = 0; j < approxBucketSize && index < len; j++) {\n var key = computeValueOptimized(sorted[index], groupByExpr, null, options);\n if (util_1.isNil(key)) key = null; // populate current bucket with all values for current key\n\n util_1.into(bucketItems, util_1.isNil(key) ? remaining : grouped[key]); // increase sort index by number of items added\n\n index += util_1.isNil(key) ? remaining.length : grouped[key].length; // set the min key boundary if not already present\n\n if (!util_1.has(boundaries, \"min\")) boundaries.min = key;\n\n if (result.length > 0) {\n var lastBucket = result[result.length - 1];\n lastBucket[ID_KEY].max = boundaries.min;\n }\n } // if is last bucket add remaining items\n\n\n if (i == bucketCount - 1) {\n util_1.into(bucketItems, sorted.slice(index));\n }\n\n var values = core_1.computeValue(bucketItems, outputExpr, null, options);\n result.push(util_1.into(values, {\n _id: boundaries\n }));\n }\n\n if (result.length > 0) {\n result[result.length - 1][ID_KEY].max = computeValueOptimized(sorted[sorted.length - 1], groupByExpr, null, options);\n }\n\n return result;\n });\n}\n\nexports.$bucketAuto = $bucketAuto;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.$count = void 0;\n\nvar lazy_1 = require(\"../../lazy\");\n\nvar util_1 = require(\"../../util\");\n/**\n * Returns a document that contains a count of the number of documents input to the stage.\n *\n * @param {Array} collection\n * @param {String} expr\n * @param {Options} options\n * @return {Object}\n */\n\n\nfunction $count(collection, expr, options) {\n util_1.assert(util_1.isString(expr) && expr.trim() !== \"\" && expr.indexOf(\".\") === -1 && expr.trim()[0] !== \"$\", \"Invalid expression value for $count\");\n return lazy_1.Lazy(function () {\n var o = {};\n o[expr] = collection.size();\n return {\n value: o,\n done: false\n };\n }).first();\n}\n\nexports.$count = $count;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.$facet = void 0;\n\nvar aggregator_1 = require(\"../../aggregator\");\n\nvar util_1 = require(\"../../util\");\n/**\n * Processes multiple aggregation pipelines within a single stage on the same set of input documents.\n * Enables the creation of multi-faceted aggregations capable of characterizing data across multiple dimensions, or facets, in a single stage.\n */\n\n\nfunction $facet(collection, expr, options) {\n return collection.transform(function (array) {\n return [util_1.objectMap(expr, function (pipeline) {\n return new aggregator_1.Aggregator(pipeline, options).run(array);\n })];\n });\n}\n\nexports.$facet = $facet;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.$group = void 0;\n\nvar core_1 = require(\"../../core\");\n\nvar util_1 = require(\"../../util\");\n/**\n * Groups documents together for the purpose of calculating aggregate values based on a collection of documents.\n *\n * @param collection\n * @param expr\n * @param options\n * @returns {Array}\n */\n\n\nfunction $group(collection, expr, options) {\n // lookup key for grouping\n var ID_KEY = \"_id\";\n var id = expr[ID_KEY];\n return collection.transform(function (coll) {\n var partitions = util_1.groupBy(coll, function (obj) {\n return core_1.computeValue(obj, id, null, options);\n }, options === null || options === void 0 ? void 0 : options.hashFunction); // remove the group key\n\n expr = util_1.into({}, expr);\n delete expr[ID_KEY];\n var i = -1;\n var size = partitions.keys.length;\n return function () {\n if (++i === size) return {\n done: true\n };\n var value = partitions.keys[i];\n var obj = {}; // exclude undefined key value\n\n if (value !== undefined) {\n obj[ID_KEY] = value;\n } // compute remaining keys in expression\n\n\n for (var _i = 0, _a = Object.entries(expr); _i < _a.length; _i++) {\n var _b = _a[_i],\n key = _b[0],\n val = _b[1];\n obj[key] = core_1.computeValue(partitions.groups[i], val, key, options);\n }\n\n return {\n value: obj,\n done: false\n };\n };\n });\n}\n\nexports.$group = $group;","\"use strict\";\n/**\n * Pipeline Aggregation Stages. https://docs.mongodb.com/manual/reference/operator/aggregation-\n */\n\nvar __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, {\n enumerable: true,\n get: function get() {\n return m[k];\n }\n });\n} : function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nvar __exportStar = this && this.__exportStar || function (m, exports) {\n for (var p in m) {\n if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n }\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\n__exportStar(require(\"./addFields\"), exports);\n\n__exportStar(require(\"./bucket\"), exports);\n\n__exportStar(require(\"./bucketAuto\"), exports);\n\n__exportStar(require(\"./count\"), exports);\n\n__exportStar(require(\"./facet\"), exports);\n\n__exportStar(require(\"./group\"), exports);\n\n__exportStar(require(\"./limit\"), exports);\n\n__exportStar(require(\"./lookup\"), exports);\n\n__exportStar(require(\"./match\"), exports);\n\n__exportStar(require(\"./out\"), exports);\n\n__exportStar(require(\"./project\"), exports);\n\n__exportStar(require(\"./redact\"), exports);\n\n__exportStar(require(\"./replaceRoot\"), exports);\n\n__exportStar(require(\"./replaceWith\"), exports);\n\n__exportStar(require(\"./sample\"), exports);\n\n__exportStar(require(\"./set\"), exports);\n\n__exportStar(require(\"./skip\"), exports);\n\n__exportStar(require(\"./sort\"), exports);\n\n__exportStar(require(\"./sortByCount\"), exports);\n\n__exportStar(require(\"./unset\"), exports);\n\n__exportStar(require(\"./unwind\"), exports);","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.$limit = void 0;\n/**\n * Restricts the number of documents in an aggregation pipeline.\n *\n * @param collection\n * @param value\n * @param options\n * @returns {Object|*}\n */\n\nfunction $limit(collection, expr, options) {\n return collection.take(expr);\n}\n\nexports.$limit = $limit;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.$lookup = void 0;\n\nvar util_1 = require(\"../../util\");\n/**\n * Performs a left outer join to another collection in the same database to filter in documents from the “joined” collection for processing.\n *\n * @param collection\n * @param expr\n * @param opt\n */\n\n\nfunction $lookup(collection, expr, options) {\n var joinColl = util_1.isString(expr.from) ? options === null || options === void 0 ? void 0 : options.collectionResolver(expr.from) : expr.from;\n util_1.assert(joinColl instanceof Array, \"'from' field must resolve to an array\");\n var hash = {};\n\n for (var _i = 0, joinColl_1 = joinColl; _i < joinColl_1.length; _i++) {\n var obj = joinColl_1[_i];\n var k = util_1.hashCode(util_1.resolve(obj, expr.foreignField), options === null || options === void 0 ? void 0 : options.hashFunction);\n hash[k] = hash[k] || [];\n hash[k].push(obj);\n }\n\n return collection.map(function (obj) {\n var k = util_1.hashCode(util_1.resolve(obj, expr.localField), options === null || options === void 0 ? void 0 : options.hashFunction);\n var newObj = util_1.into({}, obj);\n newObj[expr.as] = hash[k] || [];\n return newObj;\n });\n}\n\nexports.$lookup = $lookup;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.$match = void 0;\n\nvar query_1 = require(\"../../query\");\n/**\n * Filters the document stream, and only allows matching documents to pass into the next pipeline stage.\n * $match uses standard MongoDB queries.\n *\n * @param collection\n * @param expr\n * @param options\n * @returns {Array|*}\n */\n\n\nfunction $match(collection, expr, options) {\n var q = new query_1.Query(expr, options);\n return collection.filter(function (o) {\n return q.test(o);\n });\n}\n\nexports.$match = $match;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.$out = void 0;\n\nvar util_1 = require(\"../../util\");\n/**\n * Takes the documents returned by the aggregation pipeline and writes them to a specified collection.\n *\n * Unlike the $out operator in MongoDB, this operator can appear in any position in the pipeline and is\n * useful for collecting intermediate results of an aggregation operation.\n *\n * @param collection\n * @param expr\n * @param options\n * @returns {*}\n */\n\n\nfunction $out(collection, expr, options) {\n var outputColl = util_1.isString(expr) ? options === null || options === void 0 ? void 0 : options.collectionResolver(expr) : expr;\n util_1.assert(outputColl instanceof Array, \"expression must resolve to an array\");\n return collection.map(function (o) {\n outputColl.push(o);\n return o; // passthrough\n });\n}\n\nexports.$out = $out;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.$project = void 0;\n\nvar core_1 = require(\"../../core\");\n\nvar util_1 = require(\"../../util\");\n/**\n * Reshapes a document stream.\n * $project can rename, add, or remove fields as well as create computed values and sub-documents.\n *\n * @param collection\n * @param expr\n * @param opt\n * @returns {Array}\n */\n\n\nfunction $project(collection, expr, options) {\n if (util_1.isEmpty(expr)) return collection; // result collection\n\n var expressionKeys = Object.keys(expr);\n var idOnlyExcluded = false; // validate inclusion and exclusion\n\n validateExpression(expr, options);\n var ID_KEY = options.idKey;\n\n if (util_1.inArray(expressionKeys, ID_KEY)) {\n var id = expr[ID_KEY];\n\n if (id === 0 || id === false) {\n expressionKeys = expressionKeys.filter(util_1.notInArray.bind(null, [ID_KEY]));\n idOnlyExcluded = expressionKeys.length == 0;\n }\n } else {\n // if not specified the add the ID field\n expressionKeys.push(ID_KEY);\n }\n\n return collection.map(function (obj) {\n return processObject(obj, expr, options, expressionKeys, idOnlyExcluded);\n });\n}\n\nexports.$project = $project;\n/**\n * Process the expression value for $project operators\n *\n * @param {Object} obj The object to use as options\n * @param {Object} expr The experssion object of $project operator\n * @param {Array} expressionKeys The key in the 'expr' object\n * @param {Boolean} idOnlyExcluded Boolean value indicating whether only the ID key is excluded\n */\n\nfunction processObject(obj, expr, options, expressionKeys, idOnlyExcluded) {\n var newObj = {};\n var foundSlice = false;\n var foundExclusion = false;\n var dropKeys = [];\n\n if (idOnlyExcluded) {\n dropKeys.push(options.idKey);\n }\n\n var _loop_1 = function _loop_1(key) {\n // final computed value of the key\n var value = undefined; // expression to associate with key\n\n var subExpr = expr[key];\n\n if (key !== options.idKey && util_1.inArray([0, false], subExpr)) {\n foundExclusion = true;\n }\n\n if (key === options.idKey && util_1.isEmpty(subExpr)) {\n // tiny optimization here to skip over id\n value = obj[key];\n } else if (util_1.isString(subExpr)) {\n value = core_1.computeValue(obj, subExpr, key, options);\n } else if (util_1.inArray([1, true], subExpr)) {// For direct projections, we use the resolved object value\n } else if (subExpr instanceof Array) {\n value = subExpr.map(function (v) {\n var r = core_1.computeValue(obj, v, null, options);\n if (util_1.isNil(r)) return null;\n return r;\n });\n } else if (util_1.isObject(subExpr)) {\n var subExprObj_1 = subExpr;\n var subExprKeys_1 = Object.keys(subExpr);\n var operator = subExprKeys_1.length == 1 ? subExprKeys_1[0] : null; // first try a projection operator\n\n var call = core_1.getOperator(core_1.OperatorType.PROJECTION, operator);\n\n if (call) {\n // apply the projection operator on the operator expression for the key\n if (operator === \"$slice\") {\n // $slice is handled differently for aggregation and projection operations\n if (util_1.ensureArray(subExprObj_1[operator]).every(util_1.isNumber)) {\n // $slice for projection operation\n value = call(obj, subExprObj_1[operator], key);\n foundSlice = true;\n } else {\n // $slice for aggregation operation\n value = core_1.computeValue(obj, subExprObj_1, key, options);\n }\n } else {\n value = call(obj, subExprObj_1[operator], key, options);\n }\n } else if (util_1.isOperator(operator)) {\n // compute if operator key\n value = core_1.computeValue(obj, subExprObj_1[operator], operator, options);\n } else if (util_1.has(obj, key)) {\n // compute the value for the sub expression for the key\n validateExpression(subExprObj_1, options);\n var target = obj[key];\n\n if (target instanceof Array) {\n value = target.map(function (o) {\n return processObject(o, subExprObj_1, options, subExprKeys_1, false);\n });\n } else {\n target = util_1.isObject(target) ? target : obj;\n value = processObject(target, subExprObj_1, options, subExprKeys_1, false);\n }\n } else {\n // compute the value for the sub expression for the key\n value = core_1.computeValue(obj, subExpr, null, options);\n }\n } else {\n dropKeys.push(key);\n return \"continue\";\n } // get value with object graph\n\n\n var objPathGraph = util_1.resolveGraph(obj, key, {\n preserveMissing: true\n }); // add the value at the path\n\n if (objPathGraph !== undefined) {\n util_1.merge(newObj, objPathGraph, {\n flatten: true\n });\n } // if computed add/or remove accordingly\n\n\n if (util_1.notInArray([0, 1, false, true], subExpr)) {\n if (value === undefined) {\n util_1.removeValue(newObj, key);\n } else {\n util_1.setValue(newObj, key, value);\n }\n }\n };\n\n for (var _i = 0, expressionKeys_1 = expressionKeys; _i < expressionKeys_1.length; _i++) {\n var key = expressionKeys_1[_i];\n\n _loop_1(key);\n } // filter out all missing values preserved to support correct merging\n\n\n util_1.filterMissing(newObj); // For the following cases we include all keys on the object that were not explicitly excluded.\n //\n // 1. projection included $slice operator\n // 2. some fields were explicitly excluded\n // 3. only the id field was excluded\n\n if (foundSlice || foundExclusion || idOnlyExcluded) {\n newObj = util_1.into({}, obj, newObj);\n\n if (dropKeys.length > 0) {\n newObj = util_1.cloneDeep(newObj);\n\n for (var _a = 0, dropKeys_1 = dropKeys; _a < dropKeys_1.length; _a++) {\n var k = dropKeys_1[_a];\n util_1.removeValue(newObj, k);\n }\n }\n }\n\n return newObj;\n}\n/**\n * Validate inclusion and exclusion values in expression\n *\n * @param {Object} expr The expression given for the projection\n */\n\n\nfunction validateExpression(expr, options) {\n var check = [false, false];\n\n for (var _i = 0, _a = Object.entries(expr); _i < _a.length; _i++) {\n var _b = _a[_i],\n k = _b[0],\n v = _b[1];\n if (k === options.idKey) return;\n\n if (v === 0 || v === false) {\n check[0] = true;\n } else if (v === 1 || v === true) {\n check[1] = true;\n }\n\n util_1.assert(!(check[0] && check[1]), \"Projection cannot have a mix of inclusion and exclusion.\");\n }\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.$redact = void 0;\n\nvar core_1 = require(\"../../core\");\n\nvar util_1 = require(\"../../util\");\n/**\n * Restricts the contents of the documents based on information stored in the documents themselves.\n *\n * https://docs.mongodb.com/manual/reference/operator/aggregation/redact/\n */\n\n\nfunction $redact(collection, expr, options) {\n return collection.map(function (obj) {\n return core_1.redact(util_1.cloneDeep(obj), expr, options);\n });\n}\n\nexports.$redact = $redact;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.$replaceRoot = void 0;\n\nvar core_1 = require(\"../../core\");\n\nvar util_1 = require(\"../../util\");\n/**\n * Replaces a document with the specified embedded document or new one.\n * The replacement document can be any valid expression that resolves to a document.\n *\n * https://docs.mongodb.com/manual/reference/operator/aggregation/replaceRoot/\n *\n * @param {Iterator} collection\n * @param {Object} expr\n * @param {Object} options\n * @return {*}\n */\n\n\nfunction $replaceRoot(collection, expr, options) {\n return collection.map(function (obj) {\n obj = core_1.computeValue(obj, expr.newRoot, null, options);\n util_1.assert(util_1.isObject(obj), \"$replaceRoot expression must return an object\");\n return obj;\n });\n}\n\nexports.$replaceRoot = $replaceRoot;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.$replaceWith = void 0;\n\nvar replaceRoot_1 = require(\"./replaceRoot\");\n/**\n * Alias for $replaceRoot\n */\n\n\nexports.$replaceWith = replaceRoot_1.$replaceRoot;","\"use strict\"; // $sample operator - https://docs.mongodb.com/manual/reference/operator/aggregation/sample/\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.$sample = void 0;\n/**\n * Randomly selects the specified number of documents from its input. The given iterator must have finite values\n *\n * @param {Iterator} collection\n * @param {Object} expr\n * @param {Options} options\n * @return {*}\n */\n\nfunction $sample(collection, expr, options) {\n return collection.transform(function (xs) {\n var len = xs.length;\n var i = -1;\n return function () {\n if (++i === expr.size) return {\n done: true\n };\n var n = Math.floor(Math.random() * len);\n return {\n value: xs[n],\n done: false\n };\n };\n });\n}\n\nexports.$sample = $sample;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.$set = void 0;\n\nvar addFields_1 = require(\"./addFields\");\n/**\n * Alias for $addFields.\n */\n\n\nexports.$set = addFields_1.$addFields;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.$skip = void 0;\n/**\n * Skips over a specified number of documents from the pipeline and returns the rest.\n *\n * @param collection An iterator\n * @param expr\n * @param {Options} options\n * @returns {*}\n */\n\nfunction $skip(collection, expr, options) {\n return collection.drop(expr);\n}\n\nexports.$skip = $skip;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.$sort = void 0;\n\nvar util_1 = require(\"../../util\");\n/**\n * Takes all input documents and returns them in a stream of sorted documents.\n *\n * @param collection\n * @param sortKeys\n * @param {Object} options\n * @returns {*}\n */\n\n\nfunction $sort(collection, sortKeys, options) {\n if (util_1.isEmpty(sortKeys) || !util_1.isObject(sortKeys)) return collection;\n var cmp = util_1.compare; // check for collation spec on the options\n\n var collationSpec = options.collation; // use collation comparator if provided\n\n if (util_1.isObject(collationSpec) && util_1.isString(collationSpec.locale)) {\n cmp = collationComparator(collationSpec);\n }\n\n return collection.transform(function (coll) {\n var modifiers = Object.keys(sortKeys);\n\n var _loop_1 = function _loop_1(key) {\n var grouped = util_1.groupBy(coll, function (obj) {\n return util_1.resolve(obj, key);\n }, options === null || options === void 0 ? void 0 : options.hashFunction);\n var sortedIndex = {};\n var indexKeys = util_1.sortBy(grouped.keys, function (k, i) {\n sortedIndex[k] = i;\n return k;\n }, cmp);\n if (sortKeys[key] === -1) indexKeys.reverse();\n coll = [];\n\n for (var _b = 0, indexKeys_1 = indexKeys; _b < indexKeys_1.length; _b++) {\n var k = indexKeys_1[_b];\n util_1.into(coll, grouped.groups[sortedIndex[k]]);\n }\n };\n\n for (var _i = 0, _a = modifiers.reverse(); _i < _a.length; _i++) {\n var key = _a[_i];\n\n _loop_1(key);\n }\n\n return coll;\n });\n}\n\nexports.$sort = $sort; // MongoDB collation strength to JS localeCompare sensitivity mapping.\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/localeCompare\n\nvar COLLATION_STRENGTH = {\n // Only strings that differ in base letters compare as unequal. Examples: a ≠ b, a = á, a = A.\n 1: \"base\",\n // Only strings that differ in base letters or accents and other diacritic marks compare as unequal.\n // Examples: a ≠ b, a ≠ á, a = A.\n 2: \"accent\",\n // Strings that differ in base letters, accents and other diacritic marks, or case compare as unequal.\n // Other differences may also be taken into consideration. Examples: a ≠ b, a ≠ á, a ≠ A\n 3: \"variant\" // case - Only strings that differ in base letters or case compare as unequal. Examples: a ≠ b, a = á, a ≠ A.\n\n};\n/**\n * Creates a comparator function for the given collation spec. See https://docs.mongodb.com/manual/reference/collation/\n *\n * @param spec {Object} The MongoDB collation spec.\n * {\n * locale: string,\n * caseLevel: boolean,\n * caseFirst: string,\n * strength: int,\n * numericOrdering: boolean,\n * alternate: string,\n * maxVariable: string, // unsupported\n * backwards: boolean // unsupported\n * }\n */\n\nfunction collationComparator(spec) {\n var localeOpt = {\n sensitivity: COLLATION_STRENGTH[spec.strength || 3],\n caseFirst: spec.caseFirst === \"off\" ? \"false\" : spec.caseFirst || \"false\",\n numeric: spec.numericOrdering || false,\n ignorePunctuation: spec.alternate === \"shifted\"\n }; // when caseLevel is true for strength 1:base and 2:accent, bump sensitivity to the nearest that supports case comparison\n\n if ((spec.caseLevel || false) === true) {\n if (localeOpt.sensitivity === \"base\") localeOpt.sensitivity = \"case\";\n if (localeOpt.sensitivity === \"accent\") localeOpt.sensitivity = \"variant\";\n }\n\n var collator = new Intl.Collator(spec.locale, localeOpt);\n return function (a, b) {\n // non strings\n if (!util_1.isString(a) || !util_1.isString(b)) return util_1.compare(a, b); // only for strings\n\n var i = collator.compare(a, b);\n if (i < 0) return -1;\n if (i > 0) return 1;\n return 0;\n };\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.$sortByCount = void 0;\n\nvar group_1 = require(\"./group\");\n\nvar sort_1 = require(\"./sort\");\n/**\n * Groups incoming documents based on the value of a specified expression,\n * then computes the count of documents in each distinct group.\n *\n * https://docs.mongodb.com/manual/reference/operator/aggregation/sortByCount/\n *\n * @param {Array} collection\n * @param {Object} expr\n * @param {Object} options\n * @return {*}\n */\n\n\nfunction $sortByCount(collection, expr, options) {\n var newExpr = {\n count: {\n $sum: 1\n }\n };\n newExpr[\"_id\"] = expr;\n return sort_1.$sort(group_1.$group(collection, newExpr, options), {\n count: -1\n }, options);\n}\n\nexports.$sortByCount = $sortByCount;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.$unset = void 0;\n\nvar util_1 = require(\"../../util\");\n\nvar project_1 = require(\"./project\");\n/**\n * Removes/excludes fields from documents.\n *\n * @param collection\n * @param expr\n * @param options\n * @returns {Iterator}\n */\n\n\nfunction $unset(collection, expr, options) {\n expr = util_1.ensureArray(expr);\n var doc = {};\n\n for (var _i = 0, expr_1 = expr; _i < expr_1.length; _i++) {\n var k = expr_1[_i];\n doc[k] = 0;\n }\n\n return project_1.$project(collection, doc, options);\n}\n\nexports.$unset = $unset;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.$unwind = void 0;\n\nvar lazy_1 = require(\"../../lazy\");\n\nvar util_1 = require(\"../../util\");\n/**\n * Takes an array of documents and returns them as a stream of documents.\n *\n * @param collection\n * @param expr\n * @param options\n * @returns {Array}\n */\n\n\nfunction $unwind(collection, expr, options) {\n if (util_1.isString(expr)) expr = {\n path: expr\n };\n var path = expr.path;\n var field = path.substr(1);\n var includeArrayIndex = (expr === null || expr === void 0 ? void 0 : expr.includeArrayIndex) || false;\n var preserveNullAndEmptyArrays = expr.preserveNullAndEmptyArrays || false;\n\n var format = function format(o, i) {\n if (includeArrayIndex !== false) o[includeArrayIndex] = i;\n return o;\n };\n\n var value;\n return lazy_1.Lazy(function () {\n var _loop_1 = function _loop_1() {\n // take from lazy sequence if available\n if (value instanceof lazy_1.Iterator) {\n var tmp = value.next();\n if (!tmp.done) return {\n value: tmp\n };\n } // fetch next object\n\n\n var wrapper = collection.next();\n if (wrapper.done) return {\n value: wrapper\n }; // unwrap value\n\n var obj = wrapper.value; // get the value of the field to unwind\n\n value = util_1.resolve(obj, field); // throw error if value is not an array???\n\n if (value instanceof Array) {\n if (value.length === 0 && preserveNullAndEmptyArrays === true) {\n value = null; // reset unwind value\n\n var tmp = util_1.cloneDeep(obj);\n util_1.removeValue(tmp, field);\n return {\n value: {\n value: format(tmp, null),\n done: false\n }\n };\n } else {\n // construct a lazy sequence for elements per value\n value = lazy_1.Lazy(value).map(function (item, i) {\n var tmp = util_1.cloneDeep(obj);\n util_1.setValue(tmp, field, item);\n return format(tmp, i);\n });\n }\n } else if (!util_1.isEmpty(value) || preserveNullAndEmptyArrays === true) {\n var tmp = util_1.cloneDeep(obj);\n return {\n value: {\n value: format(tmp, null),\n done: false\n }\n };\n }\n };\n\n for (;;) {\n var state_1 = _loop_1();\n\n if (typeof state_1 === \"object\") return state_1.value;\n }\n });\n}\n\nexports.$unwind = $unwind;","\"use strict\"; // $elemMatch operator. https://docs.mongodb.com/manual/reference/operator/projection/elemMatch/#proj._S_elemMatch\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.$elemMatch = void 0;\n\nvar query_1 = require(\"../../query\");\n\nvar util_1 = require(\"../../util\");\n/**\n * Projects only the first element from an array that matches the specified $elemMatch condition.\n *\n * @param obj\n * @param field\n * @param expr\n * @returns {*}\n */\n\n\nfunction $elemMatch(obj, expr, field, options) {\n var arr = util_1.resolve(obj, field);\n var query = new query_1.Query(expr, options);\n util_1.assert(arr instanceof Array, \"$elemMatch: argument must resolve to array\");\n\n for (var i = 0; i < arr.length; i++) {\n if (query.test(arr[i])) return [arr[i]];\n }\n\n return undefined;\n}\n\nexports.$elemMatch = $elemMatch;","\"use strict\"; // Projection Operators. https://docs.mongodb.com/manual/reference/operator/projection/\n\nvar __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, {\n enumerable: true,\n get: function get() {\n return m[k];\n }\n });\n} : function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nvar __exportStar = this && this.__exportStar || function (m, exports) {\n for (var p in m) {\n if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n }\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\n__exportStar(require(\"./elemMatch\"), exports);\n\n__exportStar(require(\"./slice\"), exports);","\"use strict\"; // $slice operator. https://docs.mongodb.com/manual/reference/operator/projection/slice/#proj._S_slice\n\nvar __spreadArray = this && this.__spreadArray || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++) {\n to[j] = from[i];\n }\n\n return to;\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.$slice = void 0;\n\nvar util_1 = require(\"../../util\");\n\nvar slice_1 = require(\"../expression/array/slice\");\n/**\n * Limits the number of elements projected from an array. Supports skip and limit slices.\n *\n * @param obj\n * @param field\n * @param expr\n */\n\n\nfunction $slice(obj, expr, field, options) {\n var xs = util_1.resolve(obj, field);\n var exprAsArray = expr;\n if (!util_1.isArray(xs)) return xs;\n return slice_1.$slice(obj, expr instanceof Array ? __spreadArray([xs], exprAsArray) : [xs, expr], options);\n}\n\nexports.$slice = $slice;","\"use strict\"; // Query Array Operators: https://docs.mongodb.com/manual/reference/operator/query-array/\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.$all = void 0;\n\nvar _predicates_1 = require(\"../../_predicates\");\n/**\n * Matches arrays that contain all elements specified in the query.\n */\n\n\nexports.$all = _predicates_1.createQueryOperator(_predicates_1.$all);","\"use strict\"; // Query Array Operators: https://docs.mongodb.com/manual/reference/operator/query-array/\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.$elemMatch = void 0;\n\nvar _predicates_1 = require(\"../../_predicates\");\n/**\n * Selects documents if element in the array field matches all the specified $elemMatch conditions.\n */\n\n\nexports.$elemMatch = _predicates_1.createQueryOperator(_predicates_1.$elemMatch);","\"use strict\";\n\nvar __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, {\n enumerable: true,\n get: function get() {\n return m[k];\n }\n });\n} : function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nvar __exportStar = this && this.__exportStar || function (m, exports) {\n for (var p in m) {\n if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n }\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\n__exportStar(require(\"./all\"), exports);\n\n__exportStar(require(\"./elemMatch\"), exports);\n\n__exportStar(require(\"./size\"), exports);","\"use strict\"; // Query Array Operators: https://docs.mongodb.com/manual/reference/operator/query-array/\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.$size = void 0;\n\nvar _predicates_1 = require(\"../../_predicates\");\n/**\n * Selects documents if the array field is a specified size.\n */\n\n\nexports.$size = _predicates_1.createQueryOperator(_predicates_1.$size);","\"use strict\"; // Query Comparison Operators: https://docs.mongodb.com/manual/reference/operator/query-comparison/\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.$nin = exports.$ne = exports.$lte = exports.$lt = exports.$in = exports.$gte = exports.$gt = exports.$eq = void 0;\n\nvar _predicates_1 = require(\"../_predicates\");\n/**\n * Matches values that are equal to a specified value.\n */\n\n\nexports.$eq = _predicates_1.createQueryOperator(_predicates_1.$eq);\n/**\n * Matches values that are greater than a specified value.\n */\n\nexports.$gt = _predicates_1.createQueryOperator(_predicates_1.$gt);\n/**\n * \tMatches values that are greater than or equal to a specified value.\n */\n\nexports.$gte = _predicates_1.createQueryOperator(_predicates_1.$gte);\n/**\n * Matches any of the values that exist in an array specified in the query.\n */\n\nexports.$in = _predicates_1.createQueryOperator(_predicates_1.$in);\n/**\n * Matches values that are less than the value specified in the query.\n */\n\nexports.$lt = _predicates_1.createQueryOperator(_predicates_1.$lt);\n/**\n * Matches values that are less than or equal to the value specified in the query.\n */\n\nexports.$lte = _predicates_1.createQueryOperator(_predicates_1.$lte);\n/**\n * Matches all values that are not equal to the value specified in the query.\n */\n\nexports.$ne = _predicates_1.createQueryOperator(_predicates_1.$ne);\n/**\n * Matches values that do not exist in an array specified to the query.\n */\n\nexports.$nin = _predicates_1.createQueryOperator(_predicates_1.$nin);","\"use strict\"; // Query Element Operators: https://docs.mongodb.com/manual/reference/operator/query-element/\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.$exists = void 0;\n\nvar _predicates_1 = require(\"../../_predicates\");\n/**\n * Matches documents that have the specified field.\n */\n\n\nexports.$exists = _predicates_1.createQueryOperator(_predicates_1.$exists);","\"use strict\";\n\nvar __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, {\n enumerable: true,\n get: function get() {\n return m[k];\n }\n });\n} : function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nvar __exportStar = this && this.__exportStar || function (m, exports) {\n for (var p in m) {\n if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n }\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\n__exportStar(require(\"./exists\"), exports);\n\n__exportStar(require(\"./type\"), exports);","\"use strict\"; // Query Element Operators: https://docs.mongodb.com/manual/reference/operator/query-element/\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.$type = void 0;\n\nvar _predicates_1 = require(\"../../_predicates\");\n/**\n * Selects documents if a field is of the specified type.\n */\n\n\nexports.$type = _predicates_1.createQueryOperator(_predicates_1.$type);","\"use strict\"; // Query Evaluation Operators: https://docs.mongodb.com/manual/reference/operator/query-evaluation/\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.$expr = void 0;\n\nvar core_1 = require(\"../../../core\");\n/**\n * Allows the use of aggregation expressions within the query language.\n *\n * @param selector\n * @param value\n * @returns {Function}\n */\n\n\nfunction $expr(selector, value, options) {\n return function (obj) {\n return core_1.computeValue(obj, value, null, options);\n };\n}\n\nexports.$expr = $expr;","\"use strict\";\n\nvar __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, {\n enumerable: true,\n get: function get() {\n return m[k];\n }\n });\n} : function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nvar __exportStar = this && this.__exportStar || function (m, exports) {\n for (var p in m) {\n if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n }\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\n__exportStar(require(\"./expr\"), exports);\n\n__exportStar(require(\"./mod\"), exports);\n\n__exportStar(require(\"./regex\"), exports); // $where operator is not included by default","\"use strict\"; // Query Evaluation Operators: https://docs.mongodb.com/manual/reference/operator/query-evaluation/\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.$mod = void 0;\n\nvar _predicates_1 = require(\"../../_predicates\");\n/**\n * Performs a modulo operation on the value of a field and selects documents with a specified result.\n */\n\n\nexports.$mod = _predicates_1.createQueryOperator(_predicates_1.$mod);","\"use strict\"; // Query Evaluation Operators: https://docs.mongodb.com/manual/reference/operator/query-evaluation/\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.$regex = void 0;\n\nvar _predicates_1 = require(\"../../_predicates\");\n/**\n * Selects documents where values match a specified regular expression.\n */\n\n\nexports.$regex = _predicates_1.createQueryOperator(_predicates_1.$regex);","\"use strict\";\n\nvar __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, {\n enumerable: true,\n get: function get() {\n return m[k];\n }\n });\n} : function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nvar __exportStar = this && this.__exportStar || function (m, exports) {\n for (var p in m) {\n if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n }\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\n__exportStar(require(\"./array\"), exports);\n\n__exportStar(require(\"./comparison\"), exports);\n\n__exportStar(require(\"./element\"), exports);\n\n__exportStar(require(\"./evaluation\"), exports);\n\n__exportStar(require(\"./logical\"), exports);","\"use strict\"; // Query Logical Operators: https://docs.mongodb.com/manual/reference/operator/query-logical/\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.$and = void 0;\n\nvar query_1 = require(\"../../../query\");\n\nvar util_1 = require(\"../../../util\");\n/**\n * Joins query clauses with a logical AND returns all documents that match the conditions of both clauses.\n *\n * @param selector\n * @param value\n * @returns {Function}\n */\n\n\nfunction $and(selector, value, options) {\n util_1.assert(util_1.isArray(value), \"Invalid expression: $and expects value to be an Array\");\n var queries = new Array();\n value.forEach(function (expr) {\n return queries.push(new query_1.Query(expr, options));\n });\n return function (obj) {\n for (var i = 0; i < queries.length; i++) {\n if (!queries[i].test(obj)) {\n return false;\n }\n }\n\n return true;\n };\n}\n\nexports.$and = $and;","\"use strict\";\n\nvar __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, {\n enumerable: true,\n get: function get() {\n return m[k];\n }\n });\n} : function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nvar __exportStar = this && this.__exportStar || function (m, exports) {\n for (var p in m) {\n if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n }\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\n__exportStar(require(\"./and\"), exports);\n\n__exportStar(require(\"./nor\"), exports);\n\n__exportStar(require(\"./not\"), exports);\n\n__exportStar(require(\"./or\"), exports);","\"use strict\"; // Query Logical Operators: https://docs.mongodb.com/manual/reference/operator/query-logical/\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.$nor = void 0;\n\nvar util_1 = require(\"../../../util\");\n\nvar or_1 = require(\"./or\");\n/**\n * Joins query clauses with a logical NOR returns all documents that fail to match both clauses.\n *\n * @param selector\n * @param value\n * @returns {Function}\n */\n\n\nfunction $nor(selector, value, options) {\n util_1.assert(util_1.isArray(value), \"Invalid expression. $nor expects value to be an Array\");\n var f = or_1.$or(\"$or\", value, options);\n return function (obj) {\n return !f(obj);\n };\n}\n\nexports.$nor = $nor;","\"use strict\"; // Query Logical Operators: https://docs.mongodb.com/manual/reference/operator/query-logical/\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.$not = void 0;\n\nvar query_1 = require(\"../../../query\");\n\nvar util_1 = require(\"../../../util\");\n/**\n * Inverts the effect of a query expression and returns documents that do not match the query expression.\n *\n * @param selector\n * @param value\n * @returns {Function}\n */\n\n\nfunction $not(selector, value, options) {\n var criteria = {};\n criteria[selector] = util_1.normalize(value);\n var query = new query_1.Query(criteria, options);\n return function (obj) {\n return !query.test(obj);\n };\n}\n\nexports.$not = $not;","\"use strict\"; // Query Logical Operators: https://docs.mongodb.com/manual/reference/operator/query-logical/\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.$or = void 0;\n\nvar query_1 = require(\"../../../query\");\n\nvar util_1 = require(\"../../../util\");\n/**\n * Joins query clauses with a logical OR returns all documents that match the conditions of either clause.\n *\n * @param selector\n * @param value\n * @returns {Function}\n */\n\n\nfunction $or(selector, value, options) {\n util_1.assert(util_1.isArray(value), \"Invalid expression. $or expects value to be an Array\");\n var queries = value.map(function (expr) {\n return new query_1.Query(expr, options);\n });\n return function (obj) {\n for (var i = 0; i < queries.length; i++) {\n if (queries[i].test(obj)) {\n return true;\n }\n }\n\n return false;\n };\n}\n\nexports.$or = $or;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Query = void 0;\n\nvar core_1 = require(\"./core\");\n\nvar cursor_1 = require(\"./cursor\");\n\nvar util_1 = require(\"./util\");\n/**\n * An object used to filter input documents\n *\n * @param {Object} criteria The criteria for constructing predicates\n * @param {Options} options Options for use by operators\n * @constructor\n */\n\n\nvar Query =\n/** @class */\nfunction () {\n function Query(criteria, options) {\n this.__criteria = criteria;\n this.__options = core_1.makeOptions(options);\n this.__compiled = [];\n\n this._compile();\n }\n\n Query.prototype._compile = function () {\n util_1.assert(util_1.isObject(this.__criteria), \"query criteria must be an object\");\n var whereOperator;\n\n for (var _i = 0, _a = Object.entries(this.__criteria); _i < _a.length; _i++) {\n var _b = _a[_i],\n field = _b[0],\n expr = _b[1];\n\n if (\"$where\" === field) {\n whereOperator = {\n field: field,\n expr: expr\n };\n } else if (\"$expr\" === field) {\n this._processOperator(field, field, expr);\n } else if (util_1.inArray([\"$and\", \"$or\", \"$nor\"], field)) {\n this._processOperator(field, field, expr);\n } else {\n // normalize expression\n util_1.assert(!util_1.isOperator(field), \"unknown top level operator: \" + field);\n\n for (var _c = 0, _d = Object.entries(util_1.normalize(expr)); _c < _d.length; _c++) {\n var _e = _d[_c],\n operator = _e[0],\n val = _e[1];\n\n this._processOperator(field, operator, val);\n }\n }\n\n if (util_1.isObject(whereOperator)) {\n this._processOperator(whereOperator.field, whereOperator.field, whereOperator.expr);\n }\n }\n };\n\n Query.prototype._processOperator = function (field, operator, value) {\n var call = core_1.getOperator(core_1.OperatorType.QUERY, operator);\n util_1.assert(!!call, \"unknown operator \" + operator);\n var fn = call(field, value, this.__options);\n\n this.__compiled.push(fn);\n };\n /**\n * Checks if the object passes the query criteria. Returns true if so, false otherwise.\n *\n * @param obj The object to test\n * @returns {boolean} True or false\n */\n\n\n Query.prototype.test = function (obj) {\n for (var i = 0, len = this.__compiled.length; i < len; i++) {\n if (!this.__compiled[i](obj)) {\n return false;\n }\n }\n\n return true;\n };\n /**\n * Returns a cursor to select matching documents from the input source.\n *\n * @param source A source providing a sequence of documents\n * @param projection An optional projection criteria\n * @returns {Cursor} A Cursor for iterating over the results\n */\n\n\n Query.prototype.find = function (collection, projection) {\n var _this = this;\n\n return new cursor_1.Cursor(collection, function (x) {\n return _this.test(x);\n }, projection || {}, this.__options);\n };\n /**\n * Remove matched documents from the collection returning the remainder\n *\n * @param collection An array of documents\n * @returns {Array} A new array with matching elements removed\n */\n\n\n Query.prototype.remove = function (collection) {\n var _this = this;\n\n return collection.reduce(function (acc, obj) {\n if (!_this.test(obj)) acc.push(obj);\n return acc;\n }, []);\n };\n\n return Query;\n}();\n\nexports.Query = Query;","\"use strict\";\n/**\n * Utility constants and functions\n */\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.normalize = exports.isOperator = exports.removeValue = exports.setValue = exports.traverse = exports.filterMissing = exports.resolveGraph = exports.resolve = exports.memoize = exports.into = exports.groupBy = exports.sortBy = exports.compare = exports.hashCode = exports.unique = exports.isEqual = exports.flatten = exports.union = exports.intersection = exports.merge = exports.objectMap = exports.has = exports.ensureArray = exports.isEmpty = exports.truthy = exports.notInArray = exports.inArray = exports.isUndefined = exports.isNull = exports.isNil = exports.isFunction = exports.isRegExp = exports.isDate = exports.isObjectLike = exports.isObject = exports.isArray = exports.isNumber = exports.isString = exports.isBoolean = exports.getType = exports.cloneDeep = exports.assert = exports.BsonType = exports.JsType = exports.MIN_LONG = exports.MAX_LONG = exports.MIN_INT = exports.MAX_INT = void 0;\nexports.MAX_INT = 2147483647;\nexports.MIN_INT = -2147483648;\nexports.MAX_LONG = Number.MAX_SAFE_INTEGER;\nexports.MIN_LONG = Number.MIN_SAFE_INTEGER; // special value to identify missing items. treated differently from undefined\n\nvar MISSING = {};\n\nvar DEFAULT_HASH_FUNC = function DEFAULT_HASH_FUNC(value) {\n var s = encode(value);\n var hash = 0;\n var i = s.length;\n\n while (i) {\n hash = (hash << 5) - hash ^ s.charCodeAt(--i);\n }\n\n var code = hash >>> 0;\n return code.toString();\n}; // Javascript native types\n\n\nvar JsType;\n\n(function (JsType) {\n JsType[\"NULL\"] = \"null\";\n JsType[\"UNDEFINED\"] = \"undefined\";\n JsType[\"BOOLEAN\"] = \"boolean\";\n JsType[\"NUMBER\"] = \"number\";\n JsType[\"STRING\"] = \"string\";\n JsType[\"DATE\"] = \"date\";\n JsType[\"REGEXP\"] = \"regexp\";\n JsType[\"ARRAY\"] = \"array\";\n JsType[\"OBJECT\"] = \"object\";\n JsType[\"FUNCTION\"] = \"function\";\n})(JsType = exports.JsType || (exports.JsType = {})); // MongoDB BSON types\n\n\nvar BsonType;\n\n(function (BsonType) {\n BsonType[\"BOOL\"] = \"bool\";\n BsonType[\"INT\"] = \"int\";\n BsonType[\"LONG\"] = \"long\";\n BsonType[\"DOUBLE\"] = \"double\";\n BsonType[\"DECIMAL\"] = \"decimal\";\n BsonType[\"REGEX\"] = \"regex\";\n})(BsonType = exports.BsonType || (exports.BsonType = {})); // no array, object, or function types\n\n\nvar JS_SIMPLE_TYPES = [JsType.NULL, JsType.UNDEFINED, JsType.BOOLEAN, JsType.NUMBER, JsType.STRING, JsType.DATE, JsType.REGEXP];\nvar OBJECT_PROTOTYPE = Object.getPrototypeOf({});\nvar OBJECT_TAG = \"[object Object]\";\nvar OBJECT_TYPE_RE = /^\\[object ([a-zA-Z0-9]+)\\]$/;\n\nfunction assert(condition, message) {\n if (!condition) throw new Error(message);\n}\n\nexports.assert = assert;\n/**\n * Deep clone an object\n */\n\nfunction cloneDeep(obj) {\n if (obj instanceof Array) return obj.map(cloneDeep);\n if (obj instanceof Date) return new Date(obj);\n if (isObject(obj)) return objectMap(obj, cloneDeep);\n return obj;\n}\n\nexports.cloneDeep = cloneDeep;\n/**\n * Returns the name of type as specified in the tag returned by a call to Object.prototype.toString\n * @param v A value\n */\n\nfunction getType(v) {\n return OBJECT_TYPE_RE.exec(Object.prototype.toString.call(v))[1];\n}\n\nexports.getType = getType;\n\nfunction isBoolean(v) {\n return typeof v === JsType.BOOLEAN;\n}\n\nexports.isBoolean = isBoolean;\n\nfunction isString(v) {\n return typeof v === JsType.STRING;\n}\n\nexports.isString = isString;\n\nfunction isNumber(v) {\n return !isNaN(v) && typeof v === JsType.NUMBER;\n}\n\nexports.isNumber = isNumber;\n\nexports.isArray = Array.isArray || function (v) {\n return v instanceof Array;\n};\n\nfunction isObject(v) {\n if (!v) return false;\n var proto = Object.getPrototypeOf(v);\n return (proto === OBJECT_PROTOTYPE || proto === null) && OBJECT_TAG === Object.prototype.toString.call(v);\n}\n\nexports.isObject = isObject;\n\nfunction isObjectLike(v) {\n return v === Object(v);\n} // objects, arrays, functions, date, custom object\n\n\nexports.isObjectLike = isObjectLike;\n\nfunction isDate(v) {\n return v instanceof Date;\n}\n\nexports.isDate = isDate;\n\nfunction isRegExp(v) {\n return v instanceof RegExp;\n}\n\nexports.isRegExp = isRegExp;\n\nfunction isFunction(v) {\n return typeof v === JsType.FUNCTION;\n}\n\nexports.isFunction = isFunction;\n\nfunction isNil(v) {\n return v === null || v === undefined;\n}\n\nexports.isNil = isNil;\n\nfunction isNull(v) {\n return v === null;\n}\n\nexports.isNull = isNull;\n\nfunction isUndefined(v) {\n return v === undefined;\n}\n\nexports.isUndefined = isUndefined;\n\nexports.inArray = function () {\n // if Array.includes is not supported\n if (!Array.prototype.includes) {\n return function (arr, item) {\n return isNaN(item) && !isString(item) ? arr.some(function (v) {\n return isNaN(v) && !isString(v);\n }) : arr.indexOf(item) > -1;\n };\n } // default\n\n\n return function (arr, item) {\n return arr.includes(item);\n };\n}();\n\nfunction notInArray(arr, item) {\n return !exports.inArray(arr, item);\n}\n\nexports.notInArray = notInArray;\n\nfunction truthy(arg) {\n return !!arg;\n}\n\nexports.truthy = truthy;\n\nfunction isEmpty(x) {\n return isNil(x) || isString(x) && !x || x instanceof Array && x.length === 0 || isObject(x) && Object.keys(x).length === 0;\n}\n\nexports.isEmpty = isEmpty; // ensure a value is an array or wrapped within one\n\nfunction ensureArray(x) {\n return x instanceof Array ? x : [x];\n}\n\nexports.ensureArray = ensureArray;\n\nfunction has(obj, prop) {\n return !!obj && Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nexports.has = has;\n/**\n * Transform values in an object\n *\n * @param {Object} obj An object whose values to transform\n * @param {Function} fn The transform function\n * @return {Array|Object} Result object after applying the transform\n */\n\nfunction objectMap(obj, fn) {\n var o = {};\n var objKeys = Object.keys(obj);\n\n for (var i = 0; i < objKeys.length; i++) {\n var k = objKeys[i];\n o[k] = fn(obj[k], k);\n }\n\n return o;\n}\n\nexports.objectMap = objectMap;\n/**\n * Deep merge objects or arrays.\n * When the inputs have unmergeable types, the source value (right hand side) is returned.\n * If inputs are arrays of same length and all elements are mergable, elements in the same position are merged together.\n * If AnyVal of the elements are unmergeable, elements in the source are appended to the target.\n * @param target {Object|Array} the target to merge into\n * @param obj {Object|Array} the source object\n */\n\nfunction merge(target, obj, options) {\n // take care of missing inputs\n if (target === MISSING) return obj;\n if (obj === MISSING) return target;\n var inputs = [target, obj];\n\n if (!(inputs.every(isObject) || inputs.every(exports.isArray))) {\n throw Error(\"mismatched types. must both be array or object\");\n } // default options\n\n\n options = options || {\n flatten: false\n };\n\n if (exports.isArray(target)) {\n var result = target;\n var input = obj;\n\n if (options.flatten) {\n var i = 0;\n var j = 0;\n\n while (i < result.length && j < input.length) {\n result[i] = merge(result[i++], input[j++], options);\n }\n\n while (j < input.length) {\n result.push(obj[j++]);\n }\n } else {\n Array.prototype.push.apply(result, input);\n }\n } else {\n Object.keys(obj).forEach(function (k) {\n if (has(target, k)) {\n target[k] = merge(target[k], obj[k], options);\n } else {\n target[k] = obj[k];\n }\n });\n }\n\n return target;\n}\n\nexports.merge = merge;\n/**\n * Returns the intersection between two arrays\n *\n * @param {Array} a The first array\n * @param {Array} b The second array\n * @param {Function} hashFunction Custom function to hash values, default the hashCode method\n * @return {Array} Result array\n */\n\nfunction intersection(a, b, hashFunction) {\n var flipped = false; // we ensure the left array is always smallest\n\n if (a.length > b.length) {\n var t = a;\n a = b;\n b = t;\n flipped = true;\n }\n\n var maxSize = Math.max(a.length, b.length);\n var maxResult = Math.min(a.length, b.length);\n var lookup = a.reduce(function (memo, v, i) {\n memo[hashCode(v, hashFunction)] = i;\n return memo;\n }, {});\n var indexes = new Array();\n\n for (var i = 0, j = 0; i < maxSize && j < maxResult; i++) {\n var k = lookup[hashCode(b[i], hashFunction)];\n\n if (k !== undefined) {\n indexes.push(k);\n j++;\n }\n } // unless we flipped the arguments we must sort the indexes to keep stability\n\n\n if (!flipped) indexes.sort();\n return indexes.map(function (i) {\n return a[i];\n });\n}\n\nexports.intersection = intersection;\n/**\n * Returns the union of two arrays\n *\n * @param {Array} xs The first array\n * @param {Array} ys The second array\n * @return {Array} The result array\n */\n\nfunction union(xs, ys) {\n var result = [];\n var filtered = ys.filter(notInArray.bind(null, xs));\n into(result, xs);\n into(result, filtered);\n return result;\n}\n\nexports.union = union;\n/**\n * Flatten the array\n *\n * @param {Array} xs The array to flatten\n * @param {Number} depth The number of nested lists to iterate\n */\n\nfunction flatten(xs, depth) {\n var arr = [];\n\n function flatten2(ys, n) {\n for (var i = 0, len = ys.length; i < len; i++) {\n if (exports.isArray(ys[i]) && (n > 0 || n < 0)) {\n flatten2(ys[i], Math.max(-1, n - 1));\n } else {\n arr.push(ys[i]);\n }\n }\n }\n\n flatten2(xs, depth);\n return arr;\n}\n\nexports.flatten = flatten;\n/**\n * Determine whether two values are the same or strictly equivalent\n *\n * @param {*} a The first value\n * @param {*} b The second value\n * @return {Boolean} Result of comparison\n */\n\nfunction isEqual(a, b) {\n var lhs = [a];\n var rhs = [b];\n\n while (lhs.length > 0) {\n a = lhs.pop();\n b = rhs.pop(); // strictly equal must be equal.\n\n if (a === b) continue; // unequal types and functions cannot be equal.\n\n var nativeType = getType(a).toLowerCase();\n\n if (nativeType !== getType(b).toLowerCase() || nativeType === JsType.FUNCTION) {\n return false;\n } // leverage toString for Date and RegExp types\n\n\n if (nativeType === JsType.ARRAY) {\n var xs = a;\n var ys = b;\n if (xs.length !== ys.length) return false;\n if (xs.length === ys.length && xs.length === 0) continue;\n into(lhs, xs);\n into(rhs, ys);\n } else if (nativeType === JsType.OBJECT) {\n // deep compare objects\n var ka = Object.keys(a);\n var kb = Object.keys(b); // check length of keys early\n\n if (ka.length !== kb.length) return false; // we know keys are strings so we sort before comparing\n\n ka.sort();\n kb.sort(); // compare keys\n\n for (var i = 0, len = ka.length; i < len; i++) {\n var tempKey = ka[i];\n\n if (tempKey !== kb[i]) {\n return false;\n } else {\n // save later work\n lhs.push(a[tempKey]);\n rhs.push(b[tempKey]);\n }\n }\n } else {\n // compare encoded values\n if (encode(a) !== encode(b)) return false;\n }\n }\n\n return lhs.length === 0;\n}\n\nexports.isEqual = isEqual;\n/**\n * Return a new unique version of the collection\n * @param {Array} xs The input collection\n * @return {Array} A new collection with unique values\n */\n\nfunction unique(xs, hashFunction) {\n var h = {};\n var arr = [];\n\n for (var _i = 0, xs_1 = xs; _i < xs_1.length; _i++) {\n var item = xs_1[_i];\n var k = hashCode(item, hashFunction);\n\n if (!has(h, k)) {\n arr.push(item);\n h[k] = 0;\n }\n }\n\n return arr;\n}\n\nexports.unique = unique;\n/**\n * Encode value to string using a simple non-colliding stable scheme.\n *\n * @param value\n * @returns {*}\n */\n\nfunction encode(value) {\n var type = getType(value).toLowerCase();\n\n switch (type) {\n case JsType.BOOLEAN:\n case JsType.NUMBER:\n case JsType.REGEXP:\n return value.toString();\n\n case JsType.STRING:\n return JSON.stringify(value);\n\n case JsType.DATE:\n return value.toISOString();\n\n case JsType.NULL:\n case JsType.UNDEFINED:\n return type;\n\n case JsType.ARRAY:\n return \"[\" + value.map(encode).join(\",\") + \"]\";\n\n default:\n break;\n } // default case\n\n\n var prefix = type === JsType.OBJECT ? \"\" : \"\" + getType(value);\n var objKeys = Object.keys(value);\n objKeys.sort();\n return prefix + \"{\" + objKeys.map(function (k) {\n return encode(k) + \":\" + encode(value[k]);\n }).join(\",\") + \"}\";\n}\n/**\n * Generate hash code\n * This selected function is the result of benchmarking various hash functions.\n * This version performs well and can hash 10^6 documents in ~3s with on average 100 collisions.\n *\n * @param value\n * @returns {number|null}\n */\n\n\nfunction hashCode(value, hashFunction) {\n if (hashFunction === void 0) {\n hashFunction = DEFAULT_HASH_FUNC;\n }\n\n if (isNil(value)) return null;\n return hashFunction(value);\n}\n\nexports.hashCode = hashCode;\n/**\n * Default compare function\n * @param {*} a\n * @param {*} b\n */\n\nfunction compare(a, b) {\n if (a < b) return -1;\n if (a > b) return 1;\n return 0;\n}\n\nexports.compare = compare;\n/**\n * Returns a (stably) sorted copy of list, ranked in ascending order by the results of running each value through iteratee\n *\n * This implementation treats null/undefined sort keys as less than every other type\n *\n * @param {Array} collection\n * @param {Function} keyFn The sort key function used to resolve sort keys\n * @param {Function} comparator The comparator function to use for comparing keys. Defaults to standard comparison via `compare(...)`\n * @return {Array} Returns a new sorted array by the given key and comparator function\n */\n\nfunction sortBy(collection, keyFn, comparator) {\n var sorted = new Array();\n var result = new Array();\n var hash = {};\n comparator = comparator || compare;\n if (isEmpty(collection)) return collection;\n\n for (var i = 0; i < collection.length; i++) {\n var obj = collection[i];\n var key = keyFn(obj, i); // objects with nil keys will go in first\n\n if (isNil(key)) {\n result.push(obj);\n } else {\n // null suffix to differentiate string keys from native object properties\n if (isString(key)) key += \"\\0\";\n\n if (hash[key]) {\n hash[key].push(obj);\n } else {\n hash[key] = [obj];\n }\n\n sorted.push(key);\n }\n } // use native array sorting but enforce stableness\n\n\n sorted.sort(comparator);\n\n for (var i = 0; i < sorted.length; i++) {\n into(result, hash[sorted[i]]);\n }\n\n return result;\n}\n\nexports.sortBy = sortBy;\n/**\n * Groups the collection into sets by the returned key\n *\n * @param collection\n * @param keyFn {Function} to compute the group key of an item in the collection\n * @returns {{keys: Array, groups: Array}}\n */\n\nfunction groupBy(collection, keyFn, hashFunction) {\n var result = {\n keys: new Array(),\n groups: new Array()\n };\n var lookup = {};\n\n for (var _i = 0, collection_1 = collection; _i < collection_1.length; _i++) {\n var obj = collection_1[_i];\n var key = keyFn(obj);\n var hash = hashCode(key, hashFunction);\n var index = -1;\n\n if (lookup[hash] === undefined) {\n index = result.keys.length;\n lookup[hash] = index;\n result.keys.push(key);\n result.groups.push([]);\n }\n\n index = lookup[hash];\n result.groups[index].push(obj);\n }\n\n return result;\n}\n\nexports.groupBy = groupBy; // max elements to push.\n// See argument limit https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/apply\n\nvar MAX_ARRAY_PUSH = 50000;\n/**\n * Merge elements into the dest\n *\n * @param {*} target The target object\n * @param {*} rest The array of elements to merge into dest\n */\n\nfunction into(target) {\n var rest = [];\n\n for (var _i = 1; _i < arguments.length; _i++) {\n rest[_i - 1] = arguments[_i];\n }\n\n if (target instanceof Array) {\n return rest.reduce(function (acc, arr) {\n // push arrary in batches to handle large inputs\n var i = Math.ceil(arr.length / MAX_ARRAY_PUSH);\n var begin = 0;\n\n while (i-- > 0) {\n Array.prototype.push.apply(acc, arr.slice(begin, begin + MAX_ARRAY_PUSH));\n begin += MAX_ARRAY_PUSH;\n }\n\n return acc;\n }, target);\n } else if (isObject(target)) {\n // merge objects. same behaviour as Object.assign\n return rest.filter(isObjectLike).reduce(function (acc, item) {\n Object.assign(acc, item);\n return acc;\n }, target);\n }\n\n return null;\n}\n\nexports.into = into;\n/**\n * This is a generic memoization function\n *\n * This implementation uses a cache independent of the function being memoized\n * to allow old values to be garbage collected when the memoized function goes out of scope.\n *\n * @param {*} fn The function object to memoize\n */\n\nfunction memoize(fn, hashFunction) {\n var _this = this;\n\n return function (memo) {\n return function () {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n var key = hashCode(args, hashFunction);\n\n if (!has(memo, key)) {\n memo[key] = fn.apply(_this, args);\n }\n\n return memo[key];\n };\n }({\n /* storage */\n });\n}\n\nexports.memoize = memoize; // mingo internal\n\n/**\n * Retrieve the value of a given key on an object\n * @param obj\n * @param key\n * @returns {*}\n * @private\n */\n\nfunction getValue(obj, key) {\n return isObjectLike(obj) ? obj[key] : undefined;\n}\n/**\n * Unwrap a single element array to specified depth\n * @param {Array} arr\n * @param {Number} depth\n */\n\n\nfunction unwrap(arr, depth) {\n if (depth < 1) return arr;\n\n while (depth-- && arr.length === 1) {\n arr = arr[0];\n }\n\n return arr;\n}\n/**\n * Resolve the value of the field (dot separated) on the given object\n * @param obj {Object} the object context\n * @param selector {String} dot separated path to field\n * @returns {*}\n */\n\n\nfunction resolve(obj, selector, options) {\n var depth = 0; // options\n\n options = options || {\n unwrapArray: false\n };\n\n function resolve2(o, path) {\n var value = o;\n\n var _loop_1 = function _loop_1(i) {\n var field = path[i];\n var isText = /^\\d+$/.exec(field) === null; // using instanceof to aid typescript compiler\n\n if (isText && value instanceof Array) {\n // On the first iteration, we check if we received a stop flag.\n // If so, we stop to prevent iterating over a nested array value\n // on consecutive object keys in the selector.\n if (i === 0 && depth > 0) return \"break\";\n depth += 1; // only look at the rest of the path\n\n var subpath_1 = path.slice(i);\n value = value.reduce(function (acc, item) {\n var v = resolve2(item, subpath_1);\n if (v !== undefined) acc.push(v);\n return acc;\n }, []);\n return \"break\";\n } else {\n value = getValue(value, field);\n }\n\n if (value === undefined) return \"break\";\n };\n\n for (var i = 0; i < path.length; i++) {\n var state_1 = _loop_1(i);\n\n if (state_1 === \"break\") break;\n }\n\n return value;\n }\n\n var result = exports.inArray(JS_SIMPLE_TYPES, getType(obj).toLowerCase()) ? obj : resolve2(obj, selector.split(\".\"));\n return result instanceof Array && options.unwrapArray ? unwrap(result, depth) : result;\n}\n\nexports.resolve = resolve;\n/**\n * Returns the full object to the resolved value given by the selector.\n * This function excludes empty values as they aren't practically useful.\n *\n * @param obj {Object} the object context\n * @param selector {String} dot separated path to field\n */\n\nfunction resolveGraph(obj, selector, options) {\n // options\n if (options === undefined) {\n options = {\n preserveMissing: false\n };\n }\n\n var names = selector.split(\".\");\n var key = names[0]; // get the next part of the selector\n\n var next = names.slice(1).join(\".\");\n var isIndex = /^\\d+$/.exec(key) !== null;\n var hasNext = names.length > 1;\n var result;\n var value;\n\n if (obj instanceof Array) {\n if (isIndex) {\n result = getValue(obj, Number(key));\n\n if (hasNext) {\n result = resolveGraph(result, next, options);\n }\n\n result = [result];\n } else {\n result = [];\n\n for (var _i = 0, obj_1 = obj; _i < obj_1.length; _i++) {\n var item = obj_1[_i];\n value = resolveGraph(item, selector, options);\n\n if (options.preserveMissing) {\n if (value === undefined) {\n value = MISSING;\n }\n\n result.push(value);\n } else if (value !== undefined) {\n result.push(value);\n }\n }\n }\n } else {\n value = getValue(obj, key);\n\n if (hasNext) {\n value = resolveGraph(value, next, options);\n }\n\n if (value === undefined) return undefined;\n result = {};\n result[key] = value;\n }\n\n return result;\n}\n\nexports.resolveGraph = resolveGraph;\n/**\n * Filter out all MISSING values from the object in-place\n *\n * @param obj The object to filter\n */\n\nfunction filterMissing(obj) {\n if (obj instanceof Array) {\n for (var i = obj.length - 1; i >= 0; i--) {\n if (obj[i] === MISSING) {\n obj.splice(i, 1);\n } else {\n filterMissing(obj[i]);\n }\n }\n } else if (isObject(obj)) {\n for (var k in obj) {\n if (has(obj, k)) {\n filterMissing(obj[k]);\n }\n }\n }\n}\n\nexports.filterMissing = filterMissing;\n/**\n * Walk the object graph and execute the given transform function\n *\n * @param {Object|Array} obj The object to traverse\n * @param {String} selector The selector\n * @param {Function} fn Function to execute for value at the end the traversal\n * @param {Boolean} force Force generating missing parts of object graph\n * @return {*}\n */\n\nfunction traverse(obj, selector, fn, force) {\n var names = selector.split(\".\");\n var key = names[0];\n var next = names.slice(1).join(\".\");\n\n if (names.length === 1) {\n fn(obj, key);\n } else {\n // force the rest of the graph while traversing\n if (force === true && isNil(obj[key])) {\n obj[key] = {};\n }\n\n traverse(obj[key], next, fn, force);\n }\n}\n\nexports.traverse = traverse;\n/**\n * Set the value of the given object field\n *\n * @param obj {Object|Array} the object context\n * @param selector {String} path to field\n * @param value {*} the value to set\n */\n\nfunction setValue(obj, selector, value) {\n traverse(obj, selector, function (item, key) {\n item[key] = value;\n }, true);\n}\n\nexports.setValue = setValue;\n/**\n * Removes an element from the container.\n * If the selector resolves to an array and the leaf is a non-numeric key,\n * the remove operation will be performed on objects of the array.\n *\n * @param obj {ArrayOrObject} object or array\n * @param selector {String} dot separated path to element to remove\n */\n\nfunction removeValue(obj, selector) {\n traverse(obj, selector, function (item, key) {\n if (item instanceof Array) {\n if (/^\\d+$/.test(key)) {\n item.splice(parseInt(key), 1);\n } else {\n for (var _i = 0, item_1 = item; _i < item_1.length; _i++) {\n var elem = item_1[_i];\n\n if (isObject(elem)) {\n delete elem[key];\n }\n }\n }\n } else if (isObject(item)) {\n delete item[key];\n }\n });\n}\n\nexports.removeValue = removeValue;\nvar OPERATOR_NAME_PATTERN = /^\\$[a-zA-Z0-9_]+$/;\n/**\n * Check whether the given name passes for an operator. We assume AnyVal field name starting with '$' is an operator.\n * This is cheap and safe to do since keys beginning with '$' should be reserved for internal use.\n * @param {String} name\n */\n\nfunction isOperator(name) {\n return OPERATOR_NAME_PATTERN.test(name);\n}\n\nexports.isOperator = isOperator;\n/**\n * Simplify expression for easy evaluation with query operators map\n * @param expr\n * @returns {*}\n */\n\nfunction normalize(expr) {\n // normalized primitives\n if (exports.inArray(JS_SIMPLE_TYPES, getType(expr).toLowerCase())) {\n return isRegExp(expr) ? {\n $regex: expr\n } : {\n $eq: expr\n };\n } // normalize object expression. using ObjectLike handles custom types\n\n\n if (isObjectLike(expr)) {\n // no valid query operator found, so we do simple comparison\n if (!Object.keys(expr).some(isOperator)) {\n return {\n $eq: expr\n };\n } // ensure valid regex\n\n\n if (has(expr, \"$regex\")) {\n expr[\"$regex\"] = new RegExp(expr[\"$regex\"], expr[\"$options\"]);\n delete expr[\"$options\"];\n }\n }\n\n return expr;\n}\n\nexports.normalize = normalize;","'use strict';\n\nmodule.exports = nGram;\nnGram.bigram = nGram(2);\nnGram.trigram = nGram(3); // Factory returning a function that converts a value string to n-grams.\n\nfunction nGram(n) {\n if (typeof n !== 'number' || isNaN(n) || n < 1 || n === Infinity) {\n throw new Error('`' + n + '` is not a valid argument for n-gram');\n }\n\n return grams; // Create n-grams from a given value.\n\n function grams(value) {\n var nGrams = [];\n var index;\n\n if (value === null || value === undefined) {\n return nGrams;\n }\n\n value = value.slice ? value : String(value);\n index = value.length - n + 1;\n\n if (index < 1) {\n return nGrams;\n }\n\n while (index--) {\n nGrams[index] = value.slice(index, index + n);\n }\n\n return nGrams;\n }\n}","function toVal(mix) {\n var k,\n y,\n str = '';\n\n if (typeof mix === 'string' || typeof mix === 'number') {\n str += mix;\n } else if (typeof mix === 'object') {\n if (Array.isArray(mix)) {\n for (k = 0; k < mix.length; k++) {\n if (mix[k]) {\n if (y = toVal(mix[k])) {\n str && (str += ' ');\n str += y;\n }\n }\n }\n } else {\n for (k in mix) {\n if (mix[k]) {\n str && (str += ' ');\n str += k;\n }\n }\n }\n }\n\n return str;\n}\n\nexport default function () {\n var i = 0,\n tmp,\n x,\n str = '';\n\n while (i < arguments.length) {\n if (tmp = arguments[i++]) {\n if (x = toVal(tmp)) {\n str && (str += ' ');\n str += x;\n }\n }\n }\n\n return str;\n}","/**\n * Helper method that determines when to recalculate row or column metadata.\n */\nexport default function calculateSizeAndPositionDataAndUpdateScrollOffset(_ref) {\n var cellCount = _ref.cellCount,\n cellSize = _ref.cellSize,\n computeMetadataCallback = _ref.computeMetadataCallback,\n computeMetadataCallbackProps = _ref.computeMetadataCallbackProps,\n nextCellsCount = _ref.nextCellsCount,\n nextCellSize = _ref.nextCellSize,\n nextScrollToIndex = _ref.nextScrollToIndex,\n scrollToIndex = _ref.scrollToIndex,\n updateScrollOffsetForScrollToIndex = _ref.updateScrollOffsetForScrollToIndex; // Don't compare cell sizes if they are functions because inline functions would cause infinite loops.\n // In that event users should use the manual recompute methods to inform of changes.\n\n if (cellCount !== nextCellsCount || (typeof cellSize === 'number' || typeof nextCellSize === 'number') && cellSize !== nextCellSize) {\n computeMetadataCallback(computeMetadataCallbackProps); // Updated cell metadata may have hidden the previous scrolled-to item.\n // In this case we should also update the scrollTop to ensure it stays visible.\n\n if (scrollToIndex >= 0 && scrollToIndex === nextScrollToIndex) {\n updateScrollOffsetForScrollToIndex();\n }\n }\n}","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n/**\n * Just-in-time calculates and caches size and position information for a collection of cells.\n */\n\nvar CellSizeAndPositionManager = /*#__PURE__*/function () {\n // Cache of size and position data for cells, mapped by cell index.\n // Note that invalid values may exist in this map so only rely on cells up to this._lastMeasuredIndex\n // Measurements for cells up to this index can be trusted; cells afterward should be estimated.\n // Used in deferred mode to track which cells have been queued for measurement.\n function CellSizeAndPositionManager(_ref) {\n var cellCount = _ref.cellCount,\n cellSizeGetter = _ref.cellSizeGetter,\n estimatedCellSize = _ref.estimatedCellSize;\n\n _classCallCheck(this, CellSizeAndPositionManager);\n\n _defineProperty(this, \"_cellSizeAndPositionData\", {});\n\n _defineProperty(this, \"_lastMeasuredIndex\", -1);\n\n _defineProperty(this, \"_lastBatchedIndex\", -1);\n\n _defineProperty(this, \"_cellCount\", void 0);\n\n _defineProperty(this, \"_cellSizeGetter\", void 0);\n\n _defineProperty(this, \"_estimatedCellSize\", void 0);\n\n this._cellSizeGetter = cellSizeGetter;\n this._cellCount = cellCount;\n this._estimatedCellSize = estimatedCellSize;\n }\n\n _createClass(CellSizeAndPositionManager, [{\n key: \"areOffsetsAdjusted\",\n value: function areOffsetsAdjusted() {\n return false;\n }\n }, {\n key: \"configure\",\n value: function configure(_ref2) {\n var cellCount = _ref2.cellCount,\n estimatedCellSize = _ref2.estimatedCellSize,\n cellSizeGetter = _ref2.cellSizeGetter;\n this._cellCount = cellCount;\n this._estimatedCellSize = estimatedCellSize;\n this._cellSizeGetter = cellSizeGetter;\n }\n }, {\n key: \"getCellCount\",\n value: function getCellCount() {\n return this._cellCount;\n }\n }, {\n key: \"getEstimatedCellSize\",\n value: function getEstimatedCellSize() {\n return this._estimatedCellSize;\n }\n }, {\n key: \"getLastMeasuredIndex\",\n value: function getLastMeasuredIndex() {\n return this._lastMeasuredIndex;\n }\n }, {\n key: \"getOffsetAdjustment\",\n value: function getOffsetAdjustment() {\n return 0;\n }\n /**\n * This method returns the size and position for the cell at the specified index.\n * It just-in-time calculates (or used cached values) for cells leading up to the index.\n */\n\n }, {\n key: \"getSizeAndPositionOfCell\",\n value: function getSizeAndPositionOfCell(index) {\n if (index < 0 || index >= this._cellCount) {\n throw Error(\"Requested index \".concat(index, \" is outside of range 0..\").concat(this._cellCount));\n }\n\n if (index > this._lastMeasuredIndex) {\n var lastMeasuredCellSizeAndPosition = this.getSizeAndPositionOfLastMeasuredCell();\n var offset = lastMeasuredCellSizeAndPosition.offset + lastMeasuredCellSizeAndPosition.size;\n\n for (var i = this._lastMeasuredIndex + 1; i <= index; i++) {\n var size = this._cellSizeGetter({\n index: i\n }); // undefined or NaN probably means a logic error in the size getter.\n // null means we're using CellMeasurer and haven't yet measured a given index.\n\n\n if (size === undefined || isNaN(size)) {\n throw Error(\"Invalid size returned for cell \".concat(i, \" of value \").concat(size));\n } else if (size === null) {\n this._cellSizeAndPositionData[i] = {\n offset: offset,\n size: 0\n };\n this._lastBatchedIndex = index;\n } else {\n this._cellSizeAndPositionData[i] = {\n offset: offset,\n size: size\n };\n offset += size;\n this._lastMeasuredIndex = index;\n }\n }\n }\n\n return this._cellSizeAndPositionData[index];\n }\n }, {\n key: \"getSizeAndPositionOfLastMeasuredCell\",\n value: function getSizeAndPositionOfLastMeasuredCell() {\n return this._lastMeasuredIndex >= 0 ? this._cellSizeAndPositionData[this._lastMeasuredIndex] : {\n offset: 0,\n size: 0\n };\n }\n /**\n * Total size of all cells being measured.\n * This value will be completely estimated initially.\n * As cells are measured, the estimate will be updated.\n */\n\n }, {\n key: \"getTotalSize\",\n value: function getTotalSize() {\n var lastMeasuredCellSizeAndPosition = this.getSizeAndPositionOfLastMeasuredCell();\n var totalSizeOfMeasuredCells = lastMeasuredCellSizeAndPosition.offset + lastMeasuredCellSizeAndPosition.size;\n var numUnmeasuredCells = this._cellCount - this._lastMeasuredIndex - 1;\n var totalSizeOfUnmeasuredCells = numUnmeasuredCells * this._estimatedCellSize;\n return totalSizeOfMeasuredCells + totalSizeOfUnmeasuredCells;\n }\n /**\n * Determines a new offset that ensures a certain cell is visible, given the current offset.\n * If the cell is already visible then the current offset will be returned.\n * If the current offset is too great or small, it will be adjusted just enough to ensure the specified index is visible.\n *\n * @param align Desired alignment within container; one of \"auto\" (default), \"start\", or \"end\"\n * @param containerSize Size (width or height) of the container viewport\n * @param currentOffset Container's current (x or y) offset\n * @param totalSize Total size (width or height) of all cells\n * @return Offset to use to ensure the specified cell is visible\n */\n\n }, {\n key: \"getUpdatedOffsetForIndex\",\n value: function getUpdatedOffsetForIndex(_ref3) {\n var _ref3$align = _ref3.align,\n align = _ref3$align === void 0 ? 'auto' : _ref3$align,\n containerSize = _ref3.containerSize,\n currentOffset = _ref3.currentOffset,\n targetIndex = _ref3.targetIndex;\n\n if (containerSize <= 0) {\n return 0;\n }\n\n var datum = this.getSizeAndPositionOfCell(targetIndex);\n var maxOffset = datum.offset;\n var minOffset = maxOffset - containerSize + datum.size;\n var idealOffset;\n\n switch (align) {\n case 'start':\n idealOffset = maxOffset;\n break;\n\n case 'end':\n idealOffset = minOffset;\n break;\n\n case 'center':\n idealOffset = maxOffset - (containerSize - datum.size) / 2;\n break;\n\n default:\n idealOffset = Math.max(minOffset, Math.min(maxOffset, currentOffset));\n break;\n }\n\n var totalSize = this.getTotalSize();\n return Math.max(0, Math.min(totalSize - containerSize, idealOffset));\n }\n }, {\n key: \"getVisibleCellRange\",\n value: function getVisibleCellRange(params) {\n var containerSize = params.containerSize,\n offset = params.offset;\n var totalSize = this.getTotalSize();\n\n if (totalSize === 0) {\n return {};\n }\n\n var maxOffset = offset + containerSize;\n\n var start = this._findNearestCell(offset);\n\n var datum = this.getSizeAndPositionOfCell(start);\n offset = datum.offset + datum.size;\n var stop = start;\n\n while (offset < maxOffset && stop < this._cellCount - 1) {\n stop++;\n offset += this.getSizeAndPositionOfCell(stop).size;\n }\n\n return {\n start: start,\n stop: stop\n };\n }\n /**\n * Clear all cached values for cells after the specified index.\n * This method should be called for any cell that has changed its size.\n * It will not immediately perform any calculations; they'll be performed the next time getSizeAndPositionOfCell() is called.\n */\n\n }, {\n key: \"resetCell\",\n value: function resetCell(index) {\n this._lastMeasuredIndex = Math.min(this._lastMeasuredIndex, index - 1);\n }\n }, {\n key: \"_binarySearch\",\n value: function _binarySearch(high, low, offset) {\n while (low <= high) {\n var middle = low + Math.floor((high - low) / 2);\n var currentOffset = this.getSizeAndPositionOfCell(middle).offset;\n\n if (currentOffset === offset) {\n return middle;\n } else if (currentOffset < offset) {\n low = middle + 1;\n } else if (currentOffset > offset) {\n high = middle - 1;\n }\n }\n\n if (low > 0) {\n return low - 1;\n } else {\n return 0;\n }\n }\n }, {\n key: \"_exponentialSearch\",\n value: function _exponentialSearch(index, offset) {\n var interval = 1;\n\n while (index < this._cellCount && this.getSizeAndPositionOfCell(index).offset < offset) {\n index += interval;\n interval *= 2;\n }\n\n return this._binarySearch(Math.min(index, this._cellCount - 1), Math.floor(index / 2), offset);\n }\n /**\n * Searches for the cell (index) nearest the specified offset.\n *\n * If no exact match is found the next lowest cell index will be returned.\n * This allows partially visible cells (with offsets just before/above the fold) to be visible.\n */\n\n }, {\n key: \"_findNearestCell\",\n value: function _findNearestCell(offset) {\n if (isNaN(offset)) {\n throw Error(\"Invalid offset \".concat(offset, \" specified\"));\n } // Our search algorithms find the nearest match at or below the specified offset.\n // So make sure the offset is at least 0 or no match will be found.\n\n\n offset = Math.max(0, offset);\n var lastMeasuredCellSizeAndPosition = this.getSizeAndPositionOfLastMeasuredCell();\n var lastMeasuredIndex = Math.max(0, this._lastMeasuredIndex);\n\n if (lastMeasuredCellSizeAndPosition.offset >= offset) {\n // If we've already measured cells within this range just use a binary search as it's faster.\n return this._binarySearch(lastMeasuredIndex, 0, offset);\n } else {\n // If we haven't yet measured this high, fallback to an exponential search with an inner binary search.\n // The exponential search avoids pre-computing sizes for the full set of cells as a binary search would.\n // The overall complexity for this approach is O(log n).\n return this._exponentialSearch(lastMeasuredIndex, offset);\n }\n }\n }]);\n\n return CellSizeAndPositionManager;\n}();\n\nexport { CellSizeAndPositionManager as default };\nimport { bpfrpt_proptype_Alignment } from \"../types\";\nimport { bpfrpt_proptype_CellSizeGetter } from \"../types\";\nimport { bpfrpt_proptype_VisibleCellRange } from \"../types\";","var DEFAULT_MAX_ELEMENT_SIZE = 1500000;\nvar CHROME_MAX_ELEMENT_SIZE = 1.67771e7;\n\nvar isBrowser = function isBrowser() {\n return typeof window !== 'undefined';\n};\n\nvar isChrome = function isChrome() {\n return !!window.chrome;\n};\n\nexport var getMaxElementSize = function getMaxElementSize() {\n if (isBrowser()) {\n if (isChrome()) {\n return CHROME_MAX_ELEMENT_SIZE;\n }\n }\n\n return DEFAULT_MAX_ELEMENT_SIZE;\n};","import _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport CellSizeAndPositionManager from './CellSizeAndPositionManager';\nimport { getMaxElementSize } from './maxElementSize.js';\n/**\n * Extends CellSizeAndPositionManager and adds scaling behavior for lists that are too large to fit within a browser's native limits.\n */\n\nvar ScalingCellSizeAndPositionManager = /*#__PURE__*/function () {\n function ScalingCellSizeAndPositionManager(_ref) {\n var _ref$maxScrollSize = _ref.maxScrollSize,\n maxScrollSize = _ref$maxScrollSize === void 0 ? getMaxElementSize() : _ref$maxScrollSize,\n params = _objectWithoutProperties(_ref, [\"maxScrollSize\"]);\n\n _classCallCheck(this, ScalingCellSizeAndPositionManager);\n\n _defineProperty(this, \"_cellSizeAndPositionManager\", void 0);\n\n _defineProperty(this, \"_maxScrollSize\", void 0); // Favor composition over inheritance to simplify IE10 support\n\n\n this._cellSizeAndPositionManager = new CellSizeAndPositionManager(params);\n this._maxScrollSize = maxScrollSize;\n }\n\n _createClass(ScalingCellSizeAndPositionManager, [{\n key: \"areOffsetsAdjusted\",\n value: function areOffsetsAdjusted() {\n return this._cellSizeAndPositionManager.getTotalSize() > this._maxScrollSize;\n }\n }, {\n key: \"configure\",\n value: function configure(params) {\n this._cellSizeAndPositionManager.configure(params);\n }\n }, {\n key: \"getCellCount\",\n value: function getCellCount() {\n return this._cellSizeAndPositionManager.getCellCount();\n }\n }, {\n key: \"getEstimatedCellSize\",\n value: function getEstimatedCellSize() {\n return this._cellSizeAndPositionManager.getEstimatedCellSize();\n }\n }, {\n key: \"getLastMeasuredIndex\",\n value: function getLastMeasuredIndex() {\n return this._cellSizeAndPositionManager.getLastMeasuredIndex();\n }\n /**\n * Number of pixels a cell at the given position (offset) should be shifted in order to fit within the scaled container.\n * The offset passed to this function is scaled (safe) as well.\n */\n\n }, {\n key: \"getOffsetAdjustment\",\n value: function getOffsetAdjustment(_ref2) {\n var containerSize = _ref2.containerSize,\n offset = _ref2.offset;\n\n var totalSize = this._cellSizeAndPositionManager.getTotalSize();\n\n var safeTotalSize = this.getTotalSize();\n\n var offsetPercentage = this._getOffsetPercentage({\n containerSize: containerSize,\n offset: offset,\n totalSize: safeTotalSize\n });\n\n return Math.round(offsetPercentage * (safeTotalSize - totalSize));\n }\n }, {\n key: \"getSizeAndPositionOfCell\",\n value: function getSizeAndPositionOfCell(index) {\n return this._cellSizeAndPositionManager.getSizeAndPositionOfCell(index);\n }\n }, {\n key: \"getSizeAndPositionOfLastMeasuredCell\",\n value: function getSizeAndPositionOfLastMeasuredCell() {\n return this._cellSizeAndPositionManager.getSizeAndPositionOfLastMeasuredCell();\n }\n /** See CellSizeAndPositionManager#getTotalSize */\n\n }, {\n key: \"getTotalSize\",\n value: function getTotalSize() {\n return Math.min(this._maxScrollSize, this._cellSizeAndPositionManager.getTotalSize());\n }\n /** See CellSizeAndPositionManager#getUpdatedOffsetForIndex */\n\n }, {\n key: \"getUpdatedOffsetForIndex\",\n value: function getUpdatedOffsetForIndex(_ref3) {\n var _ref3$align = _ref3.align,\n align = _ref3$align === void 0 ? 'auto' : _ref3$align,\n containerSize = _ref3.containerSize,\n currentOffset = _ref3.currentOffset,\n targetIndex = _ref3.targetIndex;\n currentOffset = this._safeOffsetToOffset({\n containerSize: containerSize,\n offset: currentOffset\n });\n\n var offset = this._cellSizeAndPositionManager.getUpdatedOffsetForIndex({\n align: align,\n containerSize: containerSize,\n currentOffset: currentOffset,\n targetIndex: targetIndex\n });\n\n return this._offsetToSafeOffset({\n containerSize: containerSize,\n offset: offset\n });\n }\n /** See CellSizeAndPositionManager#getVisibleCellRange */\n\n }, {\n key: \"getVisibleCellRange\",\n value: function getVisibleCellRange(_ref4) {\n var containerSize = _ref4.containerSize,\n offset = _ref4.offset;\n offset = this._safeOffsetToOffset({\n containerSize: containerSize,\n offset: offset\n });\n return this._cellSizeAndPositionManager.getVisibleCellRange({\n containerSize: containerSize,\n offset: offset\n });\n }\n }, {\n key: \"resetCell\",\n value: function resetCell(index) {\n this._cellSizeAndPositionManager.resetCell(index);\n }\n }, {\n key: \"_getOffsetPercentage\",\n value: function _getOffsetPercentage(_ref5) {\n var containerSize = _ref5.containerSize,\n offset = _ref5.offset,\n totalSize = _ref5.totalSize;\n return totalSize <= containerSize ? 0 : offset / (totalSize - containerSize);\n }\n }, {\n key: \"_offsetToSafeOffset\",\n value: function _offsetToSafeOffset(_ref6) {\n var containerSize = _ref6.containerSize,\n offset = _ref6.offset;\n\n var totalSize = this._cellSizeAndPositionManager.getTotalSize();\n\n var safeTotalSize = this.getTotalSize();\n\n if (totalSize === safeTotalSize) {\n return offset;\n } else {\n var offsetPercentage = this._getOffsetPercentage({\n containerSize: containerSize,\n offset: offset,\n totalSize: totalSize\n });\n\n return Math.round(offsetPercentage * (safeTotalSize - containerSize));\n }\n }\n }, {\n key: \"_safeOffsetToOffset\",\n value: function _safeOffsetToOffset(_ref7) {\n var containerSize = _ref7.containerSize,\n offset = _ref7.offset;\n\n var totalSize = this._cellSizeAndPositionManager.getTotalSize();\n\n var safeTotalSize = this.getTotalSize();\n\n if (totalSize === safeTotalSize) {\n return offset;\n } else {\n var offsetPercentage = this._getOffsetPercentage({\n containerSize: containerSize,\n offset: offset,\n totalSize: safeTotalSize\n });\n\n return Math.round(offsetPercentage * (totalSize - containerSize));\n }\n }\n }]);\n\n return ScalingCellSizeAndPositionManager;\n}();\n\nexport { ScalingCellSizeAndPositionManager as default };\nimport { bpfrpt_proptype_Alignment } from \"../types\";\nimport { bpfrpt_proptype_CellSizeGetter } from \"../types\";\nimport { bpfrpt_proptype_VisibleCellRange } from \"../types\";","/**\n * Helper utility that updates the specified callback whenever any of the specified indices have changed.\n */\nexport default function createCallbackMemoizer() {\n var requireAllKeys = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n var cachedIndices = {};\n return function (_ref) {\n var callback = _ref.callback,\n indices = _ref.indices;\n var keys = Object.keys(indices);\n var allInitialized = !requireAllKeys || keys.every(function (key) {\n var value = indices[key];\n return Array.isArray(value) ? value.length > 0 : value >= 0;\n });\n var indexChanged = keys.length !== Object.keys(cachedIndices).length || keys.some(function (key) {\n var cachedValue = cachedIndices[key];\n var value = indices[key];\n return Array.isArray(value) ? cachedValue.join(',') !== value.join(',') : cachedValue !== value;\n });\n cachedIndices = indices;\n\n if (allInitialized && indexChanged) {\n callback(indices);\n }\n };\n}","import ScalingCellSizeAndPositionManager from './ScalingCellSizeAndPositionManager.js';\n/**\n * Helper function that determines when to update scroll offsets to ensure that a scroll-to-index remains visible.\n * This function also ensures that the scroll ofset isn't past the last column/row of cells.\n */\n\nexport default function updateScrollIndexHelper(_ref) {\n var cellSize = _ref.cellSize,\n cellSizeAndPositionManager = _ref.cellSizeAndPositionManager,\n previousCellsCount = _ref.previousCellsCount,\n previousCellSize = _ref.previousCellSize,\n previousScrollToAlignment = _ref.previousScrollToAlignment,\n previousScrollToIndex = _ref.previousScrollToIndex,\n previousSize = _ref.previousSize,\n scrollOffset = _ref.scrollOffset,\n scrollToAlignment = _ref.scrollToAlignment,\n scrollToIndex = _ref.scrollToIndex,\n size = _ref.size,\n sizeJustIncreasedFromZero = _ref.sizeJustIncreasedFromZero,\n updateScrollIndexCallback = _ref.updateScrollIndexCallback;\n var cellCount = cellSizeAndPositionManager.getCellCount();\n var hasScrollToIndex = scrollToIndex >= 0 && scrollToIndex < cellCount;\n var sizeHasChanged = size !== previousSize || sizeJustIncreasedFromZero || !previousCellSize || typeof cellSize === 'number' && cellSize !== previousCellSize; // If we have a new scroll target OR if height/row-height has changed,\n // We should ensure that the scroll target is visible.\n\n if (hasScrollToIndex && (sizeHasChanged || scrollToAlignment !== previousScrollToAlignment || scrollToIndex !== previousScrollToIndex)) {\n updateScrollIndexCallback(scrollToIndex); // If we don't have a selected item but list size or number of children have decreased,\n // Make sure we aren't scrolled too far past the current content.\n } else if (!hasScrollToIndex && cellCount > 0 && (size < previousSize || cellCount < previousCellsCount)) {\n // We need to ensure that the current scroll offset is still within the collection's range.\n // To do this, we don't need to measure everything; CellMeasurer would perform poorly.\n // Just check to make sure we're still okay.\n // Only adjust the scroll position if we've scrolled below the last set of rows.\n if (scrollOffset > cellSizeAndPositionManager.getTotalSize() - size) {\n updateScrollIndexCallback(cellCount - 1);\n }\n }\n}\nimport { bpfrpt_proptype_Alignment } from \"../types\";\nimport { bpfrpt_proptype_CellSize } from \"../types\";","export default !!(typeof window !== 'undefined' && window.document && window.document.createElement);","import canUseDOM from './canUseDOM';\nvar size;\nexport default function scrollbarSize(recalc) {\n if (!size && size !== 0 || recalc) {\n if (canUseDOM) {\n var scrollDiv = document.createElement('div');\n scrollDiv.style.position = 'absolute';\n scrollDiv.style.top = '-9999px';\n scrollDiv.style.width = '50px';\n scrollDiv.style.height = '50px';\n scrollDiv.style.overflow = 'scroll';\n document.body.appendChild(scrollDiv);\n size = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n }\n }\n\n return size;\n}","// Properly handle server-side rendering.\nvar win;\n\nif (typeof window !== 'undefined') {\n win = window;\n} else if (typeof self !== 'undefined') {\n win = self;\n} else {\n win = {};\n} // requestAnimationFrame() shim by Paul Irish\n// http://paulirish.com/2011/requestanimationframe-for-smart-animating/\n\n\nvar request = win.requestAnimationFrame || win.webkitRequestAnimationFrame || win.mozRequestAnimationFrame || win.oRequestAnimationFrame || win.msRequestAnimationFrame || function (callback) {\n return win.setTimeout(callback, 1000 / 60);\n};\n\nvar cancel = win.cancelAnimationFrame || win.webkitCancelAnimationFrame || win.mozCancelAnimationFrame || win.oCancelAnimationFrame || win.msCancelAnimationFrame || function (id) {\n win.clearTimeout(id);\n};\n\nexport var raf = request;\nexport var caf = cancel;","import _extends from \"@babel/runtime/helpers/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nvar _class, _temp;\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(source, true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(source).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport calculateSizeAndPositionDataAndUpdateScrollOffset from './utils/calculateSizeAndPositionDataAndUpdateScrollOffset';\nimport ScalingCellSizeAndPositionManager from './utils/ScalingCellSizeAndPositionManager';\nimport createCallbackMemoizer from '../utils/createCallbackMemoizer';\nimport defaultOverscanIndicesGetter, { SCROLL_DIRECTION_BACKWARD, SCROLL_DIRECTION_FORWARD } from './defaultOverscanIndicesGetter';\nimport updateScrollIndexHelper from './utils/updateScrollIndexHelper';\nimport defaultCellRangeRenderer from './defaultCellRangeRenderer';\nimport scrollbarSize from 'dom-helpers/scrollbarSize';\nimport { polyfill } from 'react-lifecycles-compat';\nimport { requestAnimationTimeout, cancelAnimationTimeout } from '../utils/requestAnimationTimeout';\n/**\n * Specifies the number of milliseconds during which to disable pointer events while a scroll is in progress.\n * This improves performance and makes scrolling smoother.\n */\n\nexport var DEFAULT_SCROLLING_RESET_TIME_INTERVAL = 150;\n/**\n * Controls whether the Grid updates the DOM element's scrollLeft/scrollTop based on the current state or just observes it.\n * This prevents Grid from interrupting mouse-wheel animations (see issue #2).\n */\n\nvar SCROLL_POSITION_CHANGE_REASONS = {\n OBSERVED: 'observed',\n REQUESTED: 'requested'\n};\n\nvar renderNull = function renderNull() {\n return null;\n};\n/**\n * Renders tabular data with virtualization along the vertical and horizontal axes.\n * Row heights and column widths must be known ahead of time and specified as properties.\n */\n\n\nvar Grid = (_temp = _class = /*#__PURE__*/function (_React$PureComponent) {\n _inherits(Grid, _React$PureComponent); // Invokes onSectionRendered callback only when start/stop row or column indices change\n\n\n function Grid(props) {\n var _this;\n\n _classCallCheck(this, Grid);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Grid).call(this, props));\n\n _defineProperty(_assertThisInitialized(_this), \"_onGridRenderedMemoizer\", createCallbackMemoizer());\n\n _defineProperty(_assertThisInitialized(_this), \"_onScrollMemoizer\", createCallbackMemoizer(false));\n\n _defineProperty(_assertThisInitialized(_this), \"_deferredInvalidateColumnIndex\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"_deferredInvalidateRowIndex\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"_recomputeScrollLeftFlag\", false);\n\n _defineProperty(_assertThisInitialized(_this), \"_recomputeScrollTopFlag\", false);\n\n _defineProperty(_assertThisInitialized(_this), \"_horizontalScrollBarSize\", 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_verticalScrollBarSize\", 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_scrollbarPresenceChanged\", false);\n\n _defineProperty(_assertThisInitialized(_this), \"_scrollingContainer\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_childrenToDisplay\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_columnStartIndex\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_columnStopIndex\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_rowStartIndex\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_rowStopIndex\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_renderedColumnStartIndex\", 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_renderedColumnStopIndex\", 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_renderedRowStartIndex\", 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_renderedRowStopIndex\", 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_initialScrollTop\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_initialScrollLeft\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_disablePointerEventsTimeoutId\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_styleCache\", {});\n\n _defineProperty(_assertThisInitialized(_this), \"_cellCache\", {});\n\n _defineProperty(_assertThisInitialized(_this), \"_debounceScrollEndedCallback\", function () {\n _this._disablePointerEventsTimeoutId = null; // isScrolling is used to determine if we reset styleCache\n\n _this.setState({\n isScrolling: false,\n needToResetStyleCache: false\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_invokeOnGridRenderedHelper\", function () {\n var onSectionRendered = _this.props.onSectionRendered;\n\n _this._onGridRenderedMemoizer({\n callback: onSectionRendered,\n indices: {\n columnOverscanStartIndex: _this._columnStartIndex,\n columnOverscanStopIndex: _this._columnStopIndex,\n columnStartIndex: _this._renderedColumnStartIndex,\n columnStopIndex: _this._renderedColumnStopIndex,\n rowOverscanStartIndex: _this._rowStartIndex,\n rowOverscanStopIndex: _this._rowStopIndex,\n rowStartIndex: _this._renderedRowStartIndex,\n rowStopIndex: _this._renderedRowStopIndex\n }\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_setScrollingContainerRef\", function (ref) {\n _this._scrollingContainer = ref;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onScroll\", function (event) {\n // In certain edge-cases React dispatches an onScroll event with an invalid target.scrollLeft / target.scrollTop.\n // This invalid event can be detected by comparing event.target to this component's scrollable DOM element.\n // See issue #404 for more information.\n if (event.target === _this._scrollingContainer) {\n _this.handleScrollEvent(event.target);\n }\n });\n\n var columnSizeAndPositionManager = new ScalingCellSizeAndPositionManager({\n cellCount: props.columnCount,\n cellSizeGetter: function cellSizeGetter(params) {\n return Grid._wrapSizeGetter(props.columnWidth)(params);\n },\n estimatedCellSize: Grid._getEstimatedColumnSize(props)\n });\n var rowSizeAndPositionManager = new ScalingCellSizeAndPositionManager({\n cellCount: props.rowCount,\n cellSizeGetter: function cellSizeGetter(params) {\n return Grid._wrapSizeGetter(props.rowHeight)(params);\n },\n estimatedCellSize: Grid._getEstimatedRowSize(props)\n });\n _this.state = {\n instanceProps: {\n columnSizeAndPositionManager: columnSizeAndPositionManager,\n rowSizeAndPositionManager: rowSizeAndPositionManager,\n prevColumnWidth: props.columnWidth,\n prevRowHeight: props.rowHeight,\n prevColumnCount: props.columnCount,\n prevRowCount: props.rowCount,\n prevIsScrolling: props.isScrolling === true,\n prevScrollToColumn: props.scrollToColumn,\n prevScrollToRow: props.scrollToRow,\n scrollbarSize: 0,\n scrollbarSizeMeasured: false\n },\n isScrolling: false,\n scrollDirectionHorizontal: SCROLL_DIRECTION_FORWARD,\n scrollDirectionVertical: SCROLL_DIRECTION_FORWARD,\n scrollLeft: 0,\n scrollTop: 0,\n scrollPositionChangeReason: null,\n needToResetStyleCache: false\n };\n\n if (props.scrollToRow > 0) {\n _this._initialScrollTop = _this._getCalculatedScrollTop(props, _this.state);\n }\n\n if (props.scrollToColumn > 0) {\n _this._initialScrollLeft = _this._getCalculatedScrollLeft(props, _this.state);\n }\n\n return _this;\n }\n /**\n * Gets offsets for a given cell and alignment.\n */\n\n\n _createClass(Grid, [{\n key: \"getOffsetForCell\",\n value: function getOffsetForCell() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref$alignment = _ref.alignment,\n alignment = _ref$alignment === void 0 ? this.props.scrollToAlignment : _ref$alignment,\n _ref$columnIndex = _ref.columnIndex,\n columnIndex = _ref$columnIndex === void 0 ? this.props.scrollToColumn : _ref$columnIndex,\n _ref$rowIndex = _ref.rowIndex,\n rowIndex = _ref$rowIndex === void 0 ? this.props.scrollToRow : _ref$rowIndex;\n\n var offsetProps = _objectSpread({}, this.props, {\n scrollToAlignment: alignment,\n scrollToColumn: columnIndex,\n scrollToRow: rowIndex\n });\n\n return {\n scrollLeft: this._getCalculatedScrollLeft(offsetProps),\n scrollTop: this._getCalculatedScrollTop(offsetProps)\n };\n }\n /**\n * Gets estimated total rows' height.\n */\n\n }, {\n key: \"getTotalRowsHeight\",\n value: function getTotalRowsHeight() {\n return this.state.instanceProps.rowSizeAndPositionManager.getTotalSize();\n }\n /**\n * Gets estimated total columns' width.\n */\n\n }, {\n key: \"getTotalColumnsWidth\",\n value: function getTotalColumnsWidth() {\n return this.state.instanceProps.columnSizeAndPositionManager.getTotalSize();\n }\n /**\n * This method handles a scroll event originating from an external scroll control.\n * It's an advanced method and should probably not be used unless you're implementing a custom scroll-bar solution.\n */\n\n }, {\n key: \"handleScrollEvent\",\n value: function handleScrollEvent(_ref2) {\n var _ref2$scrollLeft = _ref2.scrollLeft,\n scrollLeftParam = _ref2$scrollLeft === void 0 ? 0 : _ref2$scrollLeft,\n _ref2$scrollTop = _ref2.scrollTop,\n scrollTopParam = _ref2$scrollTop === void 0 ? 0 : _ref2$scrollTop; // On iOS, we can arrive at negative offsets by swiping past the start.\n // To prevent flicker here, we make playing in the negative offset zone cause nothing to happen.\n\n if (scrollTopParam < 0) {\n return;\n } // Prevent pointer events from interrupting a smooth scroll\n\n\n this._debounceScrollEnded();\n\n var _this$props = this.props,\n autoHeight = _this$props.autoHeight,\n autoWidth = _this$props.autoWidth,\n height = _this$props.height,\n width = _this$props.width;\n var instanceProps = this.state.instanceProps; // When this component is shrunk drastically, React dispatches a series of back-to-back scroll events,\n // Gradually converging on a scrollTop that is within the bounds of the new, smaller height.\n // This causes a series of rapid renders that is slow for long lists.\n // We can avoid that by doing some simple bounds checking to ensure that scroll offsets never exceed their bounds.\n\n var scrollbarSize = instanceProps.scrollbarSize;\n var totalRowsHeight = instanceProps.rowSizeAndPositionManager.getTotalSize();\n var totalColumnsWidth = instanceProps.columnSizeAndPositionManager.getTotalSize();\n var scrollLeft = Math.min(Math.max(0, totalColumnsWidth - width + scrollbarSize), scrollLeftParam);\n var scrollTop = Math.min(Math.max(0, totalRowsHeight - height + scrollbarSize), scrollTopParam); // Certain devices (like Apple touchpad) rapid-fire duplicate events.\n // Don't force a re-render if this is the case.\n // The mouse may move faster then the animation frame does.\n // Use requestAnimationFrame to avoid over-updating.\n\n if (this.state.scrollLeft !== scrollLeft || this.state.scrollTop !== scrollTop) {\n // Track scrolling direction so we can more efficiently overscan rows to reduce empty space around the edges while scrolling.\n // Don't change direction for an axis unless scroll offset has changed.\n var scrollDirectionHorizontal = scrollLeft !== this.state.scrollLeft ? scrollLeft > this.state.scrollLeft ? SCROLL_DIRECTION_FORWARD : SCROLL_DIRECTION_BACKWARD : this.state.scrollDirectionHorizontal;\n var scrollDirectionVertical = scrollTop !== this.state.scrollTop ? scrollTop > this.state.scrollTop ? SCROLL_DIRECTION_FORWARD : SCROLL_DIRECTION_BACKWARD : this.state.scrollDirectionVertical;\n var newState = {\n isScrolling: true,\n scrollDirectionHorizontal: scrollDirectionHorizontal,\n scrollDirectionVertical: scrollDirectionVertical,\n scrollPositionChangeReason: SCROLL_POSITION_CHANGE_REASONS.OBSERVED\n };\n\n if (!autoHeight) {\n newState.scrollTop = scrollTop;\n }\n\n if (!autoWidth) {\n newState.scrollLeft = scrollLeft;\n }\n\n newState.needToResetStyleCache = false;\n this.setState(newState);\n }\n\n this._invokeOnScrollMemoizer({\n scrollLeft: scrollLeft,\n scrollTop: scrollTop,\n totalColumnsWidth: totalColumnsWidth,\n totalRowsHeight: totalRowsHeight\n });\n }\n /**\n * Invalidate Grid size and recompute visible cells.\n * This is a deferred wrapper for recomputeGridSize().\n * It sets a flag to be evaluated on cDM/cDU to avoid unnecessary renders.\n * This method is intended for advanced use-cases like CellMeasurer.\n */\n // @TODO (bvaughn) Add automated test coverage for this.\n\n }, {\n key: \"invalidateCellSizeAfterRender\",\n value: function invalidateCellSizeAfterRender(_ref3) {\n var columnIndex = _ref3.columnIndex,\n rowIndex = _ref3.rowIndex;\n this._deferredInvalidateColumnIndex = typeof this._deferredInvalidateColumnIndex === 'number' ? Math.min(this._deferredInvalidateColumnIndex, columnIndex) : columnIndex;\n this._deferredInvalidateRowIndex = typeof this._deferredInvalidateRowIndex === 'number' ? Math.min(this._deferredInvalidateRowIndex, rowIndex) : rowIndex;\n }\n /**\n * Pre-measure all columns and rows in a Grid.\n * Typically cells are only measured as needed and estimated sizes are used for cells that have not yet been measured.\n * This method ensures that the next call to getTotalSize() returns an exact size (as opposed to just an estimated one).\n */\n\n }, {\n key: \"measureAllCells\",\n value: function measureAllCells() {\n var _this$props2 = this.props,\n columnCount = _this$props2.columnCount,\n rowCount = _this$props2.rowCount;\n var instanceProps = this.state.instanceProps;\n instanceProps.columnSizeAndPositionManager.getSizeAndPositionOfCell(columnCount - 1);\n instanceProps.rowSizeAndPositionManager.getSizeAndPositionOfCell(rowCount - 1);\n }\n /**\n * Forced recompute of row heights and column widths.\n * This function should be called if dynamic column or row sizes have changed but nothing else has.\n * Since Grid only receives :columnCount and :rowCount it has no way of detecting when the underlying data changes.\n */\n\n }, {\n key: \"recomputeGridSize\",\n value: function recomputeGridSize() {\n var _ref4 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref4$columnIndex = _ref4.columnIndex,\n columnIndex = _ref4$columnIndex === void 0 ? 0 : _ref4$columnIndex,\n _ref4$rowIndex = _ref4.rowIndex,\n rowIndex = _ref4$rowIndex === void 0 ? 0 : _ref4$rowIndex;\n\n var _this$props3 = this.props,\n scrollToColumn = _this$props3.scrollToColumn,\n scrollToRow = _this$props3.scrollToRow;\n var instanceProps = this.state.instanceProps;\n instanceProps.columnSizeAndPositionManager.resetCell(columnIndex);\n instanceProps.rowSizeAndPositionManager.resetCell(rowIndex); // Cell sizes may be determined by a function property.\n // In this case the cDU handler can't know if they changed.\n // Store this flag to let the next cDU pass know it needs to recompute the scroll offset.\n\n this._recomputeScrollLeftFlag = scrollToColumn >= 0 && (this.state.scrollDirectionHorizontal === SCROLL_DIRECTION_FORWARD ? columnIndex <= scrollToColumn : columnIndex >= scrollToColumn);\n this._recomputeScrollTopFlag = scrollToRow >= 0 && (this.state.scrollDirectionVertical === SCROLL_DIRECTION_FORWARD ? rowIndex <= scrollToRow : rowIndex >= scrollToRow); // Clear cell cache in case we are scrolling;\n // Invalid row heights likely mean invalid cached content as well.\n\n this._styleCache = {};\n this._cellCache = {};\n this.forceUpdate();\n }\n /**\n * Ensure column and row are visible.\n */\n\n }, {\n key: \"scrollToCell\",\n value: function scrollToCell(_ref5) {\n var columnIndex = _ref5.columnIndex,\n rowIndex = _ref5.rowIndex;\n var columnCount = this.props.columnCount;\n var props = this.props; // Don't adjust scroll offset for single-column grids (eg List, Table).\n // This can cause a funky scroll offset because of the vertical scrollbar width.\n\n if (columnCount > 1 && columnIndex !== undefined) {\n this._updateScrollLeftForScrollToColumn(_objectSpread({}, props, {\n scrollToColumn: columnIndex\n }));\n }\n\n if (rowIndex !== undefined) {\n this._updateScrollTopForScrollToRow(_objectSpread({}, props, {\n scrollToRow: rowIndex\n }));\n }\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this$props4 = this.props,\n getScrollbarSize = _this$props4.getScrollbarSize,\n height = _this$props4.height,\n scrollLeft = _this$props4.scrollLeft,\n scrollToColumn = _this$props4.scrollToColumn,\n scrollTop = _this$props4.scrollTop,\n scrollToRow = _this$props4.scrollToRow,\n width = _this$props4.width;\n var instanceProps = this.state.instanceProps; // Reset initial offsets to be ignored in browser\n\n this._initialScrollTop = 0;\n this._initialScrollLeft = 0; // If cell sizes have been invalidated (eg we are using CellMeasurer) then reset cached positions.\n // We must do this at the start of the method as we may calculate and update scroll position below.\n\n this._handleInvalidatedGridSize(); // If this component was first rendered server-side, scrollbar size will be undefined.\n // In that event we need to remeasure.\n\n\n if (!instanceProps.scrollbarSizeMeasured) {\n this.setState(function (prevState) {\n var stateUpdate = _objectSpread({}, prevState, {\n needToResetStyleCache: false\n });\n\n stateUpdate.instanceProps.scrollbarSize = getScrollbarSize();\n stateUpdate.instanceProps.scrollbarSizeMeasured = true;\n return stateUpdate;\n });\n }\n\n if (typeof scrollLeft === 'number' && scrollLeft >= 0 || typeof scrollTop === 'number' && scrollTop >= 0) {\n var stateUpdate = Grid._getScrollToPositionStateUpdate({\n prevState: this.state,\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n });\n\n if (stateUpdate) {\n stateUpdate.needToResetStyleCache = false;\n this.setState(stateUpdate);\n }\n } // refs don't work in `react-test-renderer`\n\n\n if (this._scrollingContainer) {\n // setting the ref's scrollLeft and scrollTop.\n // Somehow in MultiGrid the main grid doesn't trigger a update on mount.\n if (this._scrollingContainer.scrollLeft !== this.state.scrollLeft) {\n this._scrollingContainer.scrollLeft = this.state.scrollLeft;\n }\n\n if (this._scrollingContainer.scrollTop !== this.state.scrollTop) {\n this._scrollingContainer.scrollTop = this.state.scrollTop;\n }\n } // Don't update scroll offset if the size is 0; we don't render any cells in this case.\n // Setting a state may cause us to later thing we've updated the offce when we haven't.\n\n\n var sizeIsBiggerThanZero = height > 0 && width > 0;\n\n if (scrollToColumn >= 0 && sizeIsBiggerThanZero) {\n this._updateScrollLeftForScrollToColumn();\n }\n\n if (scrollToRow >= 0 && sizeIsBiggerThanZero) {\n this._updateScrollTopForScrollToRow();\n } // Update onRowsRendered callback\n\n\n this._invokeOnGridRenderedHelper(); // Initialize onScroll callback\n\n\n this._invokeOnScrollMemoizer({\n scrollLeft: scrollLeft || 0,\n scrollTop: scrollTop || 0,\n totalColumnsWidth: instanceProps.columnSizeAndPositionManager.getTotalSize(),\n totalRowsHeight: instanceProps.rowSizeAndPositionManager.getTotalSize()\n });\n\n this._maybeCallOnScrollbarPresenceChange();\n }\n /**\n * @private\n * This method updates scrollLeft/scrollTop in state for the following conditions:\n * 1) New scroll-to-cell props have been set\n */\n\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps, prevState) {\n var _this2 = this;\n\n var _this$props5 = this.props,\n autoHeight = _this$props5.autoHeight,\n autoWidth = _this$props5.autoWidth,\n columnCount = _this$props5.columnCount,\n height = _this$props5.height,\n rowCount = _this$props5.rowCount,\n scrollToAlignment = _this$props5.scrollToAlignment,\n scrollToColumn = _this$props5.scrollToColumn,\n scrollToRow = _this$props5.scrollToRow,\n width = _this$props5.width;\n var _this$state = this.state,\n scrollLeft = _this$state.scrollLeft,\n scrollPositionChangeReason = _this$state.scrollPositionChangeReason,\n scrollTop = _this$state.scrollTop,\n instanceProps = _this$state.instanceProps; // If cell sizes have been invalidated (eg we are using CellMeasurer) then reset cached positions.\n // We must do this at the start of the method as we may calculate and update scroll position below.\n\n this._handleInvalidatedGridSize(); // Handle edge case where column or row count has only just increased over 0.\n // In this case we may have to restore a previously-specified scroll offset.\n // For more info see bvaughn/react-virtualized/issues/218\n\n\n var columnOrRowCountJustIncreasedFromZero = columnCount > 0 && prevProps.columnCount === 0 || rowCount > 0 && prevProps.rowCount === 0; // Make sure requested changes to :scrollLeft or :scrollTop get applied.\n // Assigning to scrollLeft/scrollTop tells the browser to interrupt any running scroll animations,\n // And to discard any pending async changes to the scroll position that may have happened in the meantime (e.g. on a separate scrolling thread).\n // So we only set these when we require an adjustment of the scroll position.\n // See issue #2 for more information.\n\n if (scrollPositionChangeReason === SCROLL_POSITION_CHANGE_REASONS.REQUESTED) {\n // @TRICKY :autoHeight and :autoWidth properties instructs Grid to leave :scrollTop and :scrollLeft management to an external HOC (eg WindowScroller).\n // In this case we should avoid checking scrollingContainer.scrollTop and scrollingContainer.scrollLeft since it forces layout/flow.\n if (!autoWidth && scrollLeft >= 0 && (scrollLeft !== this._scrollingContainer.scrollLeft || columnOrRowCountJustIncreasedFromZero)) {\n this._scrollingContainer.scrollLeft = scrollLeft;\n }\n\n if (!autoHeight && scrollTop >= 0 && (scrollTop !== this._scrollingContainer.scrollTop || columnOrRowCountJustIncreasedFromZero)) {\n this._scrollingContainer.scrollTop = scrollTop;\n }\n } // Special case where the previous size was 0:\n // In this case we don't show any windowed cells at all.\n // So we should always recalculate offset afterwards.\n\n\n var sizeJustIncreasedFromZero = (prevProps.width === 0 || prevProps.height === 0) && height > 0 && width > 0; // Update scroll offsets if the current :scrollToColumn or :scrollToRow values requires it\n // @TODO Do we also need this check or can the one in componentWillUpdate() suffice?\n\n if (this._recomputeScrollLeftFlag) {\n this._recomputeScrollLeftFlag = false;\n\n this._updateScrollLeftForScrollToColumn(this.props);\n } else {\n updateScrollIndexHelper({\n cellSizeAndPositionManager: instanceProps.columnSizeAndPositionManager,\n previousCellsCount: prevProps.columnCount,\n previousCellSize: prevProps.columnWidth,\n previousScrollToAlignment: prevProps.scrollToAlignment,\n previousScrollToIndex: prevProps.scrollToColumn,\n previousSize: prevProps.width,\n scrollOffset: scrollLeft,\n scrollToAlignment: scrollToAlignment,\n scrollToIndex: scrollToColumn,\n size: width,\n sizeJustIncreasedFromZero: sizeJustIncreasedFromZero,\n updateScrollIndexCallback: function updateScrollIndexCallback() {\n return _this2._updateScrollLeftForScrollToColumn(_this2.props);\n }\n });\n }\n\n if (this._recomputeScrollTopFlag) {\n this._recomputeScrollTopFlag = false;\n\n this._updateScrollTopForScrollToRow(this.props);\n } else {\n updateScrollIndexHelper({\n cellSizeAndPositionManager: instanceProps.rowSizeAndPositionManager,\n previousCellsCount: prevProps.rowCount,\n previousCellSize: prevProps.rowHeight,\n previousScrollToAlignment: prevProps.scrollToAlignment,\n previousScrollToIndex: prevProps.scrollToRow,\n previousSize: prevProps.height,\n scrollOffset: scrollTop,\n scrollToAlignment: scrollToAlignment,\n scrollToIndex: scrollToRow,\n size: height,\n sizeJustIncreasedFromZero: sizeJustIncreasedFromZero,\n updateScrollIndexCallback: function updateScrollIndexCallback() {\n return _this2._updateScrollTopForScrollToRow(_this2.props);\n }\n });\n } // Update onRowsRendered callback if start/stop indices have changed\n\n\n this._invokeOnGridRenderedHelper(); // Changes to :scrollLeft or :scrollTop should also notify :onScroll listeners\n\n\n if (scrollLeft !== prevState.scrollLeft || scrollTop !== prevState.scrollTop) {\n var totalRowsHeight = instanceProps.rowSizeAndPositionManager.getTotalSize();\n var totalColumnsWidth = instanceProps.columnSizeAndPositionManager.getTotalSize();\n\n this._invokeOnScrollMemoizer({\n scrollLeft: scrollLeft,\n scrollTop: scrollTop,\n totalColumnsWidth: totalColumnsWidth,\n totalRowsHeight: totalRowsHeight\n });\n }\n\n this._maybeCallOnScrollbarPresenceChange();\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (this._disablePointerEventsTimeoutId) {\n cancelAnimationTimeout(this._disablePointerEventsTimeoutId);\n }\n }\n /**\n * This method updates scrollLeft/scrollTop in state for the following conditions:\n * 1) Empty content (0 rows or columns)\n * 2) New scroll props overriding the current state\n * 3) Cells-count or cells-size has changed, making previous scroll offsets invalid\n */\n\n }, {\n key: \"render\",\n value: function render() {\n var _this$props6 = this.props,\n autoContainerWidth = _this$props6.autoContainerWidth,\n autoHeight = _this$props6.autoHeight,\n autoWidth = _this$props6.autoWidth,\n className = _this$props6.className,\n containerProps = _this$props6.containerProps,\n containerRole = _this$props6.containerRole,\n containerStyle = _this$props6.containerStyle,\n height = _this$props6.height,\n id = _this$props6.id,\n noContentRenderer = _this$props6.noContentRenderer,\n role = _this$props6.role,\n style = _this$props6.style,\n tabIndex = _this$props6.tabIndex,\n width = _this$props6.width;\n var _this$state2 = this.state,\n instanceProps = _this$state2.instanceProps,\n needToResetStyleCache = _this$state2.needToResetStyleCache;\n\n var isScrolling = this._isScrolling();\n\n var gridStyle = {\n boxSizing: 'border-box',\n direction: 'ltr',\n height: autoHeight ? 'auto' : height,\n position: 'relative',\n width: autoWidth ? 'auto' : width,\n WebkitOverflowScrolling: 'touch',\n willChange: 'transform'\n };\n\n if (needToResetStyleCache) {\n this._styleCache = {};\n } // calculate _styleCache here\n // if state.isScrolling (not from _isScrolling) then reset\n\n\n if (!this.state.isScrolling) {\n this._resetStyleCache();\n } // calculate children to render here\n\n\n this._calculateChildrenToRender(this.props, this.state);\n\n var totalColumnsWidth = instanceProps.columnSizeAndPositionManager.getTotalSize();\n var totalRowsHeight = instanceProps.rowSizeAndPositionManager.getTotalSize(); // Force browser to hide scrollbars when we know they aren't necessary.\n // Otherwise once scrollbars appear they may not disappear again.\n // For more info see issue #116\n\n var verticalScrollBarSize = totalRowsHeight > height ? instanceProps.scrollbarSize : 0;\n var horizontalScrollBarSize = totalColumnsWidth > width ? instanceProps.scrollbarSize : 0;\n\n if (horizontalScrollBarSize !== this._horizontalScrollBarSize || verticalScrollBarSize !== this._verticalScrollBarSize) {\n this._horizontalScrollBarSize = horizontalScrollBarSize;\n this._verticalScrollBarSize = verticalScrollBarSize;\n this._scrollbarPresenceChanged = true;\n } // Also explicitly init styles to 'auto' if scrollbars are required.\n // This works around an obscure edge case where external CSS styles have not yet been loaded,\n // But an initial scroll index of offset is set as an external prop.\n // Without this style, Grid would render the correct range of cells but would NOT update its internal offset.\n // This was originally reported via clauderic/react-infinite-calendar/issues/23\n\n\n gridStyle.overflowX = totalColumnsWidth + verticalScrollBarSize <= width ? 'hidden' : 'auto';\n gridStyle.overflowY = totalRowsHeight + horizontalScrollBarSize <= height ? 'hidden' : 'auto';\n var childrenToDisplay = this._childrenToDisplay;\n var showNoContentRenderer = childrenToDisplay.length === 0 && height > 0 && width > 0;\n return React.createElement(\"div\", _extends({\n ref: this._setScrollingContainerRef\n }, containerProps, {\n \"aria-label\": this.props['aria-label'],\n \"aria-readonly\": this.props['aria-readonly'],\n className: clsx('ReactVirtualized__Grid', className),\n id: id,\n onScroll: this._onScroll,\n role: role,\n style: _objectSpread({}, gridStyle, {}, style),\n tabIndex: tabIndex\n }), childrenToDisplay.length > 0 && React.createElement(\"div\", {\n className: \"ReactVirtualized__Grid__innerScrollContainer\",\n role: containerRole,\n style: _objectSpread({\n width: autoContainerWidth ? 'auto' : totalColumnsWidth,\n height: totalRowsHeight,\n maxWidth: totalColumnsWidth,\n maxHeight: totalRowsHeight,\n overflow: 'hidden',\n pointerEvents: isScrolling ? 'none' : '',\n position: 'relative'\n }, containerStyle)\n }, childrenToDisplay), showNoContentRenderer && noContentRenderer());\n }\n /* ---------------------------- Helper methods ---------------------------- */\n\n }, {\n key: \"_calculateChildrenToRender\",\n value: function _calculateChildrenToRender() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props;\n var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.state;\n var cellRenderer = props.cellRenderer,\n cellRangeRenderer = props.cellRangeRenderer,\n columnCount = props.columnCount,\n deferredMeasurementCache = props.deferredMeasurementCache,\n height = props.height,\n overscanColumnCount = props.overscanColumnCount,\n overscanIndicesGetter = props.overscanIndicesGetter,\n overscanRowCount = props.overscanRowCount,\n rowCount = props.rowCount,\n width = props.width,\n isScrollingOptOut = props.isScrollingOptOut;\n var scrollDirectionHorizontal = state.scrollDirectionHorizontal,\n scrollDirectionVertical = state.scrollDirectionVertical,\n instanceProps = state.instanceProps;\n var scrollTop = this._initialScrollTop > 0 ? this._initialScrollTop : state.scrollTop;\n var scrollLeft = this._initialScrollLeft > 0 ? this._initialScrollLeft : state.scrollLeft;\n\n var isScrolling = this._isScrolling(props, state);\n\n this._childrenToDisplay = []; // Render only enough columns and rows to cover the visible area of the grid.\n\n if (height > 0 && width > 0) {\n var visibleColumnIndices = instanceProps.columnSizeAndPositionManager.getVisibleCellRange({\n containerSize: width,\n offset: scrollLeft\n });\n var visibleRowIndices = instanceProps.rowSizeAndPositionManager.getVisibleCellRange({\n containerSize: height,\n offset: scrollTop\n });\n var horizontalOffsetAdjustment = instanceProps.columnSizeAndPositionManager.getOffsetAdjustment({\n containerSize: width,\n offset: scrollLeft\n });\n var verticalOffsetAdjustment = instanceProps.rowSizeAndPositionManager.getOffsetAdjustment({\n containerSize: height,\n offset: scrollTop\n }); // Store for _invokeOnGridRenderedHelper()\n\n this._renderedColumnStartIndex = visibleColumnIndices.start;\n this._renderedColumnStopIndex = visibleColumnIndices.stop;\n this._renderedRowStartIndex = visibleRowIndices.start;\n this._renderedRowStopIndex = visibleRowIndices.stop;\n var overscanColumnIndices = overscanIndicesGetter({\n direction: 'horizontal',\n cellCount: columnCount,\n overscanCellsCount: overscanColumnCount,\n scrollDirection: scrollDirectionHorizontal,\n startIndex: typeof visibleColumnIndices.start === 'number' ? visibleColumnIndices.start : 0,\n stopIndex: typeof visibleColumnIndices.stop === 'number' ? visibleColumnIndices.stop : -1\n });\n var overscanRowIndices = overscanIndicesGetter({\n direction: 'vertical',\n cellCount: rowCount,\n overscanCellsCount: overscanRowCount,\n scrollDirection: scrollDirectionVertical,\n startIndex: typeof visibleRowIndices.start === 'number' ? visibleRowIndices.start : 0,\n stopIndex: typeof visibleRowIndices.stop === 'number' ? visibleRowIndices.stop : -1\n }); // Store for _invokeOnGridRenderedHelper()\n\n var columnStartIndex = overscanColumnIndices.overscanStartIndex;\n var columnStopIndex = overscanColumnIndices.overscanStopIndex;\n var rowStartIndex = overscanRowIndices.overscanStartIndex;\n var rowStopIndex = overscanRowIndices.overscanStopIndex; // Advanced use-cases (eg CellMeasurer) require batched measurements to determine accurate sizes.\n\n if (deferredMeasurementCache) {\n // If rows have a dynamic height, scan the rows we are about to render.\n // If any have not yet been measured, then we need to render all columns initially,\n // Because the height of the row is equal to the tallest cell within that row,\n // (And so we can't know the height without measuring all column-cells first).\n if (!deferredMeasurementCache.hasFixedHeight()) {\n for (var rowIndex = rowStartIndex; rowIndex <= rowStopIndex; rowIndex++) {\n if (!deferredMeasurementCache.has(rowIndex, 0)) {\n columnStartIndex = 0;\n columnStopIndex = columnCount - 1;\n break;\n }\n }\n } // If columns have a dynamic width, scan the columns we are about to render.\n // If any have not yet been measured, then we need to render all rows initially,\n // Because the width of the column is equal to the widest cell within that column,\n // (And so we can't know the width without measuring all row-cells first).\n\n\n if (!deferredMeasurementCache.hasFixedWidth()) {\n for (var columnIndex = columnStartIndex; columnIndex <= columnStopIndex; columnIndex++) {\n if (!deferredMeasurementCache.has(0, columnIndex)) {\n rowStartIndex = 0;\n rowStopIndex = rowCount - 1;\n break;\n }\n }\n }\n }\n\n this._childrenToDisplay = cellRangeRenderer({\n cellCache: this._cellCache,\n cellRenderer: cellRenderer,\n columnSizeAndPositionManager: instanceProps.columnSizeAndPositionManager,\n columnStartIndex: columnStartIndex,\n columnStopIndex: columnStopIndex,\n deferredMeasurementCache: deferredMeasurementCache,\n horizontalOffsetAdjustment: horizontalOffsetAdjustment,\n isScrolling: isScrolling,\n isScrollingOptOut: isScrollingOptOut,\n parent: this,\n rowSizeAndPositionManager: instanceProps.rowSizeAndPositionManager,\n rowStartIndex: rowStartIndex,\n rowStopIndex: rowStopIndex,\n scrollLeft: scrollLeft,\n scrollTop: scrollTop,\n styleCache: this._styleCache,\n verticalOffsetAdjustment: verticalOffsetAdjustment,\n visibleColumnIndices: visibleColumnIndices,\n visibleRowIndices: visibleRowIndices\n }); // update the indices\n\n this._columnStartIndex = columnStartIndex;\n this._columnStopIndex = columnStopIndex;\n this._rowStartIndex = rowStartIndex;\n this._rowStopIndex = rowStopIndex;\n }\n }\n /**\n * Sets an :isScrolling flag for a small window of time.\n * This flag is used to disable pointer events on the scrollable portion of the Grid.\n * This prevents jerky/stuttery mouse-wheel scrolling.\n */\n\n }, {\n key: \"_debounceScrollEnded\",\n value: function _debounceScrollEnded() {\n var scrollingResetTimeInterval = this.props.scrollingResetTimeInterval;\n\n if (this._disablePointerEventsTimeoutId) {\n cancelAnimationTimeout(this._disablePointerEventsTimeoutId);\n }\n\n this._disablePointerEventsTimeoutId = requestAnimationTimeout(this._debounceScrollEndedCallback, scrollingResetTimeInterval);\n }\n }, {\n key: \"_handleInvalidatedGridSize\",\n\n /**\n * Check for batched CellMeasurer size invalidations.\n * This will occur the first time one or more previously unmeasured cells are rendered.\n */\n value: function _handleInvalidatedGridSize() {\n if (typeof this._deferredInvalidateColumnIndex === 'number' && typeof this._deferredInvalidateRowIndex === 'number') {\n var columnIndex = this._deferredInvalidateColumnIndex;\n var rowIndex = this._deferredInvalidateRowIndex;\n this._deferredInvalidateColumnIndex = null;\n this._deferredInvalidateRowIndex = null;\n this.recomputeGridSize({\n columnIndex: columnIndex,\n rowIndex: rowIndex\n });\n }\n }\n }, {\n key: \"_invokeOnScrollMemoizer\",\n value: function _invokeOnScrollMemoizer(_ref6) {\n var _this3 = this;\n\n var scrollLeft = _ref6.scrollLeft,\n scrollTop = _ref6.scrollTop,\n totalColumnsWidth = _ref6.totalColumnsWidth,\n totalRowsHeight = _ref6.totalRowsHeight;\n\n this._onScrollMemoizer({\n callback: function callback(_ref7) {\n var scrollLeft = _ref7.scrollLeft,\n scrollTop = _ref7.scrollTop;\n var _this3$props = _this3.props,\n height = _this3$props.height,\n onScroll = _this3$props.onScroll,\n width = _this3$props.width;\n onScroll({\n clientHeight: height,\n clientWidth: width,\n scrollHeight: totalRowsHeight,\n scrollLeft: scrollLeft,\n scrollTop: scrollTop,\n scrollWidth: totalColumnsWidth\n });\n },\n indices: {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n }\n });\n }\n }, {\n key: \"_isScrolling\",\n value: function _isScrolling() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props;\n var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.state; // If isScrolling is defined in props, use it to override the value in state\n // This is a performance optimization for WindowScroller + Grid\n\n return Object.hasOwnProperty.call(props, 'isScrolling') ? Boolean(props.isScrolling) : Boolean(state.isScrolling);\n }\n }, {\n key: \"_maybeCallOnScrollbarPresenceChange\",\n value: function _maybeCallOnScrollbarPresenceChange() {\n if (this._scrollbarPresenceChanged) {\n var onScrollbarPresenceChange = this.props.onScrollbarPresenceChange;\n this._scrollbarPresenceChanged = false;\n onScrollbarPresenceChange({\n horizontal: this._horizontalScrollBarSize > 0,\n size: this.state.instanceProps.scrollbarSize,\n vertical: this._verticalScrollBarSize > 0\n });\n }\n }\n }, {\n key: \"scrollToPosition\",\n\n /**\n * Scroll to the specified offset(s).\n * Useful for animating position changes.\n */\n value: function scrollToPosition(_ref8) {\n var scrollLeft = _ref8.scrollLeft,\n scrollTop = _ref8.scrollTop;\n\n var stateUpdate = Grid._getScrollToPositionStateUpdate({\n prevState: this.state,\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n });\n\n if (stateUpdate) {\n stateUpdate.needToResetStyleCache = false;\n this.setState(stateUpdate);\n }\n }\n }, {\n key: \"_getCalculatedScrollLeft\",\n value: function _getCalculatedScrollLeft() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props;\n var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.state;\n return Grid._getCalculatedScrollLeft(props, state);\n }\n }, {\n key: \"_updateScrollLeftForScrollToColumn\",\n value: function _updateScrollLeftForScrollToColumn() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props;\n var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.state;\n\n var stateUpdate = Grid._getScrollLeftForScrollToColumnStateUpdate(props, state);\n\n if (stateUpdate) {\n stateUpdate.needToResetStyleCache = false;\n this.setState(stateUpdate);\n }\n }\n }, {\n key: \"_getCalculatedScrollTop\",\n value: function _getCalculatedScrollTop() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props;\n var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.state;\n return Grid._getCalculatedScrollTop(props, state);\n }\n }, {\n key: \"_resetStyleCache\",\n value: function _resetStyleCache() {\n var styleCache = this._styleCache;\n var cellCache = this._cellCache;\n var isScrollingOptOut = this.props.isScrollingOptOut; // Reset cell and style caches once scrolling stops.\n // This makes Grid simpler to use (since cells commonly change).\n // And it keeps the caches from growing too large.\n // Performance is most sensitive when a user is scrolling.\n // Don't clear visible cells from cellCache if isScrollingOptOut is specified.\n // This keeps the cellCache to a resonable size.\n\n this._cellCache = {};\n this._styleCache = {}; // Copy over the visible cell styles so avoid unnecessary re-render.\n\n for (var rowIndex = this._rowStartIndex; rowIndex <= this._rowStopIndex; rowIndex++) {\n for (var columnIndex = this._columnStartIndex; columnIndex <= this._columnStopIndex; columnIndex++) {\n var key = \"\".concat(rowIndex, \"-\").concat(columnIndex);\n this._styleCache[key] = styleCache[key];\n\n if (isScrollingOptOut) {\n this._cellCache[key] = cellCache[key];\n }\n }\n }\n }\n }, {\n key: \"_updateScrollTopForScrollToRow\",\n value: function _updateScrollTopForScrollToRow() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props;\n var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.state;\n\n var stateUpdate = Grid._getScrollTopForScrollToRowStateUpdate(props, state);\n\n if (stateUpdate) {\n stateUpdate.needToResetStyleCache = false;\n this.setState(stateUpdate);\n }\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps, prevState) {\n var newState = {};\n\n if (nextProps.columnCount === 0 && prevState.scrollLeft !== 0 || nextProps.rowCount === 0 && prevState.scrollTop !== 0) {\n newState.scrollLeft = 0;\n newState.scrollTop = 0; // only use scroll{Left,Top} from props if scrollTo{Column,Row} isn't specified\n // scrollTo{Column,Row} should override scroll{Left,Top}\n } else if (nextProps.scrollLeft !== prevState.scrollLeft && nextProps.scrollToColumn < 0 || nextProps.scrollTop !== prevState.scrollTop && nextProps.scrollToRow < 0) {\n Object.assign(newState, Grid._getScrollToPositionStateUpdate({\n prevState: prevState,\n scrollLeft: nextProps.scrollLeft,\n scrollTop: nextProps.scrollTop\n }));\n }\n\n var instanceProps = prevState.instanceProps; // Initially we should not clearStyleCache\n\n newState.needToResetStyleCache = false;\n\n if (nextProps.columnWidth !== instanceProps.prevColumnWidth || nextProps.rowHeight !== instanceProps.prevRowHeight) {\n // Reset cache. set it to {} in render\n newState.needToResetStyleCache = true;\n }\n\n instanceProps.columnSizeAndPositionManager.configure({\n cellCount: nextProps.columnCount,\n estimatedCellSize: Grid._getEstimatedColumnSize(nextProps),\n cellSizeGetter: Grid._wrapSizeGetter(nextProps.columnWidth)\n });\n instanceProps.rowSizeAndPositionManager.configure({\n cellCount: nextProps.rowCount,\n estimatedCellSize: Grid._getEstimatedRowSize(nextProps),\n cellSizeGetter: Grid._wrapSizeGetter(nextProps.rowHeight)\n });\n\n if (instanceProps.prevColumnCount === 0 || instanceProps.prevRowCount === 0) {\n instanceProps.prevColumnCount = 0;\n instanceProps.prevRowCount = 0;\n } // If scrolling is controlled outside this component, clear cache when scrolling stops\n\n\n if (nextProps.autoHeight && nextProps.isScrolling === false && instanceProps.prevIsScrolling === true) {\n Object.assign(newState, {\n isScrolling: false\n });\n }\n\n var maybeStateA;\n var maybeStateB;\n calculateSizeAndPositionDataAndUpdateScrollOffset({\n cellCount: instanceProps.prevColumnCount,\n cellSize: typeof instanceProps.prevColumnWidth === 'number' ? instanceProps.prevColumnWidth : null,\n computeMetadataCallback: function computeMetadataCallback() {\n return instanceProps.columnSizeAndPositionManager.resetCell(0);\n },\n computeMetadataCallbackProps: nextProps,\n nextCellsCount: nextProps.columnCount,\n nextCellSize: typeof nextProps.columnWidth === 'number' ? nextProps.columnWidth : null,\n nextScrollToIndex: nextProps.scrollToColumn,\n scrollToIndex: instanceProps.prevScrollToColumn,\n updateScrollOffsetForScrollToIndex: function updateScrollOffsetForScrollToIndex() {\n maybeStateA = Grid._getScrollLeftForScrollToColumnStateUpdate(nextProps, prevState);\n }\n });\n calculateSizeAndPositionDataAndUpdateScrollOffset({\n cellCount: instanceProps.prevRowCount,\n cellSize: typeof instanceProps.prevRowHeight === 'number' ? instanceProps.prevRowHeight : null,\n computeMetadataCallback: function computeMetadataCallback() {\n return instanceProps.rowSizeAndPositionManager.resetCell(0);\n },\n computeMetadataCallbackProps: nextProps,\n nextCellsCount: nextProps.rowCount,\n nextCellSize: typeof nextProps.rowHeight === 'number' ? nextProps.rowHeight : null,\n nextScrollToIndex: nextProps.scrollToRow,\n scrollToIndex: instanceProps.prevScrollToRow,\n updateScrollOffsetForScrollToIndex: function updateScrollOffsetForScrollToIndex() {\n maybeStateB = Grid._getScrollTopForScrollToRowStateUpdate(nextProps, prevState);\n }\n });\n instanceProps.prevColumnCount = nextProps.columnCount;\n instanceProps.prevColumnWidth = nextProps.columnWidth;\n instanceProps.prevIsScrolling = nextProps.isScrolling === true;\n instanceProps.prevRowCount = nextProps.rowCount;\n instanceProps.prevRowHeight = nextProps.rowHeight;\n instanceProps.prevScrollToColumn = nextProps.scrollToColumn;\n instanceProps.prevScrollToRow = nextProps.scrollToRow; // getting scrollBarSize (moved from componentWillMount)\n\n instanceProps.scrollbarSize = nextProps.getScrollbarSize();\n\n if (instanceProps.scrollbarSize === undefined) {\n instanceProps.scrollbarSizeMeasured = false;\n instanceProps.scrollbarSize = 0;\n } else {\n instanceProps.scrollbarSizeMeasured = true;\n }\n\n newState.instanceProps = instanceProps;\n return _objectSpread({}, newState, {}, maybeStateA, {}, maybeStateB);\n }\n }, {\n key: \"_getEstimatedColumnSize\",\n value: function _getEstimatedColumnSize(props) {\n return typeof props.columnWidth === 'number' ? props.columnWidth : props.estimatedColumnSize;\n }\n }, {\n key: \"_getEstimatedRowSize\",\n value: function _getEstimatedRowSize(props) {\n return typeof props.rowHeight === 'number' ? props.rowHeight : props.estimatedRowSize;\n }\n }, {\n key: \"_getScrollToPositionStateUpdate\",\n\n /**\n * Get the updated state after scrolling to\n * scrollLeft and scrollTop\n */\n value: function _getScrollToPositionStateUpdate(_ref9) {\n var prevState = _ref9.prevState,\n scrollLeft = _ref9.scrollLeft,\n scrollTop = _ref9.scrollTop;\n var newState = {\n scrollPositionChangeReason: SCROLL_POSITION_CHANGE_REASONS.REQUESTED\n };\n\n if (typeof scrollLeft === 'number' && scrollLeft >= 0) {\n newState.scrollDirectionHorizontal = scrollLeft > prevState.scrollLeft ? SCROLL_DIRECTION_FORWARD : SCROLL_DIRECTION_BACKWARD;\n newState.scrollLeft = scrollLeft;\n }\n\n if (typeof scrollTop === 'number' && scrollTop >= 0) {\n newState.scrollDirectionVertical = scrollTop > prevState.scrollTop ? SCROLL_DIRECTION_FORWARD : SCROLL_DIRECTION_BACKWARD;\n newState.scrollTop = scrollTop;\n }\n\n if (typeof scrollLeft === 'number' && scrollLeft >= 0 && scrollLeft !== prevState.scrollLeft || typeof scrollTop === 'number' && scrollTop >= 0 && scrollTop !== prevState.scrollTop) {\n return newState;\n }\n\n return {};\n }\n }, {\n key: \"_wrapSizeGetter\",\n value: function _wrapSizeGetter(value) {\n return typeof value === 'function' ? value : function () {\n return value;\n };\n }\n }, {\n key: \"_getCalculatedScrollLeft\",\n value: function _getCalculatedScrollLeft(nextProps, prevState) {\n var columnCount = nextProps.columnCount,\n height = nextProps.height,\n scrollToAlignment = nextProps.scrollToAlignment,\n scrollToColumn = nextProps.scrollToColumn,\n width = nextProps.width;\n var scrollLeft = prevState.scrollLeft,\n instanceProps = prevState.instanceProps;\n\n if (columnCount > 0) {\n var finalColumn = columnCount - 1;\n var targetIndex = scrollToColumn < 0 ? finalColumn : Math.min(finalColumn, scrollToColumn);\n var totalRowsHeight = instanceProps.rowSizeAndPositionManager.getTotalSize();\n var scrollBarSize = instanceProps.scrollbarSizeMeasured && totalRowsHeight > height ? instanceProps.scrollbarSize : 0;\n return instanceProps.columnSizeAndPositionManager.getUpdatedOffsetForIndex({\n align: scrollToAlignment,\n containerSize: width - scrollBarSize,\n currentOffset: scrollLeft,\n targetIndex: targetIndex\n });\n }\n\n return 0;\n }\n }, {\n key: \"_getScrollLeftForScrollToColumnStateUpdate\",\n value: function _getScrollLeftForScrollToColumnStateUpdate(nextProps, prevState) {\n var scrollLeft = prevState.scrollLeft;\n\n var calculatedScrollLeft = Grid._getCalculatedScrollLeft(nextProps, prevState);\n\n if (typeof calculatedScrollLeft === 'number' && calculatedScrollLeft >= 0 && scrollLeft !== calculatedScrollLeft) {\n return Grid._getScrollToPositionStateUpdate({\n prevState: prevState,\n scrollLeft: calculatedScrollLeft,\n scrollTop: -1\n });\n }\n\n return {};\n }\n }, {\n key: \"_getCalculatedScrollTop\",\n value: function _getCalculatedScrollTop(nextProps, prevState) {\n var height = nextProps.height,\n rowCount = nextProps.rowCount,\n scrollToAlignment = nextProps.scrollToAlignment,\n scrollToRow = nextProps.scrollToRow,\n width = nextProps.width;\n var scrollTop = prevState.scrollTop,\n instanceProps = prevState.instanceProps;\n\n if (rowCount > 0) {\n var finalRow = rowCount - 1;\n var targetIndex = scrollToRow < 0 ? finalRow : Math.min(finalRow, scrollToRow);\n var totalColumnsWidth = instanceProps.columnSizeAndPositionManager.getTotalSize();\n var scrollBarSize = instanceProps.scrollbarSizeMeasured && totalColumnsWidth > width ? instanceProps.scrollbarSize : 0;\n return instanceProps.rowSizeAndPositionManager.getUpdatedOffsetForIndex({\n align: scrollToAlignment,\n containerSize: height - scrollBarSize,\n currentOffset: scrollTop,\n targetIndex: targetIndex\n });\n }\n\n return 0;\n }\n }, {\n key: \"_getScrollTopForScrollToRowStateUpdate\",\n value: function _getScrollTopForScrollToRowStateUpdate(nextProps, prevState) {\n var scrollTop = prevState.scrollTop;\n\n var calculatedScrollTop = Grid._getCalculatedScrollTop(nextProps, prevState);\n\n if (typeof calculatedScrollTop === 'number' && calculatedScrollTop >= 0 && scrollTop !== calculatedScrollTop) {\n return Grid._getScrollToPositionStateUpdate({\n prevState: prevState,\n scrollLeft: -1,\n scrollTop: calculatedScrollTop\n });\n }\n\n return {};\n }\n }]);\n\n return Grid;\n}(React.PureComponent), _defineProperty(_class, \"propTypes\", process.env.NODE_ENV === 'production' ? null : {\n \"aria-label\": PropTypes.string.isRequired,\n \"aria-readonly\": PropTypes.bool,\n\n /**\n * Set the width of the inner scrollable container to 'auto'.\n * This is useful for single-column Grids to ensure that the column doesn't extend below a vertical scrollbar.\n */\n \"autoContainerWidth\": PropTypes.bool.isRequired,\n\n /**\n * Removes fixed height from the scrollingContainer so that the total height of rows can stretch the window.\n * Intended for use with WindowScroller\n */\n \"autoHeight\": PropTypes.bool.isRequired,\n\n /**\n * Removes fixed width from the scrollingContainer so that the total width of rows can stretch the window.\n * Intended for use with WindowScroller\n */\n \"autoWidth\": PropTypes.bool.isRequired,\n\n /** Responsible for rendering a cell given an row and column index. */\n \"cellRenderer\": function cellRenderer() {\n return (typeof bpfrpt_proptype_CellRenderer === \"function\" ? bpfrpt_proptype_CellRenderer.isRequired ? bpfrpt_proptype_CellRenderer.isRequired : bpfrpt_proptype_CellRenderer : PropTypes.shape(bpfrpt_proptype_CellRenderer).isRequired).apply(this, arguments);\n },\n\n /** Responsible for rendering a group of cells given their index ranges. */\n \"cellRangeRenderer\": function cellRangeRenderer() {\n return (typeof bpfrpt_proptype_CellRangeRenderer === \"function\" ? bpfrpt_proptype_CellRangeRenderer.isRequired ? bpfrpt_proptype_CellRangeRenderer.isRequired : bpfrpt_proptype_CellRangeRenderer : PropTypes.shape(bpfrpt_proptype_CellRangeRenderer).isRequired).apply(this, arguments);\n },\n\n /** Optional custom CSS class name to attach to root Grid element. */\n \"className\": PropTypes.string,\n\n /** Number of columns in grid. */\n \"columnCount\": PropTypes.number.isRequired,\n\n /** Either a fixed column width (number) or a function that returns the width of a column given its index. */\n \"columnWidth\": function columnWidth() {\n return (typeof bpfrpt_proptype_CellSize === \"function\" ? bpfrpt_proptype_CellSize.isRequired ? bpfrpt_proptype_CellSize.isRequired : bpfrpt_proptype_CellSize : PropTypes.shape(bpfrpt_proptype_CellSize).isRequired).apply(this, arguments);\n },\n\n /** Unfiltered props for the Grid container. */\n \"containerProps\": PropTypes.object,\n\n /** ARIA role for the cell-container. */\n \"containerRole\": PropTypes.string.isRequired,\n\n /** Optional inline style applied to inner cell-container */\n \"containerStyle\": PropTypes.object.isRequired,\n\n /**\n * If CellMeasurer is used to measure this Grid's children, this should be a pointer to its CellMeasurerCache.\n * A shared CellMeasurerCache reference enables Grid and CellMeasurer to share measurement data.\n */\n \"deferredMeasurementCache\": PropTypes.object,\n\n /**\n * Used to estimate the total width of a Grid before all of its columns have actually been measured.\n * The estimated total width is adjusted as columns are rendered.\n */\n \"estimatedColumnSize\": PropTypes.number.isRequired,\n\n /**\n * Used to estimate the total height of a Grid before all of its rows have actually been measured.\n * The estimated total height is adjusted as rows are rendered.\n */\n \"estimatedRowSize\": PropTypes.number.isRequired,\n\n /** Exposed for testing purposes only. */\n \"getScrollbarSize\": PropTypes.func.isRequired,\n\n /** Height of Grid; this property determines the number of visible (vs virtualized) rows. */\n \"height\": PropTypes.number.isRequired,\n\n /** Optional custom id to attach to root Grid element. */\n \"id\": PropTypes.string,\n\n /**\n * Override internal is-scrolling state tracking.\n * This property is primarily intended for use with the WindowScroller component.\n */\n \"isScrolling\": PropTypes.bool,\n\n /**\n * Opt-out of isScrolling param passed to cellRangeRenderer.\n * To avoid the extra render when scroll stops.\n */\n \"isScrollingOptOut\": PropTypes.bool.isRequired,\n\n /** Optional renderer to be used in place of rows when either :rowCount or :columnCount is 0. */\n \"noContentRenderer\": function noContentRenderer() {\n return (typeof bpfrpt_proptype_NoContentRenderer === \"function\" ? bpfrpt_proptype_NoContentRenderer.isRequired ? bpfrpt_proptype_NoContentRenderer.isRequired : bpfrpt_proptype_NoContentRenderer : PropTypes.shape(bpfrpt_proptype_NoContentRenderer).isRequired).apply(this, arguments);\n },\n\n /**\n * Callback invoked whenever the scroll offset changes within the inner scrollable region.\n * This callback can be used to sync scrolling between lists, tables, or grids.\n */\n \"onScroll\": PropTypes.func.isRequired,\n\n /**\n * Called whenever a horizontal or vertical scrollbar is added or removed.\n * This prop is not intended for end-user use;\n * It is used by MultiGrid to support fixed-row/fixed-column scroll syncing.\n */\n \"onScrollbarPresenceChange\": PropTypes.func.isRequired,\n\n /** Callback invoked with information about the section of the Grid that was just rendered. */\n \"onSectionRendered\": PropTypes.func.isRequired,\n\n /**\n * Number of columns to render before/after the visible section of the grid.\n * These columns can help for smoother scrolling on touch devices or browsers that send scroll events infrequently.\n */\n \"overscanColumnCount\": PropTypes.number.isRequired,\n\n /**\n * Calculates the number of cells to overscan before and after a specified range.\n * This function ensures that overscanning doesn't exceed the available cells.\n */\n \"overscanIndicesGetter\": function overscanIndicesGetter() {\n return (typeof bpfrpt_proptype_OverscanIndicesGetter === \"function\" ? bpfrpt_proptype_OverscanIndicesGetter.isRequired ? bpfrpt_proptype_OverscanIndicesGetter.isRequired : bpfrpt_proptype_OverscanIndicesGetter : PropTypes.shape(bpfrpt_proptype_OverscanIndicesGetter).isRequired).apply(this, arguments);\n },\n\n /**\n * Number of rows to render above/below the visible section of the grid.\n * These rows can help for smoother scrolling on touch devices or browsers that send scroll events infrequently.\n */\n \"overscanRowCount\": PropTypes.number.isRequired,\n\n /** ARIA role for the grid element. */\n \"role\": PropTypes.string.isRequired,\n\n /**\n * Either a fixed row height (number) or a function that returns the height of a row given its index.\n * Should implement the following interface: ({ index: number }): number\n */\n \"rowHeight\": function rowHeight() {\n return (typeof bpfrpt_proptype_CellSize === \"function\" ? bpfrpt_proptype_CellSize.isRequired ? bpfrpt_proptype_CellSize.isRequired : bpfrpt_proptype_CellSize : PropTypes.shape(bpfrpt_proptype_CellSize).isRequired).apply(this, arguments);\n },\n\n /** Number of rows in grid. */\n \"rowCount\": PropTypes.number.isRequired,\n\n /** Wait this amount of time after the last scroll event before resetting Grid `pointer-events`. */\n \"scrollingResetTimeInterval\": PropTypes.number.isRequired,\n\n /** Horizontal offset. */\n \"scrollLeft\": PropTypes.number,\n\n /**\n * Controls scroll-to-cell behavior of the Grid.\n * The default (\"auto\") scrolls the least amount possible to ensure that the specified cell is fully visible.\n * Use \"start\" to align cells to the top/left of the Grid and \"end\" to align bottom/right.\n */\n \"scrollToAlignment\": function scrollToAlignment() {\n return (typeof bpfrpt_proptype_Alignment === \"function\" ? bpfrpt_proptype_Alignment.isRequired ? bpfrpt_proptype_Alignment.isRequired : bpfrpt_proptype_Alignment : PropTypes.shape(bpfrpt_proptype_Alignment).isRequired).apply(this, arguments);\n },\n\n /** Column index to ensure visible (by forcefully scrolling if necessary) */\n \"scrollToColumn\": PropTypes.number.isRequired,\n\n /** Vertical offset. */\n \"scrollTop\": PropTypes.number,\n\n /** Row index to ensure visible (by forcefully scrolling if necessary) */\n \"scrollToRow\": PropTypes.number.isRequired,\n\n /** Optional inline style */\n \"style\": PropTypes.object.isRequired,\n\n /** Tab index for focus */\n \"tabIndex\": PropTypes.number,\n\n /** Width of Grid; this property determines the number of visible (vs virtualized) columns. */\n \"width\": PropTypes.number.isRequired\n}), _temp);\n\n_defineProperty(Grid, \"defaultProps\", {\n 'aria-label': 'grid',\n 'aria-readonly': true,\n autoContainerWidth: false,\n autoHeight: false,\n autoWidth: false,\n cellRangeRenderer: defaultCellRangeRenderer,\n containerRole: 'rowgroup',\n containerStyle: {},\n estimatedColumnSize: 100,\n estimatedRowSize: 30,\n getScrollbarSize: scrollbarSize,\n noContentRenderer: renderNull,\n onScroll: function onScroll() {},\n onScrollbarPresenceChange: function onScrollbarPresenceChange() {},\n onSectionRendered: function onSectionRendered() {},\n overscanColumnCount: 0,\n overscanIndicesGetter: defaultOverscanIndicesGetter,\n overscanRowCount: 10,\n role: 'grid',\n scrollingResetTimeInterval: DEFAULT_SCROLLING_RESET_TIME_INTERVAL,\n scrollToAlignment: 'auto',\n scrollToColumn: -1,\n scrollToRow: -1,\n style: {},\n tabIndex: 0,\n isScrollingOptOut: false\n});\n\npolyfill(Grid);\nexport default Grid;\nimport { bpfrpt_proptype_CellRenderer } from \"./types\";\nimport { bpfrpt_proptype_CellRangeRenderer } from \"./types\";\nimport { bpfrpt_proptype_CellPosition } from \"./types\";\nimport { bpfrpt_proptype_CellSize } from \"./types\";\nimport { bpfrpt_proptype_CellSizeGetter } from \"./types\";\nimport { bpfrpt_proptype_NoContentRenderer } from \"./types\";\nimport { bpfrpt_proptype_Scroll } from \"./types\";\nimport { bpfrpt_proptype_ScrollbarPresenceChange } from \"./types\";\nimport { bpfrpt_proptype_RenderedSection } from \"./types\";\nimport { bpfrpt_proptype_OverscanIndicesGetter } from \"./types\";\nimport { bpfrpt_proptype_Alignment } from \"./types\";\nimport { bpfrpt_proptype_CellCache } from \"./types\";\nimport { bpfrpt_proptype_StyleCache } from \"./types\";\nimport { bpfrpt_proptype_AnimationTimeoutId } from \"../utils/requestAnimationTimeout\";\nimport PropTypes from \"prop-types\";","import { caf, raf } from './animationFrame';\nvar bpfrpt_proptype_AnimationTimeoutId = process.env.NODE_ENV === 'production' ? null : {\n \"id\": PropTypes.number.isRequired\n};\nexport var cancelAnimationTimeout = function cancelAnimationTimeout(frame) {\n return caf(frame.id);\n};\n/**\n * Recursively calls requestAnimationFrame until a specified delay has been met or exceeded.\n * When the delay time has been reached the function you're timing out will be called.\n *\n * Credit: Joe Lambert (https://gist.github.com/joelambert/1002116#file-requesttimeout-js)\n */\n\nexport var requestAnimationTimeout = function requestAnimationTimeout(callback, delay) {\n var start; // wait for end of processing current event handler, because event handler may be long\n\n Promise.resolve().then(function () {\n start = Date.now();\n });\n\n var timeout = function timeout() {\n if (Date.now() - start >= delay) {\n callback.call();\n } else {\n frame.id = raf(timeout);\n }\n };\n\n var frame = {\n id: raf(timeout)\n };\n return frame;\n};\nimport PropTypes from \"prop-types\";\nexport { bpfrpt_proptype_AnimationTimeoutId };","export var SCROLL_DIRECTION_BACKWARD = -1;\nexport var SCROLL_DIRECTION_FORWARD = 1;\nexport var SCROLL_DIRECTION_HORIZONTAL = 'horizontal';\nexport var SCROLL_DIRECTION_VERTICAL = 'vertical';\n/**\n * Calculates the number of cells to overscan before and after a specified range.\n * This function ensures that overscanning doesn't exceed the available cells.\n */\n\nexport default function defaultOverscanIndicesGetter(_ref) {\n var cellCount = _ref.cellCount,\n overscanCellsCount = _ref.overscanCellsCount,\n scrollDirection = _ref.scrollDirection,\n startIndex = _ref.startIndex,\n stopIndex = _ref.stopIndex;\n\n if (scrollDirection === SCROLL_DIRECTION_FORWARD) {\n return {\n overscanStartIndex: Math.max(0, startIndex),\n overscanStopIndex: Math.min(cellCount - 1, stopIndex + overscanCellsCount)\n };\n } else {\n return {\n overscanStartIndex: Math.max(0, startIndex - overscanCellsCount),\n overscanStopIndex: Math.min(cellCount - 1, stopIndex)\n };\n }\n}\nimport { bpfrpt_proptype_OverscanIndicesGetterParams } from \"./types\";\nimport { bpfrpt_proptype_OverscanIndices } from \"./types\";","/**\n * Default implementation of cellRangeRenderer used by Grid.\n * This renderer supports cell-caching while the user is scrolling.\n */\nexport default function defaultCellRangeRenderer(_ref) {\n var cellCache = _ref.cellCache,\n cellRenderer = _ref.cellRenderer,\n columnSizeAndPositionManager = _ref.columnSizeAndPositionManager,\n columnStartIndex = _ref.columnStartIndex,\n columnStopIndex = _ref.columnStopIndex,\n deferredMeasurementCache = _ref.deferredMeasurementCache,\n horizontalOffsetAdjustment = _ref.horizontalOffsetAdjustment,\n isScrolling = _ref.isScrolling,\n isScrollingOptOut = _ref.isScrollingOptOut,\n parent = _ref.parent,\n rowSizeAndPositionManager = _ref.rowSizeAndPositionManager,\n rowStartIndex = _ref.rowStartIndex,\n rowStopIndex = _ref.rowStopIndex,\n styleCache = _ref.styleCache,\n verticalOffsetAdjustment = _ref.verticalOffsetAdjustment,\n visibleColumnIndices = _ref.visibleColumnIndices,\n visibleRowIndices = _ref.visibleRowIndices;\n var renderedCells = []; // Browsers have native size limits for elements (eg Chrome 33M pixels, IE 1.5M pixes).\n // User cannot scroll beyond these size limitations.\n // In order to work around this, ScalingCellSizeAndPositionManager compresses offsets.\n // We should never cache styles for compressed offsets though as this can lead to bugs.\n // See issue #576 for more.\n\n var areOffsetsAdjusted = columnSizeAndPositionManager.areOffsetsAdjusted() || rowSizeAndPositionManager.areOffsetsAdjusted();\n var canCacheStyle = !isScrolling && !areOffsetsAdjusted;\n\n for (var rowIndex = rowStartIndex; rowIndex <= rowStopIndex; rowIndex++) {\n var rowDatum = rowSizeAndPositionManager.getSizeAndPositionOfCell(rowIndex);\n\n for (var columnIndex = columnStartIndex; columnIndex <= columnStopIndex; columnIndex++) {\n var columnDatum = columnSizeAndPositionManager.getSizeAndPositionOfCell(columnIndex);\n var isVisible = columnIndex >= visibleColumnIndices.start && columnIndex <= visibleColumnIndices.stop && rowIndex >= visibleRowIndices.start && rowIndex <= visibleRowIndices.stop;\n var key = \"\".concat(rowIndex, \"-\").concat(columnIndex);\n var style = void 0; // Cache style objects so shallow-compare doesn't re-render unnecessarily.\n\n if (canCacheStyle && styleCache[key]) {\n style = styleCache[key];\n } else {\n // In deferred mode, cells will be initially rendered before we know their size.\n // Don't interfere with CellMeasurer's measurements by setting an invalid size.\n if (deferredMeasurementCache && !deferredMeasurementCache.has(rowIndex, columnIndex)) {\n // Position not-yet-measured cells at top/left 0,0,\n // And give them width/height of 'auto' so they can grow larger than the parent Grid if necessary.\n // Positioning them further to the right/bottom influences their measured size.\n style = {\n height: 'auto',\n left: 0,\n position: 'absolute',\n top: 0,\n width: 'auto'\n };\n } else {\n style = {\n height: rowDatum.size,\n left: columnDatum.offset + horizontalOffsetAdjustment,\n position: 'absolute',\n top: rowDatum.offset + verticalOffsetAdjustment,\n width: columnDatum.size\n };\n styleCache[key] = style;\n }\n }\n\n var cellRendererParams = {\n columnIndex: columnIndex,\n isScrolling: isScrolling,\n isVisible: isVisible,\n key: key,\n parent: parent,\n rowIndex: rowIndex,\n style: style\n };\n var renderedCell = void 0; // Avoid re-creating cells while scrolling.\n // This can lead to the same cell being created many times and can cause performance issues for \"heavy\" cells.\n // If a scroll is in progress- cache and reuse cells.\n // This cache will be thrown away once scrolling completes.\n // However if we are scaling scroll positions and sizes, we should also avoid caching.\n // This is because the offset changes slightly as scroll position changes and caching leads to stale values.\n // For more info refer to issue #395\n //\n // If isScrollingOptOut is specified, we always cache cells.\n // For more info refer to issue #1028\n\n if ((isScrollingOptOut || isScrolling) && !horizontalOffsetAdjustment && !verticalOffsetAdjustment) {\n if (!cellCache[key]) {\n cellCache[key] = cellRenderer(cellRendererParams);\n }\n\n renderedCell = cellCache[key]; // If the user is no longer scrolling, don't cache cells.\n // This makes dynamic cell content difficult for users and would also lead to a heavier memory footprint.\n } else {\n renderedCell = cellRenderer(cellRendererParams);\n }\n\n if (renderedCell == null || renderedCell === false) {\n continue;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n warnAboutMissingStyle(parent, renderedCell);\n }\n\n renderedCells.push(renderedCell);\n }\n }\n\n return renderedCells;\n}\n\nfunction warnAboutMissingStyle(parent, renderedCell) {\n if (process.env.NODE_ENV !== 'production') {\n if (renderedCell) {\n // If the direct child is a CellMeasurer, then we should check its child\n // See issue #611\n if (renderedCell.type && renderedCell.type.__internalCellMeasurerFlag) {\n renderedCell = renderedCell.props.children;\n }\n\n if (renderedCell && renderedCell.props && renderedCell.props.style === undefined && parent.__warnedAboutMissingStyle !== true) {\n parent.__warnedAboutMissingStyle = true;\n console.warn('Rendered cell should include style property for positioning.');\n }\n }\n }\n}\n\nimport { bpfrpt_proptype_CellRangeRendererParams } from \"./types\";","export var SCROLL_DIRECTION_BACKWARD = -1;\nexport var SCROLL_DIRECTION_FORWARD = 1;\nexport var SCROLL_DIRECTION_HORIZONTAL = 'horizontal';\nexport var SCROLL_DIRECTION_VERTICAL = 'vertical';\n/**\n * Calculates the number of cells to overscan before and after a specified range.\n * This function ensures that overscanning doesn't exceed the available cells.\n */\n\nexport default function defaultOverscanIndicesGetter(_ref) {\n var cellCount = _ref.cellCount,\n overscanCellsCount = _ref.overscanCellsCount,\n scrollDirection = _ref.scrollDirection,\n startIndex = _ref.startIndex,\n stopIndex = _ref.stopIndex; // Make sure we render at least 1 cell extra before and after (except near boundaries)\n // This is necessary in order to support keyboard navigation (TAB/SHIFT+TAB) in some cases\n // For more info see issues #625\n\n overscanCellsCount = Math.max(1, overscanCellsCount);\n\n if (scrollDirection === SCROLL_DIRECTION_FORWARD) {\n return {\n overscanStartIndex: Math.max(0, startIndex - 1),\n overscanStopIndex: Math.min(cellCount - 1, stopIndex + overscanCellsCount)\n };\n } else {\n return {\n overscanStartIndex: Math.max(0, startIndex - overscanCellsCount),\n overscanStopIndex: Math.min(cellCount - 1, stopIndex + 1)\n };\n }\n}\nimport { bpfrpt_proptype_OverscanIndicesGetterParams } from \"./types\";\nimport { bpfrpt_proptype_OverscanIndices } from \"./types\";","var bpfrpt_proptype_ScrollIndices = process.env.NODE_ENV === 'production' ? null : {\n \"scrollToColumn\": PropTypes.number.isRequired,\n \"scrollToRow\": PropTypes.number.isRequired\n};\nimport PropTypes from \"prop-types\";\nexport { bpfrpt_proptype_ScrollIndices };","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nvar _class, _temp;\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(source, true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(source).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nimport * as React from 'react';\nimport { polyfill } from 'react-lifecycles-compat';\n/**\n * This HOC decorates a virtualized component and responds to arrow-key events by scrolling one row or column at a time.\n */\n\nvar ArrowKeyStepper = (_temp = _class = /*#__PURE__*/function (_React$PureComponent) {\n _inherits(ArrowKeyStepper, _React$PureComponent);\n\n function ArrowKeyStepper() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, ArrowKeyStepper);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(ArrowKeyStepper)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n scrollToColumn: 0,\n scrollToRow: 0,\n instanceProps: {\n prevScrollToColumn: 0,\n prevScrollToRow: 0\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_columnStartIndex\", 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_columnStopIndex\", 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_rowStartIndex\", 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_rowStopIndex\", 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_onKeyDown\", function (event) {\n var _this$props = _this.props,\n columnCount = _this$props.columnCount,\n disabled = _this$props.disabled,\n mode = _this$props.mode,\n rowCount = _this$props.rowCount;\n\n if (disabled) {\n return;\n }\n\n var _this$_getScrollState = _this._getScrollState(),\n scrollToColumnPrevious = _this$_getScrollState.scrollToColumn,\n scrollToRowPrevious = _this$_getScrollState.scrollToRow;\n\n var _this$_getScrollState2 = _this._getScrollState(),\n scrollToColumn = _this$_getScrollState2.scrollToColumn,\n scrollToRow = _this$_getScrollState2.scrollToRow; // The above cases all prevent default event event behavior.\n // This is to keep the grid from scrolling after the snap-to update.\n\n\n switch (event.key) {\n case 'ArrowDown':\n scrollToRow = mode === 'cells' ? Math.min(scrollToRow + 1, rowCount - 1) : Math.min(_this._rowStopIndex + 1, rowCount - 1);\n break;\n\n case 'ArrowLeft':\n scrollToColumn = mode === 'cells' ? Math.max(scrollToColumn - 1, 0) : Math.max(_this._columnStartIndex - 1, 0);\n break;\n\n case 'ArrowRight':\n scrollToColumn = mode === 'cells' ? Math.min(scrollToColumn + 1, columnCount - 1) : Math.min(_this._columnStopIndex + 1, columnCount - 1);\n break;\n\n case 'ArrowUp':\n scrollToRow = mode === 'cells' ? Math.max(scrollToRow - 1, 0) : Math.max(_this._rowStartIndex - 1, 0);\n break;\n }\n\n if (scrollToColumn !== scrollToColumnPrevious || scrollToRow !== scrollToRowPrevious) {\n event.preventDefault();\n\n _this._updateScrollState({\n scrollToColumn: scrollToColumn,\n scrollToRow: scrollToRow\n });\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onSectionRendered\", function (_ref) {\n var columnStartIndex = _ref.columnStartIndex,\n columnStopIndex = _ref.columnStopIndex,\n rowStartIndex = _ref.rowStartIndex,\n rowStopIndex = _ref.rowStopIndex;\n _this._columnStartIndex = columnStartIndex;\n _this._columnStopIndex = columnStopIndex;\n _this._rowStartIndex = rowStartIndex;\n _this._rowStopIndex = rowStopIndex;\n });\n\n return _this;\n }\n\n _createClass(ArrowKeyStepper, [{\n key: \"setScrollIndexes\",\n value: function setScrollIndexes(_ref2) {\n var scrollToColumn = _ref2.scrollToColumn,\n scrollToRow = _ref2.scrollToRow;\n this.setState({\n scrollToRow: scrollToRow,\n scrollToColumn: scrollToColumn\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n className = _this$props2.className,\n children = _this$props2.children;\n\n var _this$_getScrollState3 = this._getScrollState(),\n scrollToColumn = _this$_getScrollState3.scrollToColumn,\n scrollToRow = _this$_getScrollState3.scrollToRow;\n\n return React.createElement(\"div\", {\n className: className,\n onKeyDown: this._onKeyDown\n }, children({\n onSectionRendered: this._onSectionRendered,\n scrollToColumn: scrollToColumn,\n scrollToRow: scrollToRow\n }));\n }\n }, {\n key: \"_getScrollState\",\n value: function _getScrollState() {\n return this.props.isControlled ? this.props : this.state;\n }\n }, {\n key: \"_updateScrollState\",\n value: function _updateScrollState(_ref3) {\n var scrollToColumn = _ref3.scrollToColumn,\n scrollToRow = _ref3.scrollToRow;\n var _this$props3 = this.props,\n isControlled = _this$props3.isControlled,\n onScrollToChange = _this$props3.onScrollToChange;\n\n if (typeof onScrollToChange === 'function') {\n onScrollToChange({\n scrollToColumn: scrollToColumn,\n scrollToRow: scrollToRow\n });\n }\n\n if (!isControlled) {\n this.setState({\n scrollToColumn: scrollToColumn,\n scrollToRow: scrollToRow\n });\n }\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps, prevState) {\n if (nextProps.isControlled) {\n return {};\n }\n\n if (nextProps.scrollToColumn !== prevState.instanceProps.prevScrollToColumn || nextProps.scrollToRow !== prevState.instanceProps.prevScrollToRow) {\n return _objectSpread({}, prevState, {\n scrollToColumn: nextProps.scrollToColumn,\n scrollToRow: nextProps.scrollToRow,\n instanceProps: {\n prevScrollToColumn: nextProps.scrollToColumn,\n prevScrollToRow: nextProps.scrollToRow\n }\n });\n }\n\n return {};\n }\n }]);\n\n return ArrowKeyStepper;\n}(React.PureComponent), _defineProperty(_class, \"propTypes\", process.env.NODE_ENV === 'production' ? null : {\n \"children\": PropTypes.func.isRequired,\n \"className\": PropTypes.string,\n \"columnCount\": PropTypes.number.isRequired,\n \"disabled\": PropTypes.bool.isRequired,\n \"isControlled\": PropTypes.bool.isRequired,\n \"mode\": PropTypes.oneOf([\"cells\", \"edges\"]).isRequired,\n \"onScrollToChange\": PropTypes.func,\n \"rowCount\": PropTypes.number.isRequired,\n \"scrollToColumn\": PropTypes.number.isRequired,\n \"scrollToRow\": PropTypes.number.isRequired\n}), _temp);\n\n_defineProperty(ArrowKeyStepper, \"defaultProps\", {\n disabled: false,\n isControlled: false,\n mode: 'edges',\n scrollToColumn: 0,\n scrollToRow: 0\n});\n\npolyfill(ArrowKeyStepper);\nexport default ArrowKeyStepper;\nimport { bpfrpt_proptype_RenderedSection } from \"../Grid\";\nimport { bpfrpt_proptype_ScrollIndices } from \"./types\";\nimport PropTypes from \"prop-types\";","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nvar _class, _temp;\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(source, true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(source).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nimport * as React from 'react';\nimport createDetectElementResize from '../vendor/detectElementResize';\nvar AutoSizer = (_temp = _class = /*#__PURE__*/function (_React$Component) {\n _inherits(AutoSizer, _React$Component);\n\n function AutoSizer() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, AutoSizer);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(AutoSizer)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n height: _this.props.defaultHeight || 0,\n width: _this.props.defaultWidth || 0\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_parentNode\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_autoSizer\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_window\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_detectElementResize\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_onResize\", function () {\n var _this$props = _this.props,\n disableHeight = _this$props.disableHeight,\n disableWidth = _this$props.disableWidth,\n onResize = _this$props.onResize;\n\n if (_this._parentNode) {\n // Guard against AutoSizer component being removed from the DOM immediately after being added.\n // This can result in invalid style values which can result in NaN values if we don't handle them.\n // See issue #150 for more context.\n var height = _this._parentNode.offsetHeight || 0;\n var width = _this._parentNode.offsetWidth || 0;\n var win = _this._window || window;\n var style = win.getComputedStyle(_this._parentNode) || {};\n var paddingLeft = parseInt(style.paddingLeft, 10) || 0;\n var paddingRight = parseInt(style.paddingRight, 10) || 0;\n var paddingTop = parseInt(style.paddingTop, 10) || 0;\n var paddingBottom = parseInt(style.paddingBottom, 10) || 0;\n var newHeight = height - paddingTop - paddingBottom;\n var newWidth = width - paddingLeft - paddingRight;\n\n if (!disableHeight && _this.state.height !== newHeight || !disableWidth && _this.state.width !== newWidth) {\n _this.setState({\n height: height - paddingTop - paddingBottom,\n width: width - paddingLeft - paddingRight\n });\n\n onResize({\n height: height,\n width: width\n });\n }\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_setRef\", function (autoSizer) {\n _this._autoSizer = autoSizer;\n });\n\n return _this;\n }\n\n _createClass(AutoSizer, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var nonce = this.props.nonce;\n\n if (this._autoSizer && this._autoSizer.parentNode && this._autoSizer.parentNode.ownerDocument && this._autoSizer.parentNode.ownerDocument.defaultView && this._autoSizer.parentNode instanceof this._autoSizer.parentNode.ownerDocument.defaultView.HTMLElement) {\n // Delay access of parentNode until mount.\n // This handles edge-cases where the component has already been unmounted before its ref has been set,\n // As well as libraries like react-lite which have a slightly different lifecycle.\n this._parentNode = this._autoSizer.parentNode;\n this._window = this._autoSizer.parentNode.ownerDocument.defaultView; // Defer requiring resize handler in order to support server-side rendering.\n // See issue #41\n\n this._detectElementResize = createDetectElementResize(nonce, this._window);\n\n this._detectElementResize.addResizeListener(this._parentNode, this._onResize);\n\n this._onResize();\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (this._detectElementResize && this._parentNode) {\n this._detectElementResize.removeResizeListener(this._parentNode, this._onResize);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n children = _this$props2.children,\n className = _this$props2.className,\n disableHeight = _this$props2.disableHeight,\n disableWidth = _this$props2.disableWidth,\n style = _this$props2.style;\n var _this$state = this.state,\n height = _this$state.height,\n width = _this$state.width; // Outer div should not force width/height since that may prevent containers from shrinking.\n // Inner component should overflow and use calculated width/height.\n // See issue #68 for more information.\n\n var outerStyle = {\n overflow: 'visible'\n };\n var childParams = {};\n\n if (!disableHeight) {\n outerStyle.height = 0;\n childParams.height = height;\n }\n\n if (!disableWidth) {\n outerStyle.width = 0;\n childParams.width = width;\n }\n /**\n * TODO: Avoid rendering children before the initial measurements have been collected.\n * At best this would just be wasting cycles.\n * Add this check into version 10 though as it could break too many ref callbacks in version 9.\n * Note that if default width/height props were provided this would still work with SSR.\n if (\n height !== 0 &&\n width !== 0\n ) {\n child = children({ height, width })\n }\n */\n\n\n return React.createElement(\"div\", {\n className: className,\n ref: this._setRef,\n style: _objectSpread({}, outerStyle, {}, style)\n }, children(childParams));\n }\n }]);\n\n return AutoSizer;\n}(React.Component), _defineProperty(_class, \"propTypes\", process.env.NODE_ENV === 'production' ? null : {\n /** Function responsible for rendering children.*/\n \"children\": PropTypes.func.isRequired,\n\n /** Optional custom CSS class name to attach to root AutoSizer element. */\n \"className\": PropTypes.string,\n\n /** Default height to use for initial render; useful for SSR */\n \"defaultHeight\": PropTypes.number,\n\n /** Default width to use for initial render; useful for SSR */\n \"defaultWidth\": PropTypes.number,\n\n /** Disable dynamic :height property */\n \"disableHeight\": PropTypes.bool.isRequired,\n\n /** Disable dynamic :width property */\n \"disableWidth\": PropTypes.bool.isRequired,\n\n /** Nonce of the inlined stylesheet for Content Security Policy */\n \"nonce\": PropTypes.string,\n\n /** Callback to be invoked on-resize */\n \"onResize\": PropTypes.func.isRequired,\n\n /** Optional inline style */\n \"style\": PropTypes.object\n}), _temp);\n\n_defineProperty(AutoSizer, \"defaultProps\", {\n onResize: function onResize() {},\n disableHeight: false,\n disableWidth: false,\n style: {}\n});\n\nexport { AutoSizer as default };\nimport PropTypes from \"prop-types\";","/**\n * Detect Element Resize.\n * https://github.com/sdecima/javascript-detect-element-resize\n * Sebastian Decima\n *\n * Forked from version 0.5.3; includes the following modifications:\n * 1) Guard against unsafe 'window' and 'document' references (to support SSR).\n * 2) Defer initialization code via a top-level function wrapper (to support SSR).\n * 3) Avoid unnecessary reflows by not measuring size for scroll events bubbling from children.\n * 4) Add nonce for style element.\n * 5) Added support for injecting custom window object\n **/\nexport default function createDetectElementResize(nonce, hostWindow) {\n // Check `document` and `window` in case of server-side rendering\n var _window;\n\n if (typeof hostWindow !== 'undefined') {\n _window = hostWindow;\n } else if (typeof window !== 'undefined') {\n _window = window;\n } else if (typeof self !== 'undefined') {\n _window = self;\n } else {\n _window = global;\n }\n\n var attachEvent = typeof _window.document !== 'undefined' && _window.document.attachEvent;\n\n if (!attachEvent) {\n var requestFrame = function () {\n var raf = _window.requestAnimationFrame || _window.mozRequestAnimationFrame || _window.webkitRequestAnimationFrame || function (fn) {\n return _window.setTimeout(fn, 20);\n };\n\n return function (fn) {\n return raf(fn);\n };\n }();\n\n var cancelFrame = function () {\n var cancel = _window.cancelAnimationFrame || _window.mozCancelAnimationFrame || _window.webkitCancelAnimationFrame || _window.clearTimeout;\n return function (id) {\n return cancel(id);\n };\n }();\n\n var resetTriggers = function resetTriggers(element) {\n var triggers = element.__resizeTriggers__,\n expand = triggers.firstElementChild,\n contract = triggers.lastElementChild,\n expandChild = expand.firstElementChild;\n contract.scrollLeft = contract.scrollWidth;\n contract.scrollTop = contract.scrollHeight;\n expandChild.style.width = expand.offsetWidth + 1 + 'px';\n expandChild.style.height = expand.offsetHeight + 1 + 'px';\n expand.scrollLeft = expand.scrollWidth;\n expand.scrollTop = expand.scrollHeight;\n };\n\n var checkTriggers = function checkTriggers(element) {\n return element.offsetWidth != element.__resizeLast__.width || element.offsetHeight != element.__resizeLast__.height;\n };\n\n var scrollListener = function scrollListener(e) {\n // Don't measure (which forces) reflow for scrolls that happen inside of children!\n if (e.target.className && typeof e.target.className.indexOf === 'function' && e.target.className.indexOf('contract-trigger') < 0 && e.target.className.indexOf('expand-trigger') < 0) {\n return;\n }\n\n var element = this;\n resetTriggers(this);\n\n if (this.__resizeRAF__) {\n cancelFrame(this.__resizeRAF__);\n }\n\n this.__resizeRAF__ = requestFrame(function () {\n if (checkTriggers(element)) {\n element.__resizeLast__.width = element.offsetWidth;\n element.__resizeLast__.height = element.offsetHeight;\n\n element.__resizeListeners__.forEach(function (fn) {\n fn.call(element, e);\n });\n }\n });\n };\n /* Detect CSS Animations support to detect element display/re-attach */\n\n\n var animation = false,\n keyframeprefix = '',\n animationstartevent = 'animationstart',\n domPrefixes = 'Webkit Moz O ms'.split(' '),\n startEvents = 'webkitAnimationStart animationstart oAnimationStart MSAnimationStart'.split(' '),\n pfx = '';\n {\n var elm = _window.document.createElement('fakeelement');\n\n if (elm.style.animationName !== undefined) {\n animation = true;\n }\n\n if (animation === false) {\n for (var i = 0; i < domPrefixes.length; i++) {\n if (elm.style[domPrefixes[i] + 'AnimationName'] !== undefined) {\n pfx = domPrefixes[i];\n keyframeprefix = '-' + pfx.toLowerCase() + '-';\n animationstartevent = startEvents[i];\n animation = true;\n break;\n }\n }\n }\n }\n var animationName = 'resizeanim';\n var animationKeyframes = '@' + keyframeprefix + 'keyframes ' + animationName + ' { from { opacity: 0; } to { opacity: 0; } } ';\n var animationStyle = keyframeprefix + 'animation: 1ms ' + animationName + '; ';\n }\n\n var createStyles = function createStyles(doc) {\n if (!doc.getElementById('detectElementResize')) {\n //opacity:0 works around a chrome bug https://code.google.com/p/chromium/issues/detail?id=286360\n var css = (animationKeyframes ? animationKeyframes : '') + '.resize-triggers { ' + (animationStyle ? animationStyle : '') + 'visibility: hidden; opacity: 0; } ' + '.resize-triggers, .resize-triggers > div, .contract-trigger:before { content: \" \"; display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; z-index: -1; } .resize-triggers > div { background: #eee; overflow: auto; } .contract-trigger:before { width: 200%; height: 200%; }',\n head = doc.head || doc.getElementsByTagName('head')[0],\n style = doc.createElement('style');\n style.id = 'detectElementResize';\n style.type = 'text/css';\n\n if (nonce != null) {\n style.setAttribute('nonce', nonce);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(doc.createTextNode(css));\n }\n\n head.appendChild(style);\n }\n };\n\n var addResizeListener = function addResizeListener(element, fn) {\n if (attachEvent) {\n element.attachEvent('onresize', fn);\n } else {\n if (!element.__resizeTriggers__) {\n var doc = element.ownerDocument;\n\n var elementStyle = _window.getComputedStyle(element);\n\n if (elementStyle && elementStyle.position == 'static') {\n element.style.position = 'relative';\n }\n\n createStyles(doc);\n element.__resizeLast__ = {};\n element.__resizeListeners__ = [];\n (element.__resizeTriggers__ = doc.createElement('div')).className = 'resize-triggers';\n var resizeTriggersHtml = '
' + '';\n\n if (window.trustedTypes) {\n var staticPolicy = trustedTypes.createPolicy('react-virtualized-auto-sizer', {\n createHTML: function createHTML() {\n return resizeTriggersHtml;\n }\n });\n element.__resizeTriggers__.innerHTML = staticPolicy.createHTML('');\n } else {\n element.__resizeTriggers__.innerHTML = resizeTriggersHtml;\n }\n\n element.appendChild(element.__resizeTriggers__);\n resetTriggers(element);\n element.addEventListener('scroll', scrollListener, true);\n /* Listen for a css animation to detect element display/re-attach */\n\n if (animationstartevent) {\n element.__resizeTriggers__.__animationListener__ = function animationListener(e) {\n if (e.animationName == animationName) {\n resetTriggers(element);\n }\n };\n\n element.__resizeTriggers__.addEventListener(animationstartevent, element.__resizeTriggers__.__animationListener__);\n }\n }\n\n element.__resizeListeners__.push(fn);\n }\n };\n\n var removeResizeListener = function removeResizeListener(element, fn) {\n if (attachEvent) {\n element.detachEvent('onresize', fn);\n } else {\n element.__resizeListeners__.splice(element.__resizeListeners__.indexOf(fn), 1);\n\n if (!element.__resizeListeners__.length) {\n element.removeEventListener('scroll', scrollListener, true);\n\n if (element.__resizeTriggers__.__animationListener__) {\n element.__resizeTriggers__.removeEventListener(animationstartevent, element.__resizeTriggers__.__animationListener__);\n\n element.__resizeTriggers__.__animationListener__ = null;\n }\n\n try {\n element.__resizeTriggers__ = !element.removeChild(element.__resizeTriggers__);\n } catch (e) {// Preact compat; see developit/preact-compat/issues/228\n }\n }\n }\n };\n\n return {\n addResizeListener: addResizeListener,\n removeResizeListener: removeResizeListener\n };\n}","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nvar _class, _temp;\n\nimport * as React from 'react';\nimport { findDOMNode } from 'react-dom';\n/**\n * Wraps a cell and measures its rendered content.\n * Measurements are stored in a per-cell cache.\n * Cached-content is not be re-measured.\n */\n\nvar CellMeasurer = (_temp = _class = /*#__PURE__*/function (_React$PureComponent) {\n _inherits(CellMeasurer, _React$PureComponent);\n\n function CellMeasurer() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, CellMeasurer);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(CellMeasurer)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_this), \"_child\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_measure\", function () {\n var _this$props = _this.props,\n cache = _this$props.cache,\n _this$props$columnInd = _this$props.columnIndex,\n columnIndex = _this$props$columnInd === void 0 ? 0 : _this$props$columnInd,\n parent = _this$props.parent,\n _this$props$rowIndex = _this$props.rowIndex,\n rowIndex = _this$props$rowIndex === void 0 ? _this.props.index || 0 : _this$props$rowIndex;\n\n var _this$_getCellMeasure = _this._getCellMeasurements(),\n height = _this$_getCellMeasure.height,\n width = _this$_getCellMeasure.width;\n\n if (height !== cache.getHeight(rowIndex, columnIndex) || width !== cache.getWidth(rowIndex, columnIndex)) {\n cache.set(rowIndex, columnIndex, width, height);\n\n if (parent && typeof parent.recomputeGridSize === 'function') {\n parent.recomputeGridSize({\n columnIndex: columnIndex,\n rowIndex: rowIndex\n });\n }\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_registerChild\", function (element) {\n if (element && !(element instanceof Element)) {\n console.warn('CellMeasurer registerChild expects to be passed Element or null');\n }\n\n _this._child = element;\n\n if (element) {\n _this._maybeMeasureCell();\n }\n });\n\n return _this;\n }\n\n _createClass(CellMeasurer, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this._maybeMeasureCell();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n this._maybeMeasureCell();\n }\n }, {\n key: \"render\",\n value: function render() {\n var children = this.props.children;\n return typeof children === 'function' ? children({\n measure: this._measure,\n registerChild: this._registerChild\n }) : children;\n }\n }, {\n key: \"_getCellMeasurements\",\n value: function _getCellMeasurements() {\n var cache = this.props.cache;\n var node = this._child || findDOMNode(this); // TODO Check for a bad combination of fixedWidth and missing numeric width or vice versa with height\n\n if (node && node.ownerDocument && node.ownerDocument.defaultView && node instanceof node.ownerDocument.defaultView.HTMLElement) {\n var styleWidth = node.style.width;\n var styleHeight = node.style.height; // If we are re-measuring a cell that has already been measured,\n // It will have a hard-coded width/height from the previous measurement.\n // The fact that we are measuring indicates this measurement is probably stale,\n // So explicitly clear it out (eg set to \"auto\") so we can recalculate.\n // See issue #593 for more info.\n // Even if we are measuring initially- if we're inside of a MultiGrid component,\n // Explicitly clear width/height before measuring to avoid being tainted by another Grid.\n // eg top/left Grid renders before bottom/right Grid\n // Since the CellMeasurerCache is shared between them this taints derived cell size values.\n\n if (!cache.hasFixedWidth()) {\n node.style.width = 'auto';\n }\n\n if (!cache.hasFixedHeight()) {\n node.style.height = 'auto';\n }\n\n var height = Math.ceil(node.offsetHeight);\n var width = Math.ceil(node.offsetWidth); // Reset after measuring to avoid breaking styles; see #660\n\n if (styleWidth) {\n node.style.width = styleWidth;\n }\n\n if (styleHeight) {\n node.style.height = styleHeight;\n }\n\n return {\n height: height,\n width: width\n };\n } else {\n return {\n height: 0,\n width: 0\n };\n }\n }\n }, {\n key: \"_maybeMeasureCell\",\n value: function _maybeMeasureCell() {\n var _this$props2 = this.props,\n cache = _this$props2.cache,\n _this$props2$columnIn = _this$props2.columnIndex,\n columnIndex = _this$props2$columnIn === void 0 ? 0 : _this$props2$columnIn,\n parent = _this$props2.parent,\n _this$props2$rowIndex = _this$props2.rowIndex,\n rowIndex = _this$props2$rowIndex === void 0 ? this.props.index || 0 : _this$props2$rowIndex;\n\n if (!cache.has(rowIndex, columnIndex)) {\n var _this$_getCellMeasure2 = this._getCellMeasurements(),\n height = _this$_getCellMeasure2.height,\n width = _this$_getCellMeasure2.width;\n\n cache.set(rowIndex, columnIndex, width, height); // If size has changed, let Grid know to re-render.\n\n if (parent && typeof parent.invalidateCellSizeAfterRender === 'function') {\n parent.invalidateCellSizeAfterRender({\n columnIndex: columnIndex,\n rowIndex: rowIndex\n });\n }\n }\n }\n }]);\n\n return CellMeasurer;\n}(React.PureComponent), _defineProperty(_class, \"propTypes\", process.env.NODE_ENV === 'production' ? null : {\n \"cache\": function cache() {\n return (typeof bpfrpt_proptype_CellMeasureCache === \"function\" ? bpfrpt_proptype_CellMeasureCache.isRequired ? bpfrpt_proptype_CellMeasureCache.isRequired : bpfrpt_proptype_CellMeasureCache : PropTypes.shape(bpfrpt_proptype_CellMeasureCache).isRequired).apply(this, arguments);\n },\n \"children\": PropTypes.oneOfType([PropTypes.func, PropTypes.node]).isRequired,\n \"columnIndex\": PropTypes.number,\n \"index\": PropTypes.number,\n \"parent\": PropTypes.shape({\n invalidateCellSizeAfterRender: PropTypes.func,\n recomputeGridSize: PropTypes.func\n }).isRequired,\n \"rowIndex\": PropTypes.number\n}), _temp); // Used for DEV mode warning check\n\n_defineProperty(CellMeasurer, \"__internalCellMeasurerFlag\", false);\n\nexport { CellMeasurer as default };\n\nif (process.env.NODE_ENV !== 'production') {\n CellMeasurer.__internalCellMeasurerFlag = true;\n}\n\nimport { bpfrpt_proptype_CellMeasureCache } from \"./types\";\nimport PropTypes from \"prop-types\";","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(source, true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(source).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nimport clsx from 'clsx';\nimport * as React from 'react';\nimport { polyfill } from 'react-lifecycles-compat';\nimport createCallbackMemoizer from '../utils/createCallbackMemoizer';\nimport getScrollbarSize from 'dom-helpers/scrollbarSize'; // @TODO Merge Collection and CollectionView\n\n/**\n * Specifies the number of milliseconds during which to disable pointer events while a scroll is in progress.\n * This improves performance and makes scrolling smoother.\n */\n\nvar IS_SCROLLING_TIMEOUT = 150;\n/**\n * Controls whether the Grid updates the DOM element's scrollLeft/scrollTop based on the current state or just observes it.\n * This prevents Grid from interrupting mouse-wheel animations (see issue #2).\n */\n\nvar SCROLL_POSITION_CHANGE_REASONS = {\n OBSERVED: 'observed',\n REQUESTED: 'requested'\n};\n/**\n * Monitors changes in properties (eg. cellCount) and state (eg. scroll offsets) to determine when rendering needs to occur.\n * This component does not render any visible content itself; it defers to the specified :cellLayoutManager.\n */\n\nvar CollectionView = /*#__PURE__*/function (_React$PureComponent) {\n _inherits(CollectionView, _React$PureComponent); // Invokes callbacks only when their values have changed.\n\n\n function CollectionView() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, CollectionView);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(CollectionView)).call.apply(_getPrototypeOf2, [this].concat(args))); // If this component is being rendered server-side, getScrollbarSize() will return undefined.\n // We handle this case in componentDidMount()\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n isScrolling: false,\n scrollLeft: 0,\n scrollTop: 0\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_calculateSizeAndPositionDataOnNextUpdate\", false);\n\n _defineProperty(_assertThisInitialized(_this), \"_onSectionRenderedMemoizer\", createCallbackMemoizer());\n\n _defineProperty(_assertThisInitialized(_this), \"_onScrollMemoizer\", createCallbackMemoizer(false));\n\n _defineProperty(_assertThisInitialized(_this), \"_invokeOnSectionRenderedHelper\", function () {\n var _this$props = _this.props,\n cellLayoutManager = _this$props.cellLayoutManager,\n onSectionRendered = _this$props.onSectionRendered;\n\n _this._onSectionRenderedMemoizer({\n callback: onSectionRendered,\n indices: {\n indices: cellLayoutManager.getLastRenderedIndices()\n }\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_setScrollingContainerRef\", function (ref) {\n _this._scrollingContainer = ref;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_updateScrollPositionForScrollToCell\", function () {\n var _this$props2 = _this.props,\n cellLayoutManager = _this$props2.cellLayoutManager,\n height = _this$props2.height,\n scrollToAlignment = _this$props2.scrollToAlignment,\n scrollToCell = _this$props2.scrollToCell,\n width = _this$props2.width;\n var _this$state = _this.state,\n scrollLeft = _this$state.scrollLeft,\n scrollTop = _this$state.scrollTop;\n\n if (scrollToCell >= 0) {\n var scrollPosition = cellLayoutManager.getScrollPositionForCell({\n align: scrollToAlignment,\n cellIndex: scrollToCell,\n height: height,\n scrollLeft: scrollLeft,\n scrollTop: scrollTop,\n width: width\n });\n\n if (scrollPosition.scrollLeft !== scrollLeft || scrollPosition.scrollTop !== scrollTop) {\n _this._setScrollPosition(scrollPosition);\n }\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onScroll\", function (event) {\n // In certain edge-cases React dispatches an onScroll event with an invalid target.scrollLeft / target.scrollTop.\n // This invalid event can be detected by comparing event.target to this component's scrollable DOM element.\n // See issue #404 for more information.\n if (event.target !== _this._scrollingContainer) {\n return;\n } // Prevent pointer events from interrupting a smooth scroll\n\n\n _this._enablePointerEventsAfterDelay(); // When this component is shrunk drastically, React dispatches a series of back-to-back scroll events,\n // Gradually converging on a scrollTop that is within the bounds of the new, smaller height.\n // This causes a series of rapid renders that is slow for long lists.\n // We can avoid that by doing some simple bounds checking to ensure that scrollTop never exceeds the total height.\n\n\n var _this$props3 = _this.props,\n cellLayoutManager = _this$props3.cellLayoutManager,\n height = _this$props3.height,\n isScrollingChange = _this$props3.isScrollingChange,\n width = _this$props3.width;\n var scrollbarSize = _this._scrollbarSize;\n\n var _cellLayoutManager$ge = cellLayoutManager.getTotalSize(),\n totalHeight = _cellLayoutManager$ge.height,\n totalWidth = _cellLayoutManager$ge.width;\n\n var scrollLeft = Math.max(0, Math.min(totalWidth - width + scrollbarSize, event.target.scrollLeft));\n var scrollTop = Math.max(0, Math.min(totalHeight - height + scrollbarSize, event.target.scrollTop)); // Certain devices (like Apple touchpad) rapid-fire duplicate events.\n // Don't force a re-render if this is the case.\n // The mouse may move faster then the animation frame does.\n // Use requestAnimationFrame to avoid over-updating.\n\n if (_this.state.scrollLeft !== scrollLeft || _this.state.scrollTop !== scrollTop) {\n // Browsers with cancelable scroll events (eg. Firefox) interrupt scrolling animations if scrollTop/scrollLeft is set.\n // Other browsers (eg. Safari) don't scroll as well without the help under certain conditions (DOM or style changes during scrolling).\n // All things considered, this seems to be the best current work around that I'm aware of.\n // For more information see https://github.com/bvaughn/react-virtualized/pull/124\n var scrollPositionChangeReason = event.cancelable ? SCROLL_POSITION_CHANGE_REASONS.OBSERVED : SCROLL_POSITION_CHANGE_REASONS.REQUESTED; // Synchronously set :isScrolling the first time (since _setNextState will reschedule its animation frame each time it's called)\n\n if (!_this.state.isScrolling) {\n isScrollingChange(true);\n }\n\n _this.setState({\n isScrolling: true,\n scrollLeft: scrollLeft,\n scrollPositionChangeReason: scrollPositionChangeReason,\n scrollTop: scrollTop\n });\n }\n\n _this._invokeOnScrollMemoizer({\n scrollLeft: scrollLeft,\n scrollTop: scrollTop,\n totalWidth: totalWidth,\n totalHeight: totalHeight\n });\n });\n\n _this._scrollbarSize = getScrollbarSize();\n\n if (_this._scrollbarSize === undefined) {\n _this._scrollbarSizeMeasured = false;\n _this._scrollbarSize = 0;\n } else {\n _this._scrollbarSizeMeasured = true;\n }\n\n return _this;\n }\n /**\n * Forced recompute of cell sizes and positions.\n * This function should be called if cell sizes have changed but nothing else has.\n * Since cell positions are calculated by callbacks, the collection view has no way of detecting when the underlying data has changed.\n */\n\n\n _createClass(CollectionView, [{\n key: \"recomputeCellSizesAndPositions\",\n value: function recomputeCellSizesAndPositions() {\n this._calculateSizeAndPositionDataOnNextUpdate = true;\n this.forceUpdate();\n }\n /* ---------------------------- Component lifecycle methods ---------------------------- */\n\n /**\n * @private\n * This method updates scrollLeft/scrollTop in state for the following conditions:\n * 1) Empty content (0 rows or columns)\n * 2) New scroll props overriding the current state\n * 3) Cells-count or cells-size has changed, making previous scroll offsets invalid\n */\n\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this$props4 = this.props,\n cellLayoutManager = _this$props4.cellLayoutManager,\n scrollLeft = _this$props4.scrollLeft,\n scrollToCell = _this$props4.scrollToCell,\n scrollTop = _this$props4.scrollTop; // If this component was first rendered server-side, scrollbar size will be undefined.\n // In that event we need to remeasure.\n\n if (!this._scrollbarSizeMeasured) {\n this._scrollbarSize = getScrollbarSize();\n this._scrollbarSizeMeasured = true;\n this.setState({});\n }\n\n if (scrollToCell >= 0) {\n this._updateScrollPositionForScrollToCell();\n } else if (scrollLeft >= 0 || scrollTop >= 0) {\n this._setScrollPosition({\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n });\n } // Update onSectionRendered callback.\n\n\n this._invokeOnSectionRenderedHelper();\n\n var _cellLayoutManager$ge2 = cellLayoutManager.getTotalSize(),\n totalHeight = _cellLayoutManager$ge2.height,\n totalWidth = _cellLayoutManager$ge2.width; // Initialize onScroll callback.\n\n\n this._invokeOnScrollMemoizer({\n scrollLeft: scrollLeft || 0,\n scrollTop: scrollTop || 0,\n totalHeight: totalHeight,\n totalWidth: totalWidth\n });\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps, prevState) {\n var _this$props5 = this.props,\n height = _this$props5.height,\n scrollToAlignment = _this$props5.scrollToAlignment,\n scrollToCell = _this$props5.scrollToCell,\n width = _this$props5.width;\n var _this$state2 = this.state,\n scrollLeft = _this$state2.scrollLeft,\n scrollPositionChangeReason = _this$state2.scrollPositionChangeReason,\n scrollTop = _this$state2.scrollTop; // Make sure requested changes to :scrollLeft or :scrollTop get applied.\n // Assigning to scrollLeft/scrollTop tells the browser to interrupt any running scroll animations,\n // And to discard any pending async changes to the scroll position that may have happened in the meantime (e.g. on a separate scrolling thread).\n // So we only set these when we require an adjustment of the scroll position.\n // See issue #2 for more information.\n\n if (scrollPositionChangeReason === SCROLL_POSITION_CHANGE_REASONS.REQUESTED) {\n if (scrollLeft >= 0 && scrollLeft !== prevState.scrollLeft && scrollLeft !== this._scrollingContainer.scrollLeft) {\n this._scrollingContainer.scrollLeft = scrollLeft;\n }\n\n if (scrollTop >= 0 && scrollTop !== prevState.scrollTop && scrollTop !== this._scrollingContainer.scrollTop) {\n this._scrollingContainer.scrollTop = scrollTop;\n }\n } // Update scroll offsets if the current :scrollToCell values requires it\n\n\n if (height !== prevProps.height || scrollToAlignment !== prevProps.scrollToAlignment || scrollToCell !== prevProps.scrollToCell || width !== prevProps.width) {\n this._updateScrollPositionForScrollToCell();\n } // Update onRowsRendered callback if start/stop indices have changed\n\n\n this._invokeOnSectionRenderedHelper();\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (this._disablePointerEventsTimeoutId) {\n clearTimeout(this._disablePointerEventsTimeoutId);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props6 = this.props,\n autoHeight = _this$props6.autoHeight,\n cellCount = _this$props6.cellCount,\n cellLayoutManager = _this$props6.cellLayoutManager,\n className = _this$props6.className,\n height = _this$props6.height,\n horizontalOverscanSize = _this$props6.horizontalOverscanSize,\n id = _this$props6.id,\n noContentRenderer = _this$props6.noContentRenderer,\n style = _this$props6.style,\n verticalOverscanSize = _this$props6.verticalOverscanSize,\n width = _this$props6.width;\n var _this$state3 = this.state,\n isScrolling = _this$state3.isScrolling,\n scrollLeft = _this$state3.scrollLeft,\n scrollTop = _this$state3.scrollTop; // Memoization reset\n\n if (this._lastRenderedCellCount !== cellCount || this._lastRenderedCellLayoutManager !== cellLayoutManager || this._calculateSizeAndPositionDataOnNextUpdate) {\n this._lastRenderedCellCount = cellCount;\n this._lastRenderedCellLayoutManager = cellLayoutManager;\n this._calculateSizeAndPositionDataOnNextUpdate = false;\n cellLayoutManager.calculateSizeAndPositionData();\n }\n\n var _cellLayoutManager$ge3 = cellLayoutManager.getTotalSize(),\n totalHeight = _cellLayoutManager$ge3.height,\n totalWidth = _cellLayoutManager$ge3.width; // Safely expand the rendered area by the specified overscan amount\n\n\n var left = Math.max(0, scrollLeft - horizontalOverscanSize);\n var top = Math.max(0, scrollTop - verticalOverscanSize);\n var right = Math.min(totalWidth, scrollLeft + width + horizontalOverscanSize);\n var bottom = Math.min(totalHeight, scrollTop + height + verticalOverscanSize);\n var childrenToDisplay = height > 0 && width > 0 ? cellLayoutManager.cellRenderers({\n height: bottom - top,\n isScrolling: isScrolling,\n width: right - left,\n x: left,\n y: top\n }) : [];\n var collectionStyle = {\n boxSizing: 'border-box',\n direction: 'ltr',\n height: autoHeight ? 'auto' : height,\n position: 'relative',\n WebkitOverflowScrolling: 'touch',\n width: width,\n willChange: 'transform'\n }; // Force browser to hide scrollbars when we know they aren't necessary.\n // Otherwise once scrollbars appear they may not disappear again.\n // For more info see issue #116\n\n var verticalScrollBarSize = totalHeight > height ? this._scrollbarSize : 0;\n var horizontalScrollBarSize = totalWidth > width ? this._scrollbarSize : 0; // Also explicitly init styles to 'auto' if scrollbars are required.\n // This works around an obscure edge case where external CSS styles have not yet been loaded,\n // But an initial scroll index of offset is set as an external prop.\n // Without this style, Grid would render the correct range of cells but would NOT update its internal offset.\n // This was originally reported via clauderic/react-infinite-calendar/issues/23\n\n collectionStyle.overflowX = totalWidth + verticalScrollBarSize <= width ? 'hidden' : 'auto';\n collectionStyle.overflowY = totalHeight + horizontalScrollBarSize <= height ? 'hidden' : 'auto';\n return React.createElement(\"div\", {\n ref: this._setScrollingContainerRef,\n \"aria-label\": this.props['aria-label'],\n className: clsx('ReactVirtualized__Collection', className),\n id: id,\n onScroll: this._onScroll,\n role: \"grid\",\n style: _objectSpread({}, collectionStyle, {}, style),\n tabIndex: 0\n }, cellCount > 0 && React.createElement(\"div\", {\n className: \"ReactVirtualized__Collection__innerScrollContainer\",\n style: {\n height: totalHeight,\n maxHeight: totalHeight,\n maxWidth: totalWidth,\n overflow: 'hidden',\n pointerEvents: isScrolling ? 'none' : '',\n width: totalWidth\n }\n }, childrenToDisplay), cellCount === 0 && noContentRenderer());\n }\n /* ---------------------------- Helper methods ---------------------------- */\n\n /**\n * Sets an :isScrolling flag for a small window of time.\n * This flag is used to disable pointer events on the scrollable portion of the Collection.\n * This prevents jerky/stuttery mouse-wheel scrolling.\n */\n\n }, {\n key: \"_enablePointerEventsAfterDelay\",\n value: function _enablePointerEventsAfterDelay() {\n var _this2 = this;\n\n if (this._disablePointerEventsTimeoutId) {\n clearTimeout(this._disablePointerEventsTimeoutId);\n }\n\n this._disablePointerEventsTimeoutId = setTimeout(function () {\n var isScrollingChange = _this2.props.isScrollingChange;\n isScrollingChange(false);\n _this2._disablePointerEventsTimeoutId = null;\n\n _this2.setState({\n isScrolling: false\n });\n }, IS_SCROLLING_TIMEOUT);\n }\n }, {\n key: \"_invokeOnScrollMemoizer\",\n value: function _invokeOnScrollMemoizer(_ref) {\n var _this3 = this;\n\n var scrollLeft = _ref.scrollLeft,\n scrollTop = _ref.scrollTop,\n totalHeight = _ref.totalHeight,\n totalWidth = _ref.totalWidth;\n\n this._onScrollMemoizer({\n callback: function callback(_ref2) {\n var scrollLeft = _ref2.scrollLeft,\n scrollTop = _ref2.scrollTop;\n var _this3$props = _this3.props,\n height = _this3$props.height,\n onScroll = _this3$props.onScroll,\n width = _this3$props.width;\n onScroll({\n clientHeight: height,\n clientWidth: width,\n scrollHeight: totalHeight,\n scrollLeft: scrollLeft,\n scrollTop: scrollTop,\n scrollWidth: totalWidth\n });\n },\n indices: {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n }\n });\n }\n }, {\n key: \"_setScrollPosition\",\n value: function _setScrollPosition(_ref3) {\n var scrollLeft = _ref3.scrollLeft,\n scrollTop = _ref3.scrollTop;\n var newState = {\n scrollPositionChangeReason: SCROLL_POSITION_CHANGE_REASONS.REQUESTED\n };\n\n if (scrollLeft >= 0) {\n newState.scrollLeft = scrollLeft;\n }\n\n if (scrollTop >= 0) {\n newState.scrollTop = scrollTop;\n }\n\n if (scrollLeft >= 0 && scrollLeft !== this.state.scrollLeft || scrollTop >= 0 && scrollTop !== this.state.scrollTop) {\n this.setState(newState);\n }\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps, prevState) {\n if (nextProps.cellCount === 0 && (prevState.scrollLeft !== 0 || prevState.scrollTop !== 0)) {\n return {\n scrollLeft: 0,\n scrollTop: 0,\n scrollPositionChangeReason: SCROLL_POSITION_CHANGE_REASONS.REQUESTED\n };\n } else if (nextProps.scrollLeft !== prevState.scrollLeft || nextProps.scrollTop !== prevState.scrollTop) {\n return {\n scrollLeft: nextProps.scrollLeft != null ? nextProps.scrollLeft : prevState.scrollLeft,\n scrollTop: nextProps.scrollTop != null ? nextProps.scrollTop : prevState.scrollTop,\n scrollPositionChangeReason: SCROLL_POSITION_CHANGE_REASONS.REQUESTED\n };\n }\n\n return null;\n }\n }]);\n\n return CollectionView;\n}(React.PureComponent);\n\n_defineProperty(CollectionView, \"defaultProps\", {\n 'aria-label': 'grid',\n horizontalOverscanSize: 0,\n noContentRenderer: function noContentRenderer() {\n return null;\n },\n onScroll: function onScroll() {\n return null;\n },\n onSectionRendered: function onSectionRendered() {\n return null;\n },\n scrollToAlignment: 'auto',\n scrollToCell: -1,\n style: {},\n verticalOverscanSize: 0\n});\n\npolyfill(CollectionView);\nexport default CollectionView;","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\n/**\n * A section of the Window.\n * Window Sections are used to group nearby cells.\n * This enables us to more quickly determine which cells to display in a given region of the Window.\n * Sections have a fixed size and contain 0 to many cells (tracked by their indices).\n */\n\nvar Section = /*#__PURE__*/function () {\n function Section(_ref) {\n var height = _ref.height,\n width = _ref.width,\n x = _ref.x,\n y = _ref.y;\n\n _classCallCheck(this, Section);\n\n this.height = height;\n this.width = width;\n this.x = x;\n this.y = y;\n this._indexMap = {};\n this._indices = [];\n }\n /** Add a cell to this section. */\n\n\n _createClass(Section, [{\n key: \"addCellIndex\",\n value: function addCellIndex(_ref2) {\n var index = _ref2.index;\n\n if (!this._indexMap[index]) {\n this._indexMap[index] = true;\n\n this._indices.push(index);\n }\n }\n /** Get all cell indices that have been added to this section. */\n\n }, {\n key: \"getCellIndices\",\n value: function getCellIndices() {\n return this._indices;\n }\n /** Intended for debugger/test purposes only */\n\n }, {\n key: \"toString\",\n value: function toString() {\n return \"\".concat(this.x, \",\").concat(this.y, \" \").concat(this.width, \"x\").concat(this.height);\n }\n }]);\n\n return Section;\n}();\n\nexport { Section as default };\nimport { bpfrpt_proptype_Index } from \"./types\";\nimport { bpfrpt_proptype_SizeAndPositionInfo } from \"./types\";","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\n/**\n * Window Sections are used to group nearby cells.\n * This enables us to more quickly determine which cells to display in a given region of the Window.\n * \n */\n\nimport Section from './Section';\nvar SECTION_SIZE = 100;\n/**\n * Contains 0 to many Sections.\n * Grows (and adds Sections) dynamically as cells are registered.\n * Automatically adds cells to the appropriate Section(s).\n */\n\nvar SectionManager = /*#__PURE__*/function () {\n function SectionManager() {\n var sectionSize = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : SECTION_SIZE;\n\n _classCallCheck(this, SectionManager);\n\n this._sectionSize = sectionSize;\n this._cellMetadata = [];\n this._sections = {};\n }\n /**\n * Gets all cell indices contained in the specified region.\n * A region may encompass 1 or more Sections.\n */\n\n\n _createClass(SectionManager, [{\n key: \"getCellIndices\",\n value: function getCellIndices(_ref) {\n var height = _ref.height,\n width = _ref.width,\n x = _ref.x,\n y = _ref.y;\n var indices = {};\n this.getSections({\n height: height,\n width: width,\n x: x,\n y: y\n }).forEach(function (section) {\n return section.getCellIndices().forEach(function (index) {\n indices[index] = index;\n });\n }); // Object keys are strings; this function returns numbers\n\n return Object.keys(indices).map(function (index) {\n return indices[index];\n });\n }\n /** Get size and position information for the cell specified. */\n\n }, {\n key: \"getCellMetadata\",\n value: function getCellMetadata(_ref2) {\n var index = _ref2.index;\n return this._cellMetadata[index];\n }\n /** Get all Sections overlapping the specified region. */\n\n }, {\n key: \"getSections\",\n value: function getSections(_ref3) {\n var height = _ref3.height,\n width = _ref3.width,\n x = _ref3.x,\n y = _ref3.y;\n var sectionXStart = Math.floor(x / this._sectionSize);\n var sectionXStop = Math.floor((x + width - 1) / this._sectionSize);\n var sectionYStart = Math.floor(y / this._sectionSize);\n var sectionYStop = Math.floor((y + height - 1) / this._sectionSize);\n var sections = [];\n\n for (var sectionX = sectionXStart; sectionX <= sectionXStop; sectionX++) {\n for (var sectionY = sectionYStart; sectionY <= sectionYStop; sectionY++) {\n var key = \"\".concat(sectionX, \".\").concat(sectionY);\n\n if (!this._sections[key]) {\n this._sections[key] = new Section({\n height: this._sectionSize,\n width: this._sectionSize,\n x: sectionX * this._sectionSize,\n y: sectionY * this._sectionSize\n });\n }\n\n sections.push(this._sections[key]);\n }\n }\n\n return sections;\n }\n /** Total number of Sections based on the currently registered cells. */\n\n }, {\n key: \"getTotalSectionCount\",\n value: function getTotalSectionCount() {\n return Object.keys(this._sections).length;\n }\n /** Intended for debugger/test purposes only */\n\n }, {\n key: \"toString\",\n value: function toString() {\n var _this = this;\n\n return Object.keys(this._sections).map(function (index) {\n return _this._sections[index].toString();\n });\n }\n /** Adds a cell to the appropriate Sections and registers it metadata for later retrievable. */\n\n }, {\n key: \"registerCell\",\n value: function registerCell(_ref4) {\n var cellMetadatum = _ref4.cellMetadatum,\n index = _ref4.index;\n this._cellMetadata[index] = cellMetadatum;\n this.getSections(cellMetadatum).forEach(function (section) {\n return section.addCellIndex({\n index: index\n });\n });\n }\n }]);\n\n return SectionManager;\n}();\n\nexport { SectionManager as default };\nimport { bpfrpt_proptype_Index } from \"./types\";\nimport { bpfrpt_proptype_SizeAndPositionInfo } from \"./types\";","/**\n * Determines a new offset that ensures a certain cell is visible, given the current offset.\n * If the cell is already visible then the current offset will be returned.\n * If the current offset is too great or small, it will be adjusted just enough to ensure the specified index is visible.\n *\n * @param align Desired alignment within container; one of \"auto\" (default), \"start\", or \"end\"\n * @param cellOffset Offset (x or y) position for cell\n * @param cellSize Size (width or height) of cell\n * @param containerSize Total size (width or height) of the container\n * @param currentOffset Container's current (x or y) offset\n * @return Offset to use to ensure the specified cell is visible\n */\nexport default function getUpdatedOffsetForIndex(_ref) {\n var _ref$align = _ref.align,\n align = _ref$align === void 0 ? 'auto' : _ref$align,\n cellOffset = _ref.cellOffset,\n cellSize = _ref.cellSize,\n containerSize = _ref.containerSize,\n currentOffset = _ref.currentOffset;\n var maxOffset = cellOffset;\n var minOffset = maxOffset - containerSize + cellSize;\n\n switch (align) {\n case 'start':\n return maxOffset;\n\n case 'end':\n return minOffset;\n\n case 'center':\n return maxOffset - (containerSize - cellSize) / 2;\n\n default:\n return Math.max(minOffset, Math.min(maxOffset, currentOffset));\n }\n}","import _extends from \"@babel/runtime/helpers/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport * as React from 'react';\nimport CollectionView from './CollectionView';\nimport _calculateSizeAndPositionData from './utils/calculateSizeAndPositionData';\nimport getUpdatedOffsetForIndex from '../utils/getUpdatedOffsetForIndex';\n/**\n * Renders scattered or non-linear data.\n * Unlike Grid, which renders checkerboard data, Collection can render arbitrarily positioned- even overlapping- data.\n */\n\nvar Collection = /*#__PURE__*/function (_React$PureComponent) {\n _inherits(Collection, _React$PureComponent);\n\n function Collection(props, context) {\n var _this;\n\n _classCallCheck(this, Collection);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Collection).call(this, props, context));\n _this._cellMetadata = [];\n _this._lastRenderedCellIndices = []; // Cell cache during scroll (for performance)\n\n _this._cellCache = [];\n _this._isScrollingChange = _this._isScrollingChange.bind(_assertThisInitialized(_this));\n _this._setCollectionViewRef = _this._setCollectionViewRef.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n _createClass(Collection, [{\n key: \"forceUpdate\",\n value: function forceUpdate() {\n if (this._collectionView !== undefined) {\n this._collectionView.forceUpdate();\n }\n }\n /** See Collection#recomputeCellSizesAndPositions */\n\n }, {\n key: \"recomputeCellSizesAndPositions\",\n value: function recomputeCellSizesAndPositions() {\n this._cellCache = [];\n\n this._collectionView.recomputeCellSizesAndPositions();\n }\n /** React lifecycle methods */\n\n }, {\n key: \"render\",\n value: function render() {\n var props = _extends({}, this.props);\n\n return React.createElement(CollectionView, _extends({\n cellLayoutManager: this,\n isScrollingChange: this._isScrollingChange,\n ref: this._setCollectionViewRef\n }, props));\n }\n /** CellLayoutManager interface */\n\n }, {\n key: \"calculateSizeAndPositionData\",\n value: function calculateSizeAndPositionData() {\n var _this$props = this.props,\n cellCount = _this$props.cellCount,\n cellSizeAndPositionGetter = _this$props.cellSizeAndPositionGetter,\n sectionSize = _this$props.sectionSize;\n\n var data = _calculateSizeAndPositionData({\n cellCount: cellCount,\n cellSizeAndPositionGetter: cellSizeAndPositionGetter,\n sectionSize: sectionSize\n });\n\n this._cellMetadata = data.cellMetadata;\n this._sectionManager = data.sectionManager;\n this._height = data.height;\n this._width = data.width;\n }\n /**\n * Returns the most recently rendered set of cell indices.\n */\n\n }, {\n key: \"getLastRenderedIndices\",\n value: function getLastRenderedIndices() {\n return this._lastRenderedCellIndices;\n }\n /**\n * Calculates the minimum amount of change from the current scroll position to ensure the specified cell is (fully) visible.\n */\n\n }, {\n key: \"getScrollPositionForCell\",\n value: function getScrollPositionForCell(_ref) {\n var align = _ref.align,\n cellIndex = _ref.cellIndex,\n height = _ref.height,\n scrollLeft = _ref.scrollLeft,\n scrollTop = _ref.scrollTop,\n width = _ref.width;\n var cellCount = this.props.cellCount;\n\n if (cellIndex >= 0 && cellIndex < cellCount) {\n var cellMetadata = this._cellMetadata[cellIndex];\n scrollLeft = getUpdatedOffsetForIndex({\n align: align,\n cellOffset: cellMetadata.x,\n cellSize: cellMetadata.width,\n containerSize: width,\n currentOffset: scrollLeft,\n targetIndex: cellIndex\n });\n scrollTop = getUpdatedOffsetForIndex({\n align: align,\n cellOffset: cellMetadata.y,\n cellSize: cellMetadata.height,\n containerSize: height,\n currentOffset: scrollTop,\n targetIndex: cellIndex\n });\n }\n\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n }\n }, {\n key: \"getTotalSize\",\n value: function getTotalSize() {\n return {\n height: this._height,\n width: this._width\n };\n }\n }, {\n key: \"cellRenderers\",\n value: function cellRenderers(_ref2) {\n var _this2 = this;\n\n var height = _ref2.height,\n isScrolling = _ref2.isScrolling,\n width = _ref2.width,\n x = _ref2.x,\n y = _ref2.y;\n var _this$props2 = this.props,\n cellGroupRenderer = _this$props2.cellGroupRenderer,\n cellRenderer = _this$props2.cellRenderer; // Store for later calls to getLastRenderedIndices()\n\n this._lastRenderedCellIndices = this._sectionManager.getCellIndices({\n height: height,\n width: width,\n x: x,\n y: y\n });\n return cellGroupRenderer({\n cellCache: this._cellCache,\n cellRenderer: cellRenderer,\n cellSizeAndPositionGetter: function cellSizeAndPositionGetter(_ref3) {\n var index = _ref3.index;\n return _this2._sectionManager.getCellMetadata({\n index: index\n });\n },\n indices: this._lastRenderedCellIndices,\n isScrolling: isScrolling\n });\n }\n }, {\n key: \"_isScrollingChange\",\n value: function _isScrollingChange(isScrolling) {\n if (!isScrolling) {\n this._cellCache = [];\n }\n }\n }, {\n key: \"_setCollectionViewRef\",\n value: function _setCollectionViewRef(ref) {\n this._collectionView = ref;\n }\n }]);\n\n return Collection;\n}(React.PureComponent);\n\n_defineProperty(Collection, \"defaultProps\", {\n 'aria-label': 'grid',\n cellGroupRenderer: defaultCellGroupRenderer\n});\n\nexport { Collection as default };\n\nfunction defaultCellGroupRenderer(_ref4) {\n var cellCache = _ref4.cellCache,\n cellRenderer = _ref4.cellRenderer,\n cellSizeAndPositionGetter = _ref4.cellSizeAndPositionGetter,\n indices = _ref4.indices,\n isScrolling = _ref4.isScrolling;\n return indices.map(function (index) {\n var cellMetadata = cellSizeAndPositionGetter({\n index: index\n });\n var cellRendererProps = {\n index: index,\n isScrolling: isScrolling,\n key: index,\n style: {\n height: cellMetadata.height,\n left: cellMetadata.x,\n position: 'absolute',\n top: cellMetadata.y,\n width: cellMetadata.width\n }\n }; // Avoid re-creating cells while scrolling.\n // This can lead to the same cell being created many times and can cause performance issues for \"heavy\" cells.\n // If a scroll is in progress- cache and reuse cells.\n // This cache will be thrown away once scrolling complets.\n\n if (isScrolling) {\n if (!(index in cellCache)) {\n cellCache[index] = cellRenderer(cellRendererProps);\n }\n\n return cellCache[index];\n } else {\n return cellRenderer(cellRendererProps);\n }\n }).filter(function (renderedCell) {\n return !!renderedCell;\n });\n}\n\nimport { bpfrpt_proptype_ScrollPosition } from \"./types\";\nimport { bpfrpt_proptype_SizeInfo } from \"./types\";","import SectionManager from '../SectionManager';\nexport default function calculateSizeAndPositionData(_ref) {\n var cellCount = _ref.cellCount,\n cellSizeAndPositionGetter = _ref.cellSizeAndPositionGetter,\n sectionSize = _ref.sectionSize;\n var cellMetadata = [];\n var sectionManager = new SectionManager(sectionSize);\n var height = 0;\n var width = 0;\n\n for (var index = 0; index < cellCount; index++) {\n var cellMetadatum = cellSizeAndPositionGetter({\n index: index\n });\n\n if (cellMetadatum.height == null || isNaN(cellMetadatum.height) || cellMetadatum.width == null || isNaN(cellMetadatum.width) || cellMetadatum.x == null || isNaN(cellMetadatum.x) || cellMetadatum.y == null || isNaN(cellMetadatum.y)) {\n throw Error(\"Invalid metadata returned for cell \".concat(index, \":\\n x:\").concat(cellMetadatum.x, \", y:\").concat(cellMetadatum.y, \", width:\").concat(cellMetadatum.width, \", height:\").concat(cellMetadatum.height));\n }\n\n height = Math.max(height, cellMetadatum.y + cellMetadatum.height);\n width = Math.max(width, cellMetadatum.x + cellMetadatum.width);\n cellMetadata[index] = cellMetadatum;\n sectionManager.registerCell({\n cellMetadatum: cellMetadatum,\n index: index\n });\n }\n\n return {\n cellMetadata: cellMetadata,\n height: height,\n sectionManager: sectionManager,\n width: width\n };\n}","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\n/**\n * High-order component that auto-calculates column-widths for `Grid` cells.\n */\n\nvar ColumnSizer = /*#__PURE__*/function (_React$PureComponent) {\n _inherits(ColumnSizer, _React$PureComponent);\n\n function ColumnSizer(props, context) {\n var _this;\n\n _classCallCheck(this, ColumnSizer);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(ColumnSizer).call(this, props, context));\n _this._registerChild = _this._registerChild.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n _createClass(ColumnSizer, [{\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n var _this$props = this.props,\n columnMaxWidth = _this$props.columnMaxWidth,\n columnMinWidth = _this$props.columnMinWidth,\n columnCount = _this$props.columnCount,\n width = _this$props.width;\n\n if (columnMaxWidth !== prevProps.columnMaxWidth || columnMinWidth !== prevProps.columnMinWidth || columnCount !== prevProps.columnCount || width !== prevProps.width) {\n if (this._registeredChild) {\n this._registeredChild.recomputeGridSize();\n }\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n children = _this$props2.children,\n columnMaxWidth = _this$props2.columnMaxWidth,\n columnMinWidth = _this$props2.columnMinWidth,\n columnCount = _this$props2.columnCount,\n width = _this$props2.width;\n var safeColumnMinWidth = columnMinWidth || 1;\n var safeColumnMaxWidth = columnMaxWidth ? Math.min(columnMaxWidth, width) : width;\n var columnWidth = width / columnCount;\n columnWidth = Math.max(safeColumnMinWidth, columnWidth);\n columnWidth = Math.min(safeColumnMaxWidth, columnWidth);\n columnWidth = Math.floor(columnWidth);\n var adjustedWidth = Math.min(width, columnWidth * columnCount);\n return children({\n adjustedWidth: adjustedWidth,\n columnWidth: columnWidth,\n getColumnWidth: function getColumnWidth() {\n return columnWidth;\n },\n registerChild: this._registerChild\n });\n }\n }, {\n key: \"_registerChild\",\n value: function _registerChild(child) {\n if (child && typeof child.recomputeGridSize !== 'function') {\n throw Error('Unexpected child type registered; only Grid/MultiGrid children are supported.');\n }\n\n this._registeredChild = child;\n\n if (this._registeredChild) {\n this._registeredChild.recomputeGridSize();\n }\n }\n }]);\n\n return ColumnSizer;\n}(React.PureComponent);\n\nexport { ColumnSizer as default };\nColumnSizer.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * Function responsible for rendering a virtualized Grid.\n * This function should implement the following signature:\n * ({ adjustedWidth, getColumnWidth, registerChild }) => PropTypes.element\n *\n * The specified :getColumnWidth function should be passed to the Grid's :columnWidth property.\n * The :registerChild should be passed to the Grid's :ref property.\n * The :adjustedWidth property is optional; it reflects the lesser of the overall width or the width of all columns.\n */\n children: PropTypes.func.isRequired,\n\n /** Optional maximum allowed column width */\n columnMaxWidth: PropTypes.number,\n\n /** Optional minimum allowed column width */\n columnMinWidth: PropTypes.number,\n\n /** Number of columns in Grid or Table child */\n columnCount: PropTypes.number.isRequired,\n\n /** Width of Grid or Table child */\n width: PropTypes.number.isRequired\n} : {};","import ColumnSizer from './ColumnSizer';\nexport default ColumnSizer;\nexport { ColumnSizer };","import _toConsumableArray from \"@babel/runtime/helpers/toConsumableArray\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport createCallbackMemoizer from '../utils/createCallbackMemoizer';\n/**\n * Higher-order component that manages lazy-loading for \"infinite\" data.\n * This component decorates a virtual component and just-in-time prefetches rows as a user scrolls.\n * It is intended as a convenience component; fork it if you'd like finer-grained control over data-loading.\n */\n\nvar InfiniteLoader = /*#__PURE__*/function (_React$PureComponent) {\n _inherits(InfiniteLoader, _React$PureComponent);\n\n function InfiniteLoader(props, context) {\n var _this;\n\n _classCallCheck(this, InfiniteLoader);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(InfiniteLoader).call(this, props, context));\n _this._loadMoreRowsMemoizer = createCallbackMemoizer();\n _this._onRowsRendered = _this._onRowsRendered.bind(_assertThisInitialized(_this));\n _this._registerChild = _this._registerChild.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n _createClass(InfiniteLoader, [{\n key: \"resetLoadMoreRowsCache\",\n value: function resetLoadMoreRowsCache(autoReload) {\n this._loadMoreRowsMemoizer = createCallbackMemoizer();\n\n if (autoReload) {\n this._doStuff(this._lastRenderedStartIndex, this._lastRenderedStopIndex);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var children = this.props.children;\n return children({\n onRowsRendered: this._onRowsRendered,\n registerChild: this._registerChild\n });\n }\n }, {\n key: \"_loadUnloadedRanges\",\n value: function _loadUnloadedRanges(unloadedRanges) {\n var _this2 = this;\n\n var loadMoreRows = this.props.loadMoreRows;\n unloadedRanges.forEach(function (unloadedRange) {\n var promise = loadMoreRows(unloadedRange);\n\n if (promise) {\n promise.then(function () {\n // Refresh the visible rows if any of them have just been loaded.\n // Otherwise they will remain in their unloaded visual state.\n if (isRangeVisible({\n lastRenderedStartIndex: _this2._lastRenderedStartIndex,\n lastRenderedStopIndex: _this2._lastRenderedStopIndex,\n startIndex: unloadedRange.startIndex,\n stopIndex: unloadedRange.stopIndex\n })) {\n if (_this2._registeredChild) {\n forceUpdateReactVirtualizedComponent(_this2._registeredChild, _this2._lastRenderedStartIndex);\n }\n }\n });\n }\n });\n }\n }, {\n key: \"_onRowsRendered\",\n value: function _onRowsRendered(_ref) {\n var startIndex = _ref.startIndex,\n stopIndex = _ref.stopIndex;\n this._lastRenderedStartIndex = startIndex;\n this._lastRenderedStopIndex = stopIndex;\n\n this._doStuff(startIndex, stopIndex);\n }\n }, {\n key: \"_doStuff\",\n value: function _doStuff(startIndex, stopIndex) {\n var _ref2,\n _this3 = this;\n\n var _this$props = this.props,\n isRowLoaded = _this$props.isRowLoaded,\n minimumBatchSize = _this$props.minimumBatchSize,\n rowCount = _this$props.rowCount,\n threshold = _this$props.threshold;\n var unloadedRanges = scanForUnloadedRanges({\n isRowLoaded: isRowLoaded,\n minimumBatchSize: minimumBatchSize,\n rowCount: rowCount,\n startIndex: Math.max(0, startIndex - threshold),\n stopIndex: Math.min(rowCount - 1, stopIndex + threshold)\n }); // For memoize comparison\n\n var squashedUnloadedRanges = (_ref2 = []).concat.apply(_ref2, _toConsumableArray(unloadedRanges.map(function (_ref3) {\n var startIndex = _ref3.startIndex,\n stopIndex = _ref3.stopIndex;\n return [startIndex, stopIndex];\n })));\n\n this._loadMoreRowsMemoizer({\n callback: function callback() {\n _this3._loadUnloadedRanges(unloadedRanges);\n },\n indices: {\n squashedUnloadedRanges: squashedUnloadedRanges\n }\n });\n }\n }, {\n key: \"_registerChild\",\n value: function _registerChild(registeredChild) {\n this._registeredChild = registeredChild;\n }\n }]);\n\n return InfiniteLoader;\n}(React.PureComponent);\n/**\n * Determines if the specified start/stop range is visible based on the most recently rendered range.\n */\n\n\n_defineProperty(InfiniteLoader, \"defaultProps\", {\n minimumBatchSize: 10,\n rowCount: 0,\n threshold: 15\n});\n\nexport { InfiniteLoader as default };\nInfiniteLoader.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * Function responsible for rendering a virtualized component.\n * This function should implement the following signature:\n * ({ onRowsRendered, registerChild }) => PropTypes.element\n *\n * The specified :onRowsRendered function should be passed through to the child's :onRowsRendered property.\n * The :registerChild callback should be set as the virtualized component's :ref.\n */\n children: PropTypes.func.isRequired,\n\n /**\n * Function responsible for tracking the loaded state of each row.\n * It should implement the following signature: ({ index: number }): boolean\n */\n isRowLoaded: PropTypes.func.isRequired,\n\n /**\n * Callback to be invoked when more rows must be loaded.\n * It should implement the following signature: ({ startIndex, stopIndex }): Promise\n * The returned Promise should be resolved once row data has finished loading.\n * It will be used to determine when to refresh the list with the newly-loaded data.\n * This callback may be called multiple times in reaction to a single scroll event.\n */\n loadMoreRows: PropTypes.func.isRequired,\n\n /**\n * Minimum number of rows to be loaded at a time.\n * This property can be used to batch requests to reduce HTTP requests.\n */\n minimumBatchSize: PropTypes.number.isRequired,\n\n /**\n * Number of rows in list; can be arbitrary high number if actual number is unknown.\n */\n rowCount: PropTypes.number.isRequired,\n\n /**\n * Threshold at which to pre-fetch data.\n * A threshold X means that data will start loading when a user scrolls within X rows.\n * This value defaults to 15.\n */\n threshold: PropTypes.number.isRequired\n} : {};\nexport function isRangeVisible(_ref4) {\n var lastRenderedStartIndex = _ref4.lastRenderedStartIndex,\n lastRenderedStopIndex = _ref4.lastRenderedStopIndex,\n startIndex = _ref4.startIndex,\n stopIndex = _ref4.stopIndex;\n return !(startIndex > lastRenderedStopIndex || stopIndex < lastRenderedStartIndex);\n}\n/**\n * Returns all of the ranges within a larger range that contain unloaded rows.\n */\n\nexport function scanForUnloadedRanges(_ref5) {\n var isRowLoaded = _ref5.isRowLoaded,\n minimumBatchSize = _ref5.minimumBatchSize,\n rowCount = _ref5.rowCount,\n startIndex = _ref5.startIndex,\n stopIndex = _ref5.stopIndex;\n var unloadedRanges = [];\n var rangeStartIndex = null;\n var rangeStopIndex = null;\n\n for (var index = startIndex; index <= stopIndex; index++) {\n var loaded = isRowLoaded({\n index: index\n });\n\n if (!loaded) {\n rangeStopIndex = index;\n\n if (rangeStartIndex === null) {\n rangeStartIndex = index;\n }\n } else if (rangeStopIndex !== null) {\n unloadedRanges.push({\n startIndex: rangeStartIndex,\n stopIndex: rangeStopIndex\n });\n rangeStartIndex = rangeStopIndex = null;\n }\n } // If :rangeStopIndex is not null it means we haven't ran out of unloaded rows.\n // Scan forward to try filling our :minimumBatchSize.\n\n\n if (rangeStopIndex !== null) {\n var potentialStopIndex = Math.min(Math.max(rangeStopIndex, rangeStartIndex + minimumBatchSize - 1), rowCount - 1);\n\n for (var _index = rangeStopIndex + 1; _index <= potentialStopIndex; _index++) {\n if (!isRowLoaded({\n index: _index\n })) {\n rangeStopIndex = _index;\n } else {\n break;\n }\n }\n\n unloadedRanges.push({\n startIndex: rangeStartIndex,\n stopIndex: rangeStopIndex\n });\n } // Check to see if our first range ended prematurely.\n // In this case we should scan backwards to try filling our :minimumBatchSize.\n\n\n if (unloadedRanges.length) {\n var firstUnloadedRange = unloadedRanges[0];\n\n while (firstUnloadedRange.stopIndex - firstUnloadedRange.startIndex + 1 < minimumBatchSize && firstUnloadedRange.startIndex > 0) {\n var _index2 = firstUnloadedRange.startIndex - 1;\n\n if (!isRowLoaded({\n index: _index2\n })) {\n firstUnloadedRange.startIndex = _index2;\n } else {\n break;\n }\n }\n }\n\n return unloadedRanges;\n}\n/**\n * Since RV components use shallowCompare we need to force a render (even though props haven't changed).\n * However InfiniteLoader may wrap a Grid or it may wrap a Table or List.\n * In the first case the built-in React forceUpdate() method is sufficient to force a re-render,\n * But in the latter cases we need to use the RV-specific forceUpdateGrid() method.\n * Else the inner Grid will not be re-rendered and visuals may be stale.\n *\n * Additionally, while a Grid is scrolling the cells can be cached,\n * So it's important to invalidate that cache by recalculating sizes\n * before forcing a rerender.\n */\n\nexport function forceUpdateReactVirtualizedComponent(component) {\n var currentIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var recomputeSize = typeof component.recomputeGridSize === 'function' ? component.recomputeGridSize : component.recomputeRowHeights;\n\n if (recomputeSize) {\n recomputeSize.call(component, currentIndex);\n } else {\n component.forceUpdate();\n }\n}","import InfiniteLoader from './InfiniteLoader';\nexport default InfiniteLoader;\nexport { InfiniteLoader };","import _extends from \"@babel/runtime/helpers/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nvar _class, _temp;\n\nimport Grid, { accessibilityOverscanIndicesGetter } from '../Grid';\nimport * as React from 'react';\nimport clsx from 'clsx';\n/**\n * It is inefficient to create and manage a large list of DOM elements within a scrolling container\n * if only a few of those elements are visible. The primary purpose of this component is to improve\n * performance by only rendering the DOM nodes that a user is able to see based on their current\n * scroll position.\n *\n * This component renders a virtualized list of elements with either fixed or dynamic heights.\n */\n\nvar List = (_temp = _class = /*#__PURE__*/function (_React$PureComponent) {\n _inherits(List, _React$PureComponent);\n\n function List() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, List);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(List)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_this), \"Grid\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_cellRenderer\", function (_ref) {\n var parent = _ref.parent,\n rowIndex = _ref.rowIndex,\n style = _ref.style,\n isScrolling = _ref.isScrolling,\n isVisible = _ref.isVisible,\n key = _ref.key;\n var rowRenderer = _this.props.rowRenderer; // TRICKY The style object is sometimes cached by Grid.\n // This prevents new style objects from bypassing shallowCompare().\n // However as of React 16, style props are auto-frozen (at least in dev mode)\n // Check to make sure we can still modify the style before proceeding.\n // https://github.com/facebook/react/commit/977357765b44af8ff0cfea327866861073095c12#commitcomment-20648713\n\n var widthDescriptor = Object.getOwnPropertyDescriptor(style, 'width');\n\n if (widthDescriptor && widthDescriptor.writable) {\n // By default, List cells should be 100% width.\n // This prevents them from flowing under a scrollbar (if present).\n style.width = '100%';\n }\n\n return rowRenderer({\n index: rowIndex,\n style: style,\n isScrolling: isScrolling,\n isVisible: isVisible,\n key: key,\n parent: parent\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_setRef\", function (ref) {\n _this.Grid = ref;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onScroll\", function (_ref2) {\n var clientHeight = _ref2.clientHeight,\n scrollHeight = _ref2.scrollHeight,\n scrollTop = _ref2.scrollTop;\n var onScroll = _this.props.onScroll;\n onScroll({\n clientHeight: clientHeight,\n scrollHeight: scrollHeight,\n scrollTop: scrollTop\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onSectionRendered\", function (_ref3) {\n var rowOverscanStartIndex = _ref3.rowOverscanStartIndex,\n rowOverscanStopIndex = _ref3.rowOverscanStopIndex,\n rowStartIndex = _ref3.rowStartIndex,\n rowStopIndex = _ref3.rowStopIndex;\n var onRowsRendered = _this.props.onRowsRendered;\n onRowsRendered({\n overscanStartIndex: rowOverscanStartIndex,\n overscanStopIndex: rowOverscanStopIndex,\n startIndex: rowStartIndex,\n stopIndex: rowStopIndex\n });\n });\n\n return _this;\n }\n\n _createClass(List, [{\n key: \"forceUpdateGrid\",\n value: function forceUpdateGrid() {\n if (this.Grid) {\n this.Grid.forceUpdate();\n }\n }\n /** See Grid#getOffsetForCell */\n\n }, {\n key: \"getOffsetForRow\",\n value: function getOffsetForRow(_ref4) {\n var alignment = _ref4.alignment,\n index = _ref4.index;\n\n if (this.Grid) {\n var _this$Grid$getOffsetF = this.Grid.getOffsetForCell({\n alignment: alignment,\n rowIndex: index,\n columnIndex: 0\n }),\n scrollTop = _this$Grid$getOffsetF.scrollTop;\n\n return scrollTop;\n }\n\n return 0;\n }\n /** CellMeasurer compatibility */\n\n }, {\n key: \"invalidateCellSizeAfterRender\",\n value: function invalidateCellSizeAfterRender(_ref5) {\n var columnIndex = _ref5.columnIndex,\n rowIndex = _ref5.rowIndex;\n\n if (this.Grid) {\n this.Grid.invalidateCellSizeAfterRender({\n rowIndex: rowIndex,\n columnIndex: columnIndex\n });\n }\n }\n /** See Grid#measureAllCells */\n\n }, {\n key: \"measureAllRows\",\n value: function measureAllRows() {\n if (this.Grid) {\n this.Grid.measureAllCells();\n }\n }\n /** CellMeasurer compatibility */\n\n }, {\n key: \"recomputeGridSize\",\n value: function recomputeGridSize() {\n var _ref6 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref6$columnIndex = _ref6.columnIndex,\n columnIndex = _ref6$columnIndex === void 0 ? 0 : _ref6$columnIndex,\n _ref6$rowIndex = _ref6.rowIndex,\n rowIndex = _ref6$rowIndex === void 0 ? 0 : _ref6$rowIndex;\n\n if (this.Grid) {\n this.Grid.recomputeGridSize({\n rowIndex: rowIndex,\n columnIndex: columnIndex\n });\n }\n }\n /** See Grid#recomputeGridSize */\n\n }, {\n key: \"recomputeRowHeights\",\n value: function recomputeRowHeights() {\n var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n if (this.Grid) {\n this.Grid.recomputeGridSize({\n rowIndex: index,\n columnIndex: 0\n });\n }\n }\n /** See Grid#scrollToPosition */\n\n }, {\n key: \"scrollToPosition\",\n value: function scrollToPosition() {\n var scrollTop = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n if (this.Grid) {\n this.Grid.scrollToPosition({\n scrollTop: scrollTop\n });\n }\n }\n /** See Grid#scrollToCell */\n\n }, {\n key: \"scrollToRow\",\n value: function scrollToRow() {\n var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n if (this.Grid) {\n this.Grid.scrollToCell({\n columnIndex: 0,\n rowIndex: index\n });\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n className = _this$props.className,\n noRowsRenderer = _this$props.noRowsRenderer,\n scrollToIndex = _this$props.scrollToIndex,\n width = _this$props.width;\n var classNames = clsx('ReactVirtualized__List', className);\n return React.createElement(Grid, _extends({}, this.props, {\n autoContainerWidth: true,\n cellRenderer: this._cellRenderer,\n className: classNames,\n columnWidth: width,\n columnCount: 1,\n noContentRenderer: noRowsRenderer,\n onScroll: this._onScroll,\n onSectionRendered: this._onSectionRendered,\n ref: this._setRef,\n scrollToRow: scrollToIndex\n }));\n }\n }]);\n\n return List;\n}(React.PureComponent), _defineProperty(_class, \"propTypes\", process.env.NODE_ENV === 'production' ? null : {\n \"aria-label\": PropTypes.string,\n\n /**\n * Removes fixed height from the scrollingContainer so that the total height\n * of rows can stretch the window. Intended for use with WindowScroller\n */\n \"autoHeight\": PropTypes.bool.isRequired,\n\n /** Optional CSS class name */\n \"className\": PropTypes.string,\n\n /**\n * Used to estimate the total height of a List before all of its rows have actually been measured.\n * The estimated total height is adjusted as rows are rendered.\n */\n \"estimatedRowSize\": PropTypes.number.isRequired,\n\n /** Height constraint for list (determines how many actual rows are rendered) */\n \"height\": PropTypes.number.isRequired,\n\n /** Optional renderer to be used in place of rows when rowCount is 0 */\n \"noRowsRenderer\": function noRowsRenderer() {\n return (typeof bpfrpt_proptype_NoContentRenderer === \"function\" ? bpfrpt_proptype_NoContentRenderer.isRequired ? bpfrpt_proptype_NoContentRenderer.isRequired : bpfrpt_proptype_NoContentRenderer : PropTypes.shape(bpfrpt_proptype_NoContentRenderer).isRequired).apply(this, arguments);\n },\n\n /** Callback invoked with information about the slice of rows that were just rendered. */\n \"onRowsRendered\": PropTypes.func.isRequired,\n\n /**\n * Callback invoked whenever the scroll offset changes within the inner scrollable region.\n * This callback can be used to sync scrolling between lists, tables, or grids.\n */\n \"onScroll\": PropTypes.func.isRequired,\n\n /** See Grid#overscanIndicesGetter */\n \"overscanIndicesGetter\": function overscanIndicesGetter() {\n return (typeof bpfrpt_proptype_OverscanIndicesGetter === \"function\" ? bpfrpt_proptype_OverscanIndicesGetter.isRequired ? bpfrpt_proptype_OverscanIndicesGetter.isRequired : bpfrpt_proptype_OverscanIndicesGetter : PropTypes.shape(bpfrpt_proptype_OverscanIndicesGetter).isRequired).apply(this, arguments);\n },\n\n /**\n * Number of rows to render above/below the visible bounds of the list.\n * These rows can help for smoother scrolling on touch devices.\n */\n \"overscanRowCount\": PropTypes.number.isRequired,\n\n /** Either a fixed row height (number) or a function that returns the height of a row given its index. */\n \"rowHeight\": function rowHeight() {\n return (typeof bpfrpt_proptype_CellSize === \"function\" ? bpfrpt_proptype_CellSize.isRequired ? bpfrpt_proptype_CellSize.isRequired : bpfrpt_proptype_CellSize : PropTypes.shape(bpfrpt_proptype_CellSize).isRequired).apply(this, arguments);\n },\n\n /** Responsible for rendering a row given an index; ({ index: number }): node */\n \"rowRenderer\": function rowRenderer() {\n return (typeof bpfrpt_proptype_RowRenderer === \"function\" ? bpfrpt_proptype_RowRenderer.isRequired ? bpfrpt_proptype_RowRenderer.isRequired : bpfrpt_proptype_RowRenderer : PropTypes.shape(bpfrpt_proptype_RowRenderer).isRequired).apply(this, arguments);\n },\n\n /** Number of rows in list. */\n \"rowCount\": PropTypes.number.isRequired,\n\n /** See Grid#scrollToAlignment */\n \"scrollToAlignment\": function scrollToAlignment() {\n return (typeof bpfrpt_proptype_Alignment === \"function\" ? bpfrpt_proptype_Alignment.isRequired ? bpfrpt_proptype_Alignment.isRequired : bpfrpt_proptype_Alignment : PropTypes.shape(bpfrpt_proptype_Alignment).isRequired).apply(this, arguments);\n },\n\n /** Row index to ensure visible (by forcefully scrolling if necessary) */\n \"scrollToIndex\": PropTypes.number.isRequired,\n\n /** Vertical offset. */\n \"scrollTop\": PropTypes.number,\n\n /** Optional inline style */\n \"style\": PropTypes.object.isRequired,\n\n /** Tab index for focus */\n \"tabIndex\": PropTypes.number,\n\n /** Width of list */\n \"width\": PropTypes.number.isRequired\n}), _temp);\n\n_defineProperty(List, \"defaultProps\", {\n autoHeight: false,\n estimatedRowSize: 30,\n onScroll: function onScroll() {},\n noRowsRenderer: function noRowsRenderer() {\n return null;\n },\n onRowsRendered: function onRowsRendered() {},\n overscanIndicesGetter: accessibilityOverscanIndicesGetter,\n overscanRowCount: 10,\n scrollToAlignment: 'auto',\n scrollToIndex: -1,\n style: {}\n});\n\nexport { List as default };\nimport { bpfrpt_proptype_NoContentRenderer } from \"../Grid\";\nimport { bpfrpt_proptype_Alignment } from \"../Grid\";\nimport { bpfrpt_proptype_CellSize } from \"../Grid\";\nimport { bpfrpt_proptype_CellPosition } from \"../Grid\";\nimport { bpfrpt_proptype_OverscanIndicesGetter } from \"../Grid\";\nimport { bpfrpt_proptype_RenderedSection } from \"../Grid\";\nimport { bpfrpt_proptype_CellRendererParams } from \"../Grid\";\nimport { bpfrpt_proptype_Scroll as bpfrpt_proptype_GridScroll } from \"../Grid\";\nimport { bpfrpt_proptype_RowRenderer } from \"./types\";\nimport { bpfrpt_proptype_RenderedRows } from \"./types\";\nimport { bpfrpt_proptype_Scroll } from \"./types\";\nimport PropTypes from \"prop-types\";","/**\n * Binary Search Bounds\n * https://github.com/mikolalysenko/binary-search-bounds\n * Mikola Lysenko\n *\n * Inlined because of Content Security Policy issue caused by the use of `new Function(...)` syntax.\n * Issue reported here: https://github.com/mikolalysenko/binary-search-bounds/issues/5\n **/\nfunction _GEA(a, l, h, y) {\n var i = h + 1;\n\n while (l <= h) {\n var m = l + h >>> 1,\n x = a[m];\n\n if (x >= y) {\n i = m;\n h = m - 1;\n } else {\n l = m + 1;\n }\n }\n\n return i;\n}\n\nfunction _GEP(a, l, h, y, c) {\n var i = h + 1;\n\n while (l <= h) {\n var m = l + h >>> 1,\n x = a[m];\n\n if (c(x, y) >= 0) {\n i = m;\n h = m - 1;\n } else {\n l = m + 1;\n }\n }\n\n return i;\n}\n\nfunction dispatchBsearchGE(a, y, c, l, h) {\n if (typeof c === 'function') {\n return _GEP(a, l === void 0 ? 0 : l | 0, h === void 0 ? a.length - 1 : h | 0, y, c);\n } else {\n return _GEA(a, c === void 0 ? 0 : c | 0, l === void 0 ? a.length - 1 : l | 0, y);\n }\n}\n\nfunction _GTA(a, l, h, y) {\n var i = h + 1;\n\n while (l <= h) {\n var m = l + h >>> 1,\n x = a[m];\n\n if (x > y) {\n i = m;\n h = m - 1;\n } else {\n l = m + 1;\n }\n }\n\n return i;\n}\n\nfunction _GTP(a, l, h, y, c) {\n var i = h + 1;\n\n while (l <= h) {\n var m = l + h >>> 1,\n x = a[m];\n\n if (c(x, y) > 0) {\n i = m;\n h = m - 1;\n } else {\n l = m + 1;\n }\n }\n\n return i;\n}\n\nfunction dispatchBsearchGT(a, y, c, l, h) {\n if (typeof c === 'function') {\n return _GTP(a, l === void 0 ? 0 : l | 0, h === void 0 ? a.length - 1 : h | 0, y, c);\n } else {\n return _GTA(a, c === void 0 ? 0 : c | 0, l === void 0 ? a.length - 1 : l | 0, y);\n }\n}\n\nfunction _LTA(a, l, h, y) {\n var i = l - 1;\n\n while (l <= h) {\n var m = l + h >>> 1,\n x = a[m];\n\n if (x < y) {\n i = m;\n l = m + 1;\n } else {\n h = m - 1;\n }\n }\n\n return i;\n}\n\nfunction _LTP(a, l, h, y, c) {\n var i = l - 1;\n\n while (l <= h) {\n var m = l + h >>> 1,\n x = a[m];\n\n if (c(x, y) < 0) {\n i = m;\n l = m + 1;\n } else {\n h = m - 1;\n }\n }\n\n return i;\n}\n\nfunction dispatchBsearchLT(a, y, c, l, h) {\n if (typeof c === 'function') {\n return _LTP(a, l === void 0 ? 0 : l | 0, h === void 0 ? a.length - 1 : h | 0, y, c);\n } else {\n return _LTA(a, c === void 0 ? 0 : c | 0, l === void 0 ? a.length - 1 : l | 0, y);\n }\n}\n\nfunction _LEA(a, l, h, y) {\n var i = l - 1;\n\n while (l <= h) {\n var m = l + h >>> 1,\n x = a[m];\n\n if (x <= y) {\n i = m;\n l = m + 1;\n } else {\n h = m - 1;\n }\n }\n\n return i;\n}\n\nfunction _LEP(a, l, h, y, c) {\n var i = l - 1;\n\n while (l <= h) {\n var m = l + h >>> 1,\n x = a[m];\n\n if (c(x, y) <= 0) {\n i = m;\n l = m + 1;\n } else {\n h = m - 1;\n }\n }\n\n return i;\n}\n\nfunction dispatchBsearchLE(a, y, c, l, h) {\n if (typeof c === 'function') {\n return _LEP(a, l === void 0 ? 0 : l | 0, h === void 0 ? a.length - 1 : h | 0, y, c);\n } else {\n return _LEA(a, c === void 0 ? 0 : c | 0, l === void 0 ? a.length - 1 : l | 0, y);\n }\n}\n\nfunction _EQA(a, l, h, y) {\n l - 1;\n\n while (l <= h) {\n var m = l + h >>> 1,\n x = a[m];\n\n if (x === y) {\n return m;\n } else if (x <= y) {\n l = m + 1;\n } else {\n h = m - 1;\n }\n }\n\n return -1;\n}\n\nfunction _EQP(a, l, h, y, c) {\n l - 1;\n\n while (l <= h) {\n var m = l + h >>> 1,\n x = a[m];\n var p = c(x, y);\n\n if (p === 0) {\n return m;\n } else if (p <= 0) {\n l = m + 1;\n } else {\n h = m - 1;\n }\n }\n\n return -1;\n}\n\nfunction dispatchBsearchEQ(a, y, c, l, h) {\n if (typeof c === 'function') {\n return _EQP(a, l === void 0 ? 0 : l | 0, h === void 0 ? a.length - 1 : h | 0, y, c);\n } else {\n return _EQA(a, c === void 0 ? 0 : c | 0, l === void 0 ? a.length - 1 : l | 0, y);\n }\n}\n\nexport default {\n ge: dispatchBsearchGE,\n gt: dispatchBsearchGT,\n lt: dispatchBsearchLT,\n le: dispatchBsearchLE,\n eq: dispatchBsearchEQ\n};","/**\n * Binary Search Bounds\n * https://github.com/mikolalysenko/interval-tree-1d\n * Mikola Lysenko\n *\n * Inlined because of Content Security Policy issue caused by the use of `new Function(...)` syntax in an upstream dependency.\n * Issue reported here: https://github.com/mikolalysenko/binary-search-bounds/issues/5\n **/\nimport bounds from './binarySearchBounds';\nvar NOT_FOUND = 0;\nvar SUCCESS = 1;\nvar EMPTY = 2;\n\nfunction IntervalTreeNode(mid, left, right, leftPoints, rightPoints) {\n this.mid = mid;\n this.left = left;\n this.right = right;\n this.leftPoints = leftPoints;\n this.rightPoints = rightPoints;\n this.count = (left ? left.count : 0) + (right ? right.count : 0) + leftPoints.length;\n}\n\nvar proto = IntervalTreeNode.prototype;\n\nfunction copy(a, b) {\n a.mid = b.mid;\n a.left = b.left;\n a.right = b.right;\n a.leftPoints = b.leftPoints;\n a.rightPoints = b.rightPoints;\n a.count = b.count;\n}\n\nfunction rebuild(node, intervals) {\n var ntree = createIntervalTree(intervals);\n node.mid = ntree.mid;\n node.left = ntree.left;\n node.right = ntree.right;\n node.leftPoints = ntree.leftPoints;\n node.rightPoints = ntree.rightPoints;\n node.count = ntree.count;\n}\n\nfunction rebuildWithInterval(node, interval) {\n var intervals = node.intervals([]);\n intervals.push(interval);\n rebuild(node, intervals);\n}\n\nfunction rebuildWithoutInterval(node, interval) {\n var intervals = node.intervals([]);\n var idx = intervals.indexOf(interval);\n\n if (idx < 0) {\n return NOT_FOUND;\n }\n\n intervals.splice(idx, 1);\n rebuild(node, intervals);\n return SUCCESS;\n}\n\nproto.intervals = function (result) {\n result.push.apply(result, this.leftPoints);\n\n if (this.left) {\n this.left.intervals(result);\n }\n\n if (this.right) {\n this.right.intervals(result);\n }\n\n return result;\n};\n\nproto.insert = function (interval) {\n var weight = this.count - this.leftPoints.length;\n this.count += 1;\n\n if (interval[1] < this.mid) {\n if (this.left) {\n if (4 * (this.left.count + 1) > 3 * (weight + 1)) {\n rebuildWithInterval(this, interval);\n } else {\n this.left.insert(interval);\n }\n } else {\n this.left = createIntervalTree([interval]);\n }\n } else if (interval[0] > this.mid) {\n if (this.right) {\n if (4 * (this.right.count + 1) > 3 * (weight + 1)) {\n rebuildWithInterval(this, interval);\n } else {\n this.right.insert(interval);\n }\n } else {\n this.right = createIntervalTree([interval]);\n }\n } else {\n var l = bounds.ge(this.leftPoints, interval, compareBegin);\n var r = bounds.ge(this.rightPoints, interval, compareEnd);\n this.leftPoints.splice(l, 0, interval);\n this.rightPoints.splice(r, 0, interval);\n }\n};\n\nproto.remove = function (interval) {\n var weight = this.count - this.leftPoints;\n\n if (interval[1] < this.mid) {\n if (!this.left) {\n return NOT_FOUND;\n }\n\n var rw = this.right ? this.right.count : 0;\n\n if (4 * rw > 3 * (weight - 1)) {\n return rebuildWithoutInterval(this, interval);\n }\n\n var r = this.left.remove(interval);\n\n if (r === EMPTY) {\n this.left = null;\n this.count -= 1;\n return SUCCESS;\n } else if (r === SUCCESS) {\n this.count -= 1;\n }\n\n return r;\n } else if (interval[0] > this.mid) {\n if (!this.right) {\n return NOT_FOUND;\n }\n\n var lw = this.left ? this.left.count : 0;\n\n if (4 * lw > 3 * (weight - 1)) {\n return rebuildWithoutInterval(this, interval);\n }\n\n var r = this.right.remove(interval);\n\n if (r === EMPTY) {\n this.right = null;\n this.count -= 1;\n return SUCCESS;\n } else if (r === SUCCESS) {\n this.count -= 1;\n }\n\n return r;\n } else {\n if (this.count === 1) {\n if (this.leftPoints[0] === interval) {\n return EMPTY;\n } else {\n return NOT_FOUND;\n }\n }\n\n if (this.leftPoints.length === 1 && this.leftPoints[0] === interval) {\n if (this.left && this.right) {\n var p = this;\n var n = this.left;\n\n while (n.right) {\n p = n;\n n = n.right;\n }\n\n if (p === this) {\n n.right = this.right;\n } else {\n var l = this.left;\n var r = this.right;\n p.count -= n.count;\n p.right = n.left;\n n.left = l;\n n.right = r;\n }\n\n copy(this, n);\n this.count = (this.left ? this.left.count : 0) + (this.right ? this.right.count : 0) + this.leftPoints.length;\n } else if (this.left) {\n copy(this, this.left);\n } else {\n copy(this, this.right);\n }\n\n return SUCCESS;\n }\n\n for (var l = bounds.ge(this.leftPoints, interval, compareBegin); l < this.leftPoints.length; ++l) {\n if (this.leftPoints[l][0] !== interval[0]) {\n break;\n }\n\n if (this.leftPoints[l] === interval) {\n this.count -= 1;\n this.leftPoints.splice(l, 1);\n\n for (var r = bounds.ge(this.rightPoints, interval, compareEnd); r < this.rightPoints.length; ++r) {\n if (this.rightPoints[r][1] !== interval[1]) {\n break;\n } else if (this.rightPoints[r] === interval) {\n this.rightPoints.splice(r, 1);\n return SUCCESS;\n }\n }\n }\n }\n\n return NOT_FOUND;\n }\n};\n\nfunction reportLeftRange(arr, hi, cb) {\n for (var i = 0; i < arr.length && arr[i][0] <= hi; ++i) {\n var r = cb(arr[i]);\n\n if (r) {\n return r;\n }\n }\n}\n\nfunction reportRightRange(arr, lo, cb) {\n for (var i = arr.length - 1; i >= 0 && arr[i][1] >= lo; --i) {\n var r = cb(arr[i]);\n\n if (r) {\n return r;\n }\n }\n}\n\nfunction reportRange(arr, cb) {\n for (var i = 0; i < arr.length; ++i) {\n var r = cb(arr[i]);\n\n if (r) {\n return r;\n }\n }\n}\n\nproto.queryPoint = function (x, cb) {\n if (x < this.mid) {\n if (this.left) {\n var r = this.left.queryPoint(x, cb);\n\n if (r) {\n return r;\n }\n }\n\n return reportLeftRange(this.leftPoints, x, cb);\n } else if (x > this.mid) {\n if (this.right) {\n var r = this.right.queryPoint(x, cb);\n\n if (r) {\n return r;\n }\n }\n\n return reportRightRange(this.rightPoints, x, cb);\n } else {\n return reportRange(this.leftPoints, cb);\n }\n};\n\nproto.queryInterval = function (lo, hi, cb) {\n if (lo < this.mid && this.left) {\n var r = this.left.queryInterval(lo, hi, cb);\n\n if (r) {\n return r;\n }\n }\n\n if (hi > this.mid && this.right) {\n var r = this.right.queryInterval(lo, hi, cb);\n\n if (r) {\n return r;\n }\n }\n\n if (hi < this.mid) {\n return reportLeftRange(this.leftPoints, hi, cb);\n } else if (lo > this.mid) {\n return reportRightRange(this.rightPoints, lo, cb);\n } else {\n return reportRange(this.leftPoints, cb);\n }\n};\n\nfunction compareNumbers(a, b) {\n return a - b;\n}\n\nfunction compareBegin(a, b) {\n var d = a[0] - b[0];\n\n if (d) {\n return d;\n }\n\n return a[1] - b[1];\n}\n\nfunction compareEnd(a, b) {\n var d = a[1] - b[1];\n\n if (d) {\n return d;\n }\n\n return a[0] - b[0];\n}\n\nfunction createIntervalTree(intervals) {\n if (intervals.length === 0) {\n return null;\n }\n\n var pts = [];\n\n for (var i = 0; i < intervals.length; ++i) {\n pts.push(intervals[i][0], intervals[i][1]);\n }\n\n pts.sort(compareNumbers);\n var mid = pts[pts.length >> 1];\n var leftIntervals = [];\n var rightIntervals = [];\n var centerIntervals = [];\n\n for (var i = 0; i < intervals.length; ++i) {\n var s = intervals[i];\n\n if (s[1] < mid) {\n leftIntervals.push(s);\n } else if (mid < s[0]) {\n rightIntervals.push(s);\n } else {\n centerIntervals.push(s);\n }\n } //Split center intervals\n\n\n var leftPoints = centerIntervals;\n var rightPoints = centerIntervals.slice();\n leftPoints.sort(compareBegin);\n rightPoints.sort(compareEnd);\n return new IntervalTreeNode(mid, createIntervalTree(leftIntervals), createIntervalTree(rightIntervals), leftPoints, rightPoints);\n} //User friendly wrapper that makes it possible to support empty trees\n\n\nfunction IntervalTree(root) {\n this.root = root;\n}\n\nvar tproto = IntervalTree.prototype;\n\ntproto.insert = function (interval) {\n if (this.root) {\n this.root.insert(interval);\n } else {\n this.root = new IntervalTreeNode(interval[0], null, null, [interval], [interval]);\n }\n};\n\ntproto.remove = function (interval) {\n if (this.root) {\n var r = this.root.remove(interval);\n\n if (r === EMPTY) {\n this.root = null;\n }\n\n return r !== NOT_FOUND;\n }\n\n return false;\n};\n\ntproto.queryPoint = function (p, cb) {\n if (this.root) {\n return this.root.queryPoint(p, cb);\n }\n};\n\ntproto.queryInterval = function (lo, hi, cb) {\n if (lo <= hi && this.root) {\n return this.root.queryInterval(lo, hi, cb);\n }\n};\n\nObject.defineProperty(tproto, 'count', {\n get: function get() {\n if (this.root) {\n return this.root.count;\n }\n\n return 0;\n }\n});\nObject.defineProperty(tproto, 'intervals', {\n get: function get() {\n if (this.root) {\n return this.root.intervals([]);\n }\n\n return [];\n }\n});\nexport default function createWrapper(intervals) {\n if (!intervals || intervals.length === 0) {\n return new IntervalTree(null);\n }\n\n return new IntervalTree(createIntervalTree(intervals));\n}","import _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport createIntervalTree from '../vendor/intervalTree'; // Position cache requirements:\n// O(log(n)) lookup of cells to render for a given viewport size\n// O(1) lookup of shortest measured column (so we know when to enter phase 1)\n\nvar PositionCache = /*#__PURE__*/function () {\n function PositionCache() {\n _classCallCheck(this, PositionCache);\n\n _defineProperty(this, \"_columnSizeMap\", {});\n\n _defineProperty(this, \"_intervalTree\", createIntervalTree());\n\n _defineProperty(this, \"_leftMap\", {});\n }\n\n _createClass(PositionCache, [{\n key: \"estimateTotalHeight\",\n value: function estimateTotalHeight(cellCount, columnCount, defaultCellHeight) {\n var unmeasuredCellCount = cellCount - this.count;\n return this.tallestColumnSize + Math.ceil(unmeasuredCellCount / columnCount) * defaultCellHeight;\n } // Render all cells visible within the viewport range defined.\n\n }, {\n key: \"range\",\n value: function range(scrollTop, clientHeight, renderCallback) {\n var _this = this;\n\n this._intervalTree.queryInterval(scrollTop, scrollTop + clientHeight, function (_ref) {\n var _ref2 = _slicedToArray(_ref, 3),\n top = _ref2[0],\n _ = _ref2[1],\n index = _ref2[2];\n\n return renderCallback(index, _this._leftMap[index], top);\n });\n }\n }, {\n key: \"setPosition\",\n value: function setPosition(index, left, top, height) {\n this._intervalTree.insert([top, top + height, index]);\n\n this._leftMap[index] = left;\n var columnSizeMap = this._columnSizeMap;\n var columnHeight = columnSizeMap[left];\n\n if (columnHeight === undefined) {\n columnSizeMap[left] = top + height;\n } else {\n columnSizeMap[left] = Math.max(columnHeight, top + height);\n }\n }\n }, {\n key: \"count\",\n get: function get() {\n return this._intervalTree.count;\n }\n }, {\n key: \"shortestColumnSize\",\n get: function get() {\n var columnSizeMap = this._columnSizeMap;\n var size = 0;\n\n for (var i in columnSizeMap) {\n var height = columnSizeMap[i];\n size = size === 0 ? height : Math.min(size, height);\n }\n\n return size;\n }\n }, {\n key: \"tallestColumnSize\",\n get: function get() {\n var columnSizeMap = this._columnSizeMap;\n var size = 0;\n\n for (var i in columnSizeMap) {\n var height = columnSizeMap[i];\n size = Math.max(size, height);\n }\n\n return size;\n }\n }]);\n\n return PositionCache;\n}();\n\nexport { PositionCache as default };","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nvar _class, _temp;\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(source, true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(source).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nimport clsx from 'clsx';\nimport * as React from 'react';\nimport { polyfill } from 'react-lifecycles-compat';\nimport PositionCache from './PositionCache';\nimport { requestAnimationTimeout, cancelAnimationTimeout } from '../utils/requestAnimationTimeout';\nvar emptyObject = {};\n/**\n * Specifies the number of miliseconds during which to disable pointer events while a scroll is in progress.\n * This improves performance and makes scrolling smoother.\n */\n\nexport var DEFAULT_SCROLLING_RESET_TIME_INTERVAL = 150;\n/**\n * This component efficiently displays arbitrarily positioned cells using windowing techniques.\n * Cell position is determined by an injected `cellPositioner` property.\n * Windowing is vertical; this component does not support horizontal scrolling.\n *\n * Rendering occurs in two phases:\n * 1) First pass uses estimated cell sizes (provided by the cache) to determine how many cells to measure in a batch.\n * Batch size is chosen using a fast, naive layout algorithm that stacks images in order until the viewport has been filled.\n * After measurement is complete (componentDidMount or componentDidUpdate) this component evaluates positioned cells\n * in order to determine if another measurement pass is required (eg if actual cell sizes were less than estimated sizes).\n * All measurements are permanently cached (keyed by `keyMapper`) for performance purposes.\n * 2) Second pass uses the external `cellPositioner` to layout cells.\n * At this time the positioner has access to cached size measurements for all cells.\n * The positions it returns are cached by Masonry for fast access later.\n * Phase one is repeated if the user scrolls beyond the current layout's bounds.\n * If the layout is invalidated due to eg a resize, cached positions can be cleared using `recomputeCellPositions()`.\n *\n * Animation constraints:\n * Simple animations are supported (eg translate/slide into place on initial reveal).\n * More complex animations are not (eg flying from one position to another on resize).\n *\n * Layout constraints:\n * This component supports multi-column layout.\n * The height of each item may vary.\n * The width of each item must not exceed the width of the column it is \"in\".\n * The left position of all items within a column must align.\n * (Items may not span multiple columns.)\n */\n\nvar Masonry = (_temp = _class = /*#__PURE__*/function (_React$PureComponent) {\n _inherits(Masonry, _React$PureComponent);\n\n function Masonry() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, Masonry);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(Masonry)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n isScrolling: false,\n scrollTop: 0\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_debounceResetIsScrollingId\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_invalidateOnUpdateStartIndex\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"_invalidateOnUpdateStopIndex\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"_positionCache\", new PositionCache());\n\n _defineProperty(_assertThisInitialized(_this), \"_startIndex\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"_startIndexMemoized\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"_stopIndex\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"_stopIndexMemoized\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"_debounceResetIsScrollingCallback\", function () {\n _this.setState({\n isScrolling: false\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_setScrollingContainerRef\", function (ref) {\n _this._scrollingContainer = ref;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onScroll\", function (event) {\n var height = _this.props.height;\n var eventScrollTop = event.currentTarget.scrollTop; // When this component is shrunk drastically, React dispatches a series of back-to-back scroll events,\n // Gradually converging on a scrollTop that is within the bounds of the new, smaller height.\n // This causes a series of rapid renders that is slow for long lists.\n // We can avoid that by doing some simple bounds checking to ensure that scroll offsets never exceed their bounds.\n\n var scrollTop = Math.min(Math.max(0, _this._getEstimatedTotalHeight() - height), eventScrollTop); // On iOS, we can arrive at negative offsets by swiping past the start or end.\n // Avoid re-rendering in this case as it can cause problems; see #532 for more.\n\n if (eventScrollTop !== scrollTop) {\n return;\n } // Prevent pointer events from interrupting a smooth scroll\n\n\n _this._debounceResetIsScrolling(); // Certain devices (like Apple touchpad) rapid-fire duplicate events.\n // Don't force a re-render if this is the case.\n // The mouse may move faster then the animation frame does.\n // Use requestAnimationFrame to avoid over-updating.\n\n\n if (_this.state.scrollTop !== scrollTop) {\n _this.setState({\n isScrolling: true,\n scrollTop: scrollTop\n });\n }\n });\n\n return _this;\n }\n\n _createClass(Masonry, [{\n key: \"clearCellPositions\",\n value: function clearCellPositions() {\n this._positionCache = new PositionCache();\n this.forceUpdate();\n } // HACK This method signature was intended for Grid\n\n }, {\n key: \"invalidateCellSizeAfterRender\",\n value: function invalidateCellSizeAfterRender(_ref) {\n var index = _ref.rowIndex;\n\n if (this._invalidateOnUpdateStartIndex === null) {\n this._invalidateOnUpdateStartIndex = index;\n this._invalidateOnUpdateStopIndex = index;\n } else {\n this._invalidateOnUpdateStartIndex = Math.min(this._invalidateOnUpdateStartIndex, index);\n this._invalidateOnUpdateStopIndex = Math.max(this._invalidateOnUpdateStopIndex, index);\n }\n }\n }, {\n key: \"recomputeCellPositions\",\n value: function recomputeCellPositions() {\n var stopIndex = this._positionCache.count - 1;\n this._positionCache = new PositionCache();\n\n this._populatePositionCache(0, stopIndex);\n\n this.forceUpdate();\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this._checkInvalidateOnUpdate();\n\n this._invokeOnScrollCallback();\n\n this._invokeOnCellsRenderedCallback();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps, prevState) {\n this._checkInvalidateOnUpdate();\n\n this._invokeOnScrollCallback();\n\n this._invokeOnCellsRenderedCallback();\n\n if (this.props.scrollTop !== prevProps.scrollTop) {\n this._debounceResetIsScrolling();\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (this._debounceResetIsScrollingId) {\n cancelAnimationTimeout(this._debounceResetIsScrollingId);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props = this.props,\n autoHeight = _this$props.autoHeight,\n cellCount = _this$props.cellCount,\n cellMeasurerCache = _this$props.cellMeasurerCache,\n cellRenderer = _this$props.cellRenderer,\n className = _this$props.className,\n height = _this$props.height,\n id = _this$props.id,\n keyMapper = _this$props.keyMapper,\n overscanByPixels = _this$props.overscanByPixels,\n role = _this$props.role,\n style = _this$props.style,\n tabIndex = _this$props.tabIndex,\n width = _this$props.width,\n rowDirection = _this$props.rowDirection;\n var _this$state = this.state,\n isScrolling = _this$state.isScrolling,\n scrollTop = _this$state.scrollTop;\n var children = [];\n\n var estimateTotalHeight = this._getEstimatedTotalHeight();\n\n var shortestColumnSize = this._positionCache.shortestColumnSize;\n var measuredCellCount = this._positionCache.count;\n var startIndex = 0;\n var stopIndex;\n\n this._positionCache.range(Math.max(0, scrollTop - overscanByPixels), height + overscanByPixels * 2, function (index, left, top) {\n var _style;\n\n if (typeof stopIndex === 'undefined') {\n startIndex = index;\n stopIndex = index;\n } else {\n startIndex = Math.min(startIndex, index);\n stopIndex = Math.max(stopIndex, index);\n }\n\n children.push(cellRenderer({\n index: index,\n isScrolling: isScrolling,\n key: keyMapper(index),\n parent: _this2,\n style: (_style = {\n height: cellMeasurerCache.getHeight(index)\n }, _defineProperty(_style, rowDirection === 'ltr' ? 'left' : 'right', left), _defineProperty(_style, \"position\", 'absolute'), _defineProperty(_style, \"top\", top), _defineProperty(_style, \"width\", cellMeasurerCache.getWidth(index)), _style)\n }));\n }); // We need to measure additional cells for this layout\n\n\n if (shortestColumnSize < scrollTop + height + overscanByPixels && measuredCellCount < cellCount) {\n var batchSize = Math.min(cellCount - measuredCellCount, Math.ceil((scrollTop + height + overscanByPixels - shortestColumnSize) / cellMeasurerCache.defaultHeight * width / cellMeasurerCache.defaultWidth));\n\n for (var _index = measuredCellCount; _index < measuredCellCount + batchSize; _index++) {\n stopIndex = _index;\n children.push(cellRenderer({\n index: _index,\n isScrolling: isScrolling,\n key: keyMapper(_index),\n parent: this,\n style: {\n width: cellMeasurerCache.getWidth(_index)\n }\n }));\n }\n }\n\n this._startIndex = startIndex;\n this._stopIndex = stopIndex;\n return React.createElement(\"div\", {\n ref: this._setScrollingContainerRef,\n \"aria-label\": this.props['aria-label'],\n className: clsx('ReactVirtualized__Masonry', className),\n id: id,\n onScroll: this._onScroll,\n role: role,\n style: _objectSpread({\n boxSizing: 'border-box',\n direction: 'ltr',\n height: autoHeight ? 'auto' : height,\n overflowX: 'hidden',\n overflowY: estimateTotalHeight < height ? 'hidden' : 'auto',\n position: 'relative',\n width: width,\n WebkitOverflowScrolling: 'touch',\n willChange: 'transform'\n }, style),\n tabIndex: tabIndex\n }, React.createElement(\"div\", {\n className: \"ReactVirtualized__Masonry__innerScrollContainer\",\n style: {\n width: '100%',\n height: estimateTotalHeight,\n maxWidth: '100%',\n maxHeight: estimateTotalHeight,\n overflow: 'hidden',\n pointerEvents: isScrolling ? 'none' : '',\n position: 'relative'\n }\n }, children));\n }\n }, {\n key: \"_checkInvalidateOnUpdate\",\n value: function _checkInvalidateOnUpdate() {\n if (typeof this._invalidateOnUpdateStartIndex === 'number') {\n var startIndex = this._invalidateOnUpdateStartIndex;\n var stopIndex = this._invalidateOnUpdateStopIndex;\n this._invalidateOnUpdateStartIndex = null;\n this._invalidateOnUpdateStopIndex = null; // Query external layout logic for position of newly-measured cells\n\n this._populatePositionCache(startIndex, stopIndex);\n\n this.forceUpdate();\n }\n }\n }, {\n key: \"_debounceResetIsScrolling\",\n value: function _debounceResetIsScrolling() {\n var scrollingResetTimeInterval = this.props.scrollingResetTimeInterval;\n\n if (this._debounceResetIsScrollingId) {\n cancelAnimationTimeout(this._debounceResetIsScrollingId);\n }\n\n this._debounceResetIsScrollingId = requestAnimationTimeout(this._debounceResetIsScrollingCallback, scrollingResetTimeInterval);\n }\n }, {\n key: \"_getEstimatedTotalHeight\",\n value: function _getEstimatedTotalHeight() {\n var _this$props2 = this.props,\n cellCount = _this$props2.cellCount,\n cellMeasurerCache = _this$props2.cellMeasurerCache,\n width = _this$props2.width;\n var estimatedColumnCount = Math.max(1, Math.floor(width / cellMeasurerCache.defaultWidth));\n return this._positionCache.estimateTotalHeight(cellCount, estimatedColumnCount, cellMeasurerCache.defaultHeight);\n }\n }, {\n key: \"_invokeOnScrollCallback\",\n value: function _invokeOnScrollCallback() {\n var _this$props3 = this.props,\n height = _this$props3.height,\n onScroll = _this$props3.onScroll;\n var scrollTop = this.state.scrollTop;\n\n if (this._onScrollMemoized !== scrollTop) {\n onScroll({\n clientHeight: height,\n scrollHeight: this._getEstimatedTotalHeight(),\n scrollTop: scrollTop\n });\n this._onScrollMemoized = scrollTop;\n }\n }\n }, {\n key: \"_invokeOnCellsRenderedCallback\",\n value: function _invokeOnCellsRenderedCallback() {\n if (this._startIndexMemoized !== this._startIndex || this._stopIndexMemoized !== this._stopIndex) {\n var onCellsRendered = this.props.onCellsRendered;\n onCellsRendered({\n startIndex: this._startIndex,\n stopIndex: this._stopIndex\n });\n this._startIndexMemoized = this._startIndex;\n this._stopIndexMemoized = this._stopIndex;\n }\n }\n }, {\n key: \"_populatePositionCache\",\n value: function _populatePositionCache(startIndex, stopIndex) {\n var _this$props4 = this.props,\n cellMeasurerCache = _this$props4.cellMeasurerCache,\n cellPositioner = _this$props4.cellPositioner;\n\n for (var _index2 = startIndex; _index2 <= stopIndex; _index2++) {\n var _cellPositioner = cellPositioner(_index2),\n left = _cellPositioner.left,\n top = _cellPositioner.top;\n\n this._positionCache.setPosition(_index2, left, top, cellMeasurerCache.getHeight(_index2));\n }\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps, prevState) {\n if (nextProps.scrollTop !== undefined && prevState.scrollTop !== nextProps.scrollTop) {\n return {\n isScrolling: true,\n scrollTop: nextProps.scrollTop\n };\n }\n\n return null;\n }\n }]);\n\n return Masonry;\n}(React.PureComponent), _defineProperty(_class, \"propTypes\", process.env.NODE_ENV === 'production' ? null : {\n \"autoHeight\": PropTypes.bool.isRequired,\n \"cellCount\": PropTypes.number.isRequired,\n \"cellMeasurerCache\": function cellMeasurerCache() {\n return (typeof CellMeasurerCache === \"function\" ? PropTypes.instanceOf(CellMeasurerCache).isRequired : PropTypes.any.isRequired).apply(this, arguments);\n },\n \"cellPositioner\": function cellPositioner() {\n return (typeof Positioner === \"function\" ? PropTypes.instanceOf(Positioner).isRequired : PropTypes.any.isRequired).apply(this, arguments);\n },\n \"cellRenderer\": function cellRenderer() {\n return (typeof CellRenderer === \"function\" ? PropTypes.instanceOf(CellRenderer).isRequired : PropTypes.any.isRequired).apply(this, arguments);\n },\n \"className\": PropTypes.string,\n \"height\": PropTypes.number.isRequired,\n \"id\": PropTypes.string,\n \"keyMapper\": function keyMapper() {\n return (typeof KeyMapper === \"function\" ? PropTypes.instanceOf(KeyMapper).isRequired : PropTypes.any.isRequired).apply(this, arguments);\n },\n \"onCellsRendered\": function onCellsRendered() {\n return (typeof OnCellsRenderedCallback === \"function\" ? PropTypes.instanceOf(OnCellsRenderedCallback) : PropTypes.any).apply(this, arguments);\n },\n \"onScroll\": function onScroll() {\n return (typeof OnScrollCallback === \"function\" ? PropTypes.instanceOf(OnScrollCallback) : PropTypes.any).apply(this, arguments);\n },\n \"overscanByPixels\": PropTypes.number.isRequired,\n \"role\": PropTypes.string.isRequired,\n \"scrollingResetTimeInterval\": PropTypes.number.isRequired,\n \"style\": function style(props, propName, componentName) {\n if (!Object.prototype.hasOwnProperty.call(props, propName)) {\n throw new Error(\"Prop `\".concat(propName, \"` has type 'any' or 'mixed', but was not provided to `\").concat(componentName, \"`. Pass undefined or any other value.\"));\n }\n },\n \"tabIndex\": PropTypes.number.isRequired,\n \"width\": PropTypes.number.isRequired,\n \"rowDirection\": PropTypes.string.isRequired,\n \"scrollTop\": PropTypes.number\n}), _temp);\n\n_defineProperty(Masonry, \"defaultProps\", {\n autoHeight: false,\n keyMapper: identity,\n onCellsRendered: noop,\n onScroll: noop,\n overscanByPixels: 20,\n role: 'grid',\n scrollingResetTimeInterval: DEFAULT_SCROLLING_RESET_TIME_INTERVAL,\n style: emptyObject,\n tabIndex: 0,\n rowDirection: 'ltr'\n});\n\nfunction identity(value) {\n return value;\n}\n\nfunction noop() {}\n\nvar bpfrpt_proptype_CellMeasurerCache = process.env.NODE_ENV === 'production' ? null : {\n \"defaultHeight\": PropTypes.number.isRequired,\n \"defaultWidth\": PropTypes.number.isRequired,\n \"getHeight\": PropTypes.func.isRequired,\n \"getWidth\": PropTypes.func.isRequired\n};\npolyfill(Masonry);\nexport default Masonry;\nvar bpfrpt_proptype_Positioner = process.env.NODE_ENV === 'production' ? null : PropTypes.func;\nimport { bpfrpt_proptype_AnimationTimeoutId } from \"../utils/requestAnimationTimeout\";\nimport PropTypes from \"prop-types\";\nexport { bpfrpt_proptype_CellMeasurerCache };\nexport { bpfrpt_proptype_Positioner };","import createCellPositioner from './createCellPositioner';\nimport Masonry from './Masonry';\nexport default Masonry;\nexport { createCellPositioner, Masonry };","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport { CellMeasurerCache } from '../CellMeasurer';\n/**\n * Caches measurements for a given cell.\n */\n\nvar CellMeasurerCacheDecorator = /*#__PURE__*/function () {\n function CellMeasurerCacheDecorator() {\n var _this = this;\n\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, CellMeasurerCacheDecorator);\n\n _defineProperty(this, \"_cellMeasurerCache\", void 0);\n\n _defineProperty(this, \"_columnIndexOffset\", void 0);\n\n _defineProperty(this, \"_rowIndexOffset\", void 0);\n\n _defineProperty(this, \"columnWidth\", function (_ref) {\n var index = _ref.index;\n\n _this._cellMeasurerCache.columnWidth({\n index: index + _this._columnIndexOffset\n });\n });\n\n _defineProperty(this, \"rowHeight\", function (_ref2) {\n var index = _ref2.index;\n\n _this._cellMeasurerCache.rowHeight({\n index: index + _this._rowIndexOffset\n });\n });\n\n var cellMeasurerCache = params.cellMeasurerCache,\n _params$columnIndexOf = params.columnIndexOffset,\n columnIndexOffset = _params$columnIndexOf === void 0 ? 0 : _params$columnIndexOf,\n _params$rowIndexOffse = params.rowIndexOffset,\n rowIndexOffset = _params$rowIndexOffse === void 0 ? 0 : _params$rowIndexOffse;\n this._cellMeasurerCache = cellMeasurerCache;\n this._columnIndexOffset = columnIndexOffset;\n this._rowIndexOffset = rowIndexOffset;\n }\n\n _createClass(CellMeasurerCacheDecorator, [{\n key: \"clear\",\n value: function clear(rowIndex, columnIndex) {\n this._cellMeasurerCache.clear(rowIndex + this._rowIndexOffset, columnIndex + this._columnIndexOffset);\n }\n }, {\n key: \"clearAll\",\n value: function clearAll() {\n this._cellMeasurerCache.clearAll();\n }\n }, {\n key: \"hasFixedHeight\",\n value: function hasFixedHeight() {\n return this._cellMeasurerCache.hasFixedHeight();\n }\n }, {\n key: \"hasFixedWidth\",\n value: function hasFixedWidth() {\n return this._cellMeasurerCache.hasFixedWidth();\n }\n }, {\n key: \"getHeight\",\n value: function getHeight(rowIndex) {\n var columnIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n return this._cellMeasurerCache.getHeight(rowIndex + this._rowIndexOffset, columnIndex + this._columnIndexOffset);\n }\n }, {\n key: \"getWidth\",\n value: function getWidth(rowIndex) {\n var columnIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n return this._cellMeasurerCache.getWidth(rowIndex + this._rowIndexOffset, columnIndex + this._columnIndexOffset);\n }\n }, {\n key: \"has\",\n value: function has(rowIndex) {\n var columnIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n return this._cellMeasurerCache.has(rowIndex + this._rowIndexOffset, columnIndex + this._columnIndexOffset);\n }\n }, {\n key: \"set\",\n value: function set(rowIndex, columnIndex, width, height) {\n this._cellMeasurerCache.set(rowIndex + this._rowIndexOffset, columnIndex + this._columnIndexOffset, width, height);\n }\n }, {\n key: \"defaultHeight\",\n get: function get() {\n return this._cellMeasurerCache.defaultHeight;\n }\n }, {\n key: \"defaultWidth\",\n get: function get() {\n return this._cellMeasurerCache.defaultWidth;\n }\n }]);\n\n return CellMeasurerCacheDecorator;\n}();\n\nexport { CellMeasurerCacheDecorator as default };","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(source, true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(source).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nimport * as React from 'react';\nimport { polyfill } from 'react-lifecycles-compat';\nimport CellMeasurerCacheDecorator from './CellMeasurerCacheDecorator';\nimport Grid from '../Grid';\nvar SCROLLBAR_SIZE_BUFFER = 20;\n/**\n * Renders 1, 2, or 4 Grids depending on configuration.\n * A main (body) Grid will always be rendered.\n * Optionally, 1-2 Grids for sticky header rows will also be rendered.\n * If no sticky columns, only 1 sticky header Grid will be rendered.\n * If sticky columns, 2 sticky header Grids will be rendered.\n */\n\nvar MultiGrid = /*#__PURE__*/function (_React$PureComponent) {\n _inherits(MultiGrid, _React$PureComponent);\n\n function MultiGrid(props, context) {\n var _this;\n\n _classCallCheck(this, MultiGrid);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(MultiGrid).call(this, props, context));\n\n _defineProperty(_assertThisInitialized(_this), \"state\", {\n scrollLeft: 0,\n scrollTop: 0,\n scrollbarSize: 0,\n showHorizontalScrollbar: false,\n showVerticalScrollbar: false\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_deferredInvalidateColumnIndex\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"_deferredInvalidateRowIndex\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"_bottomLeftGridRef\", function (ref) {\n _this._bottomLeftGrid = ref;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_bottomRightGridRef\", function (ref) {\n _this._bottomRightGrid = ref;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_cellRendererBottomLeftGrid\", function (_ref) {\n var rowIndex = _ref.rowIndex,\n rest = _objectWithoutProperties(_ref, [\"rowIndex\"]);\n\n var _this$props = _this.props,\n cellRenderer = _this$props.cellRenderer,\n fixedRowCount = _this$props.fixedRowCount,\n rowCount = _this$props.rowCount;\n\n if (rowIndex === rowCount - fixedRowCount) {\n return React.createElement(\"div\", {\n key: rest.key,\n style: _objectSpread({}, rest.style, {\n height: SCROLLBAR_SIZE_BUFFER\n })\n });\n } else {\n return cellRenderer(_objectSpread({}, rest, {\n parent: _assertThisInitialized(_this),\n rowIndex: rowIndex + fixedRowCount\n }));\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_cellRendererBottomRightGrid\", function (_ref2) {\n var columnIndex = _ref2.columnIndex,\n rowIndex = _ref2.rowIndex,\n rest = _objectWithoutProperties(_ref2, [\"columnIndex\", \"rowIndex\"]);\n\n var _this$props2 = _this.props,\n cellRenderer = _this$props2.cellRenderer,\n fixedColumnCount = _this$props2.fixedColumnCount,\n fixedRowCount = _this$props2.fixedRowCount;\n return cellRenderer(_objectSpread({}, rest, {\n columnIndex: columnIndex + fixedColumnCount,\n parent: _assertThisInitialized(_this),\n rowIndex: rowIndex + fixedRowCount\n }));\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_cellRendererTopRightGrid\", function (_ref3) {\n var columnIndex = _ref3.columnIndex,\n rest = _objectWithoutProperties(_ref3, [\"columnIndex\"]);\n\n var _this$props3 = _this.props,\n cellRenderer = _this$props3.cellRenderer,\n columnCount = _this$props3.columnCount,\n fixedColumnCount = _this$props3.fixedColumnCount;\n\n if (columnIndex === columnCount - fixedColumnCount) {\n return React.createElement(\"div\", {\n key: rest.key,\n style: _objectSpread({}, rest.style, {\n width: SCROLLBAR_SIZE_BUFFER\n })\n });\n } else {\n return cellRenderer(_objectSpread({}, rest, {\n columnIndex: columnIndex + fixedColumnCount,\n parent: _assertThisInitialized(_this)\n }));\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_columnWidthRightGrid\", function (_ref4) {\n var index = _ref4.index;\n var _this$props4 = _this.props,\n columnCount = _this$props4.columnCount,\n fixedColumnCount = _this$props4.fixedColumnCount,\n columnWidth = _this$props4.columnWidth;\n var _this$state = _this.state,\n scrollbarSize = _this$state.scrollbarSize,\n showHorizontalScrollbar = _this$state.showHorizontalScrollbar; // An extra cell is added to the count\n // This gives the smaller Grid extra room for offset,\n // In case the main (bottom right) Grid has a scrollbar\n // If no scrollbar, the extra space is overflow:hidden anyway\n\n if (showHorizontalScrollbar && index === columnCount - fixedColumnCount) {\n return scrollbarSize;\n }\n\n return typeof columnWidth === 'function' ? columnWidth({\n index: index + fixedColumnCount\n }) : columnWidth;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onScroll\", function (scrollInfo) {\n var scrollLeft = scrollInfo.scrollLeft,\n scrollTop = scrollInfo.scrollTop;\n\n _this.setState({\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n });\n\n var onScroll = _this.props.onScroll;\n\n if (onScroll) {\n onScroll(scrollInfo);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onScrollbarPresenceChange\", function (_ref5) {\n var horizontal = _ref5.horizontal,\n size = _ref5.size,\n vertical = _ref5.vertical;\n var _this$state2 = _this.state,\n showHorizontalScrollbar = _this$state2.showHorizontalScrollbar,\n showVerticalScrollbar = _this$state2.showVerticalScrollbar;\n\n if (horizontal !== showHorizontalScrollbar || vertical !== showVerticalScrollbar) {\n _this.setState({\n scrollbarSize: size,\n showHorizontalScrollbar: horizontal,\n showVerticalScrollbar: vertical\n });\n\n var onScrollbarPresenceChange = _this.props.onScrollbarPresenceChange;\n\n if (typeof onScrollbarPresenceChange === 'function') {\n onScrollbarPresenceChange({\n horizontal: horizontal,\n size: size,\n vertical: vertical\n });\n }\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onScrollLeft\", function (scrollInfo) {\n var scrollLeft = scrollInfo.scrollLeft;\n\n _this._onScroll({\n scrollLeft: scrollLeft,\n scrollTop: _this.state.scrollTop\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onScrollTop\", function (scrollInfo) {\n var scrollTop = scrollInfo.scrollTop;\n\n _this._onScroll({\n scrollTop: scrollTop,\n scrollLeft: _this.state.scrollLeft\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_rowHeightBottomGrid\", function (_ref6) {\n var index = _ref6.index;\n var _this$props5 = _this.props,\n fixedRowCount = _this$props5.fixedRowCount,\n rowCount = _this$props5.rowCount,\n rowHeight = _this$props5.rowHeight;\n var _this$state3 = _this.state,\n scrollbarSize = _this$state3.scrollbarSize,\n showVerticalScrollbar = _this$state3.showVerticalScrollbar; // An extra cell is added to the count\n // This gives the smaller Grid extra room for offset,\n // In case the main (bottom right) Grid has a scrollbar\n // If no scrollbar, the extra space is overflow:hidden anyway\n\n if (showVerticalScrollbar && index === rowCount - fixedRowCount) {\n return scrollbarSize;\n }\n\n return typeof rowHeight === 'function' ? rowHeight({\n index: index + fixedRowCount\n }) : rowHeight;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_topLeftGridRef\", function (ref) {\n _this._topLeftGrid = ref;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_topRightGridRef\", function (ref) {\n _this._topRightGrid = ref;\n });\n\n var deferredMeasurementCache = props.deferredMeasurementCache,\n _fixedColumnCount = props.fixedColumnCount,\n _fixedRowCount = props.fixedRowCount;\n\n _this._maybeCalculateCachedStyles(true);\n\n if (deferredMeasurementCache) {\n _this._deferredMeasurementCacheBottomLeftGrid = _fixedRowCount > 0 ? new CellMeasurerCacheDecorator({\n cellMeasurerCache: deferredMeasurementCache,\n columnIndexOffset: 0,\n rowIndexOffset: _fixedRowCount\n }) : deferredMeasurementCache;\n _this._deferredMeasurementCacheBottomRightGrid = _fixedColumnCount > 0 || _fixedRowCount > 0 ? new CellMeasurerCacheDecorator({\n cellMeasurerCache: deferredMeasurementCache,\n columnIndexOffset: _fixedColumnCount,\n rowIndexOffset: _fixedRowCount\n }) : deferredMeasurementCache;\n _this._deferredMeasurementCacheTopRightGrid = _fixedColumnCount > 0 ? new CellMeasurerCacheDecorator({\n cellMeasurerCache: deferredMeasurementCache,\n columnIndexOffset: _fixedColumnCount,\n rowIndexOffset: 0\n }) : deferredMeasurementCache;\n }\n\n return _this;\n }\n\n _createClass(MultiGrid, [{\n key: \"forceUpdateGrids\",\n value: function forceUpdateGrids() {\n this._bottomLeftGrid && this._bottomLeftGrid.forceUpdate();\n this._bottomRightGrid && this._bottomRightGrid.forceUpdate();\n this._topLeftGrid && this._topLeftGrid.forceUpdate();\n this._topRightGrid && this._topRightGrid.forceUpdate();\n }\n /** See Grid#invalidateCellSizeAfterRender */\n\n }, {\n key: \"invalidateCellSizeAfterRender\",\n value: function invalidateCellSizeAfterRender() {\n var _ref7 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref7$columnIndex = _ref7.columnIndex,\n columnIndex = _ref7$columnIndex === void 0 ? 0 : _ref7$columnIndex,\n _ref7$rowIndex = _ref7.rowIndex,\n rowIndex = _ref7$rowIndex === void 0 ? 0 : _ref7$rowIndex;\n\n this._deferredInvalidateColumnIndex = typeof this._deferredInvalidateColumnIndex === 'number' ? Math.min(this._deferredInvalidateColumnIndex, columnIndex) : columnIndex;\n this._deferredInvalidateRowIndex = typeof this._deferredInvalidateRowIndex === 'number' ? Math.min(this._deferredInvalidateRowIndex, rowIndex) : rowIndex;\n }\n /** See Grid#measureAllCells */\n\n }, {\n key: \"measureAllCells\",\n value: function measureAllCells() {\n this._bottomLeftGrid && this._bottomLeftGrid.measureAllCells();\n this._bottomRightGrid && this._bottomRightGrid.measureAllCells();\n this._topLeftGrid && this._topLeftGrid.measureAllCells();\n this._topRightGrid && this._topRightGrid.measureAllCells();\n }\n /** See Grid#recomputeGridSize */\n\n }, {\n key: \"recomputeGridSize\",\n value: function recomputeGridSize() {\n var _ref8 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref8$columnIndex = _ref8.columnIndex,\n columnIndex = _ref8$columnIndex === void 0 ? 0 : _ref8$columnIndex,\n _ref8$rowIndex = _ref8.rowIndex,\n rowIndex = _ref8$rowIndex === void 0 ? 0 : _ref8$rowIndex;\n\n var _this$props6 = this.props,\n fixedColumnCount = _this$props6.fixedColumnCount,\n fixedRowCount = _this$props6.fixedRowCount;\n var adjustedColumnIndex = Math.max(0, columnIndex - fixedColumnCount);\n var adjustedRowIndex = Math.max(0, rowIndex - fixedRowCount);\n this._bottomLeftGrid && this._bottomLeftGrid.recomputeGridSize({\n columnIndex: columnIndex,\n rowIndex: adjustedRowIndex\n });\n this._bottomRightGrid && this._bottomRightGrid.recomputeGridSize({\n columnIndex: adjustedColumnIndex,\n rowIndex: adjustedRowIndex\n });\n this._topLeftGrid && this._topLeftGrid.recomputeGridSize({\n columnIndex: columnIndex,\n rowIndex: rowIndex\n });\n this._topRightGrid && this._topRightGrid.recomputeGridSize({\n columnIndex: adjustedColumnIndex,\n rowIndex: rowIndex\n });\n this._leftGridWidth = null;\n this._topGridHeight = null;\n\n this._maybeCalculateCachedStyles(true);\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this$props7 = this.props,\n scrollLeft = _this$props7.scrollLeft,\n scrollTop = _this$props7.scrollTop;\n\n if (scrollLeft > 0 || scrollTop > 0) {\n var newState = {};\n\n if (scrollLeft > 0) {\n newState.scrollLeft = scrollLeft;\n }\n\n if (scrollTop > 0) {\n newState.scrollTop = scrollTop;\n }\n\n this.setState(newState);\n }\n\n this._handleInvalidatedGridSize();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n this._handleInvalidatedGridSize();\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props8 = this.props,\n onScroll = _this$props8.onScroll,\n onSectionRendered = _this$props8.onSectionRendered,\n onScrollbarPresenceChange = _this$props8.onScrollbarPresenceChange,\n scrollLeftProp = _this$props8.scrollLeft,\n scrollToColumn = _this$props8.scrollToColumn,\n scrollTopProp = _this$props8.scrollTop,\n scrollToRow = _this$props8.scrollToRow,\n rest = _objectWithoutProperties(_this$props8, [\"onScroll\", \"onSectionRendered\", \"onScrollbarPresenceChange\", \"scrollLeft\", \"scrollToColumn\", \"scrollTop\", \"scrollToRow\"]);\n\n this._prepareForRender(); // Don't render any of our Grids if there are no cells.\n // This mirrors what Grid does,\n // And prevents us from recording inaccurage measurements when used with CellMeasurer.\n\n\n if (this.props.width === 0 || this.props.height === 0) {\n return null;\n } // scrollTop and scrollLeft props are explicitly filtered out and ignored\n\n\n var _this$state4 = this.state,\n scrollLeft = _this$state4.scrollLeft,\n scrollTop = _this$state4.scrollTop;\n return React.createElement(\"div\", {\n style: this._containerOuterStyle\n }, React.createElement(\"div\", {\n style: this._containerTopStyle\n }, this._renderTopLeftGrid(rest), this._renderTopRightGrid(_objectSpread({}, rest, {\n onScroll: onScroll,\n scrollLeft: scrollLeft\n }))), React.createElement(\"div\", {\n style: this._containerBottomStyle\n }, this._renderBottomLeftGrid(_objectSpread({}, rest, {\n onScroll: onScroll,\n scrollTop: scrollTop\n })), this._renderBottomRightGrid(_objectSpread({}, rest, {\n onScroll: onScroll,\n onSectionRendered: onSectionRendered,\n scrollLeft: scrollLeft,\n scrollToColumn: scrollToColumn,\n scrollToRow: scrollToRow,\n scrollTop: scrollTop\n }))));\n }\n }, {\n key: \"_getBottomGridHeight\",\n value: function _getBottomGridHeight(props) {\n var height = props.height;\n\n var topGridHeight = this._getTopGridHeight(props);\n\n return height - topGridHeight;\n }\n }, {\n key: \"_getLeftGridWidth\",\n value: function _getLeftGridWidth(props) {\n var fixedColumnCount = props.fixedColumnCount,\n columnWidth = props.columnWidth;\n\n if (this._leftGridWidth == null) {\n if (typeof columnWidth === 'function') {\n var leftGridWidth = 0;\n\n for (var index = 0; index < fixedColumnCount; index++) {\n leftGridWidth += columnWidth({\n index: index\n });\n }\n\n this._leftGridWidth = leftGridWidth;\n } else {\n this._leftGridWidth = columnWidth * fixedColumnCount;\n }\n }\n\n return this._leftGridWidth;\n }\n }, {\n key: \"_getRightGridWidth\",\n value: function _getRightGridWidth(props) {\n var width = props.width;\n\n var leftGridWidth = this._getLeftGridWidth(props);\n\n return width - leftGridWidth;\n }\n }, {\n key: \"_getTopGridHeight\",\n value: function _getTopGridHeight(props) {\n var fixedRowCount = props.fixedRowCount,\n rowHeight = props.rowHeight;\n\n if (this._topGridHeight == null) {\n if (typeof rowHeight === 'function') {\n var topGridHeight = 0;\n\n for (var index = 0; index < fixedRowCount; index++) {\n topGridHeight += rowHeight({\n index: index\n });\n }\n\n this._topGridHeight = topGridHeight;\n } else {\n this._topGridHeight = rowHeight * fixedRowCount;\n }\n }\n\n return this._topGridHeight;\n }\n }, {\n key: \"_handleInvalidatedGridSize\",\n value: function _handleInvalidatedGridSize() {\n if (typeof this._deferredInvalidateColumnIndex === 'number') {\n var columnIndex = this._deferredInvalidateColumnIndex;\n var rowIndex = this._deferredInvalidateRowIndex;\n this._deferredInvalidateColumnIndex = null;\n this._deferredInvalidateRowIndex = null;\n this.recomputeGridSize({\n columnIndex: columnIndex,\n rowIndex: rowIndex\n });\n this.forceUpdate();\n }\n }\n /**\n * Avoid recreating inline styles each render; this bypasses Grid's shallowCompare.\n * This method recalculates styles only when specific props change.\n */\n\n }, {\n key: \"_maybeCalculateCachedStyles\",\n value: function _maybeCalculateCachedStyles(resetAll) {\n var _this$props9 = this.props,\n columnWidth = _this$props9.columnWidth,\n enableFixedColumnScroll = _this$props9.enableFixedColumnScroll,\n enableFixedRowScroll = _this$props9.enableFixedRowScroll,\n height = _this$props9.height,\n fixedColumnCount = _this$props9.fixedColumnCount,\n fixedRowCount = _this$props9.fixedRowCount,\n rowHeight = _this$props9.rowHeight,\n style = _this$props9.style,\n styleBottomLeftGrid = _this$props9.styleBottomLeftGrid,\n styleBottomRightGrid = _this$props9.styleBottomRightGrid,\n styleTopLeftGrid = _this$props9.styleTopLeftGrid,\n styleTopRightGrid = _this$props9.styleTopRightGrid,\n width = _this$props9.width;\n var sizeChange = resetAll || height !== this._lastRenderedHeight || width !== this._lastRenderedWidth;\n var leftSizeChange = resetAll || columnWidth !== this._lastRenderedColumnWidth || fixedColumnCount !== this._lastRenderedFixedColumnCount;\n var topSizeChange = resetAll || fixedRowCount !== this._lastRenderedFixedRowCount || rowHeight !== this._lastRenderedRowHeight;\n\n if (resetAll || sizeChange || style !== this._lastRenderedStyle) {\n this._containerOuterStyle = _objectSpread({\n height: height,\n overflow: 'visible',\n // Let :focus outline show through\n width: width\n }, style);\n }\n\n if (resetAll || sizeChange || topSizeChange) {\n this._containerTopStyle = {\n height: this._getTopGridHeight(this.props),\n position: 'relative',\n width: width\n };\n this._containerBottomStyle = {\n height: height - this._getTopGridHeight(this.props),\n overflow: 'visible',\n // Let :focus outline show through\n position: 'relative',\n width: width\n };\n }\n\n if (resetAll || styleBottomLeftGrid !== this._lastRenderedStyleBottomLeftGrid) {\n this._bottomLeftGridStyle = _objectSpread({\n left: 0,\n overflowX: 'hidden',\n overflowY: enableFixedColumnScroll ? 'auto' : 'hidden',\n position: 'absolute'\n }, styleBottomLeftGrid);\n }\n\n if (resetAll || leftSizeChange || styleBottomRightGrid !== this._lastRenderedStyleBottomRightGrid) {\n this._bottomRightGridStyle = _objectSpread({\n left: this._getLeftGridWidth(this.props),\n position: 'absolute'\n }, styleBottomRightGrid);\n }\n\n if (resetAll || styleTopLeftGrid !== this._lastRenderedStyleTopLeftGrid) {\n this._topLeftGridStyle = _objectSpread({\n left: 0,\n overflowX: 'hidden',\n overflowY: 'hidden',\n position: 'absolute',\n top: 0\n }, styleTopLeftGrid);\n }\n\n if (resetAll || leftSizeChange || styleTopRightGrid !== this._lastRenderedStyleTopRightGrid) {\n this._topRightGridStyle = _objectSpread({\n left: this._getLeftGridWidth(this.props),\n overflowX: enableFixedRowScroll ? 'auto' : 'hidden',\n overflowY: 'hidden',\n position: 'absolute',\n top: 0\n }, styleTopRightGrid);\n }\n\n this._lastRenderedColumnWidth = columnWidth;\n this._lastRenderedFixedColumnCount = fixedColumnCount;\n this._lastRenderedFixedRowCount = fixedRowCount;\n this._lastRenderedHeight = height;\n this._lastRenderedRowHeight = rowHeight;\n this._lastRenderedStyle = style;\n this._lastRenderedStyleBottomLeftGrid = styleBottomLeftGrid;\n this._lastRenderedStyleBottomRightGrid = styleBottomRightGrid;\n this._lastRenderedStyleTopLeftGrid = styleTopLeftGrid;\n this._lastRenderedStyleTopRightGrid = styleTopRightGrid;\n this._lastRenderedWidth = width;\n }\n }, {\n key: \"_prepareForRender\",\n value: function _prepareForRender() {\n if (this._lastRenderedColumnWidth !== this.props.columnWidth || this._lastRenderedFixedColumnCount !== this.props.fixedColumnCount) {\n this._leftGridWidth = null;\n }\n\n if (this._lastRenderedFixedRowCount !== this.props.fixedRowCount || this._lastRenderedRowHeight !== this.props.rowHeight) {\n this._topGridHeight = null;\n }\n\n this._maybeCalculateCachedStyles();\n\n this._lastRenderedColumnWidth = this.props.columnWidth;\n this._lastRenderedFixedColumnCount = this.props.fixedColumnCount;\n this._lastRenderedFixedRowCount = this.props.fixedRowCount;\n this._lastRenderedRowHeight = this.props.rowHeight;\n }\n }, {\n key: \"_renderBottomLeftGrid\",\n value: function _renderBottomLeftGrid(props) {\n var enableFixedColumnScroll = props.enableFixedColumnScroll,\n fixedColumnCount = props.fixedColumnCount,\n fixedRowCount = props.fixedRowCount,\n rowCount = props.rowCount,\n hideBottomLeftGridScrollbar = props.hideBottomLeftGridScrollbar;\n var showVerticalScrollbar = this.state.showVerticalScrollbar;\n\n if (!fixedColumnCount) {\n return null;\n }\n\n var additionalRowCount = showVerticalScrollbar ? 1 : 0,\n height = this._getBottomGridHeight(props),\n width = this._getLeftGridWidth(props),\n scrollbarSize = this.state.showVerticalScrollbar ? this.state.scrollbarSize : 0,\n gridWidth = hideBottomLeftGridScrollbar ? width + scrollbarSize : width;\n\n var bottomLeftGrid = React.createElement(Grid, _extends({}, props, {\n cellRenderer: this._cellRendererBottomLeftGrid,\n className: this.props.classNameBottomLeftGrid,\n columnCount: fixedColumnCount,\n deferredMeasurementCache: this._deferredMeasurementCacheBottomLeftGrid,\n height: height,\n onScroll: enableFixedColumnScroll ? this._onScrollTop : undefined,\n ref: this._bottomLeftGridRef,\n rowCount: Math.max(0, rowCount - fixedRowCount) + additionalRowCount,\n rowHeight: this._rowHeightBottomGrid,\n style: this._bottomLeftGridStyle,\n tabIndex: null,\n width: gridWidth\n }));\n\n if (hideBottomLeftGridScrollbar) {\n return React.createElement(\"div\", {\n className: \"BottomLeftGrid_ScrollWrapper\",\n style: _objectSpread({}, this._bottomLeftGridStyle, {\n height: height,\n width: width,\n overflowY: 'hidden'\n })\n }, bottomLeftGrid);\n }\n\n return bottomLeftGrid;\n }\n }, {\n key: \"_renderBottomRightGrid\",\n value: function _renderBottomRightGrid(props) {\n var columnCount = props.columnCount,\n fixedColumnCount = props.fixedColumnCount,\n fixedRowCount = props.fixedRowCount,\n rowCount = props.rowCount,\n scrollToColumn = props.scrollToColumn,\n scrollToRow = props.scrollToRow;\n return React.createElement(Grid, _extends({}, props, {\n cellRenderer: this._cellRendererBottomRightGrid,\n className: this.props.classNameBottomRightGrid,\n columnCount: Math.max(0, columnCount - fixedColumnCount),\n columnWidth: this._columnWidthRightGrid,\n deferredMeasurementCache: this._deferredMeasurementCacheBottomRightGrid,\n height: this._getBottomGridHeight(props),\n onScroll: this._onScroll,\n onScrollbarPresenceChange: this._onScrollbarPresenceChange,\n ref: this._bottomRightGridRef,\n rowCount: Math.max(0, rowCount - fixedRowCount),\n rowHeight: this._rowHeightBottomGrid,\n scrollToColumn: scrollToColumn - fixedColumnCount,\n scrollToRow: scrollToRow - fixedRowCount,\n style: this._bottomRightGridStyle,\n width: this._getRightGridWidth(props)\n }));\n }\n }, {\n key: \"_renderTopLeftGrid\",\n value: function _renderTopLeftGrid(props) {\n var fixedColumnCount = props.fixedColumnCount,\n fixedRowCount = props.fixedRowCount;\n\n if (!fixedColumnCount || !fixedRowCount) {\n return null;\n }\n\n return React.createElement(Grid, _extends({}, props, {\n className: this.props.classNameTopLeftGrid,\n columnCount: fixedColumnCount,\n height: this._getTopGridHeight(props),\n ref: this._topLeftGridRef,\n rowCount: fixedRowCount,\n style: this._topLeftGridStyle,\n tabIndex: null,\n width: this._getLeftGridWidth(props)\n }));\n }\n }, {\n key: \"_renderTopRightGrid\",\n value: function _renderTopRightGrid(props) {\n var columnCount = props.columnCount,\n enableFixedRowScroll = props.enableFixedRowScroll,\n fixedColumnCount = props.fixedColumnCount,\n fixedRowCount = props.fixedRowCount,\n scrollLeft = props.scrollLeft,\n hideTopRightGridScrollbar = props.hideTopRightGridScrollbar;\n var _this$state5 = this.state,\n showHorizontalScrollbar = _this$state5.showHorizontalScrollbar,\n scrollbarSize = _this$state5.scrollbarSize;\n\n if (!fixedRowCount) {\n return null;\n }\n\n var additionalColumnCount = showHorizontalScrollbar ? 1 : 0,\n height = this._getTopGridHeight(props),\n width = this._getRightGridWidth(props),\n additionalHeight = showHorizontalScrollbar ? scrollbarSize : 0;\n\n var gridHeight = height,\n style = this._topRightGridStyle;\n\n if (hideTopRightGridScrollbar) {\n gridHeight = height + additionalHeight;\n style = _objectSpread({}, this._topRightGridStyle, {\n left: 0\n });\n }\n\n var topRightGrid = React.createElement(Grid, _extends({}, props, {\n cellRenderer: this._cellRendererTopRightGrid,\n className: this.props.classNameTopRightGrid,\n columnCount: Math.max(0, columnCount - fixedColumnCount) + additionalColumnCount,\n columnWidth: this._columnWidthRightGrid,\n deferredMeasurementCache: this._deferredMeasurementCacheTopRightGrid,\n height: gridHeight,\n onScroll: enableFixedRowScroll ? this._onScrollLeft : undefined,\n ref: this._topRightGridRef,\n rowCount: fixedRowCount,\n scrollLeft: scrollLeft,\n style: style,\n tabIndex: null,\n width: width\n }));\n\n if (hideTopRightGridScrollbar) {\n return React.createElement(\"div\", {\n className: \"TopRightGrid_ScrollWrapper\",\n style: _objectSpread({}, this._topRightGridStyle, {\n height: height,\n width: width,\n overflowX: 'hidden'\n })\n }, topRightGrid);\n }\n\n return topRightGrid;\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps, prevState) {\n if (nextProps.scrollLeft !== prevState.scrollLeft || nextProps.scrollTop !== prevState.scrollTop) {\n return {\n scrollLeft: nextProps.scrollLeft != null && nextProps.scrollLeft >= 0 ? nextProps.scrollLeft : prevState.scrollLeft,\n scrollTop: nextProps.scrollTop != null && nextProps.scrollTop >= 0 ? nextProps.scrollTop : prevState.scrollTop\n };\n }\n\n return null;\n }\n }]);\n\n return MultiGrid;\n}(React.PureComponent);\n\n_defineProperty(MultiGrid, \"defaultProps\", {\n classNameBottomLeftGrid: '',\n classNameBottomRightGrid: '',\n classNameTopLeftGrid: '',\n classNameTopRightGrid: '',\n enableFixedColumnScroll: false,\n enableFixedRowScroll: false,\n fixedColumnCount: 0,\n fixedRowCount: 0,\n scrollToColumn: -1,\n scrollToRow: -1,\n style: {},\n styleBottomLeftGrid: {},\n styleBottomRightGrid: {},\n styleTopLeftGrid: {},\n styleTopRightGrid: {},\n hideTopRightGridScrollbar: false,\n hideBottomLeftGridScrollbar: false\n});\n\npolyfill(MultiGrid);\nexport default MultiGrid;","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\n/**\n * HOC that simplifies the process of synchronizing scrolling between two or more virtualized components.\n */\n\nvar ScrollSync = /*#__PURE__*/function (_React$PureComponent) {\n _inherits(ScrollSync, _React$PureComponent);\n\n function ScrollSync(props, context) {\n var _this;\n\n _classCallCheck(this, ScrollSync);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(ScrollSync).call(this, props, context));\n _this.state = {\n clientHeight: 0,\n clientWidth: 0,\n scrollHeight: 0,\n scrollLeft: 0,\n scrollTop: 0,\n scrollWidth: 0\n };\n _this._onScroll = _this._onScroll.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n _createClass(ScrollSync, [{\n key: \"render\",\n value: function render() {\n var children = this.props.children;\n var _this$state = this.state,\n clientHeight = _this$state.clientHeight,\n clientWidth = _this$state.clientWidth,\n scrollHeight = _this$state.scrollHeight,\n scrollLeft = _this$state.scrollLeft,\n scrollTop = _this$state.scrollTop,\n scrollWidth = _this$state.scrollWidth;\n return children({\n clientHeight: clientHeight,\n clientWidth: clientWidth,\n onScroll: this._onScroll,\n scrollHeight: scrollHeight,\n scrollLeft: scrollLeft,\n scrollTop: scrollTop,\n scrollWidth: scrollWidth\n });\n }\n }, {\n key: \"_onScroll\",\n value: function _onScroll(_ref) {\n var clientHeight = _ref.clientHeight,\n clientWidth = _ref.clientWidth,\n scrollHeight = _ref.scrollHeight,\n scrollLeft = _ref.scrollLeft,\n scrollTop = _ref.scrollTop,\n scrollWidth = _ref.scrollWidth;\n this.setState({\n clientHeight: clientHeight,\n clientWidth: clientWidth,\n scrollHeight: scrollHeight,\n scrollLeft: scrollLeft,\n scrollTop: scrollTop,\n scrollWidth: scrollWidth\n });\n }\n }]);\n\n return ScrollSync;\n}(React.PureComponent);\n\nexport { ScrollSync as default };\nScrollSync.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * Function responsible for rendering 2 or more virtualized components.\n * This function should implement the following signature:\n * ({ onScroll, scrollLeft, scrollTop }) => PropTypes.element\n */\n children: PropTypes.func.isRequired\n} : {};","var SortDirection = {\n /**\n * Sort items in ascending order.\n * This means arranging from the lowest value to the highest (e.g. a-z, 0-9).\n */\n ASC: 'ASC',\n\n /**\n * Sort items in descending order.\n * This means arranging from the highest value to the lowest (e.g. z-a, 9-0).\n */\n DESC: 'DESC'\n};\nexport default SortDirection;","import clsx from 'clsx';\nimport * as React from 'react';\nimport SortDirection from './SortDirection';\n/**\n * Displayed beside a header to indicate that a Table is currently sorted by this column.\n */\n\nexport default function SortIndicator(_ref) {\n var sortDirection = _ref.sortDirection;\n var classNames = clsx('ReactVirtualized__Table__sortableHeaderIcon', {\n 'ReactVirtualized__Table__sortableHeaderIcon--ASC': sortDirection === SortDirection.ASC,\n 'ReactVirtualized__Table__sortableHeaderIcon--DESC': sortDirection === SortDirection.DESC\n });\n return React.createElement(\"svg\", {\n className: classNames,\n width: 18,\n height: 18,\n viewBox: \"0 0 24 24\"\n }, sortDirection === SortDirection.ASC ? React.createElement(\"path\", {\n d: \"M7 14l5-5 5 5z\"\n }) : React.createElement(\"path\", {\n d: \"M7 10l5 5 5-5z\"\n }), React.createElement(\"path\", {\n d: \"M0 0h24v24H0z\",\n fill: \"none\"\n }));\n}","import * as React from 'react';\nimport SortIndicator from './SortIndicator';\n/**\n * Default table header renderer.\n */\n\nexport default function defaultHeaderRenderer(_ref) {\n var dataKey = _ref.dataKey,\n label = _ref.label,\n sortBy = _ref.sortBy,\n sortDirection = _ref.sortDirection;\n var showSortIndicator = sortBy === dataKey;\n var children = [React.createElement(\"span\", {\n className: \"ReactVirtualized__Table__headerTruncatedText\",\n key: \"label\",\n title: typeof label === 'string' ? label : null\n }, label)];\n\n if (showSortIndicator) {\n children.push(React.createElement(SortIndicator, {\n key: \"SortIndicator\",\n sortDirection: sortDirection\n }));\n }\n\n return children;\n}\ndefaultHeaderRenderer.propTypes = process.env.NODE_ENV === 'production' ? null : bpfrpt_proptype_HeaderRendererParams === PropTypes.any ? {} : bpfrpt_proptype_HeaderRendererParams;\nimport { bpfrpt_proptype_HeaderRendererParams } from \"./types\";\nimport PropTypes from \"prop-types\";","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\nimport defaultHeaderRenderer from './defaultHeaderRenderer';\nimport defaultCellRenderer from './defaultCellRenderer';\nimport defaultCellDataGetter from './defaultCellDataGetter';\nimport SortDirection from './SortDirection';\n/**\n * Describes the header and cell contents of a table column.\n */\n\nvar Column = /*#__PURE__*/function (_React$Component) {\n _inherits(Column, _React$Component);\n\n function Column() {\n _classCallCheck(this, Column);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(Column).apply(this, arguments));\n }\n\n return Column;\n}(React.Component);\n\n_defineProperty(Column, \"defaultProps\", {\n cellDataGetter: defaultCellDataGetter,\n cellRenderer: defaultCellRenderer,\n defaultSortDirection: SortDirection.ASC,\n flexGrow: 0,\n flexShrink: 1,\n headerRenderer: defaultHeaderRenderer,\n style: {}\n});\n\nexport { Column as default };\nColumn.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /** Optional aria-label value to set on the column header */\n 'aria-label': PropTypes.string,\n\n /**\n * Callback responsible for returning a cell's data, given its :dataKey\n * ({ columnData: any, dataKey: string, rowData: any }): any\n */\n cellDataGetter: PropTypes.func,\n\n /**\n * Callback responsible for rendering a cell's contents.\n * ({ cellData: any, columnData: any, dataKey: string, rowData: any, rowIndex: number }): node\n */\n cellRenderer: PropTypes.func,\n\n /** Optional CSS class to apply to cell */\n className: PropTypes.string,\n\n /** Optional additional data passed to this column's :cellDataGetter */\n columnData: PropTypes.object,\n\n /** Uniquely identifies the row-data attribute corresponding to this cell */\n dataKey: PropTypes.any.isRequired,\n\n /** Optional direction to be used when clicked the first time */\n defaultSortDirection: PropTypes.oneOf([SortDirection.ASC, SortDirection.DESC]),\n\n /** If sort is enabled for the table at large, disable it for this column */\n disableSort: PropTypes.bool,\n\n /** Flex grow style; defaults to 0 */\n flexGrow: PropTypes.number,\n\n /** Flex shrink style; defaults to 1 */\n flexShrink: PropTypes.number,\n\n /** Optional CSS class to apply to this column's header */\n headerClassName: PropTypes.string,\n\n /**\n * Optional callback responsible for rendering a column header contents.\n * ({ columnData: object, dataKey: string, disableSort: boolean, label: node, sortBy: string, sortDirection: string }): PropTypes.node\n */\n headerRenderer: PropTypes.func.isRequired,\n\n /** Optional inline style to apply to this column's header */\n headerStyle: PropTypes.object,\n\n /** Optional id to set on the column header */\n id: PropTypes.string,\n\n /** Header label for this column */\n label: PropTypes.node,\n\n /** Maximum width of column; this property will only be used if :flexGrow is > 0. */\n maxWidth: PropTypes.number,\n\n /** Minimum width of column. */\n minWidth: PropTypes.number,\n\n /** Optional inline style to apply to cell */\n style: PropTypes.object,\n\n /** Flex basis (width) for this column; This value can grow or shrink based on :flexGrow and :flexShrink properties. */\n width: PropTypes.number.isRequired\n} : {};","import _extends from \"@babel/runtime/helpers/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(source, true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(source).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nimport clsx from 'clsx';\nimport Column from './Column';\nimport * as React from 'react';\nimport { findDOMNode } from 'react-dom';\nimport Grid, { accessibilityOverscanIndicesGetter } from '../Grid';\nimport defaultRowRenderer from './defaultRowRenderer';\nimport defaultHeaderRowRenderer from './defaultHeaderRowRenderer';\nimport SortDirection from './SortDirection';\n/**\n * Table component with fixed headers and virtualized rows for improved performance with large data sets.\n * This component expects explicit width, height, and padding parameters.\n */\n\nvar Table = /*#__PURE__*/function (_React$PureComponent) {\n _inherits(Table, _React$PureComponent);\n\n function Table(props) {\n var _this;\n\n _classCallCheck(this, Table);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Table).call(this, props));\n _this.state = {\n scrollbarWidth: 0\n };\n _this._createColumn = _this._createColumn.bind(_assertThisInitialized(_this));\n _this._createRow = _this._createRow.bind(_assertThisInitialized(_this));\n _this._onScroll = _this._onScroll.bind(_assertThisInitialized(_this));\n _this._onSectionRendered = _this._onSectionRendered.bind(_assertThisInitialized(_this));\n _this._setRef = _this._setRef.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n _createClass(Table, [{\n key: \"forceUpdateGrid\",\n value: function forceUpdateGrid() {\n if (this.Grid) {\n this.Grid.forceUpdate();\n }\n }\n /** See Grid#getOffsetForCell */\n\n }, {\n key: \"getOffsetForRow\",\n value: function getOffsetForRow(_ref) {\n var alignment = _ref.alignment,\n index = _ref.index;\n\n if (this.Grid) {\n var _this$Grid$getOffsetF = this.Grid.getOffsetForCell({\n alignment: alignment,\n rowIndex: index\n }),\n scrollTop = _this$Grid$getOffsetF.scrollTop;\n\n return scrollTop;\n }\n\n return 0;\n }\n /** CellMeasurer compatibility */\n\n }, {\n key: \"invalidateCellSizeAfterRender\",\n value: function invalidateCellSizeAfterRender(_ref2) {\n var columnIndex = _ref2.columnIndex,\n rowIndex = _ref2.rowIndex;\n\n if (this.Grid) {\n this.Grid.invalidateCellSizeAfterRender({\n rowIndex: rowIndex,\n columnIndex: columnIndex\n });\n }\n }\n /** See Grid#measureAllCells */\n\n }, {\n key: \"measureAllRows\",\n value: function measureAllRows() {\n if (this.Grid) {\n this.Grid.measureAllCells();\n }\n }\n /** CellMeasurer compatibility */\n\n }, {\n key: \"recomputeGridSize\",\n value: function recomputeGridSize() {\n var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref3$columnIndex = _ref3.columnIndex,\n columnIndex = _ref3$columnIndex === void 0 ? 0 : _ref3$columnIndex,\n _ref3$rowIndex = _ref3.rowIndex,\n rowIndex = _ref3$rowIndex === void 0 ? 0 : _ref3$rowIndex;\n\n if (this.Grid) {\n this.Grid.recomputeGridSize({\n rowIndex: rowIndex,\n columnIndex: columnIndex\n });\n }\n }\n /** See Grid#recomputeGridSize */\n\n }, {\n key: \"recomputeRowHeights\",\n value: function recomputeRowHeights() {\n var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n if (this.Grid) {\n this.Grid.recomputeGridSize({\n rowIndex: index\n });\n }\n }\n /** See Grid#scrollToPosition */\n\n }, {\n key: \"scrollToPosition\",\n value: function scrollToPosition() {\n var scrollTop = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n if (this.Grid) {\n this.Grid.scrollToPosition({\n scrollTop: scrollTop\n });\n }\n }\n /** See Grid#scrollToCell */\n\n }, {\n key: \"scrollToRow\",\n value: function scrollToRow() {\n var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n if (this.Grid) {\n this.Grid.scrollToCell({\n columnIndex: 0,\n rowIndex: index\n });\n }\n }\n }, {\n key: \"getScrollbarWidth\",\n value: function getScrollbarWidth() {\n if (this.Grid) {\n var _Grid = findDOMNode(this.Grid);\n\n var clientWidth = _Grid.clientWidth || 0;\n var offsetWidth = _Grid.offsetWidth || 0;\n return offsetWidth - clientWidth;\n }\n\n return 0;\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this._setScrollbarWidth();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n this._setScrollbarWidth();\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props = this.props,\n children = _this$props.children,\n className = _this$props.className,\n disableHeader = _this$props.disableHeader,\n gridClassName = _this$props.gridClassName,\n gridStyle = _this$props.gridStyle,\n headerHeight = _this$props.headerHeight,\n headerRowRenderer = _this$props.headerRowRenderer,\n height = _this$props.height,\n id = _this$props.id,\n noRowsRenderer = _this$props.noRowsRenderer,\n rowClassName = _this$props.rowClassName,\n rowStyle = _this$props.rowStyle,\n scrollToIndex = _this$props.scrollToIndex,\n style = _this$props.style,\n width = _this$props.width;\n var scrollbarWidth = this.state.scrollbarWidth;\n var availableRowsHeight = disableHeader ? height : height - headerHeight;\n var rowClass = typeof rowClassName === 'function' ? rowClassName({\n index: -1\n }) : rowClassName;\n var rowStyleObject = typeof rowStyle === 'function' ? rowStyle({\n index: -1\n }) : rowStyle; // Precompute and cache column styles before rendering rows and columns to speed things up\n\n this._cachedColumnStyles = [];\n React.Children.toArray(children).forEach(function (column, index) {\n var flexStyles = _this2._getFlexStyleForColumn(column, column.props.style);\n\n _this2._cachedColumnStyles[index] = _objectSpread({\n overflow: 'hidden'\n }, flexStyles);\n }); // Note that we specify :rowCount, :scrollbarWidth, :sortBy, and :sortDirection as properties on Grid even though these have nothing to do with Grid.\n // This is done because Grid is a pure component and won't update unless its properties or state has changed.\n // Any property that should trigger a re-render of Grid then is specified here to avoid a stale display.\n\n return React.createElement(\"div\", {\n \"aria-label\": this.props['aria-label'],\n \"aria-labelledby\": this.props['aria-labelledby'],\n \"aria-colcount\": React.Children.toArray(children).length,\n \"aria-rowcount\": this.props.rowCount,\n className: clsx('ReactVirtualized__Table', className),\n id: id,\n role: \"grid\",\n style: style\n }, !disableHeader && headerRowRenderer({\n className: clsx('ReactVirtualized__Table__headerRow', rowClass),\n columns: this._getHeaderColumns(),\n style: _objectSpread({\n height: headerHeight,\n overflow: 'hidden',\n paddingRight: scrollbarWidth,\n width: width\n }, rowStyleObject)\n }), React.createElement(Grid, _extends({}, this.props, {\n \"aria-readonly\": null,\n autoContainerWidth: true,\n className: clsx('ReactVirtualized__Table__Grid', gridClassName),\n cellRenderer: this._createRow,\n columnWidth: width,\n columnCount: 1,\n height: availableRowsHeight,\n id: undefined,\n noContentRenderer: noRowsRenderer,\n onScroll: this._onScroll,\n onSectionRendered: this._onSectionRendered,\n ref: this._setRef,\n role: \"rowgroup\",\n scrollbarWidth: scrollbarWidth,\n scrollToRow: scrollToIndex,\n style: _objectSpread({}, gridStyle, {\n overflowX: 'hidden'\n })\n })));\n }\n }, {\n key: \"_createColumn\",\n value: function _createColumn(_ref4) {\n var column = _ref4.column,\n columnIndex = _ref4.columnIndex,\n isScrolling = _ref4.isScrolling,\n parent = _ref4.parent,\n rowData = _ref4.rowData,\n rowIndex = _ref4.rowIndex;\n var onColumnClick = this.props.onColumnClick;\n var _column$props = column.props,\n cellDataGetter = _column$props.cellDataGetter,\n cellRenderer = _column$props.cellRenderer,\n className = _column$props.className,\n columnData = _column$props.columnData,\n dataKey = _column$props.dataKey,\n id = _column$props.id;\n var cellData = cellDataGetter({\n columnData: columnData,\n dataKey: dataKey,\n rowData: rowData\n });\n var renderedCell = cellRenderer({\n cellData: cellData,\n columnData: columnData,\n columnIndex: columnIndex,\n dataKey: dataKey,\n isScrolling: isScrolling,\n parent: parent,\n rowData: rowData,\n rowIndex: rowIndex\n });\n\n var onClick = function onClick(event) {\n onColumnClick && onColumnClick({\n columnData: columnData,\n dataKey: dataKey,\n event: event\n });\n };\n\n var style = this._cachedColumnStyles[columnIndex];\n var title = typeof renderedCell === 'string' ? renderedCell : null; // Avoid using object-spread syntax with multiple objects here,\n // Since it results in an extra method call to 'babel-runtime/helpers/extends'\n // See PR https://github.com/bvaughn/react-virtualized/pull/942\n\n return React.createElement(\"div\", {\n \"aria-colindex\": columnIndex + 1,\n \"aria-describedby\": id,\n className: clsx('ReactVirtualized__Table__rowColumn', className),\n key: 'Row' + rowIndex + '-' + 'Col' + columnIndex,\n onClick: onClick,\n role: \"gridcell\",\n style: style,\n title: title\n }, renderedCell);\n }\n }, {\n key: \"_createHeader\",\n value: function _createHeader(_ref5) {\n var column = _ref5.column,\n index = _ref5.index;\n var _this$props2 = this.props,\n headerClassName = _this$props2.headerClassName,\n headerStyle = _this$props2.headerStyle,\n onHeaderClick = _this$props2.onHeaderClick,\n sort = _this$props2.sort,\n sortBy = _this$props2.sortBy,\n sortDirection = _this$props2.sortDirection;\n var _column$props2 = column.props,\n columnData = _column$props2.columnData,\n dataKey = _column$props2.dataKey,\n defaultSortDirection = _column$props2.defaultSortDirection,\n disableSort = _column$props2.disableSort,\n headerRenderer = _column$props2.headerRenderer,\n id = _column$props2.id,\n label = _column$props2.label;\n var sortEnabled = !disableSort && sort;\n var classNames = clsx('ReactVirtualized__Table__headerColumn', headerClassName, column.props.headerClassName, {\n ReactVirtualized__Table__sortableHeaderColumn: sortEnabled\n });\n\n var style = this._getFlexStyleForColumn(column, _objectSpread({}, headerStyle, {}, column.props.headerStyle));\n\n var renderedHeader = headerRenderer({\n columnData: columnData,\n dataKey: dataKey,\n disableSort: disableSort,\n label: label,\n sortBy: sortBy,\n sortDirection: sortDirection\n });\n var headerOnClick, headerOnKeyDown, headerTabIndex, headerAriaSort, headerAriaLabel;\n\n if (sortEnabled || onHeaderClick) {\n // If this is a sortable header, clicking it should update the table data's sorting.\n var isFirstTimeSort = sortBy !== dataKey; // If this is the firstTime sort of this column, use the column default sort order.\n // Otherwise, invert the direction of the sort.\n\n var newSortDirection = isFirstTimeSort ? defaultSortDirection : sortDirection === SortDirection.DESC ? SortDirection.ASC : SortDirection.DESC;\n\n var onClick = function onClick(event) {\n sortEnabled && sort({\n defaultSortDirection: defaultSortDirection,\n event: event,\n sortBy: dataKey,\n sortDirection: newSortDirection\n });\n onHeaderClick && onHeaderClick({\n columnData: columnData,\n dataKey: dataKey,\n event: event\n });\n };\n\n var onKeyDown = function onKeyDown(event) {\n if (event.key === 'Enter' || event.key === ' ') {\n onClick(event);\n }\n };\n\n headerAriaLabel = column.props['aria-label'] || label || dataKey;\n headerAriaSort = 'none';\n headerTabIndex = 0;\n headerOnClick = onClick;\n headerOnKeyDown = onKeyDown;\n }\n\n if (sortBy === dataKey) {\n headerAriaSort = sortDirection === SortDirection.ASC ? 'ascending' : 'descending';\n } // Avoid using object-spread syntax with multiple objects here,\n // Since it results in an extra method call to 'babel-runtime/helpers/extends'\n // See PR https://github.com/bvaughn/react-virtualized/pull/942\n\n\n return React.createElement(\"div\", {\n \"aria-label\": headerAriaLabel,\n \"aria-sort\": headerAriaSort,\n className: classNames,\n id: id,\n key: 'Header-Col' + index,\n onClick: headerOnClick,\n onKeyDown: headerOnKeyDown,\n role: \"columnheader\",\n style: style,\n tabIndex: headerTabIndex\n }, renderedHeader);\n }\n }, {\n key: \"_createRow\",\n value: function _createRow(_ref6) {\n var _this3 = this;\n\n var index = _ref6.rowIndex,\n isScrolling = _ref6.isScrolling,\n key = _ref6.key,\n parent = _ref6.parent,\n style = _ref6.style;\n var _this$props3 = this.props,\n children = _this$props3.children,\n onRowClick = _this$props3.onRowClick,\n onRowDoubleClick = _this$props3.onRowDoubleClick,\n onRowRightClick = _this$props3.onRowRightClick,\n onRowMouseOver = _this$props3.onRowMouseOver,\n onRowMouseOut = _this$props3.onRowMouseOut,\n rowClassName = _this$props3.rowClassName,\n rowGetter = _this$props3.rowGetter,\n rowRenderer = _this$props3.rowRenderer,\n rowStyle = _this$props3.rowStyle;\n var scrollbarWidth = this.state.scrollbarWidth;\n var rowClass = typeof rowClassName === 'function' ? rowClassName({\n index: index\n }) : rowClassName;\n var rowStyleObject = typeof rowStyle === 'function' ? rowStyle({\n index: index\n }) : rowStyle;\n var rowData = rowGetter({\n index: index\n });\n var columns = React.Children.toArray(children).map(function (column, columnIndex) {\n return _this3._createColumn({\n column: column,\n columnIndex: columnIndex,\n isScrolling: isScrolling,\n parent: parent,\n rowData: rowData,\n rowIndex: index,\n scrollbarWidth: scrollbarWidth\n });\n });\n var className = clsx('ReactVirtualized__Table__row', rowClass);\n\n var flattenedStyle = _objectSpread({}, style, {\n height: this._getRowHeight(index),\n overflow: 'hidden',\n paddingRight: scrollbarWidth\n }, rowStyleObject);\n\n return rowRenderer({\n className: className,\n columns: columns,\n index: index,\n isScrolling: isScrolling,\n key: key,\n onRowClick: onRowClick,\n onRowDoubleClick: onRowDoubleClick,\n onRowRightClick: onRowRightClick,\n onRowMouseOver: onRowMouseOver,\n onRowMouseOut: onRowMouseOut,\n rowData: rowData,\n style: flattenedStyle\n });\n }\n /**\n * Determines the flex-shrink, flex-grow, and width values for a cell (header or column).\n */\n\n }, {\n key: \"_getFlexStyleForColumn\",\n value: function _getFlexStyleForColumn(column) {\n var customStyle = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var flexValue = \"\".concat(column.props.flexGrow, \" \").concat(column.props.flexShrink, \" \").concat(column.props.width, \"px\");\n\n var style = _objectSpread({}, customStyle, {\n flex: flexValue,\n msFlex: flexValue,\n WebkitFlex: flexValue\n });\n\n if (column.props.maxWidth) {\n style.maxWidth = column.props.maxWidth;\n }\n\n if (column.props.minWidth) {\n style.minWidth = column.props.minWidth;\n }\n\n return style;\n }\n }, {\n key: \"_getHeaderColumns\",\n value: function _getHeaderColumns() {\n var _this4 = this;\n\n var _this$props4 = this.props,\n children = _this$props4.children,\n disableHeader = _this$props4.disableHeader;\n var items = disableHeader ? [] : React.Children.toArray(children);\n return items.map(function (column, index) {\n return _this4._createHeader({\n column: column,\n index: index\n });\n });\n }\n }, {\n key: \"_getRowHeight\",\n value: function _getRowHeight(rowIndex) {\n var rowHeight = this.props.rowHeight;\n return typeof rowHeight === 'function' ? rowHeight({\n index: rowIndex\n }) : rowHeight;\n }\n }, {\n key: \"_onScroll\",\n value: function _onScroll(_ref7) {\n var clientHeight = _ref7.clientHeight,\n scrollHeight = _ref7.scrollHeight,\n scrollTop = _ref7.scrollTop;\n var onScroll = this.props.onScroll;\n onScroll({\n clientHeight: clientHeight,\n scrollHeight: scrollHeight,\n scrollTop: scrollTop\n });\n }\n }, {\n key: \"_onSectionRendered\",\n value: function _onSectionRendered(_ref8) {\n var rowOverscanStartIndex = _ref8.rowOverscanStartIndex,\n rowOverscanStopIndex = _ref8.rowOverscanStopIndex,\n rowStartIndex = _ref8.rowStartIndex,\n rowStopIndex = _ref8.rowStopIndex;\n var onRowsRendered = this.props.onRowsRendered;\n onRowsRendered({\n overscanStartIndex: rowOverscanStartIndex,\n overscanStopIndex: rowOverscanStopIndex,\n startIndex: rowStartIndex,\n stopIndex: rowStopIndex\n });\n }\n }, {\n key: \"_setRef\",\n value: function _setRef(ref) {\n this.Grid = ref;\n }\n }, {\n key: \"_setScrollbarWidth\",\n value: function _setScrollbarWidth() {\n var scrollbarWidth = this.getScrollbarWidth();\n this.setState({\n scrollbarWidth: scrollbarWidth\n });\n }\n }]);\n\n return Table;\n}(React.PureComponent);\n\n_defineProperty(Table, \"defaultProps\", {\n disableHeader: false,\n estimatedRowSize: 30,\n headerHeight: 0,\n headerStyle: {},\n noRowsRenderer: function noRowsRenderer() {\n return null;\n },\n onRowsRendered: function onRowsRendered() {\n return null;\n },\n onScroll: function onScroll() {\n return null;\n },\n overscanIndicesGetter: accessibilityOverscanIndicesGetter,\n overscanRowCount: 10,\n rowRenderer: defaultRowRenderer,\n headerRowRenderer: defaultHeaderRowRenderer,\n rowStyle: {},\n scrollToAlignment: 'auto',\n scrollToIndex: -1,\n style: {}\n});\n\nexport { Table as default };\nimport { bpfrpt_proptype_CellPosition } from \"../Grid\";","/**\n * Default accessor for returning a cell value for a given attribute.\n * This function expects to operate on either a vanilla Object or an Immutable Map.\n * You should override the column's cellDataGetter if your data is some other type of object.\n */\nexport default function defaultCellDataGetter(_ref) {\n var dataKey = _ref.dataKey,\n rowData = _ref.rowData;\n\n if (typeof rowData.get === 'function') {\n return rowData.get(dataKey);\n } else {\n return rowData[dataKey];\n }\n}\nimport { bpfrpt_proptype_CellDataGetterParams } from \"./types\";","/**\n * Default cell renderer that displays an attribute as a simple string\n * You should override the column's cellRenderer if your data is some other type of object.\n */\nexport default function defaultCellRenderer(_ref) {\n var cellData = _ref.cellData;\n\n if (cellData == null) {\n return '';\n } else {\n return String(cellData);\n }\n}\nimport { bpfrpt_proptype_CellRendererParams } from \"./types\";","import _extends from \"@babel/runtime/helpers/extends\";\nimport * as React from 'react';\n/**\n * Default row renderer for Table.\n */\n\nexport default function defaultRowRenderer(_ref) {\n var className = _ref.className,\n columns = _ref.columns,\n index = _ref.index,\n key = _ref.key,\n onRowClick = _ref.onRowClick,\n onRowDoubleClick = _ref.onRowDoubleClick,\n onRowMouseOut = _ref.onRowMouseOut,\n onRowMouseOver = _ref.onRowMouseOver,\n onRowRightClick = _ref.onRowRightClick,\n rowData = _ref.rowData,\n style = _ref.style;\n var a11yProps = {\n 'aria-rowindex': index + 1\n };\n\n if (onRowClick || onRowDoubleClick || onRowMouseOut || onRowMouseOver || onRowRightClick) {\n a11yProps['aria-label'] = 'row';\n a11yProps.tabIndex = 0;\n\n if (onRowClick) {\n a11yProps.onClick = function (event) {\n return onRowClick({\n event: event,\n index: index,\n rowData: rowData\n });\n };\n }\n\n if (onRowDoubleClick) {\n a11yProps.onDoubleClick = function (event) {\n return onRowDoubleClick({\n event: event,\n index: index,\n rowData: rowData\n });\n };\n }\n\n if (onRowMouseOut) {\n a11yProps.onMouseOut = function (event) {\n return onRowMouseOut({\n event: event,\n index: index,\n rowData: rowData\n });\n };\n }\n\n if (onRowMouseOver) {\n a11yProps.onMouseOver = function (event) {\n return onRowMouseOver({\n event: event,\n index: index,\n rowData: rowData\n });\n };\n }\n\n if (onRowRightClick) {\n a11yProps.onContextMenu = function (event) {\n return onRowRightClick({\n event: event,\n index: index,\n rowData: rowData\n });\n };\n }\n }\n\n return React.createElement(\"div\", _extends({}, a11yProps, {\n className: className,\n key: key,\n role: \"row\",\n style: style\n }), columns);\n}\nimport { bpfrpt_proptype_RowRendererParams } from \"./types\";","import * as React from 'react';\nexport default function defaultHeaderRowRenderer(_ref) {\n var className = _ref.className,\n columns = _ref.columns,\n style = _ref.style;\n return React.createElement(\"div\", {\n className: className,\n role: \"row\",\n style: style\n }, columns);\n}\nimport { bpfrpt_proptype_HeaderRowRendererParams } from \"./types\";","import createMultiSort from './createMultiSort';\nimport defaultCellDataGetter from './defaultCellDataGetter';\nimport defaultCellRenderer from './defaultCellRenderer';\nimport defaultHeaderRowRenderer from './defaultHeaderRowRenderer.js';\nimport defaultHeaderRenderer from './defaultHeaderRenderer';\nimport defaultRowRenderer from './defaultRowRenderer';\nimport Column from './Column';\nimport SortDirection from './SortDirection';\nimport SortIndicator from './SortIndicator';\nimport Table from './Table';\nexport default Table;\nexport { createMultiSort, defaultCellDataGetter, defaultCellRenderer, defaultHeaderRowRenderer, defaultHeaderRenderer, defaultRowRenderer, Column, SortDirection, SortIndicator, Table };","import { requestAnimationTimeout, cancelAnimationTimeout } from '../../utils/requestAnimationTimeout';\nvar mountedInstances = [];\nvar originalBodyPointerEvents = null;\nvar disablePointerEventsTimeoutId = null;\n\nfunction enablePointerEventsIfDisabled() {\n if (disablePointerEventsTimeoutId) {\n disablePointerEventsTimeoutId = null;\n\n if (document.body && originalBodyPointerEvents != null) {\n document.body.style.pointerEvents = originalBodyPointerEvents;\n }\n\n originalBodyPointerEvents = null;\n }\n}\n\nfunction enablePointerEventsAfterDelayCallback() {\n enablePointerEventsIfDisabled();\n mountedInstances.forEach(function (instance) {\n return instance.__resetIsScrolling();\n });\n}\n\nfunction enablePointerEventsAfterDelay() {\n if (disablePointerEventsTimeoutId) {\n cancelAnimationTimeout(disablePointerEventsTimeoutId);\n }\n\n var maximumTimeout = 0;\n mountedInstances.forEach(function (instance) {\n maximumTimeout = Math.max(maximumTimeout, instance.props.scrollingResetTimeInterval);\n });\n disablePointerEventsTimeoutId = requestAnimationTimeout(enablePointerEventsAfterDelayCallback, maximumTimeout);\n}\n\nfunction onScrollWindow(event) {\n if (event.currentTarget === window && originalBodyPointerEvents == null && document.body) {\n originalBodyPointerEvents = document.body.style.pointerEvents;\n document.body.style.pointerEvents = 'none';\n }\n\n enablePointerEventsAfterDelay();\n mountedInstances.forEach(function (instance) {\n if (instance.props.scrollElement === event.currentTarget) {\n instance.__handleWindowScrollEvent();\n }\n });\n}\n\nexport function registerScrollListener(component, element) {\n if (!mountedInstances.some(function (instance) {\n return instance.props.scrollElement === element;\n })) {\n element.addEventListener('scroll', onScrollWindow);\n }\n\n mountedInstances.push(component);\n}\nexport function unregisterScrollListener(component, element) {\n mountedInstances = mountedInstances.filter(function (instance) {\n return instance !== component;\n });\n\n if (!mountedInstances.length) {\n element.removeEventListener('scroll', onScrollWindow);\n\n if (disablePointerEventsTimeoutId) {\n cancelAnimationTimeout(disablePointerEventsTimeoutId);\n enablePointerEventsIfDisabled();\n }\n }\n}\nimport { bpfrpt_proptype_WindowScroller } from \"../WindowScroller.js\";","/**\n * Gets the dimensions of the element, accounting for API differences between\n * `window` and other DOM elements.\n */\n// TODO Move this into WindowScroller and import from there\nvar isWindow = function isWindow(element) {\n return element === window;\n};\n\nvar getBoundingBox = function getBoundingBox(element) {\n return element.getBoundingClientRect();\n};\n\nexport function getDimensions(scrollElement, props) {\n if (!scrollElement) {\n return {\n height: props.serverHeight,\n width: props.serverWidth\n };\n } else if (isWindow(scrollElement)) {\n var _window = window,\n innerHeight = _window.innerHeight,\n innerWidth = _window.innerWidth;\n return {\n height: typeof innerHeight === 'number' ? innerHeight : 0,\n width: typeof innerWidth === 'number' ? innerWidth : 0\n };\n } else {\n return getBoundingBox(scrollElement);\n }\n}\n/**\n * Gets the vertical and horizontal position of an element within its scroll container.\n * Elements that have been “scrolled past” return negative values.\n * Handles edge-case where a user is navigating back (history) from an already-scrolled page.\n * In this case the body’s top or left position will be a negative number and this element’s top or left will be increased (by that amount).\n */\n\nexport function getPositionOffset(element, container) {\n if (isWindow(container) && document.documentElement) {\n var containerElement = document.documentElement;\n var elementRect = getBoundingBox(element);\n var containerRect = getBoundingBox(containerElement);\n return {\n top: elementRect.top - containerRect.top,\n left: elementRect.left - containerRect.left\n };\n } else {\n var scrollOffset = getScrollOffset(container);\n\n var _elementRect = getBoundingBox(element);\n\n var _containerRect = getBoundingBox(container);\n\n return {\n top: _elementRect.top + scrollOffset.top - _containerRect.top,\n left: _elementRect.left + scrollOffset.left - _containerRect.left\n };\n }\n}\n/**\n * Gets the vertical and horizontal scroll amount of the element, accounting for IE compatibility\n * and API differences between `window` and other DOM elements.\n */\n\nexport function getScrollOffset(element) {\n if (isWindow(element) && document.documentElement) {\n return {\n top: 'scrollY' in window ? window.scrollY : document.documentElement.scrollTop,\n left: 'scrollX' in window ? window.scrollX : document.documentElement.scrollLeft\n };\n } else {\n return {\n top: element.scrollTop,\n left: element.scrollLeft\n };\n }\n}","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nvar _class, _temp;\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(source, true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(source).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { registerScrollListener, unregisterScrollListener } from './utils/onScroll';\nimport { getDimensions, getPositionOffset, getScrollOffset } from './utils/dimensions';\nimport createDetectElementResize from '../vendor/detectElementResize';\n/**\n * Specifies the number of miliseconds during which to disable pointer events while a scroll is in progress.\n * This improves performance and makes scrolling smoother.\n */\n\nexport var IS_SCROLLING_TIMEOUT = 150;\n\nvar getWindow = function getWindow() {\n return typeof window !== 'undefined' ? window : undefined;\n};\n\nvar WindowScroller = (_temp = _class = /*#__PURE__*/function (_React$PureComponent) {\n _inherits(WindowScroller, _React$PureComponent);\n\n function WindowScroller() {\n var _getPrototypeOf2;\n\n var _this;\n\n _classCallCheck(this, WindowScroller);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(WindowScroller)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _defineProperty(_assertThisInitialized(_this), \"_window\", getWindow());\n\n _defineProperty(_assertThisInitialized(_this), \"_isMounted\", false);\n\n _defineProperty(_assertThisInitialized(_this), \"_positionFromTop\", 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_positionFromLeft\", 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_detectElementResize\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_child\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"state\", _objectSpread({}, getDimensions(_this.props.scrollElement, _this.props), {\n isScrolling: false,\n scrollLeft: 0,\n scrollTop: 0\n }));\n\n _defineProperty(_assertThisInitialized(_this), \"_registerChild\", function (element) {\n if (element && !(element instanceof Element)) {\n console.warn('WindowScroller registerChild expects to be passed Element or null');\n }\n\n _this._child = element;\n\n _this.updatePosition();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onChildScroll\", function (_ref) {\n var scrollTop = _ref.scrollTop;\n\n if (_this.state.scrollTop === scrollTop) {\n return;\n }\n\n var scrollElement = _this.props.scrollElement;\n\n if (scrollElement) {\n if (typeof scrollElement.scrollTo === 'function') {\n scrollElement.scrollTo(0, scrollTop + _this._positionFromTop);\n } else {\n scrollElement.scrollTop = scrollTop + _this._positionFromTop;\n }\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_registerResizeListener\", function (element) {\n if (element === window) {\n window.addEventListener('resize', _this._onResize, false);\n } else {\n _this._detectElementResize.addResizeListener(element, _this._onResize);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_unregisterResizeListener\", function (element) {\n if (element === window) {\n window.removeEventListener('resize', _this._onResize, false);\n } else if (element) {\n _this._detectElementResize.removeResizeListener(element, _this._onResize);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"_onResize\", function () {\n _this.updatePosition();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"__handleWindowScrollEvent\", function () {\n if (!_this._isMounted) {\n return;\n }\n\n var onScroll = _this.props.onScroll;\n var scrollElement = _this.props.scrollElement;\n\n if (scrollElement) {\n var scrollOffset = getScrollOffset(scrollElement);\n var scrollLeft = Math.max(0, scrollOffset.left - _this._positionFromLeft);\n var scrollTop = Math.max(0, scrollOffset.top - _this._positionFromTop);\n\n _this.setState({\n isScrolling: true,\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n });\n\n onScroll({\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n });\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"__resetIsScrolling\", function () {\n _this.setState({\n isScrolling: false\n });\n });\n\n return _this;\n }\n\n _createClass(WindowScroller, [{\n key: \"updatePosition\",\n value: function updatePosition() {\n var scrollElement = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props.scrollElement;\n var onResize = this.props.onResize;\n var _this$state = this.state,\n height = _this$state.height,\n width = _this$state.width;\n var thisNode = this._child || ReactDOM.findDOMNode(this);\n\n if (thisNode instanceof Element && scrollElement) {\n var offset = getPositionOffset(thisNode, scrollElement);\n this._positionFromTop = offset.top;\n this._positionFromLeft = offset.left;\n }\n\n var dimensions = getDimensions(scrollElement, this.props);\n\n if (height !== dimensions.height || width !== dimensions.width) {\n this.setState({\n height: dimensions.height,\n width: dimensions.width\n });\n onResize({\n height: dimensions.height,\n width: dimensions.width\n });\n }\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var scrollElement = this.props.scrollElement;\n this._detectElementResize = createDetectElementResize();\n this.updatePosition(scrollElement);\n\n if (scrollElement) {\n registerScrollListener(this, scrollElement);\n\n this._registerResizeListener(scrollElement);\n }\n\n this._isMounted = true;\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps, prevState) {\n var scrollElement = this.props.scrollElement;\n var prevScrollElement = prevProps.scrollElement;\n\n if (prevScrollElement !== scrollElement && prevScrollElement != null && scrollElement != null) {\n this.updatePosition(scrollElement);\n unregisterScrollListener(this, prevScrollElement);\n registerScrollListener(this, scrollElement);\n\n this._unregisterResizeListener(prevScrollElement);\n\n this._registerResizeListener(scrollElement);\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n var scrollElement = this.props.scrollElement;\n\n if (scrollElement) {\n unregisterScrollListener(this, scrollElement);\n\n this._unregisterResizeListener(scrollElement);\n }\n\n this._isMounted = false;\n }\n }, {\n key: \"render\",\n value: function render() {\n var children = this.props.children;\n var _this$state2 = this.state,\n isScrolling = _this$state2.isScrolling,\n scrollTop = _this$state2.scrollTop,\n scrollLeft = _this$state2.scrollLeft,\n height = _this$state2.height,\n width = _this$state2.width;\n return children({\n onChildScroll: this._onChildScroll,\n registerChild: this._registerChild,\n height: height,\n isScrolling: isScrolling,\n scrollLeft: scrollLeft,\n scrollTop: scrollTop,\n width: width\n });\n }\n }]);\n\n return WindowScroller;\n}(React.PureComponent), _defineProperty(_class, \"propTypes\", process.env.NODE_ENV === 'production' ? null : {\n /**\n * Function responsible for rendering children.\n * This function should implement the following signature:\n * ({ height, isScrolling, scrollLeft, scrollTop, width }) => PropTypes.element\n */\n \"children\": PropTypes.func.isRequired,\n\n /** Callback to be invoked on-resize: ({ height, width }) */\n \"onResize\": PropTypes.func.isRequired,\n\n /** Callback to be invoked on-scroll: ({ scrollLeft, scrollTop }) */\n \"onScroll\": PropTypes.func.isRequired,\n\n /** Element to attach scroll event listeners. Defaults to window. */\n \"scrollElement\": PropTypes.oneOfType([PropTypes.any, function () {\n return (typeof Element === \"function\" ? PropTypes.instanceOf(Element) : PropTypes.any).apply(this, arguments);\n }]),\n\n /**\n * Wait this amount of time after the last scroll event before resetting child `pointer-events`.\n */\n \"scrollingResetTimeInterval\": PropTypes.number.isRequired,\n\n /** Height used for server-side rendering */\n \"serverHeight\": PropTypes.number.isRequired,\n\n /** Width used for server-side rendering */\n \"serverWidth\": PropTypes.number.isRequired\n}), _temp);\n\n_defineProperty(WindowScroller, \"defaultProps\", {\n onResize: function onResize() {},\n onScroll: function onScroll() {},\n scrollingResetTimeInterval: IS_SCROLLING_TIMEOUT,\n scrollElement: getWindow(),\n serverHeight: 0,\n serverWidth: 0\n});\n\nexport { WindowScroller as default };\nimport PropTypes from \"prop-types\";","import { useCallback, useRef, useState } from 'react';\nimport useDebouncedCallback from './useDebouncedCallback';\n\nfunction valueEquality(left, right) {\n return left === right;\n}\n\nfunction adjustFunctionValueOfSetState(value) {\n return typeof value === 'function' ? function () {\n return value;\n } : value;\n}\n\nfunction useStateIgnoreCallback(initialState) {\n var _a = useState(adjustFunctionValueOfSetState(initialState)),\n state = _a[0],\n setState = _a[1];\n\n var setStateIgnoreCallback = useCallback(function (value) {\n return setState(adjustFunctionValueOfSetState(value));\n }, []);\n return [state, setStateIgnoreCallback];\n}\n\nexport default function useDebounce(value, delay, options) {\n var eq = options && options.equalityFn || valueEquality;\n\n var _a = useStateIgnoreCallback(value),\n state = _a[0],\n dispatch = _a[1];\n\n var debounced = useDebouncedCallback(useCallback(function (value) {\n return dispatch(value);\n }, [dispatch]), delay, options);\n var previousValue = useRef(value);\n\n if (!eq(previousValue.current, value)) {\n debounced(value);\n previousValue.current = value;\n }\n\n return [state, {\n cancel: debounced.cancel,\n isPending: debounced.isPending,\n flush: debounced.flush\n }];\n}","import { useRef, useEffect, useMemo } from 'react';\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked, or until the next browser frame is drawn. The debounced function\n * comes with a `cancel` method to cancel delayed `func` invocations and a\n * `flush` method to immediately invoke them. Provide `options` to indicate\n * whether `func` should be invoked on the leading and/or trailing edge of the\n * `wait` timeout. The `func` is invoked with the last arguments provided to the\n * debounced function. Subsequent calls to the debounced function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * If `wait` is omitted in an environment with `requestAnimationFrame`, `func`\n * invocation will be deferred until the next frame is drawn (typically about\n * 16ms).\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `debounce` and `throttle`.\n *\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0]\n * The number of milliseconds to delay; if omitted, `requestAnimationFrame` is\n * used (if available, otherwise it will be setTimeout(...,0)).\n * @param {Object} [options={}] The options object.\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.leading=false]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {number} [options.maxWait]\n * Specify invoking on the trailing edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * const resizeHandler = useDebouncedCallback(calculateLayout, 150);\n * window.addEventListener('resize', resizeHandler)\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * const clickHandler = useDebouncedCallback(sendMail, 300, {\n * leading: true,\n * trailing: false,\n * })\n * \n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * const debounced = useDebouncedCallback(batchLog, 250, { 'maxWait': 1000 })\n * const source = new EventSource('/stream')\n * source.addEventListener('message', debounced)\n *\n * // Cancel the trailing debounced invocation.\n * window.addEventListener('popstate', debounced.cancel)\n *\n * // Check for pending invocations.\n * const status = debounced.pending() ? \"Pending...\" : \"Ready\"\n */\n\nexport default function useDebouncedCallback(func, wait, options) {\n var _this = this;\n\n var lastCallTime = useRef(null);\n var lastInvokeTime = useRef(0);\n var timerId = useRef(null);\n var lastArgs = useRef([]);\n var lastThis = useRef();\n var result = useRef();\n var funcRef = useRef(func);\n var mounted = useRef(true);\n funcRef.current = func; // Bypass `requestAnimationFrame` by explicitly setting `wait=0`.\n\n var useRAF = !wait && wait !== 0 && typeof window !== 'undefined';\n\n if (typeof func !== 'function') {\n throw new TypeError('Expected a function');\n }\n\n wait = +wait || 0;\n options = options || {};\n var leading = !!options.leading;\n var trailing = 'trailing' in options ? !!options.trailing : true; // `true` by default\n\n var maxing = ('maxWait' in options);\n var maxWait = maxing ? Math.max(+options.maxWait || 0, wait) : null;\n useEffect(function () {\n mounted.current = true;\n return function () {\n mounted.current = false;\n };\n }, []); // You may have a question, why we have so many code under the useMemo definition.\n //\n // This was made as we want to escape from useCallback hell and\n // not to initialize a number of functions each time useDebouncedCallback is called.\n //\n // It means that we have less garbage for our GC calls which improves performance.\n // Also, it makes this library smaller.\n //\n // And the last reason, that the code without lots of useCallback with deps is easier to read.\n // You have only one place for that.\n\n var debounced = useMemo(function () {\n var invokeFunc = function invokeFunc(time) {\n var args = lastArgs.current;\n var thisArg = lastThis.current;\n lastArgs.current = lastThis.current = null;\n lastInvokeTime.current = time;\n return result.current = funcRef.current.apply(thisArg, args);\n };\n\n var startTimer = function startTimer(pendingFunc, wait) {\n if (useRAF) cancelAnimationFrame(timerId.current);\n timerId.current = useRAF ? requestAnimationFrame(pendingFunc) : setTimeout(pendingFunc, wait);\n };\n\n var shouldInvoke = function shouldInvoke(time) {\n if (!mounted.current) return false;\n var timeSinceLastCall = time - lastCallTime.current;\n var timeSinceLastInvoke = time - lastInvokeTime.current; // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n\n return !lastCallTime.current || timeSinceLastCall >= wait || timeSinceLastCall < 0 || maxing && timeSinceLastInvoke >= maxWait;\n };\n\n var trailingEdge = function trailingEdge(time) {\n timerId.current = null; // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n\n if (trailing && lastArgs.current) {\n return invokeFunc(time);\n }\n\n lastArgs.current = lastThis.current = null;\n return result.current;\n };\n\n var timerExpired = function timerExpired() {\n var time = Date.now();\n\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n } // https://github.com/xnimorz/use-debounce/issues/97\n\n\n if (!mounted.current) {\n return;\n } // Remaining wait calculation\n\n\n var timeSinceLastCall = time - lastCallTime.current;\n var timeSinceLastInvoke = time - lastInvokeTime.current;\n var timeWaiting = wait - timeSinceLastCall;\n var remainingWait = maxing ? Math.min(timeWaiting, maxWait - timeSinceLastInvoke) : timeWaiting; // Restart the timer\n\n startTimer(timerExpired, remainingWait);\n };\n\n var func = function func() {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n var time = Date.now();\n var isInvoking = shouldInvoke(time);\n lastArgs.current = args;\n lastThis.current = _this;\n lastCallTime.current = time;\n\n if (isInvoking) {\n if (!timerId.current && mounted.current) {\n // Reset any `maxWait` timer.\n lastInvokeTime.current = lastCallTime.current; // Start the timer for the trailing edge.\n\n startTimer(timerExpired, wait); // Invoke the leading edge.\n\n return leading ? invokeFunc(lastCallTime.current) : result.current;\n }\n\n if (maxing) {\n // Handle invocations in a tight loop.\n startTimer(timerExpired, wait);\n return invokeFunc(lastCallTime.current);\n }\n }\n\n if (!timerId.current) {\n startTimer(timerExpired, wait);\n }\n\n return result.current;\n };\n\n func.cancel = function () {\n if (timerId.current) {\n useRAF ? cancelAnimationFrame(timerId.current) : clearTimeout(timerId.current);\n }\n\n lastInvokeTime.current = 0;\n lastArgs.current = lastCallTime.current = lastThis.current = timerId.current = null;\n };\n\n func.isPending = function () {\n return !!timerId.current;\n };\n\n func.flush = function () {\n return !timerId.current ? result.current : trailingEdge(Date.now());\n };\n\n return func;\n }, [leading, maxing, wait, maxWait, trailing, useRAF]);\n return debounced;\n}","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar create = require('../internals/object-create');\nvar definePropertyModule = require('../internals/object-define-property');\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n definePropertyModule.f(ArrayPrototype, UNSCOPABLES, {\n configurable: true,\n value: create(null)\n });\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n ArrayPrototype[UNSCOPABLES][key] = true;\n};\n","var isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n var C;\n if (isArray(originalArray)) {\n C = originalArray.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n else if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return new (C === undefined ? Array : C)(length === 0 ? 0 : length);\n};\n","'use strict';\nvar isArray = require('../internals/is-array');\nvar toLength = require('../internals/to-length');\nvar bind = require('../internals/function-bind-context');\n\n// `FlattenIntoArray` abstract operation\n// https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray\nvar flattenIntoArray = function (target, original, source, sourceLen, start, depth, mapper, thisArg) {\n var targetIndex = start;\n var sourceIndex = 0;\n var mapFn = mapper ? bind(mapper, thisArg, 3) : false;\n var element;\n\n while (sourceIndex < sourceLen) {\n if (sourceIndex in source) {\n element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex];\n\n if (depth > 0 && isArray(element)) {\n targetIndex = flattenIntoArray(target, original, element, toLength(element.length), targetIndex, depth - 1) - 1;\n } else {\n if (targetIndex >= 0x1FFFFFFFFFFFFF) throw TypeError('Exceed the acceptable array length');\n target[targetIndex] = element;\n }\n\n targetIndex++;\n }\n sourceIndex++;\n }\n return targetIndex;\n};\n\nmodule.exports = flattenIntoArray;\n","var aFunction = require('../internals/a-function');\n\n// optional / simple context binding\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 0: return function () {\n return fn.call(that);\n };\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","var classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(arg) {\n return classof(arg) == 'Array';\n};\n","var anObject = require('../internals/an-object');\nvar defineProperties = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n activeXDocument = null; // avoid memory leak\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n /* global ActiveXObject -- old IE */\n activeXDocument = document.domain && new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame();\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : defineProperties(result, Properties);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es/no-object-defineproperties -- safe\nmodule.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]);\n return O;\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar flattenIntoArray = require('../internals/flatten-into-array');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar aFunction = require('../internals/a-function');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\n// `Array.prototype.flatMap` method\n// https://tc39.es/ecma262/#sec-array.prototype.flatmap\n$({ target: 'Array', proto: true }, {\n flatMap: function flatMap(callbackfn /* , thisArg */) {\n var O = toObject(this);\n var sourceLen = toLength(O.length);\n var A;\n aFunction(callbackfn);\n A = arraySpeciesCreate(O, 0);\n A.length = flattenIntoArray(A, O, O, sourceLen, 0, 1, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n return A;\n }\n});\n","// this method was added to unscopables after implementation\n// in popular engines, so it's moved to a separate module\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('flatMap');\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nvar __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n to[j] = from[i];\n return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.useCdnCursorQuery = exports.restoreDb = exports.getLazyIndice = exports.getIndice = exports.Engine = exports.restore = exports.log = void 0;\nvar cdn_static_database_1 = require(\"cdn-static-database\");\nvar react_1 = require(\"react\");\nvar baseUrl = '/cdn-indice/';\nvar cdn_static_database_2 = require(\"cdn-static-database\");\nObject.defineProperty(exports, \"log\", { enumerable: true, get: function () { return cdn_static_database_2.log; } });\nvar restore = function (id, dbId) { return __awaiter(void 0, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, cdn_static_database_1.restoreSharedIndicesBrowser({\n id: id,\n baseUrl: \"/cdn-indice/\" + dbId,\n deserializeShared: cdn_static_database_1.RangeLinearIndice.lazy,\n deserialize: cdn_static_database_1.NgramIndice.deserialize\n })];\n });\n}); };\nexports.restore = restore;\nvar Engine;\n(function (Engine) {\n Engine[\"n-gram\"] = \"n-gram\";\n Engine[\"simple\"] = \"simple\";\n Engine[\"text-lex\"] = \"text-lex\";\n})(Engine = exports.Engine || (exports.Engine = {}));\n;\nvar getIndice = function (indice) {\n var _a = indice.type, type = _a === void 0 ? \"simple\" : _a, column = indice.column, columns = indice.columns, options = __rest(indice, [\"type\", \"column\", \"columns\"]);\n if (type === \"n-gram\") {\n return new cdn_static_database_1.NgramIndice(options);\n }\n if (type === \"text-lex\") {\n return new cdn_static_database_1.TextLexIndice(options);\n }\n if (type === \"simple\") {\n return new cdn_static_database_1.SimpleIndice(options);\n }\n throw new Error(\"Engine \" + type + \" not found\");\n};\nexports.getIndice = getIndice;\nvar getLazyIndice = function (indice) {\n var _a = indice.type, type = _a === void 0 ? \"simple\" : _a;\n if (type === \"n-gram\") {\n return cdn_static_database_1.NgramIndice.deserialize;\n }\n if (type === \"simple\") {\n return cdn_static_database_1.SimpleIndice.deserialize;\n }\n if (type === \"text-lex\") {\n return cdn_static_database_1.TextLexIndice.deserialize;\n }\n throw new Error(\"Engine \" + type + \" not found\");\n};\nexports.getLazyIndice = getLazyIndice;\nvar getIndicePath = function (indice) {\n var _a = indice.type, type = _a === void 0 ? \"simple\" : _a, column = indice.column;\n if (column && type === \"simple\") {\n return column;\n }\n else {\n return \"$\" + indice.id;\n }\n};\nvar restoreDb = function (id) { return __awaiter(void 0, void 0, void 0, function () {\n var response, res, indiceInstances, primary, indiceInstancesMap;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, fetch(\"\" + baseUrl + id + \"/indices.\" + id + \".json\", {\n method: 'GET',\n credentials: 'include',\n mode: 'no-cors',\n })];\n case 1:\n response = _a.sent();\n return [4 /*yield*/, response.json()];\n case 2:\n res = _a.sent();\n return [4 /*yield*/, Promise.all(__spreadArray([\n cdn_static_database_1.restoreSharedIndicesBrowser({\n id: \"data.\" + id,\n baseUrl: \"/cdn-indice/\" + id,\n deserializeShared: cdn_static_database_1.RangeLinearIndice.lazy,\n deserialize: cdn_static_database_1.SimpleIndice.deserialize\n })\n ], __read(res.indices.map(function (indice) { return cdn_static_database_1.restoreSharedIndicesBrowser({\n id: indice.id,\n baseUrl: \"/cdn-indice/\" + id,\n deserializeShared: cdn_static_database_1.RangeLinearIndice.lazy,\n deserialize: exports.getLazyIndice(indice)\n }); }))))];\n case 3:\n indiceInstances = _a.sent();\n primary = indiceInstances.shift();\n indiceInstancesMap = new Map(indiceInstances.map(function (indice) { return ([indice.id, indice]); }));\n return [2 /*return*/, new cdn_static_database_1.Db(new cdn_static_database_1.Schema(res.idAttr, primary, res.indices\n .map(function (indice) {\n return ({ indice: indiceInstancesMap.get(indice.id), path: getIndicePath(indice) });\n })))];\n }\n });\n}); };\nexports.restoreDb = restoreDb;\nvar useCdnCursorQuery = function (dbId, query, sort, skip, limit) {\n if (skip === void 0) { skip = 0; }\n if (limit === void 0) { limit = 30; }\n var $db = react_1.useMemo(function () { return (function () { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, exports.restoreDb(dbId)];\n case 1: return [2 /*return*/, _a.sent()];\n }\n }); }); })(); }, [dbId]);\n var cursorCreator = function ($cursor) { return ({\n next: function () { return __awaiter(void 0, void 0, void 0, function () {\n var c;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, $cursor];\n case 1:\n c = _a.sent();\n return [4 /*yield*/, c.next()];\n case 2: return [2 /*return*/, _a.sent()];\n }\n });\n }); },\n hasNext: function () { return __awaiter(void 0, void 0, void 0, function () {\n var c;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, $cursor];\n case 1:\n c = _a.sent();\n return [4 /*yield*/, c.hasNext()];\n case 2: return [2 /*return*/, _a.sent()];\n }\n });\n }); },\n finish: function () { return __awaiter(void 0, void 0, void 0, function () {\n var c;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, $cursor];\n case 1:\n c = _a.sent();\n c.finish();\n return [2 /*return*/];\n }\n });\n }); }\n }); };\n var cursor = react_1.useMemo(function () { return cursorCreator((function () { return __awaiter(void 0, void 0, void 0, function () {\n var db;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, $db];\n case 1:\n db = _a.sent();\n return [2 /*return*/, db.cursor(query, sort, skip, limit)];\n }\n });\n }); })()); }, [query, sort, skip, limit, dbId]);\n react_1.useEffect(function () {\n return function () {\n (function () { return __awaiter(void 0, void 0, void 0, function () {\n var e_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!cursor) return [3 /*break*/, 4];\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4 /*yield*/, cursor.finish()];\n case 2:\n _a.sent();\n return [3 /*break*/, 4];\n case 3:\n e_1 = _a.sent();\n console.error(e_1);\n return [3 /*break*/, 4];\n case 4: return [2 /*return*/];\n }\n });\n }); })();\n };\n }, [query, sort, skip, limit, dbId]);\n return cursor;\n};\nexports.useCdnCursorQuery = useCdnCursorQuery;\n//# sourceMappingURL=index.js.map","import React, { useCallback, useMemo } from \"react\"\nimport { Link } from \"gatsby\"\nexport default function Layout({ children, title }) {\n const isActive = useCallback(({ isPartiallyCurrent }) => {\n return isPartiallyCurrent\n ? { className: 'bg-indigo-600 hover:text-gray-200 text-white p-2 lg:px-4 md:mx-2 rounded transition-colors duration-300' }\n : { className: 'hover:bg-gray-200 hover:text-gray-700 p-2 lg:px-4 md:mx-2 rounded transition-colors duration-300' }\n }, []);\n return (\n####### ########## ############## ############## ####### #########
\n####### ########## ############## ############## ####### #########
\n####### ########## ############## ############## ####### #########
\n