{"version":3,"file":"js/vendors~client-ea4cb490bc784fd05f66.js","mappings":"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","sources":["webpack://marmosetmusic/./node_modules/@algolia/events/events.js","webpack://marmosetmusic/./node_modules/@prismicio/richtext/dist/index.js","webpack://marmosetmusic/./node_modules/@prismicio/react/dist/index.js","webpack://marmosetmusic/./node_modules/@wry/equality/lib/equality.esm.js","webpack://marmosetmusic/./node_modules/@wry/trie/lib/trie.esm.js","webpack://marmosetmusic/./node_modules/accounting/accounting.js","webpack://marmosetmusic/./node_modules/algoliasearch-helper/index.js","webpack://marmosetmusic/./node_modules/algoliasearch-helper/src/DerivedHelper/index.js","webpack://marmosetmusic/./node_modules/algoliasearch-helper/src/SearchParameters/RefinementList.js","webpack://marmosetmusic/./node_modules/algoliasearch-helper/src/SearchParameters/index.js","webpack://marmosetmusic/./node_modules/algoliasearch-helper/src/SearchResults/generate-hierarchical-tree.js","webpack://marmosetmusic/./node_modules/algoliasearch-helper/src/SearchResults/index.js","webpack://marmosetmusic/./node_modules/algoliasearch-helper/src/algoliasearch.helper.js","webpack://marmosetmusic/./node_modules/algoliasearch-helper/src/functions/compact.js","webpack://marmosetmusic/./node_modules/algoliasearch-helper/src/functions/defaultsPure.js","webpack://marmosetmusic/./node_modules/algoliasearch-helper/src/functions/escapeFacetValue.js","webpack://marmosetmusic/./node_modules/algoliasearch-helper/src/functions/find.js","webpack://marmosetmusic/./node_modules/algoliasearch-helper/src/functions/findIndex.js","webpack://marmosetmusic/./node_modules/algoliasearch-helper/src/functions/formatSort.js","webpack://marmosetmusic/./node_modules/algoliasearch-helper/src/functions/inherits.js","webpack://marmosetmusic/./node_modules/algoliasearch-helper/src/functions/intersection.js","webpack://marmosetmusic/./node_modules/algoliasearch-helper/src/functions/merge.js","webpack://marmosetmusic/./node_modules/algoliasearch-helper/src/functions/objectHasKeys.js","webpack://marmosetmusic/./node_modules/algoliasearch-helper/src/functions/omit.js","webpack://marmosetmusic/./node_modules/algoliasearch-helper/src/functions/orderBy.js","webpack://marmosetmusic/./node_modules/algoliasearch-helper/src/functions/valToNumber.js","webpack://marmosetmusic/./node_modules/algoliasearch-helper/src/requestBuilder.js","webpack://marmosetmusic/./node_modules/algoliasearch-helper/src/utils/isValidUserToken.js","webpack://marmosetmusic/./node_modules/algoliasearch-helper/src/version.js","webpack://marmosetmusic/./node_modules/algoliasearch/dist/algoliasearch-lite.umd.js","webpack://marmosetmusic/./node_modules/animejs/lib/anime.es.js","webpack://marmosetmusic/./node_modules/card-validator/index.js","webpack://marmosetmusic/./node_modules/card-validator/src/card-number.js","webpack://marmosetmusic/./node_modules/card-validator/src/cvv.js","webpack://marmosetmusic/./node_modules/card-validator/src/expiration-date.js","webpack://marmosetmusic/./node_modules/card-validator/src/expiration-month.js","webpack://marmosetmusic/./node_modules/card-validator/src/expiration-year.js","webpack://marmosetmusic/./node_modules/card-validator/src/lib/is-array.js","webpack://marmosetmusic/./node_modules/card-validator/src/luhn-10.js","webpack://marmosetmusic/./node_modules/card-validator/src/parse-date.js","webpack://marmosetmusic/./node_modules/card-validator/src/postal-code.js","webpack://marmosetmusic/./node_modules/cleave.js/dist/cleave-react-node.js","webpack://marmosetmusic/./node_modules/cleave.js/react.js","webpack://marmosetmusic/./node_modules/credit-card-type/index.js","webpack://marmosetmusic/./node_modules/credit-card-type/lib/add-matching-cards-to-results.js","webpack://marmosetmusic/./node_modules/credit-card-type/lib/card-types.js","webpack://marmosetmusic/./node_modules/credit-card-type/lib/clone.js","webpack://marmosetmusic/./node_modules/credit-card-type/lib/find-best-match.js","webpack://marmosetmusic/./node_modules/credit-card-type/lib/is-valid-input-type.js","webpack://marmosetmusic/./node_modules/credit-card-type/lib/matches.js","webpack://marmosetmusic/./node_modules/escape-html/index.js","webpack://marmosetmusic/./node_modules/graphql/jsutils/isObjectLike.mjs","webpack://marmosetmusic/./node_modules/graphql/language/location.mjs","webpack://marmosetmusic/./node_modules/graphql/language/printLocation.mjs","webpack://marmosetmusic/./node_modules/graphql/error/GraphQLError.mjs","webpack://marmosetmusic/./node_modules/graphql/error/syntaxError.mjs","webpack://marmosetmusic/./node_modules/graphql/language/tokenKind.mjs","webpack://marmosetmusic/./node_modules/graphql/language/directiveLocation.mjs","webpack://marmosetmusic/./node_modules/graphql/language/lexer.mjs","webpack://marmosetmusic/./node_modules/graphql/language/parser.mjs","webpack://marmosetmusic/./node_modules/graphql-tag/lib/index.js","webpack://marmosetmusic/./node_modules/instantsearch.js/node_modules/qs/lib/formats.js","webpack://marmosetmusic/./node_modules/instantsearch.js/node_modules/qs/lib/index.js","webpack://marmosetmusic/./node_modules/instantsearch.js/node_modules/qs/lib/parse.js","webpack://marmosetmusic/./node_modules/instantsearch.js/node_modules/qs/lib/stringify.js","webpack://marmosetmusic/./node_modules/instantsearch.js/node_modules/qs/lib/utils.js","webpack://marmosetmusic/./node_modules/optimism/node_modules/@wry/context/lib/context.esm.js","webpack://marmosetmusic/./node_modules/optimism/lib/bundle.esm.js","webpack://marmosetmusic/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://marmosetmusic/./node_modules/@babel/runtime/helpers/esm/objectSpread2.js","webpack://marmosetmusic/./node_modules/redux/es/redux.js","webpack://marmosetmusic/./node_modules/react-redux/es/components/Context.js","webpack://marmosetmusic/./node_modules/react-redux/es/utils/batch.js","webpack://marmosetmusic/./node_modules/react-redux/es/utils/Subscription.js","webpack://marmosetmusic/./node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js","webpack://marmosetmusic/./node_modules/react-redux/es/components/Provider.js","webpack://marmosetmusic/./node_modules/react-redux/es/components/connectAdvanced.js","webpack://marmosetmusic/./node_modules/react-redux/es/utils/shallowEqual.js","webpack://marmosetmusic/./node_modules/react-redux/es/connect/wrapMapToProps.js","webpack://marmosetmusic/./node_modules/react-redux/es/connect/mapDispatchToProps.js","webpack://marmosetmusic/./node_modules/react-redux/es/utils/bindActionCreators.js","webpack://marmosetmusic/./node_modules/react-redux/es/connect/mapStateToProps.js","webpack://marmosetmusic/./node_modules/react-redux/es/connect/mergeProps.js","webpack://marmosetmusic/./node_modules/react-redux/es/connect/selectorFactory.js","webpack://marmosetmusic/./node_modules/react-redux/es/connect/connect.js","webpack://marmosetmusic/./node_modules/react-redux/es/hooks/useSelector.js","webpack://marmosetmusic/./node_modules/use-memo-one/dist/use-memo-one.esm.js","webpack://marmosetmusic/./node_modules/react-redux/es/index.js","webpack://marmosetmusic/./node_modules/tiny-invariant/dist/tiny-invariant.esm.js","webpack://marmosetmusic/./node_modules/css-box-model/dist/css-box-model.esm.js","webpack://marmosetmusic/./node_modules/raf-schd/dist/raf-schd.esm.js","webpack://marmosetmusic/./node_modules/react-beautiful-dnd/dist/react-beautiful-dnd.esm.js","webpack://marmosetmusic/./node_modules/react-redux/node_modules/react-is/cjs/react-is.production.min.js","webpack://marmosetmusic/./node_modules/react-redux/node_modules/react-is/index.js","webpack://marmosetmusic/./node_modules/react-responsive-select/dist/ReactResponsiveSelect.js","webpack://marmosetmusic/./node_modules/singleline/index.js","webpack://marmosetmusic/./node_modules/tslib/tslib.es6.js","webpack://marmosetmusic/./node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js","webpack://marmosetmusic/./node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js","webpack://marmosetmusic/./node_modules/use-sync-external-store/shim/index.js","webpack://marmosetmusic/./node_modules/use-sync-external-store/shim/with-selector.js","webpack://marmosetmusic/./node_modules/core-js/internals/define-built-in-accessor.js","webpack://marmosetmusic/./node_modules/core-js/internals/regexp-flags.js","webpack://marmosetmusic/./node_modules/core-js/modules/es.regexp.flags.js","webpack://marmosetmusic/./node_modules/@apollo/client/cache/inmemory/helpers.js","webpack://marmosetmusic/./node_modules/@apollo/client/cache/core/cache.js","webpack://marmosetmusic/./node_modules/@apollo/client/cache/core/types/common.js","webpack://marmosetmusic/./node_modules/@apollo/client/cache/inmemory/entityStore.js","webpack://marmosetmusic/./node_modules/@apollo/client/cache/inmemory/readFromStore.js","webpack://marmosetmusic/./node_modules/@apollo/client/cache/inmemory/key-extractor.js","webpack://marmosetmusic/./node_modules/@apollo/client/cache/inmemory/policies.js","webpack://marmosetmusic/./node_modules/@apollo/client/utilities/common/stringifyForDisplay.js","webpack://marmosetmusic/./node_modules/@apollo/client/cache/inmemory/writeToStore.js","webpack://marmosetmusic/./node_modules/@apollo/client/cache/inmemory/inMemoryCache.js","webpack://marmosetmusic/./node_modules/@apollo/client/cache/inmemory/object-canon.js","webpack://marmosetmusic/./node_modules/@wry/context/lib/slot.js","webpack://marmosetmusic/./node_modules/@wry/context/lib/index.js","webpack://marmosetmusic/./node_modules/@apollo/client/cache/inmemory/reactiveVars.js","webpack://marmosetmusic/./node_modules/@apollo/client/link/core/execute.js","webpack://marmosetmusic/./node_modules/@apollo/client/link/http/HttpLink.js","webpack://marmosetmusic/./node_modules/@apollo/client/utilities/observables/asyncMap.js","webpack://marmosetmusic/./node_modules/@apollo/client/utilities/common/errorHandling.js","webpack://marmosetmusic/./node_modules/@apollo/client/utilities/observables/iteration.js","webpack://marmosetmusic/./node_modules/@apollo/client/utilities/observables/subclassing.js","webpack://marmosetmusic/./node_modules/@apollo/client/utilities/observables/Concast.js","webpack://marmosetmusic/./node_modules/@apollo/client/core/ObservableQuery.js","webpack://marmosetmusic/./node_modules/@apollo/client/core/LocalState.js","webpack://marmosetmusic/./node_modules/@apollo/client/core/QueryInfo.js","webpack://marmosetmusic/./node_modules/@apollo/client/core/QueryManager.js","webpack://marmosetmusic/./node_modules/@apollo/client/utilities/common/incrementalResult.js","webpack://marmosetmusic/./node_modules/@apollo/client/core/ApolloClient.js","webpack://marmosetmusic/./node_modules/@apollo/client/version.js","webpack://marmosetmusic/./node_modules/@apollo/client/core/networkStatus.js","webpack://marmosetmusic/./node_modules/@apollo/client/errors/index.js","webpack://marmosetmusic/./node_modules/@apollo/client/link/core/ApolloLink.js","webpack://marmosetmusic/./node_modules/@apollo/client/link/utils/createOperation.js","webpack://marmosetmusic/./node_modules/@apollo/client/link/utils/transformOperation.js","webpack://marmosetmusic/./node_modules/@apollo/client/link/utils/validateOperation.js","webpack://marmosetmusic/./node_modules/@apollo/client/link/core/concat.js","webpack://marmosetmusic/./node_modules/@apollo/client/link/http/serializeFetchParameter.js","webpack://marmosetmusic/./node_modules/@apollo/client/link/http/iterators/nodeStream.js","webpack://marmosetmusic/./node_modules/@apollo/client/link/http/iterators/reader.js","webpack://marmosetmusic/./node_modules/@apollo/client/link/http/responseIterator.js","webpack://marmosetmusic/./node_modules/@apollo/client/link/http/iterators/async.js","webpack://marmosetmusic/./node_modules/@apollo/client/utilities/common/responseIterator.js","webpack://marmosetmusic/./node_modules/@apollo/client/link/http/iterators/promise.js","webpack://marmosetmusic/./node_modules/@apollo/client/link/utils/throwServerError.js","webpack://marmosetmusic/./node_modules/@apollo/client/link/http/parseAndCheckHttpResponse.js","webpack://marmosetmusic/./node_modules/@apollo/client/link/http/checkFetcher.js","webpack://marmosetmusic/./node_modules/graphql/language/printer.mjs","webpack://marmosetmusic/./node_modules/@apollo/client/link/http/selectHttpOptionsAndBody.js","webpack://marmosetmusic/./node_modules/@apollo/client/link/utils/fromError.js","webpack://marmosetmusic/./node_modules/@apollo/client/link/http/createHttpLink.js","webpack://marmosetmusic/./node_modules/@apollo/client/link/http/selectURI.js","webpack://marmosetmusic/./node_modules/@apollo/client/link/http/createSignalIfSupported.js","webpack://marmosetmusic/./node_modules/@apollo/client/link/http/rewriteURIForGET.js","webpack://marmosetmusic/./node_modules/@apollo/client/react/context/ApolloContext.js","webpack://marmosetmusic/./node_modules/@apollo/client/react/context/ApolloProvider.js","webpack://marmosetmusic/./node_modules/@apollo/client/react/hooks/useApolloClient.js","webpack://marmosetmusic/./node_modules/@apollo/client/react/hooks/useLazyQuery.js","webpack://marmosetmusic/./node_modules/@apollo/client/react/hooks/useMutation.js","webpack://marmosetmusic/./node_modules/@apollo/client/react/hooks/useSyncExternalStore.js","webpack://marmosetmusic/./node_modules/@apollo/client/react/hooks/useQuery.js","webpack://marmosetmusic/./node_modules/@apollo/client/react/parser/index.js","webpack://marmosetmusic/./node_modules/@apollo/client/utilities/common/arrays.js","webpack://marmosetmusic/./node_modules/@apollo/client/utilities/common/canUse.js","webpack://marmosetmusic/./node_modules/@apollo/client/utilities/common/cloneDeep.js","webpack://marmosetmusic/./node_modules/@apollo/client/utilities/common/compact.js","webpack://marmosetmusic/./node_modules/@apollo/client/utilities/common/makeUniqueId.js","webpack://marmosetmusic/./node_modules/@apollo/client/utilities/common/maybeDeepFreeze.js","webpack://marmosetmusic/./node_modules/@apollo/client/utilities/common/mergeDeep.js","webpack://marmosetmusic/./node_modules/@apollo/client/utilities/common/mergeOptions.js","webpack://marmosetmusic/./node_modules/@apollo/client/utilities/common/objects.js","webpack://marmosetmusic/./node_modules/ts-invariant/lib/invariant.js","webpack://marmosetmusic/./node_modules/@apollo/client/utilities/globals/maybe.js","webpack://marmosetmusic/./node_modules/@apollo/client/utilities/globals/global.js","webpack://marmosetmusic/./node_modules/@apollo/client/utilities/globals/DEV.js","webpack://marmosetmusic/./node_modules/ts-invariant/process/index.js","webpack://marmosetmusic/./node_modules/@apollo/client/utilities/globals/fix-graphql.js","webpack://marmosetmusic/./node_modules/@apollo/client/utilities/globals/index.js","webpack://marmosetmusic/./node_modules/@apollo/client/utilities/graphql/directives.js","webpack://marmosetmusic/./node_modules/@apollo/client/utilities/graphql/fragments.js","webpack://marmosetmusic/./node_modules/@apollo/client/utilities/graphql/getFromAST.js","webpack://marmosetmusic/./node_modules/@apollo/client/utilities/graphql/storeUtils.js","webpack://marmosetmusic/./node_modules/@apollo/client/utilities/common/filterInPlace.js","webpack://marmosetmusic/./node_modules/@apollo/client/utilities/graphql/transform.js","webpack://marmosetmusic/./node_modules/@prismicio/client/dist/index.js","webpack://marmosetmusic/./node_modules/imgix-url-builder/dist/index.mjs","webpack://marmosetmusic/./node_modules/@prismicio/helpers/dist/index.js","webpack://marmosetmusic/./node_modules/@prismicio/types/dist/index.js","webpack://marmosetmusic/./node_modules/graphql/jsutils/inspect.mjs","webpack://marmosetmusic/./node_modules/graphql/jsutils/nodejsCustomInspectSymbol.mjs","webpack://marmosetmusic/./node_modules/graphql/jsutils/defineInspect.mjs","webpack://marmosetmusic/./node_modules/graphql/jsutils/invariant.mjs","webpack://marmosetmusic/./node_modules/graphql/language/ast.mjs","webpack://marmosetmusic/./node_modules/graphql/language/blockString.mjs","webpack://marmosetmusic/./node_modules/graphql/language/kinds.mjs","webpack://marmosetmusic/./node_modules/graphql/jsutils/devAssert.mjs","webpack://marmosetmusic/./node_modules/graphql/jsutils/instanceOf.mjs","webpack://marmosetmusic/./node_modules/graphql/language/source.mjs","webpack://marmosetmusic/./node_modules/graphql/language/visitor.mjs","webpack://marmosetmusic/./node_modules/graphql/polyfills/symbols.mjs","webpack://marmosetmusic/./node_modules/instantsearch.js/es/lib/routers/history.js","webpack://marmosetmusic/./node_modules/instantsearch.js/es/lib/utils/checkRendering.js","webpack://marmosetmusic/./node_modules/instantsearch.js/es/lib/utils/getObjectType.js","webpack://marmosetmusic/./node_modules/instantsearch.js/es/lib/utils/documentation.js","webpack://marmosetmusic/./node_modules/instantsearch.js/es/lib/utils/escape-highlight.js","webpack://marmosetmusic/./node_modules/instantsearch.js/es/lib/utils/escape-html.js","webpack://marmosetmusic/./node_modules/instantsearch.js/es/lib/utils/escapeFacetValue.js","webpack://marmosetmusic/./node_modules/instantsearch.js/es/lib/utils/find.js","webpack://marmosetmusic/./node_modules/instantsearch.js/es/lib/utils/getRefinements.js","webpack://marmosetmusic/./node_modules/instantsearch.js/es/lib/utils/isPlainObject.js","webpack://marmosetmusic/./node_modules/instantsearch.js/es/lib/utils/mergeSearchParameters.js","webpack://marmosetmusic/./node_modules/instantsearch.js/es/lib/utils/findIndex.js","webpack://marmosetmusic/./node_modules/instantsearch.js/es/lib/utils/noop.js","webpack://marmosetmusic/./node_modules/instantsearch.js/es/lib/utils/safelyRunOnBrowser.js","webpack://marmosetmusic/./node_modules/instantsearch.js/es/lib/utils/serializer.js","webpack://marmosetmusic/./node_modules/instantsearch.js/es/lib/utils/uniq.js","webpack://marmosetmusic/./node_modules/instantsearch.js/es/lib/utils/range.js","webpack://marmosetmusic/./node_modules/instantsearch.js/es/connectors/pagination/Paginator.js","webpack://marmosetmusic/./node_modules/instantsearch.js/es/connectors/pagination/connectPagination.js","webpack://marmosetmusic/./node_modules/react-instantsearch-hooks-web/dist/es/ui/lib/cx.js","webpack://marmosetmusic/./node_modules/react-instantsearch-hooks-web/dist/es/ui/Pagination.js","webpack://marmosetmusic/./node_modules/react-instantsearch-hooks-web/dist/es/ui/lib/isModifierClick.js","webpack://marmosetmusic/./node_modules/react-instantsearch-hooks-web/dist/es/widgets/Pagination.js","webpack://marmosetmusic/./node_modules/react-instantsearch-hooks/dist/es/connectors/usePagination.js","webpack://marmosetmusic/./node_modules/instantsearch.js/es/connectors/configure/connectConfigure.js","webpack://marmosetmusic/./node_modules/react-instantsearch-hooks/dist/es/components/Configure.js","webpack://marmosetmusic/./node_modules/react-instantsearch-hooks/dist/es/connectors/useConfigure.js","webpack://marmosetmusic/./node_modules/instantsearch.js/es/lib/utils/isIndexWidget.js","webpack://marmosetmusic/./node_modules/instantsearch.js/es/lib/utils/render-args.js","webpack://marmosetmusic/./node_modules/instantsearch.js/es/widgets/index/index.js","webpack://marmosetmusic/./node_modules/instantsearch.js/es/lib/utils/resolveSearchParameters.js","webpack://marmosetmusic/./node_modules/instantsearch.js/es/lib/version.js","webpack://marmosetmusic/./node_modules/instantsearch.js/es/lib/suit.js","webpack://marmosetmusic/./node_modules/instantsearch.js/es/lib/utils/getPropertyByPath.js","webpack://marmosetmusic/./node_modules/instantsearch.js/es/helpers/highlight.js","webpack://marmosetmusic/./node_modules/instantsearch.js/es/lib/utils/concatHighlightedParts.js","webpack://marmosetmusic/./node_modules/instantsearch.js/es/lib/utils/getHighlightFromSiblings.js","webpack://marmosetmusic/./node_modules/instantsearch.js/es/lib/utils/reverseHighlightedParts.js","webpack://marmosetmusic/./node_modules/instantsearch.js/es/lib/utils/getHighlightedParts.js","webpack://marmosetmusic/./node_modules/instantsearch.js/es/helpers/reverseHighlight.js","webpack://marmosetmusic/./node_modules/instantsearch.js/es/helpers/snippet.js","webpack://marmosetmusic/./node_modules/instantsearch.js/es/helpers/reverseSnippet.js","webpack://marmosetmusic/./node_modules/instantsearch.js/es/helpers/insights.js","webpack://marmosetmusic/./node_modules/instantsearch.js/es/lib/createHelpers.js","webpack://marmosetmusic/./node_modules/instantsearch.js/es/lib/formatNumber.js","webpack://marmosetmusic/./node_modules/instantsearch.js/es/lib/utils/defer.js","webpack://marmosetmusic/./node_modules/instantsearch.js/es/lib/utils/setIndexHelperState.js","webpack://marmosetmusic/./node_modules/instantsearch.js/es/lib/stateMappings/simple.js","webpack://marmosetmusic/./node_modules/instantsearch.js/es/lib/utils/isEqual.js","webpack://marmosetmusic/./node_modules/instantsearch.js/es/middlewares/createRouterMiddleware.js","webpack://marmosetmusic/./node_modules/instantsearch.js/es/middlewares/createMetadataMiddleware.js","webpack://marmosetmusic/./node_modules/instantsearch.js/es/lib/InstantSearch.js","webpack://marmosetmusic/./node_modules/react-instantsearch-hooks/dist/es/lib/InstantSearchSSRContext.js","webpack://marmosetmusic/./node_modules/react-instantsearch-hooks/dist/es/version.js","webpack://marmosetmusic/./node_modules/react-instantsearch-hooks/dist/es/lib/useInstantSearchApi.js","webpack://marmosetmusic/./node_modules/react-instantsearch-hooks/dist/es/lib/useForceUpdate.js","webpack://marmosetmusic/./node_modules/react-instantsearch-hooks/dist/es/lib/useInstantSearchSSRContext.js","webpack://marmosetmusic/./node_modules/react-instantsearch-hooks/dist/es/components/InstantSearch.js","webpack://marmosetmusic/./node_modules/instantsearch.js/es/lib/utils/clearRefinements.js","webpack://marmosetmusic/./node_modules/instantsearch.js/es/connectors/clear-refinements/connectClearRefinements.js","webpack://marmosetmusic/./node_modules/react-instantsearch-hooks/dist/es/connectors/useClearRefinements.js","webpack://marmosetmusic/./node_modules/instantsearch.js/es/connectors/current-refinements/connectCurrentRefinements.js","webpack://marmosetmusic/./node_modules/react-instantsearch-hooks/dist/es/connectors/useCurrentRefinements.js","webpack://marmosetmusic/./node_modules/instantsearch.js/es/lib/utils/createSendEventForHits.js","webpack://marmosetmusic/./node_modules/instantsearch.js/es/lib/utils/hits-absolute-position.js","webpack://marmosetmusic/./node_modules/instantsearch.js/es/lib/utils/hits-query-id.js","webpack://marmosetmusic/./node_modules/instantsearch.js/es/connectors/hits/connectHits.js","webpack://marmosetmusic/./node_modules/react-instantsearch-hooks/dist/es/connectors/useHits.js","webpack://marmosetmusic/./node_modules/instantsearch.js/es/lib/utils/isFiniteNumber.js","webpack://marmosetmusic/./node_modules/instantsearch.js/es/connectors/range/connectRange.js","webpack://marmosetmusic/./node_modules/react-instantsearch-hooks/dist/es/connectors/useRange.js","webpack://marmosetmusic/./node_modules/instantsearch.js/es/lib/utils/createSendEventForFacet.js","webpack://marmosetmusic/./node_modules/instantsearch.js/es/connectors/refinement-list/connectRefinementList.js","webpack://marmosetmusic/./node_modules/instantsearch.js/es/lib/utils/isFacetRefined.js","webpack://marmosetmusic/./node_modules/react-instantsearch-hooks/dist/es/connectors/useRefinementList.js","webpack://marmosetmusic/./node_modules/instantsearch.js/es/connectors/search-box/connectSearchBox.js","webpack://marmosetmusic/./node_modules/react-instantsearch-hooks/dist/es/connectors/useSearchBox.js","webpack://marmosetmusic/./node_modules/instantsearch.js/es/lib/utils/toArray.js","webpack://marmosetmusic/./node_modules/instantsearch.js/es/connectors/toggle-refinement/connectToggleRefinement.js","webpack://marmosetmusic/./node_modules/react-instantsearch-hooks/dist/es/connectors/useToggleRefinement.js","webpack://marmosetmusic/./node_modules/react-instantsearch-hooks/dist/es/lib/dequal.js","webpack://marmosetmusic/./node_modules/react-instantsearch-hooks/dist/es/lib/useStableValue.js","webpack://marmosetmusic/./node_modules/react-instantsearch-hooks/dist/es/hooks/useConnector.js","webpack://marmosetmusic/./node_modules/react-instantsearch-hooks/dist/es/lib/useWidget.js","webpack://marmosetmusic/./node_modules/react-instantsearch-hooks/dist/es/lib/useSearchState.js","webpack://marmosetmusic/./node_modules/react-instantsearch-hooks/dist/es/hooks/useInstantSearch.js","webpack://marmosetmusic/./node_modules/react-instantsearch-hooks/dist/es/lib/useSearchResults.js","webpack://marmosetmusic/./node_modules/react-instantsearch-hooks/dist/es/lib/IndexContext.js","webpack://marmosetmusic/./node_modules/react-instantsearch-hooks/dist/es/lib/InstantSearchContext.js","webpack://marmosetmusic/./node_modules/react-instantsearch-hooks/dist/es/lib/createSearchResults.js","webpack://marmosetmusic/./node_modules/react-instantsearch-hooks/dist/es/lib/getIndexSearchResults.js","webpack://marmosetmusic/./node_modules/react-instantsearch-hooks/dist/es/lib/invariant.js","webpack://marmosetmusic/./node_modules/react-instantsearch-hooks/dist/es/lib/useIndexContext.js","webpack://marmosetmusic/./node_modules/react-instantsearch-hooks/dist/es/lib/useInstantSearchContext.js","webpack://marmosetmusic/./node_modules/react-instantsearch-hooks/dist/es/components/InstantSearchServerContext.js","webpack://marmosetmusic/./node_modules/react-instantsearch-hooks/dist/es/lib/useInstantSearchServerContext.js","webpack://marmosetmusic/./node_modules/react-instantsearch-hooks/dist/es/lib/useIsomorphicLayoutEffect.js","webpack://marmosetmusic/./node_modules/zen-observable-ts/module.js","webpack://marmosetmusic/./node_modules/zustand/esm/vanilla.mjs","webpack://marmosetmusic/./node_modules/zustand/esm/index.mjs","webpack://marmosetmusic/./node_modules/zustand/esm/middleware.mjs"],"sourcesContent":["// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nfunction EventEmitter() {\n this._events = this._events || {};\n this._maxListeners = this._maxListeners || undefined;\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\n// EventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nEventEmitter.defaultMaxListeners = 10;\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function(n) {\n if (!isNumber(n) || n < 0 || isNaN(n))\n throw TypeError('n must be a positive number');\n this._maxListeners = n;\n return this;\n};\n\nEventEmitter.prototype.emit = function(type) {\n var er, handler, len, args, i, listeners;\n\n if (!this._events)\n this._events = {};\n\n // If there is no 'error' event listener then throw.\n if (type === 'error') {\n if (!this._events.error ||\n (isObject(this._events.error) && !this._events.error.length)) {\n er = arguments[1];\n if (er instanceof Error) {\n throw er; // Unhandled 'error' event\n } else {\n // At least give some kind of context to the user\n var err = new Error('Uncaught, unspecified \"error\" event. (' + er + ')');\n err.context = er;\n throw err;\n }\n }\n }\n\n handler = this._events[type];\n\n if (isUndefined(handler))\n return false;\n\n if (isFunction(handler)) {\n switch (arguments.length) {\n // fast cases\n case 1:\n handler.call(this);\n break;\n case 2:\n handler.call(this, arguments[1]);\n break;\n case 3:\n handler.call(this, arguments[1], arguments[2]);\n break;\n // slower\n default:\n args = Array.prototype.slice.call(arguments, 1);\n handler.apply(this, args);\n }\n } else if (isObject(handler)) {\n args = Array.prototype.slice.call(arguments, 1);\n listeners = handler.slice();\n len = listeners.length;\n for (i = 0; i < len; i++)\n listeners[i].apply(this, args);\n }\n\n return true;\n};\n\nEventEmitter.prototype.addListener = function(type, listener) {\n var m;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events)\n this._events = {};\n\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (this._events.newListener)\n this.emit('newListener', type,\n isFunction(listener.listener) ?\n listener.listener : listener);\n\n if (!this._events[type])\n // Optimize the case of one listener. Don't need the extra array object.\n this._events[type] = listener;\n else if (isObject(this._events[type]))\n // If we've already got an array, just append.\n this._events[type].push(listener);\n else\n // Adding the second element, need to change to array.\n this._events[type] = [this._events[type], listener];\n\n // Check for listener leak\n if (isObject(this._events[type]) && !this._events[type].warned) {\n if (!isUndefined(this._maxListeners)) {\n m = this._maxListeners;\n } else {\n m = EventEmitter.defaultMaxListeners;\n }\n\n if (m && m > 0 && this._events[type].length > m) {\n this._events[type].warned = true;\n console.error('(node) warning: possible EventEmitter memory ' +\n 'leak detected. %d listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit.',\n this._events[type].length);\n if (typeof console.trace === 'function') {\n // not supported in IE 10\n console.trace();\n }\n }\n }\n\n return this;\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.once = function(type, listener) {\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n var fired = false;\n\n function g() {\n this.removeListener(type, g);\n\n if (!fired) {\n fired = true;\n listener.apply(this, arguments);\n }\n }\n\n g.listener = listener;\n this.on(type, g);\n\n return this;\n};\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener = function(type, listener) {\n var list, position, length, i;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events || !this._events[type])\n return this;\n\n list = this._events[type];\n length = list.length;\n position = -1;\n\n if (list === listener ||\n (isFunction(list.listener) && list.listener === listener)) {\n delete this._events[type];\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n\n } else if (isObject(list)) {\n for (i = length; i-- > 0;) {\n if (list[i] === listener ||\n (list[i].listener && list[i].listener === listener)) {\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (list.length === 1) {\n list.length = 0;\n delete this._events[type];\n } else {\n list.splice(position, 1);\n }\n\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n }\n\n return this;\n};\n\nEventEmitter.prototype.removeAllListeners = function(type) {\n var key, listeners;\n\n if (!this._events)\n return this;\n\n // not listening for removeListener, no need to emit\n if (!this._events.removeListener) {\n if (arguments.length === 0)\n this._events = {};\n else if (this._events[type])\n delete this._events[type];\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n for (key in this._events) {\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = {};\n return this;\n }\n\n listeners = this._events[type];\n\n if (isFunction(listeners)) {\n this.removeListener(type, listeners);\n } else if (listeners) {\n // LIFO order\n while (listeners.length)\n this.removeListener(type, listeners[listeners.length - 1]);\n }\n delete this._events[type];\n\n return this;\n};\n\nEventEmitter.prototype.listeners = function(type) {\n var ret;\n if (!this._events || !this._events[type])\n ret = [];\n else if (isFunction(this._events[type]))\n ret = [this._events[type]];\n else\n ret = this._events[type].slice();\n return ret;\n};\n\nEventEmitter.prototype.listenerCount = function(type) {\n if (this._events) {\n var evlistener = this._events[type];\n\n if (isFunction(evlistener))\n return 1;\n else if (evlistener)\n return evlistener.length;\n }\n return 0;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n return emitter.listenerCount(type);\n};\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\n","import { RichTextNodeType } from '@prismicio/types';\nexport { RichTextNodeType as Element } from '@prismicio/types';\n\nconst uuid = () => {\n return (++uuid.i).toString();\n};\nuuid.i = 0;\nconst asTree = (nodes) => {\n const preparedNodes = prepareNodes(nodes);\n const children = [];\n for (let i = 0; i < preparedNodes.length; i++) {\n children.push(nodeToTreeNode(preparedNodes[i]));\n }\n return {\n key: uuid(),\n children\n };\n};\nconst createTreeNode = (node, children = []) => {\n return {\n key: uuid(),\n type: node.type,\n text: \"text\" in node ? node.text : void 0,\n node,\n children\n };\n};\nconst createTextTreeNode = (text) => {\n return createTreeNode({\n type: RichTextNodeType.span,\n text,\n spans: []\n });\n};\nconst prepareNodes = (nodes) => {\n const mutNodes = nodes.slice(0);\n for (let i = 0; i < mutNodes.length; i++) {\n const node = mutNodes[i];\n if (node.type === RichTextNodeType.listItem || node.type === RichTextNodeType.oListItem) {\n const items = [\n node\n ];\n while (mutNodes[i + 1] && mutNodes[i + 1].type === node.type) {\n items.push(mutNodes[i + 1]);\n mutNodes.splice(i, 1);\n }\n if (node.type === RichTextNodeType.listItem) {\n mutNodes[i] = {\n type: RichTextNodeType.list,\n items\n };\n } else {\n mutNodes[i] = {\n type: RichTextNodeType.oList,\n items\n };\n }\n }\n }\n return mutNodes;\n};\nconst nodeToTreeNode = (node) => {\n if (\"text\" in node) {\n return createTreeNode(\n node,\n textNodeSpansToTreeNodeChildren(node.spans, node)\n );\n }\n if (\"items\" in node) {\n const children = [];\n for (let i = 0; i < node.items.length; i++) {\n children.push(nodeToTreeNode(node.items[i]));\n }\n return createTreeNode(node, children);\n }\n return createTreeNode(node);\n};\nconst textNodeSpansToTreeNodeChildren = (spans, node, parentSpan) => {\n if (!spans.length) {\n return [createTextTreeNode(node.text)];\n }\n const mutSpans = spans.slice(0);\n mutSpans.sort((a, b) => a.start - b.start || b.end - a.end);\n const children = [];\n for (let i = 0; i < mutSpans.length; i++) {\n const span = mutSpans[i];\n const parentSpanStart = parentSpan && parentSpan.start || 0;\n const spanStart = span.start - parentSpanStart;\n const spanEnd = span.end - parentSpanStart;\n const text = node.text.slice(spanStart, spanEnd);\n const childSpans = [];\n for (let j = i; j < mutSpans.length; j++) {\n const siblingSpan = mutSpans[j];\n if (siblingSpan !== span && siblingSpan.start >= span.start && siblingSpan.end <= span.end) {\n childSpans.push(siblingSpan);\n mutSpans.splice(j, 1);\n j--;\n }\n }\n if (i === 0 && spanStart > 0) {\n children.push(createTextTreeNode(node.text.slice(0, spanStart)));\n }\n const spanWithText = { ...span, text };\n children.push(\n createTreeNode(\n spanWithText,\n textNodeSpansToTreeNodeChildren(\n childSpans,\n {\n ...node,\n text\n },\n span\n )\n )\n );\n if (spanEnd < node.text.length) {\n children.push(\n createTextTreeNode(\n node.text.slice(\n spanEnd,\n mutSpans[i + 1] ? mutSpans[i + 1].start - parentSpanStart : void 0\n )\n )\n );\n }\n }\n return children;\n};\n\nconst asText = (richTextField, separator = \" \") => {\n let result = \"\";\n for (let i = 0; i < richTextField.length; i++) {\n if (\"text\" in richTextField[i]) {\n result += (result ? separator : \"\") + richTextField[i].text;\n }\n }\n return result;\n};\n\nconst serialize = (richTextField, serializer) => {\n return serializeTreeNodes(\n asTree(richTextField).children,\n serializer\n );\n};\nconst serializeTreeNodes = (nodes, serializer) => {\n const serializedTreeNodes = [];\n for (let i = 0; i < nodes.length; i++) {\n const treeNode = nodes[i];\n const serializedTreeNode = serializer(\n treeNode.type,\n treeNode.node,\n treeNode.text,\n serializeTreeNodes(treeNode.children, serializer),\n treeNode.key\n );\n if (serializedTreeNode != null) {\n serializedTreeNodes.push(serializedTreeNode);\n }\n }\n return serializedTreeNodes;\n};\n\nconst RichTextReversedNodeType = {\n [RichTextNodeType.listItem]: \"listItem\",\n [RichTextNodeType.oListItem]: \"oListItem\",\n [RichTextNodeType.list]: \"list\",\n [RichTextNodeType.oList]: \"oList\"\n};\n\nconst wrapMapSerializer = (mapSerializer) => {\n return (type, node, text, children, key) => {\n const tagSerializer = mapSerializer[RichTextReversedNodeType[type] || type];\n if (tagSerializer) {\n return tagSerializer({\n type,\n node,\n text,\n children,\n key\n });\n }\n };\n};\n\nconst composeSerializers = (...serializers) => {\n return (...args) => {\n for (let i = 0; i < serializers.length; i++) {\n const serializer = serializers[i];\n if (serializer) {\n const res = serializer(...args);\n if (res != null) {\n return res;\n }\n }\n }\n };\n};\n\nexport { asText, asTree, composeSerializers, serialize, wrapMapSerializer };\n//# sourceMappingURL=index.js.map\n","import * as React from 'react';\nimport * as prismicH from '@prismicio/helpers';\nimport * as prismicR from '@prismicio/richtext';\nimport { Element } from '@prismicio/richtext';\nexport { Element } from '@prismicio/richtext';\n\nconst PrismicContext = React.createContext({});\nconst PrismicProvider = ({\n client,\n linkResolver,\n richTextComponents,\n internalLinkComponent,\n externalLinkComponent,\n children\n}) => {\n const value = React.useMemo(() => ({\n client,\n linkResolver,\n richTextComponents,\n internalLinkComponent,\n externalLinkComponent\n }), [\n client,\n linkResolver,\n richTextComponents,\n internalLinkComponent,\n externalLinkComponent\n ]);\n return /* @__PURE__ */ React.createElement(PrismicContext.Provider, {\n value\n }, children);\n};\n\nconst usePrismicContext = () => {\n return React.useContext(PrismicContext) || {};\n};\n\nif (typeof process === \"undefined\") {\n globalThis.process = { env: {} };\n}\nconst __PRODUCTION__ = process.env.NODE_ENV === \"production\";\n\nconst prefix = \"Invariant failed\";\nfunction invariant(condition, message) {\n if (condition) {\n return;\n }\n if (__PRODUCTION__) {\n throw new Error(prefix);\n }\n throw new Error(`${prefix}: ${message || \"\"}`);\n}\n\nconst usePrismicClient = (explicitClient) => {\n const context = usePrismicContext();\n const client = explicitClient || (context == null ? void 0 : context.client);\n invariant(client, \"A @prismicio/client is required to query documents. Provide a client to the hook or to a higher in your component tree.\");\n return client;\n};\n\nvar version = \"2.5.0\";\n\nconst devMsg = (slug) => {\n return `https://prismic.dev/msg/react/v${version}/${slug}`;\n};\n\nconst isInternalURL = (url) => {\n const isInternal = /^(\\/(?!\\/)|#)/.test(url);\n const isSpecialLink = !isInternal && !/^https?:\\/\\//.test(url);\n return isInternal && !isSpecialLink;\n};\n\nconst defaultInternalComponent = \"a\";\nconst defaultExternalComponent = \"a\";\nconst _PrismicLink = (props, ref) => {\n const context = usePrismicContext();\n if (!__PRODUCTION__) {\n if (\"field\" in props && props.field) {\n if (!props.field.link_type) {\n console.error(`[PrismicLink] This \"field\" prop value caused an error to be thrown.\n`, props.field);\n throw new Error(`[PrismicLink] The provided field is missing required properties to properly render a link. The link will not render. For more details, see ${devMsg(\"missing-link-properties\")}`);\n } else if (Object.keys(props.field).length > 1 && !(\"url\" in props.field || \"uid\" in props.field || \"id\" in props.field)) {\n console.warn(`[PrismicLink] The provided field is missing required properties to properly render a link. The link may not render correctly. For more details, see ${devMsg(\"missing-link-properties\")}`, props.field);\n }\n } else if (\"document\" in props && props.document) {\n if (!(\"url\" in props.document || \"id\" in props.document)) {\n console.warn(`[PrismicLink] The provided document is missing required properties to properly render a link. The link may not render correctly. For more details, see ${devMsg(\"missing-link-properties\")}`, props.document);\n }\n }\n }\n const linkResolver = props.linkResolver || context.linkResolver;\n let href;\n if (\"href\" in props) {\n href = props.href;\n } else if (\"document\" in props && props.document) {\n href = prismicH.asLink(props.document, linkResolver);\n } else if (\"field\" in props && props.field) {\n href = prismicH.asLink(props.field, linkResolver);\n }\n const isInternal = href && isInternalURL(href);\n const target = props.target || \"field\" in props && props.field && \"target\" in props.field && props.field.target || !isInternal && \"_blank\" || void 0;\n const rel = props.rel || (target === \"_blank\" ? \"noopener noreferrer\" : void 0);\n const InternalComponent = props.internalComponent || context.internalLinkComponent || defaultInternalComponent;\n const ExternalComponent = props.externalComponent || context.externalLinkComponent || defaultExternalComponent;\n const Component = isInternal ? InternalComponent : ExternalComponent;\n const passthroughProps = Object.assign({}, props);\n delete passthroughProps.linkResolver;\n delete passthroughProps.internalComponent;\n delete passthroughProps.externalComponent;\n delete passthroughProps.rel;\n delete passthroughProps.target;\n if (\"field\" in passthroughProps) {\n delete passthroughProps.field;\n } else if (\"document\" in passthroughProps) {\n delete passthroughProps.document;\n } else if (\"href\" in passthroughProps) {\n delete passthroughProps.href;\n }\n return href ? /* @__PURE__ */ React.createElement(Component, {\n ...passthroughProps,\n ref,\n href,\n target,\n rel\n }) : null;\n};\nif (!__PRODUCTION__) {\n _PrismicLink.displayName = \"PrismicLink\";\n}\nconst PrismicLink = React.forwardRef(_PrismicLink);\n\nconst PrismicText = (props) => {\n if (!__PRODUCTION__) {\n if (typeof props.field === \"string\") {\n throw new Error(`[PrismicText] The \"field\" prop only accepts a Rich Text or Title field's value but was provided a different type of field instead (e.g. a Key Text or Select field). You can resolve this error by rendering the field value inline without . For more details, see ${devMsg(\"prismictext-works-only-with-rich-text-and-title-fields\")}`);\n }\n }\n return React.useMemo(() => {\n if (prismicH.isFilled.richText(props.field)) {\n const text = prismicH.asText(props.field, props.separator);\n return /* @__PURE__ */ React.createElement(React.Fragment, null, text);\n } else {\n return props.fallback != null ? /* @__PURE__ */ React.createElement(React.Fragment, null, props.fallback) : null;\n }\n }, [props.field, props.fallback, props.separator]);\n};\n\nconst createDefaultSerializer = (args) => prismicR.wrapMapSerializer({\n heading1: ({ children, key }) => /* @__PURE__ */ React.createElement(\"h1\", {\n key\n }, children),\n heading2: ({ children, key }) => /* @__PURE__ */ React.createElement(\"h2\", {\n key\n }, children),\n heading3: ({ children, key }) => /* @__PURE__ */ React.createElement(\"h3\", {\n key\n }, children),\n heading4: ({ children, key }) => /* @__PURE__ */ React.createElement(\"h4\", {\n key\n }, children),\n heading5: ({ children, key }) => /* @__PURE__ */ React.createElement(\"h5\", {\n key\n }, children),\n heading6: ({ children, key }) => /* @__PURE__ */ React.createElement(\"h6\", {\n key\n }, children),\n paragraph: ({ children, key }) => /* @__PURE__ */ React.createElement(\"p\", {\n key\n }, children),\n preformatted: ({ node, key }) => /* @__PURE__ */ React.createElement(\"pre\", {\n key\n }, node.text),\n strong: ({ children, key }) => /* @__PURE__ */ React.createElement(\"strong\", {\n key\n }, children),\n em: ({ children, key }) => /* @__PURE__ */ React.createElement(\"em\", {\n key\n }, children),\n listItem: ({ children, key }) => /* @__PURE__ */ React.createElement(\"li\", {\n key\n }, children),\n oListItem: ({ children, key }) => /* @__PURE__ */ React.createElement(\"li\", {\n key\n }, children),\n list: ({ children, key }) => /* @__PURE__ */ React.createElement(\"ul\", {\n key\n }, children),\n oList: ({ children, key }) => /* @__PURE__ */ React.createElement(\"ol\", {\n key\n }, children),\n image: ({ node, key }) => {\n var _a;\n const img = /* @__PURE__ */ React.createElement(\"img\", {\n src: node.url,\n alt: (_a = node.alt) != null ? _a : void 0,\n \"data-copyright\": node.copyright ? node.copyright : void 0\n });\n return /* @__PURE__ */ React.createElement(\"p\", {\n key,\n className: \"block-img\"\n }, node.linkTo ? /* @__PURE__ */ React.createElement(PrismicLink, {\n linkResolver: args.linkResolver,\n internalComponent: args.internalLinkComponent,\n externalComponent: args.externalLinkComponent,\n field: node.linkTo\n }, img) : img);\n },\n embed: ({ node, key }) => {\n var _a;\n return /* @__PURE__ */ React.createElement(\"div\", {\n key,\n \"data-oembed\": node.oembed.embed_url,\n \"data-oembed-type\": node.oembed.type,\n \"data-oembed-provider\": node.oembed.provider_name,\n dangerouslySetInnerHTML: { __html: (_a = node.oembed.html) != null ? _a : \"\" }\n });\n },\n hyperlink: ({ node, children, key }) => /* @__PURE__ */ React.createElement(PrismicLink, {\n key,\n field: node.data,\n linkResolver: args.linkResolver,\n internalComponent: args.internalLinkComponent,\n externalComponent: args.externalLinkComponent\n }, children),\n label: ({ node, children, key }) => /* @__PURE__ */ React.createElement(\"span\", {\n key,\n className: node.data.label\n }, children),\n span: ({ text, key }) => {\n const result = [];\n let i = 0;\n for (const line of text.split(\"\\n\")) {\n if (i > 0) {\n result.push(/* @__PURE__ */ React.createElement(\"br\", {\n key: `${i}__break`\n }));\n }\n result.push(/* @__PURE__ */ React.createElement(React.Fragment, {\n key: `${i}__line`\n }, line));\n i++;\n }\n return /* @__PURE__ */ React.createElement(React.Fragment, {\n key\n }, result);\n }\n});\nconst PrismicRichText = (props) => {\n const context = usePrismicContext();\n return React.useMemo(() => {\n if (prismicH.isFilled.richText(props.field)) {\n const linkResolver = props.linkResolver || context.linkResolver;\n const serializer = prismicR.composeSerializers(typeof props.components === \"object\" ? prismicR.wrapMapSerializer(props.components) : props.components, typeof context.richTextComponents === \"object\" ? prismicR.wrapMapSerializer(context.richTextComponents) : context.richTextComponents, createDefaultSerializer({\n linkResolver,\n internalLinkComponent: props.internalLinkComponent,\n externalLinkComponent: props.externalLinkComponent\n }));\n const serialized = prismicR.serialize(props.field, (type, node, text, children, key) => {\n const result = serializer(type, node, text, children, key);\n if (React.isValidElement(result) && result.key == null) {\n return React.cloneElement(result, { key });\n } else {\n return result;\n }\n });\n return /* @__PURE__ */ React.createElement(React.Fragment, null, serialized);\n } else {\n return props.fallback != null ? /* @__PURE__ */ React.createElement(React.Fragment, null, props.fallback) : null;\n }\n }, [\n props.field,\n props.internalLinkComponent,\n props.externalLinkComponent,\n props.components,\n props.linkResolver,\n props.fallback,\n context.linkResolver,\n context.richTextComponents\n ]);\n};\n\nconst _PrismicImage = (props, ref) => {\n const {\n field,\n alt,\n fallbackAlt,\n imgixParams,\n widths,\n pixelDensities,\n ...restProps\n } = props;\n if (!__PRODUCTION__) {\n if (typeof alt === \"string\" && props.alt !== \"\") {\n console.warn(`[PrismicImage] The \"alt\" prop can only be used to declare an image as decorative by passing an empty string (alt=\"\") but was provided a non-empty string. You can resolve this warning by removing the \"alt\" prop or changing it to alt=\"\". For more details, see ${devMsg(\"alt-must-be-an-empty-string\")}`);\n }\n if (typeof fallbackAlt === \"string\" && fallbackAlt !== \"\") {\n console.warn(`[PrismicImage] The \"fallbackAlt\" prop can only be used to declare an image as decorative by passing an empty string (fallbackAlt=\"\") but was provided a non-empty string. You can resolve this warning by removing the \"fallbackAlt\" prop or changing it to fallbackAlt=\"\". For more details, see ${devMsg(\"alt-must-be-an-empty-string\")}`);\n }\n if (widths && pixelDensities) {\n console.warn(`[PrismicImage] Only one of \"widths\" or \"pixelDensities\" props can be provided. You can resolve this warning by removing either the \"widths\" or \"pixelDensities\" prop. \"widths\" will be used in this case.`);\n }\n }\n if (prismicH.isFilled.imageThumbnail(field)) {\n let src;\n let srcSet;\n if (widths || !pixelDensities) {\n const res = prismicH.asImageWidthSrcSet(field, {\n ...imgixParams,\n widths: widths === \"defaults\" ? void 0 : widths\n });\n src = res.src;\n srcSet = res.srcset;\n } else if (pixelDensities) {\n const res = prismicH.asImagePixelDensitySrcSet(field, {\n ...imgixParams,\n pixelDensities: pixelDensities === \"defaults\" ? void 0 : pixelDensities\n });\n src = res.src;\n srcSet = res.srcset;\n }\n return /* @__PURE__ */ React.createElement(\"img\", {\n ref,\n src,\n srcSet,\n alt: alt != null ? alt : field.alt || fallbackAlt,\n ...restProps\n });\n } else {\n return null;\n }\n};\nif (!__PRODUCTION__) {\n _PrismicImage.displayName = \"PrismicImage\";\n}\nconst PrismicImage = React.forwardRef(_PrismicImage);\n\nconst pascalCase = (input) => {\n const camelCased = input.replace(/(?:-|_)(\\w)/g, (_, c) => {\n return c ? c.toUpperCase() : \"\";\n });\n return camelCased[0].toUpperCase() + camelCased.slice(1);\n};\n\nconst TODOSliceComponent = __PRODUCTION__ ? () => null : ({\n slice\n}) => {\n const type = \"slice_type\" in slice ? slice.slice_type : slice.type;\n React.useEffect(() => {\n console.warn(`[SliceZone] Could not find a component for Slice type \"${type}\"`, slice);\n }, [slice, type]);\n return /* @__PURE__ */ React.createElement(\"section\", {\n \"data-slice-zone-todo-component\": \"\",\n \"data-slice-type\": type\n }, \"Could not find a component for Slice type \\u201C\", type, \"\\u201D\");\n};\nconst SliceZone = ({\n slices = [],\n components = {},\n resolver,\n defaultComponent = TODOSliceComponent,\n context = {}\n}) => {\n const renderedSlices = React.useMemo(() => {\n return slices.map((slice, index) => {\n const type = \"slice_type\" in slice ? slice.slice_type : slice.type;\n let Comp = components[type] || defaultComponent;\n if (resolver) {\n const resolvedComp = resolver({\n slice,\n sliceName: pascalCase(type),\n i: index\n });\n if (resolvedComp) {\n Comp = resolvedComp;\n }\n }\n const key = \"id\" in slice && slice.id ? slice.id : `${index}-${JSON.stringify(slice)}`;\n return /* @__PURE__ */ React.createElement(Comp, {\n key,\n slice,\n index,\n slices,\n context\n });\n });\n }, [components, context, defaultComponent, slices, resolver]);\n return /* @__PURE__ */ React.createElement(React.Fragment, null, renderedSlices);\n};\n\nconst PrismicToolbar = ({\n repositoryName,\n type = \"new\"\n}) => {\n const src = `https://static.cdn.prismic.io/prismic.js?repo=${repositoryName}${type === \"new\" ? \"&new=true\" : \"\"}`;\n React.useEffect(() => {\n const existingScript = document.querySelector(`script[src=\"${src}\"]`);\n if (!existingScript) {\n const script = document.createElement(\"script\");\n script.src = src;\n script.defer = true;\n script.dataset.prismicToolbar = \"\";\n script.dataset.repositoryName = repositoryName;\n script.dataset.type = type;\n if (process.env.NODE_ENV === \"test\") {\n script._evaluateScript = false;\n }\n document.body.appendChild(script);\n }\n }, [repositoryName, type, src]);\n return null;\n};\n\nconst reducer = (state, action) => {\n switch (action[0]) {\n case \"start\": {\n return { state: \"loading\" };\n }\n case \"succeed\": {\n return { state: \"loaded\", data: action[1] };\n }\n case \"fail\": {\n return {\n ...state,\n state: \"failed\",\n error: action[1]\n };\n }\n }\n};\nconst initialState = {\n state: \"idle\"\n};\nconst isParams = (value) => {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n};\nconst useStatefulPrismicClientMethod = (methodName, args, explicitClient) => {\n const lastArg = args[args.length - 1];\n const {\n client: lastArgExplicitClient,\n skip,\n ...params\n } = isParams(lastArg) ? lastArg : {};\n const argsWithoutParams = isParams(lastArg) ? args.slice(0, -1) : args;\n const client = usePrismicClient(explicitClient || lastArgExplicitClient);\n const [state, dispatch] = React.useReducer(reducer, initialState);\n React.useEffect(() => {\n if (!skip) {\n {\n dispatch([\"start\"]);\n }\n client[methodName].call(client, ...argsWithoutParams, params).then((result) => {\n {\n dispatch([\"succeed\", result]);\n }\n }).catch((error) => {\n {\n dispatch([\"fail\", error]);\n }\n });\n }\n }, [\n client,\n methodName,\n skip,\n JSON.stringify(argsWithoutParams),\n JSON.stringify(params)\n ]);\n return React.useMemo(() => [\n state.data,\n {\n state: state.state,\n error: state.error\n }\n ], [state]);\n};\n\nconst usePrismicPreviewResolver = (args = {}) => {\n const context = usePrismicContext();\n const linkResolver = args.linkResolver || context.linkResolver;\n const result = useStatefulPrismicClientMethod(\"resolvePreviewURL\", [\n {\n linkResolver,\n defaultURL: args.defaultURL || \"/\",\n previewToken: args.previewToken,\n documentID: args.documentID\n }\n ], args.client);\n const [resolvedURL] = result;\n const { navigate } = args;\n React.useEffect(() => {\n if (resolvedURL && navigate) {\n navigate(resolvedURL);\n }\n }, [resolvedURL, navigate]);\n return result;\n};\n\nconst usePrismicDocuments = (...args) => useStatefulPrismicClientMethod(\"get\", args);\nconst useFirstPrismicDocument = (...args) => useStatefulPrismicClientMethod(\"getFirst\", args);\nconst useAllPrismicDocumentsDangerously = (...args) => useStatefulPrismicClientMethod(\"dangerouslyGetAll\", args);\nconst usePrismicDocumentByID = (...args) => useStatefulPrismicClientMethod(\"getByID\", args);\nconst usePrismicDocumentsByIDs = (...args) => useStatefulPrismicClientMethod(\"getByIDs\", args);\nconst useAllPrismicDocumentsByIDs = (...args) => useStatefulPrismicClientMethod(\"getAllByIDs\", args);\nconst usePrismicDocumentByUID = (...args) => useStatefulPrismicClientMethod(\"getByUID\", args);\nconst usePrismicDocumentsByUIDs = (...args) => useStatefulPrismicClientMethod(\"getByUIDs\", args);\nconst useAllPrismicDocumentsByUIDs = (...args) => useStatefulPrismicClientMethod(\"getAllByUIDs\", args);\nconst useSinglePrismicDocument = (...args) => useStatefulPrismicClientMethod(\"getSingle\", args);\nconst usePrismicDocumentsByType = (...args) => useStatefulPrismicClientMethod(\"getByType\", args);\nconst useAllPrismicDocumentsByType = (...args) => useStatefulPrismicClientMethod(\"getAllByType\", args);\nconst usePrismicDocumentsByTag = (...args) => useStatefulPrismicClientMethod(\"getByTag\", args);\nconst useAllPrismicDocumentsByTag = (...args) => useStatefulPrismicClientMethod(\"getAllByTag\", args);\nconst usePrismicDocumentsBySomeTags = (...args) => useStatefulPrismicClientMethod(\"getBySomeTags\", args);\nconst useAllPrismicDocumentsBySomeTags = (...args) => useStatefulPrismicClientMethod(\"getAllBySomeTags\", args);\nconst usePrismicDocumentsByEveryTag = (...args) => useStatefulPrismicClientMethod(\"getByEveryTag\", args);\nconst useAllPrismicDocumentsByEveryTag = (...args) => useStatefulPrismicClientMethod(\"getAllByEveryTag\", args);\n\nconst Elements = Element;\n\nexport { Elements, PrismicImage, PrismicLink, PrismicProvider, PrismicRichText, PrismicText, PrismicToolbar, SliceZone, TODOSliceComponent, useAllPrismicDocumentsByEveryTag, useAllPrismicDocumentsByIDs, useAllPrismicDocumentsBySomeTags, useAllPrismicDocumentsByTag, useAllPrismicDocumentsByType, useAllPrismicDocumentsByUIDs, useAllPrismicDocumentsDangerously, useFirstPrismicDocument, usePrismicClient, usePrismicContext, usePrismicDocumentByID, usePrismicDocumentByUID, usePrismicDocuments, usePrismicDocumentsByEveryTag, usePrismicDocumentsByIDs, usePrismicDocumentsBySomeTags, usePrismicDocumentsByTag, usePrismicDocumentsByType, usePrismicDocumentsByUIDs, usePrismicPreviewResolver, useSinglePrismicDocument };\n//# sourceMappingURL=index.js.map\n","var _a = Object.prototype, toString = _a.toString, hasOwnProperty = _a.hasOwnProperty;\r\nvar fnToStr = Function.prototype.toString;\r\nvar previousComparisons = new Map();\r\n/**\r\n * Performs a deep equality check on two JavaScript values, tolerating cycles.\r\n */\r\nfunction equal(a, b) {\r\n try {\r\n return check(a, b);\r\n }\r\n finally {\r\n previousComparisons.clear();\r\n }\r\n}\r\nfunction check(a, b) {\r\n // If the two values are strictly equal, our job is easy.\r\n if (a === b) {\r\n return true;\r\n }\r\n // Object.prototype.toString returns a representation of the runtime type of\r\n // the given value that is considerably more precise than typeof.\r\n var aTag = toString.call(a);\r\n var bTag = toString.call(b);\r\n // If the runtime types of a and b are different, they could maybe be equal\r\n // under some interpretation of equality, but for simplicity and performance\r\n // we just return false instead.\r\n if (aTag !== bTag) {\r\n return false;\r\n }\r\n switch (aTag) {\r\n case '[object Array]':\r\n // Arrays are a lot like other objects, but we can cheaply compare their\r\n // lengths as a short-cut before comparing their elements.\r\n if (a.length !== b.length)\r\n return false;\r\n // Fall through to object case...\r\n case '[object Object]': {\r\n if (previouslyCompared(a, b))\r\n return true;\r\n var aKeys = definedKeys(a);\r\n var bKeys = definedKeys(b);\r\n // If `a` and `b` have a different number of enumerable keys, they\r\n // must be different.\r\n var keyCount = aKeys.length;\r\n if (keyCount !== bKeys.length)\r\n return false;\r\n // Now make sure they have the same keys.\r\n for (var k = 0; k < keyCount; ++k) {\r\n if (!hasOwnProperty.call(b, aKeys[k])) {\r\n return false;\r\n }\r\n }\r\n // Finally, check deep equality of all child properties.\r\n for (var k = 0; k < keyCount; ++k) {\r\n var key = aKeys[k];\r\n if (!check(a[key], b[key])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n case '[object Error]':\r\n return a.name === b.name && a.message === b.message;\r\n case '[object Number]':\r\n // Handle NaN, which is !== itself.\r\n if (a !== a)\r\n return b !== b;\r\n // Fall through to shared +a === +b case...\r\n case '[object Boolean]':\r\n case '[object Date]':\r\n return +a === +b;\r\n case '[object RegExp]':\r\n case '[object String]':\r\n return a == \"\".concat(b);\r\n case '[object Map]':\r\n case '[object Set]': {\r\n if (a.size !== b.size)\r\n return false;\r\n if (previouslyCompared(a, b))\r\n return true;\r\n var aIterator = a.entries();\r\n var isMap = aTag === '[object Map]';\r\n while (true) {\r\n var info = aIterator.next();\r\n if (info.done)\r\n break;\r\n // If a instanceof Set, aValue === aKey.\r\n var _a = info.value, aKey = _a[0], aValue = _a[1];\r\n // So this works the same way for both Set and Map.\r\n if (!b.has(aKey)) {\r\n return false;\r\n }\r\n // However, we care about deep equality of values only when dealing\r\n // with Map structures.\r\n if (isMap && !check(aValue, b.get(aKey))) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n case '[object Uint16Array]':\r\n case '[object Uint8Array]': // Buffer, in Node.js.\r\n case '[object Uint32Array]':\r\n case '[object Int32Array]':\r\n case '[object Int8Array]':\r\n case '[object Int16Array]':\r\n case '[object ArrayBuffer]':\r\n // DataView doesn't need these conversions, but the equality check is\r\n // otherwise the same.\r\n a = new Uint8Array(a);\r\n b = new Uint8Array(b);\r\n // Fall through...\r\n case '[object DataView]': {\r\n var len = a.byteLength;\r\n if (len === b.byteLength) {\r\n while (len-- && a[len] === b[len]) {\r\n // Keep looping as long as the bytes are equal.\r\n }\r\n }\r\n return len === -1;\r\n }\r\n case '[object AsyncFunction]':\r\n case '[object GeneratorFunction]':\r\n case '[object AsyncGeneratorFunction]':\r\n case '[object Function]': {\r\n var aCode = fnToStr.call(a);\r\n if (aCode !== fnToStr.call(b)) {\r\n return false;\r\n }\r\n // We consider non-native functions equal if they have the same code\r\n // (native functions require === because their code is censored).\r\n // Note that this behavior is not entirely sound, since !== function\r\n // objects with the same code can behave differently depending on\r\n // their closure scope. However, any function can behave differently\r\n // depending on the values of its input arguments (including this)\r\n // and its calling context (including its closure scope), even\r\n // though the function object is === to itself; and it is entirely\r\n // possible for functions that are not === to behave exactly the\r\n // same under all conceivable circumstances. Because none of these\r\n // factors are statically decidable in JavaScript, JS function\r\n // equality is not well-defined. This ambiguity allows us to\r\n // consider the best possible heuristic among various imperfect\r\n // options, and equating non-native functions that have the same\r\n // code has enormous practical benefits, such as when comparing\r\n // functions that are repeatedly passed as fresh function\r\n // expressions within objects that are otherwise deeply equal. Since\r\n // any function created from the same syntactic expression (in the\r\n // same code location) will always stringify to the same code\r\n // according to fnToStr.call, we can reasonably expect these\r\n // repeatedly passed function expressions to have the same code, and\r\n // thus behave \"the same\" (with all the caveats mentioned above),\r\n // even though the runtime function objects are !== to one another.\r\n return !endsWith(aCode, nativeCodeSuffix);\r\n }\r\n }\r\n // Otherwise the values are not equal.\r\n return false;\r\n}\r\nfunction definedKeys(obj) {\r\n // Remember that the second argument to Array.prototype.filter will be\r\n // used as `this` within the callback function.\r\n return Object.keys(obj).filter(isDefinedKey, obj);\r\n}\r\nfunction isDefinedKey(key) {\r\n return this[key] !== void 0;\r\n}\r\nvar nativeCodeSuffix = \"{ [native code] }\";\r\nfunction endsWith(full, suffix) {\r\n var fromIndex = full.length - suffix.length;\r\n return fromIndex >= 0 &&\r\n full.indexOf(suffix, fromIndex) === fromIndex;\r\n}\r\nfunction previouslyCompared(a, b) {\r\n // Though cyclic references can make an object graph appear infinite from the\r\n // perspective of a depth-first traversal, the graph still contains a finite\r\n // number of distinct object references. We use the previousComparisons cache\r\n // to avoid comparing the same pair of object references more than once, which\r\n // guarantees termination (even if we end up comparing every object in one\r\n // graph to every object in the other graph, which is extremely unlikely),\r\n // while still allowing weird isomorphic structures (like rings with different\r\n // lengths) a chance to pass the equality test.\r\n var bSet = previousComparisons.get(a);\r\n if (bSet) {\r\n // Return true here because we can be sure false will be returned somewhere\r\n // else if the objects are not equivalent.\r\n if (bSet.has(b))\r\n return true;\r\n }\r\n else {\r\n previousComparisons.set(a, bSet = new Set);\r\n }\r\n bSet.add(b);\r\n return false;\r\n}\n\nexport { equal as default, equal };\n//# sourceMappingURL=equality.esm.js.map\n","// A [trie](https://en.wikipedia.org/wiki/Trie) data structure that holds\r\n// object keys weakly, yet can also hold non-object keys, unlike the\r\n// native `WeakMap`.\r\n// If no makeData function is supplied, the looked-up data will be an empty,\r\n// null-prototype Object.\r\nvar defaultMakeData = function () { return Object.create(null); };\r\n// Useful for processing arguments objects as well as arrays.\r\nvar _a = Array.prototype, forEach = _a.forEach, slice = _a.slice;\r\nvar Trie = /** @class */ (function () {\r\n function Trie(weakness, makeData) {\r\n if (weakness === void 0) { weakness = true; }\r\n if (makeData === void 0) { makeData = defaultMakeData; }\r\n this.weakness = weakness;\r\n this.makeData = makeData;\r\n }\r\n Trie.prototype.lookup = function () {\r\n var array = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n array[_i] = arguments[_i];\r\n }\r\n return this.lookupArray(array);\r\n };\r\n Trie.prototype.lookupArray = function (array) {\r\n var node = this;\r\n forEach.call(array, function (key) { return node = node.getChildTrie(key); });\r\n return node.data || (node.data = this.makeData(slice.call(array)));\r\n };\r\n Trie.prototype.getChildTrie = function (key) {\r\n var map = this.weakness && isObjRef(key)\r\n ? this.weak || (this.weak = new WeakMap())\r\n : this.strong || (this.strong = new Map());\r\n var child = map.get(key);\r\n if (!child)\r\n map.set(key, child = new Trie(this.weakness, this.makeData));\r\n return child;\r\n };\r\n return Trie;\r\n}());\r\nfunction isObjRef(value) {\r\n switch (typeof value) {\r\n case \"object\":\r\n if (value === null)\r\n break;\r\n // Fall through to return true...\r\n case \"function\":\r\n return true;\r\n }\r\n return false;\r\n}\n\nexport { Trie };\n//# sourceMappingURL=trie.esm.js.map\n","/*!\n * accounting.js v0.4.1\n * Copyright 2014 Open Exchange Rates\n *\n * Freely distributable under the MIT license.\n * Portions of accounting.js are inspired or borrowed from underscore.js\n *\n * Full details and documentation:\n * http://openexchangerates.github.io/accounting.js/\n */\n\n(function(root, undefined) {\n\n\t/* --- Setup --- */\n\n\t// Create the local library object, to be exported or referenced globally later\n\tvar lib = {};\n\n\t// Current version\n\tlib.version = '0.4.1';\n\n\n\t/* --- Exposed settings --- */\n\n\t// The library's settings configuration object. Contains default parameters for\n\t// currency and number formatting\n\tlib.settings = {\n\t\tcurrency: {\n\t\t\tsymbol : \"$\",\t\t// default currency symbol is '$'\n\t\t\tformat : \"%s%v\",\t// controls output: %s = symbol, %v = value (can be object, see docs)\n\t\t\tdecimal : \".\",\t\t// decimal point separator\n\t\t\tthousand : \",\",\t\t// thousands separator\n\t\t\tprecision : 2,\t\t// decimal places\n\t\t\tgrouping : 3\t\t// digit grouping (not implemented yet)\n\t\t},\n\t\tnumber: {\n\t\t\tprecision : 0,\t\t// default precision on numbers is 0\n\t\t\tgrouping : 3,\t\t// digit grouping (not implemented yet)\n\t\t\tthousand : \",\",\n\t\t\tdecimal : \".\"\n\t\t}\n\t};\n\n\n\t/* --- Internal Helper Methods --- */\n\n\t// Store reference to possibly-available ECMAScript 5 methods for later\n\tvar nativeMap = Array.prototype.map,\n\t\tnativeIsArray = Array.isArray,\n\t\ttoString = Object.prototype.toString;\n\n\t/**\n\t * Tests whether supplied parameter is a string\n\t * from underscore.js\n\t */\n\tfunction isString(obj) {\n\t\treturn !!(obj === '' || (obj && obj.charCodeAt && obj.substr));\n\t}\n\n\t/**\n\t * Tests whether supplied parameter is a string\n\t * from underscore.js, delegates to ECMA5's native Array.isArray\n\t */\n\tfunction isArray(obj) {\n\t\treturn nativeIsArray ? nativeIsArray(obj) : toString.call(obj) === '[object Array]';\n\t}\n\n\t/**\n\t * Tests whether supplied parameter is a true object\n\t */\n\tfunction isObject(obj) {\n\t\treturn obj && toString.call(obj) === '[object Object]';\n\t}\n\n\t/**\n\t * Extends an object with a defaults object, similar to underscore's _.defaults\n\t *\n\t * Used for abstracting parameter handling from API methods\n\t */\n\tfunction defaults(object, defs) {\n\t\tvar key;\n\t\tobject = object || {};\n\t\tdefs = defs || {};\n\t\t// Iterate over object non-prototype properties:\n\t\tfor (key in defs) {\n\t\t\tif (defs.hasOwnProperty(key)) {\n\t\t\t\t// Replace values with defaults only if undefined (allow empty/zero values):\n\t\t\t\tif (object[key] == null) object[key] = defs[key];\n\t\t\t}\n\t\t}\n\t\treturn object;\n\t}\n\n\t/**\n\t * Implementation of `Array.map()` for iteration loops\n\t *\n\t * Returns a new Array as a result of calling `iterator` on each array value.\n\t * Defers to native Array.map if available\n\t */\n\tfunction map(obj, iterator, context) {\n\t\tvar results = [], i, j;\n\n\t\tif (!obj) return results;\n\n\t\t// Use native .map method if it exists:\n\t\tif (nativeMap && obj.map === nativeMap) return obj.map(iterator, context);\n\n\t\t// Fallback for native .map:\n\t\tfor (i = 0, j = obj.length; i < j; i++ ) {\n\t\t\tresults[i] = iterator.call(context, obj[i], i, obj);\n\t\t}\n\t\treturn results;\n\t}\n\n\t/**\n\t * Check and normalise the value of precision (must be positive integer)\n\t */\n\tfunction checkPrecision(val, base) {\n\t\tval = Math.round(Math.abs(val));\n\t\treturn isNaN(val)? base : val;\n\t}\n\n\n\t/**\n\t * Parses a format string or object and returns format obj for use in rendering\n\t *\n\t * `format` is either a string with the default (positive) format, or object\n\t * containing `pos` (required), `neg` and `zero` values (or a function returning\n\t * either a string or object)\n\t *\n\t * Either string or format.pos must contain \"%v\" (value) to be valid\n\t */\n\tfunction checkCurrencyFormat(format) {\n\t\tvar defaults = lib.settings.currency.format;\n\n\t\t// Allow function as format parameter (should return string or object):\n\t\tif ( typeof format === \"function\" ) format = format();\n\n\t\t// Format can be a string, in which case `value` (\"%v\") must be present:\n\t\tif ( isString( format ) && format.match(\"%v\") ) {\n\n\t\t\t// Create and return positive, negative and zero formats:\n\t\t\treturn {\n\t\t\t\tpos : format,\n\t\t\t\tneg : format.replace(\"-\", \"\").replace(\"%v\", \"-%v\"),\n\t\t\t\tzero : format\n\t\t\t};\n\n\t\t// If no format, or object is missing valid positive value, use defaults:\n\t\t} else if ( !format || !format.pos || !format.pos.match(\"%v\") ) {\n\n\t\t\t// If defaults is a string, casts it to an object for faster checking next time:\n\t\t\treturn ( !isString( defaults ) ) ? defaults : lib.settings.currency.format = {\n\t\t\t\tpos : defaults,\n\t\t\t\tneg : defaults.replace(\"%v\", \"-%v\"),\n\t\t\t\tzero : defaults\n\t\t\t};\n\n\t\t}\n\t\t// Otherwise, assume format was fine:\n\t\treturn format;\n\t}\n\n\n\t/* --- API Methods --- */\n\n\t/**\n\t * Takes a string/array of strings, removes all formatting/cruft and returns the raw float value\n\t * Alias: `accounting.parse(string)`\n\t *\n\t * Decimal must be included in the regular expression to match floats (defaults to\n\t * accounting.settings.number.decimal), so if the number uses a non-standard decimal \n\t * separator, provide it as the second argument.\n\t *\n\t * Also matches bracketed negatives (eg. \"$ (1.99)\" => -1.99)\n\t *\n\t * Doesn't throw any errors (`NaN`s become 0) but this may change in future\n\t */\n\tvar unformat = lib.unformat = lib.parse = function(value, decimal) {\n\t\t// Recursively unformat arrays:\n\t\tif (isArray(value)) {\n\t\t\treturn map(value, function(val) {\n\t\t\t\treturn unformat(val, decimal);\n\t\t\t});\n\t\t}\n\n\t\t// Fails silently (need decent errors):\n\t\tvalue = value || 0;\n\n\t\t// Return the value as-is if it's already a number:\n\t\tif (typeof value === \"number\") return value;\n\n\t\t// Default decimal point comes from settings, but could be set to eg. \",\" in opts:\n\t\tdecimal = decimal || lib.settings.number.decimal;\n\n\t\t // Build regex to strip out everything except digits, decimal point and minus sign:\n\t\tvar regex = new RegExp(\"[^0-9-\" + decimal + \"]\", [\"g\"]),\n\t\t\tunformatted = parseFloat(\n\t\t\t\t(\"\" + value)\n\t\t\t\t.replace(/\\((.*)\\)/, \"-$1\") // replace bracketed values with negatives\n\t\t\t\t.replace(regex, '') // strip out any cruft\n\t\t\t\t.replace(decimal, '.') // make sure decimal point is standard\n\t\t\t);\n\n\t\t// This will fail silently which may cause trouble, let's wait and see:\n\t\treturn !isNaN(unformatted) ? unformatted : 0;\n\t};\n\n\n\t/**\n\t * Implementation of toFixed() that treats floats more like decimals\n\t *\n\t * Fixes binary rounding issues (eg. (0.615).toFixed(2) === \"0.61\") that present\n\t * problems for accounting- and finance-related software.\n\t */\n\tvar toFixed = lib.toFixed = function(value, precision) {\n\t\tprecision = checkPrecision(precision, lib.settings.number.precision);\n\t\tvar power = Math.pow(10, precision);\n\n\t\t// Multiply up by precision, round accurately, then divide and use native toFixed():\n\t\treturn (Math.round(lib.unformat(value) * power) / power).toFixed(precision);\n\t};\n\n\n\t/**\n\t * Format a number, with comma-separated thousands and custom precision/decimal places\n\t * Alias: `accounting.format()`\n\t *\n\t * Localise by overriding the precision and thousand / decimal separators\n\t * 2nd parameter `precision` can be an object matching `settings.number`\n\t */\n\tvar formatNumber = lib.formatNumber = lib.format = function(number, precision, thousand, decimal) {\n\t\t// Resursively format arrays:\n\t\tif (isArray(number)) {\n\t\t\treturn map(number, function(val) {\n\t\t\t\treturn formatNumber(val, precision, thousand, decimal);\n\t\t\t});\n\t\t}\n\n\t\t// Clean up number:\n\t\tnumber = unformat(number);\n\n\t\t// Build options object from second param (if object) or all params, extending defaults:\n\t\tvar opts = defaults(\n\t\t\t\t(isObject(precision) ? precision : {\n\t\t\t\t\tprecision : precision,\n\t\t\t\t\tthousand : thousand,\n\t\t\t\t\tdecimal : decimal\n\t\t\t\t}),\n\t\t\t\tlib.settings.number\n\t\t\t),\n\n\t\t\t// Clean up precision\n\t\t\tusePrecision = checkPrecision(opts.precision),\n\n\t\t\t// Do some calc:\n\t\t\tnegative = number < 0 ? \"-\" : \"\",\n\t\t\tbase = parseInt(toFixed(Math.abs(number || 0), usePrecision), 10) + \"\",\n\t\t\tmod = base.length > 3 ? base.length % 3 : 0;\n\n\t\t// Format the number:\n\t\treturn negative + (mod ? base.substr(0, mod) + opts.thousand : \"\") + base.substr(mod).replace(/(\\d{3})(?=\\d)/g, \"$1\" + opts.thousand) + (usePrecision ? opts.decimal + toFixed(Math.abs(number), usePrecision).split('.')[1] : \"\");\n\t};\n\n\n\t/**\n\t * Format a number into currency\n\t *\n\t * Usage: accounting.formatMoney(number, symbol, precision, thousandsSep, decimalSep, format)\n\t * defaults: (0, \"$\", 2, \",\", \".\", \"%s%v\")\n\t *\n\t * Localise by overriding the symbol, precision, thousand / decimal separators and format\n\t * Second param can be an object matching `settings.currency` which is the easiest way.\n\t *\n\t * To do: tidy up the parameters\n\t */\n\tvar formatMoney = lib.formatMoney = function(number, symbol, precision, thousand, decimal, format) {\n\t\t// Resursively format arrays:\n\t\tif (isArray(number)) {\n\t\t\treturn map(number, function(val){\n\t\t\t\treturn formatMoney(val, symbol, precision, thousand, decimal, format);\n\t\t\t});\n\t\t}\n\n\t\t// Clean up number:\n\t\tnumber = unformat(number);\n\n\t\t// Build options object from second param (if object) or all params, extending defaults:\n\t\tvar opts = defaults(\n\t\t\t\t(isObject(symbol) ? symbol : {\n\t\t\t\t\tsymbol : symbol,\n\t\t\t\t\tprecision : precision,\n\t\t\t\t\tthousand : thousand,\n\t\t\t\t\tdecimal : decimal,\n\t\t\t\t\tformat : format\n\t\t\t\t}),\n\t\t\t\tlib.settings.currency\n\t\t\t),\n\n\t\t\t// Check format (returns object with pos, neg and zero):\n\t\t\tformats = checkCurrencyFormat(opts.format),\n\n\t\t\t// Choose which format to use for this value:\n\t\t\tuseFormat = number > 0 ? formats.pos : number < 0 ? formats.neg : formats.zero;\n\n\t\t// Return with currency symbol added:\n\t\treturn useFormat.replace('%s', opts.symbol).replace('%v', formatNumber(Math.abs(number), checkPrecision(opts.precision), opts.thousand, opts.decimal));\n\t};\n\n\n\t/**\n\t * Format a list of numbers into an accounting column, padding with whitespace\n\t * to line up currency symbols, thousand separators and decimals places\n\t *\n\t * List should be an array of numbers\n\t * Second parameter can be an object containing keys that match the params\n\t *\n\t * Returns array of accouting-formatted number strings of same length\n\t *\n\t * NB: `white-space:pre` CSS rule is required on the list container to prevent\n\t * browsers from collapsing the whitespace in the output strings.\n\t */\n\tlib.formatColumn = function(list, symbol, precision, thousand, decimal, format) {\n\t\tif (!list) return [];\n\n\t\t// Build options object from second param (if object) or all params, extending defaults:\n\t\tvar opts = defaults(\n\t\t\t\t(isObject(symbol) ? symbol : {\n\t\t\t\t\tsymbol : symbol,\n\t\t\t\t\tprecision : precision,\n\t\t\t\t\tthousand : thousand,\n\t\t\t\t\tdecimal : decimal,\n\t\t\t\t\tformat : format\n\t\t\t\t}),\n\t\t\t\tlib.settings.currency\n\t\t\t),\n\n\t\t\t// Check format (returns object with pos, neg and zero), only need pos for now:\n\t\t\tformats = checkCurrencyFormat(opts.format),\n\n\t\t\t// Whether to pad at start of string or after currency symbol:\n\t\t\tpadAfterSymbol = formats.pos.indexOf(\"%s\") < formats.pos.indexOf(\"%v\") ? true : false,\n\n\t\t\t// Store value for the length of the longest string in the column:\n\t\t\tmaxLength = 0,\n\n\t\t\t// Format the list according to options, store the length of the longest string:\n\t\t\tformatted = map(list, function(val, i) {\n\t\t\t\tif (isArray(val)) {\n\t\t\t\t\t// Recursively format columns if list is a multi-dimensional array:\n\t\t\t\t\treturn lib.formatColumn(val, opts);\n\t\t\t\t} else {\n\t\t\t\t\t// Clean up the value\n\t\t\t\t\tval = unformat(val);\n\n\t\t\t\t\t// Choose which format to use for this value (pos, neg or zero):\n\t\t\t\t\tvar useFormat = val > 0 ? formats.pos : val < 0 ? formats.neg : formats.zero,\n\n\t\t\t\t\t\t// Format this value, push into formatted list and save the length:\n\t\t\t\t\t\tfVal = useFormat.replace('%s', opts.symbol).replace('%v', formatNumber(Math.abs(val), checkPrecision(opts.precision), opts.thousand, opts.decimal));\n\n\t\t\t\t\tif (fVal.length > maxLength) maxLength = fVal.length;\n\t\t\t\t\treturn fVal;\n\t\t\t\t}\n\t\t\t});\n\n\t\t// Pad each number in the list and send back the column of numbers:\n\t\treturn map(formatted, function(val, i) {\n\t\t\t// Only if this is a string (not a nested array, which would have already been padded):\n\t\t\tif (isString(val) && val.length < maxLength) {\n\t\t\t\t// Depending on symbol position, pad after symbol or at index 0:\n\t\t\t\treturn padAfterSymbol ? val.replace(opts.symbol, opts.symbol+(new Array(maxLength - val.length + 1).join(\" \"))) : (new Array(maxLength - val.length + 1).join(\" \")) + val;\n\t\t\t}\n\t\t\treturn val;\n\t\t});\n\t};\n\n\n\t/* --- Module Definition --- */\n\n\t// Export accounting for CommonJS. If being loaded as an AMD module, define it as such.\n\t// Otherwise, just add `accounting` to the global object\n\tif (typeof exports !== 'undefined') {\n\t\tif (typeof module !== 'undefined' && module.exports) {\n\t\t\texports = module.exports = lib;\n\t\t}\n\t\texports.accounting = lib;\n\t} else if (typeof define === 'function' && define.amd) {\n\t\t// Return the library as an AMD module:\n\t\tdefine([], function() {\n\t\t\treturn lib;\n\t\t});\n\t} else {\n\t\t// Use accounting.noConflict to restore `accounting` back to its original value.\n\t\t// Returns a reference to the library's `accounting` object;\n\t\t// e.g. `var numbers = accounting.noConflict();`\n\t\tlib.noConflict = (function(oldAccounting) {\n\t\t\treturn function() {\n\t\t\t\t// Reset the value of the root's `accounting` variable:\n\t\t\t\troot.accounting = oldAccounting;\n\t\t\t\t// Delete the noConflict method:\n\t\t\t\tlib.noConflict = undefined;\n\t\t\t\t// Return reference to the library to re-assign it:\n\t\t\t\treturn lib;\n\t\t\t};\n\t\t})(root.accounting);\n\n\t\t// Declare `fx` on the root (global/window) object:\n\t\troot['accounting'] = lib;\n\t}\n\n\t// Root will be `window` in browser or `global` on the server:\n}(this));\n","'use strict';\n\nvar AlgoliaSearchHelper = require('./src/algoliasearch.helper');\n\nvar SearchParameters = require('./src/SearchParameters');\nvar SearchResults = require('./src/SearchResults');\n\n/**\n * The algoliasearchHelper module is the function that will let its\n * contains everything needed to use the Algoliasearch\n * Helper. It is a also a function that instanciate the helper.\n * To use the helper, you also need the Algolia JS client v3.\n * @example\n * //using the UMD build\n * var client = algoliasearch('latency', '6be0576ff61c053d5f9a3225e2a90f76');\n * var helper = algoliasearchHelper(client, 'bestbuy', {\n * facets: ['shipping'],\n * disjunctiveFacets: ['category']\n * });\n * helper.on('result', function(event) {\n * console.log(event.results);\n * });\n * helper\n * .toggleFacetRefinement('category', 'Movies & TV Shows')\n * .toggleFacetRefinement('shipping', 'Free shipping')\n * .search();\n * @example\n * // The helper is an event emitter using the node API\n * helper.on('result', updateTheResults);\n * helper.once('result', updateTheResults);\n * helper.removeListener('result', updateTheResults);\n * helper.removeAllListeners('result');\n * @module algoliasearchHelper\n * @param {AlgoliaSearch} client an AlgoliaSearch client\n * @param {string} index the name of the index to query\n * @param {SearchParameters|object} opts an object defining the initial config of the search. It doesn't have to be a {SearchParameters}, just an object containing the properties you need from it.\n * @return {AlgoliaSearchHelper}\n */\nfunction algoliasearchHelper(client, index, opts) {\n return new AlgoliaSearchHelper(client, index, opts);\n}\n\n/**\n * The version currently used\n * @member module:algoliasearchHelper.version\n * @type {number}\n */\nalgoliasearchHelper.version = require('./src/version.js');\n\n/**\n * Constructor for the Helper.\n * @member module:algoliasearchHelper.AlgoliaSearchHelper\n * @type {AlgoliaSearchHelper}\n */\nalgoliasearchHelper.AlgoliaSearchHelper = AlgoliaSearchHelper;\n\n/**\n * Constructor for the object containing all the parameters of the search.\n * @member module:algoliasearchHelper.SearchParameters\n * @type {SearchParameters}\n */\nalgoliasearchHelper.SearchParameters = SearchParameters;\n\n/**\n * Constructor for the object containing the results of the search.\n * @member module:algoliasearchHelper.SearchResults\n * @type {SearchResults}\n */\nalgoliasearchHelper.SearchResults = SearchResults;\n\nmodule.exports = algoliasearchHelper;\n","'use strict';\n\nvar EventEmitter = require('@algolia/events');\nvar inherits = require('../functions/inherits');\n\n/**\n * A DerivedHelper is a way to create sub requests to\n * Algolia from a main helper.\n * @class\n * @classdesc The DerivedHelper provides an event based interface for search callbacks:\n * - search: when a search is triggered using the `search()` method.\n * - result: when the response is retrieved from Algolia and is processed.\n * This event contains a {@link SearchResults} object and the\n * {@link SearchParameters} corresponding to this answer.\n */\nfunction DerivedHelper(mainHelper, fn) {\n this.main = mainHelper;\n this.fn = fn;\n this.lastResults = null;\n}\n\ninherits(DerivedHelper, EventEmitter);\n\n/**\n * Detach this helper from the main helper\n * @return {undefined}\n * @throws Error if the derived helper is already detached\n */\nDerivedHelper.prototype.detach = function() {\n this.removeAllListeners();\n this.main.detachDerivedHelper(this);\n};\n\nDerivedHelper.prototype.getModifiedState = function(parameters) {\n return this.fn(parameters);\n};\n\nmodule.exports = DerivedHelper;\n","'use strict';\n\n/**\n * Functions to manipulate refinement lists\n *\n * The RefinementList is not formally defined through a prototype but is based\n * on a specific structure.\n *\n * @module SearchParameters.refinementList\n *\n * @typedef {string[]} SearchParameters.refinementList.Refinements\n * @typedef {Object.} SearchParameters.refinementList.RefinementList\n */\n\nvar defaultsPure = require('../functions/defaultsPure');\nvar omit = require('../functions/omit');\nvar objectHasKeys = require('../functions/objectHasKeys');\n\nvar lib = {\n /**\n * Adds a refinement to a RefinementList\n * @param {RefinementList} refinementList the initial list\n * @param {string} attribute the attribute to refine\n * @param {string} value the value of the refinement, if the value is not a string it will be converted\n * @return {RefinementList} a new and updated refinement list\n */\n addRefinement: function addRefinement(refinementList, attribute, value) {\n if (lib.isRefined(refinementList, attribute, value)) {\n return refinementList;\n }\n\n var valueAsString = '' + value;\n\n var facetRefinement = !refinementList[attribute] ?\n [valueAsString] :\n refinementList[attribute].concat(valueAsString);\n\n var mod = {};\n\n mod[attribute] = facetRefinement;\n\n return defaultsPure({}, mod, refinementList);\n },\n /**\n * Removes refinement(s) for an attribute:\n * - if the value is specified removes the refinement for the value on the attribute\n * - if no value is specified removes all the refinements for this attribute\n * @param {RefinementList} refinementList the initial list\n * @param {string} attribute the attribute to refine\n * @param {string} [value] the value of the refinement\n * @return {RefinementList} a new and updated refinement lst\n */\n removeRefinement: function removeRefinement(refinementList, attribute, value) {\n if (value === undefined) {\n // we use the \"filter\" form of clearRefinement, since it leaves empty values as-is\n // the form with a string will remove the attribute completely\n return lib.clearRefinement(refinementList, function(v, f) {\n return attribute === f;\n });\n }\n\n var valueAsString = '' + value;\n\n return lib.clearRefinement(refinementList, function(v, f) {\n return attribute === f && valueAsString === v;\n });\n },\n /**\n * Toggles the refinement value for an attribute.\n * @param {RefinementList} refinementList the initial list\n * @param {string} attribute the attribute to refine\n * @param {string} value the value of the refinement\n * @return {RefinementList} a new and updated list\n */\n toggleRefinement: function toggleRefinement(refinementList, attribute, value) {\n if (value === undefined) throw new Error('toggleRefinement should be used with a value');\n\n if (lib.isRefined(refinementList, attribute, value)) {\n return lib.removeRefinement(refinementList, attribute, value);\n }\n\n return lib.addRefinement(refinementList, attribute, value);\n },\n /**\n * Clear all or parts of a RefinementList. Depending on the arguments, three\n * kinds of behavior can happen:\n * - if no attribute is provided: clears the whole list\n * - if an attribute is provided as a string: clears the list for the specific attribute\n * - if an attribute is provided as a function: discards the elements for which the function returns true\n * @param {RefinementList} refinementList the initial list\n * @param {string} [attribute] the attribute or function to discard\n * @param {string} [refinementType] optional parameter to give more context to the attribute function\n * @return {RefinementList} a new and updated refinement list\n */\n clearRefinement: function clearRefinement(refinementList, attribute, refinementType) {\n if (attribute === undefined) {\n if (!objectHasKeys(refinementList)) {\n return refinementList;\n }\n return {};\n } else if (typeof attribute === 'string') {\n return omit(refinementList, [attribute]);\n } else if (typeof attribute === 'function') {\n var hasChanged = false;\n\n var newRefinementList = Object.keys(refinementList).reduce(function(memo, key) {\n var values = refinementList[key] || [];\n var facetList = values.filter(function(value) {\n return !attribute(value, key, refinementType);\n });\n\n if (facetList.length !== values.length) {\n hasChanged = true;\n }\n memo[key] = facetList;\n\n return memo;\n }, {});\n\n if (hasChanged) return newRefinementList;\n return refinementList;\n }\n },\n /**\n * Test if the refinement value is used for the attribute. If no refinement value\n * is provided, test if the refinementList contains any refinement for the\n * given attribute.\n * @param {RefinementList} refinementList the list of refinement\n * @param {string} attribute name of the attribute\n * @param {string} [refinementValue] value of the filter/refinement\n * @return {boolean}\n */\n isRefined: function isRefined(refinementList, attribute, refinementValue) {\n var containsRefinements = !!refinementList[attribute] &&\n refinementList[attribute].length > 0;\n\n if (refinementValue === undefined || !containsRefinements) {\n return containsRefinements;\n }\n\n var refinementValueAsString = '' + refinementValue;\n\n return refinementList[attribute].indexOf(refinementValueAsString) !== -1;\n }\n};\n\nmodule.exports = lib;\n","'use strict';\n\nvar merge = require('../functions/merge');\nvar defaultsPure = require('../functions/defaultsPure');\nvar intersection = require('../functions/intersection');\nvar find = require('../functions/find');\nvar valToNumber = require('../functions/valToNumber');\nvar omit = require('../functions/omit');\nvar objectHasKeys = require('../functions/objectHasKeys');\nvar isValidUserToken = require('../utils/isValidUserToken');\n\nvar RefinementList = require('./RefinementList');\n\n/**\n * isEqual, but only for numeric refinement values, possible values:\n * - 5\n * - [5]\n * - [[5]]\n * - [[5,5],[4]]\n */\nfunction isEqualNumericRefinement(a, b) {\n if (Array.isArray(a) && Array.isArray(b)) {\n return (\n a.length === b.length &&\n a.every(function(el, i) {\n return isEqualNumericRefinement(b[i], el);\n })\n );\n }\n return a === b;\n}\n\n/**\n * like _.find but using deep equality to be able to use it\n * to find arrays.\n * @private\n * @param {any[]} array array to search into (elements are base or array of base)\n * @param {any} searchedValue the value we're looking for (base or array of base)\n * @return {any} the searched value or undefined\n */\nfunction findArray(array, searchedValue) {\n return find(array, function(currentValue) {\n return isEqualNumericRefinement(currentValue, searchedValue);\n });\n}\n\n/**\n * The facet list is the structure used to store the list of values used to\n * filter a single attribute.\n * @typedef {string[]} SearchParameters.FacetList\n */\n\n/**\n * Structure to store numeric filters with the operator as the key. The supported operators\n * are `=`, `>`, `<`, `>=`, `<=` and `!=`.\n * @typedef {Object.>} SearchParameters.OperatorList\n */\n\n/**\n * SearchParameters is the data structure that contains all the information\n * usable for making a search to Algolia API. It doesn't do the search itself,\n * nor does it contains logic about the parameters.\n * It is an immutable object, therefore it has been created in a way that each\n * changes does not change the object itself but returns a copy with the\n * modification.\n * This object should probably not be instantiated outside of the helper. It will\n * be provided when needed. This object is documented for reference as you'll\n * get it from events generated by the {@link AlgoliaSearchHelper}.\n * If need be, instantiate the Helper from the factory function {@link SearchParameters.make}\n * @constructor\n * @classdesc contains all the parameters of a search\n * @param {object|SearchParameters} newParameters existing parameters or partial object\n * for the properties of a new SearchParameters\n * @see SearchParameters.make\n * @example SearchParameters of the first query in\n * the instant search demo\n{\n \"query\": \"\",\n \"disjunctiveFacets\": [\n \"customerReviewCount\",\n \"category\",\n \"salePrice_range\",\n \"manufacturer\"\n ],\n \"maxValuesPerFacet\": 30,\n \"page\": 0,\n \"hitsPerPage\": 10,\n \"facets\": [\n \"type\",\n \"shipping\"\n ]\n}\n */\nfunction SearchParameters(newParameters) {\n var params = newParameters ? SearchParameters._parseNumbers(newParameters) : {};\n\n if (params.userToken !== undefined && !isValidUserToken(params.userToken)) {\n console.warn('[algoliasearch-helper] The `userToken` parameter is invalid. This can lead to wrong analytics.\\n - Format: [a-zA-Z0-9_-]{1,64}');\n }\n /**\n * This attribute contains the list of all the conjunctive facets\n * used. This list will be added to requested facets in the\n * [facets attribute](https://www.algolia.com/doc/rest-api/search#param-facets) sent to algolia.\n * @member {string[]}\n */\n this.facets = params.facets || [];\n /**\n * This attribute contains the list of all the disjunctive facets\n * used. This list will be added to requested facets in the\n * [facets attribute](https://www.algolia.com/doc/rest-api/search#param-facets) sent to algolia.\n * @member {string[]}\n */\n this.disjunctiveFacets = params.disjunctiveFacets || [];\n /**\n * This attribute contains the list of all the hierarchical facets\n * used. This list will be added to requested facets in the\n * [facets attribute](https://www.algolia.com/doc/rest-api/search#param-facets) sent to algolia.\n * Hierarchical facets are a sub type of disjunctive facets that\n * let you filter faceted attributes hierarchically.\n * @member {string[]|object[]}\n */\n this.hierarchicalFacets = params.hierarchicalFacets || [];\n\n // Refinements\n /**\n * This attribute contains all the filters that need to be\n * applied on the conjunctive facets. Each facet must be properly\n * defined in the `facets` attribute.\n *\n * The key is the name of the facet, and the `FacetList` contains all\n * filters selected for the associated facet name.\n *\n * When querying algolia, the values stored in this attribute will\n * be translated into the `facetFilters` attribute.\n * @member {Object.}\n */\n this.facetsRefinements = params.facetsRefinements || {};\n /**\n * This attribute contains all the filters that need to be\n * excluded from the conjunctive facets. Each facet must be properly\n * defined in the `facets` attribute.\n *\n * The key is the name of the facet, and the `FacetList` contains all\n * filters excluded for the associated facet name.\n *\n * When querying algolia, the values stored in this attribute will\n * be translated into the `facetFilters` attribute.\n * @member {Object.}\n */\n this.facetsExcludes = params.facetsExcludes || {};\n /**\n * This attribute contains all the filters that need to be\n * applied on the disjunctive facets. Each facet must be properly\n * defined in the `disjunctiveFacets` attribute.\n *\n * The key is the name of the facet, and the `FacetList` contains all\n * filters selected for the associated facet name.\n *\n * When querying algolia, the values stored in this attribute will\n * be translated into the `facetFilters` attribute.\n * @member {Object.}\n */\n this.disjunctiveFacetsRefinements = params.disjunctiveFacetsRefinements || {};\n /**\n * This attribute contains all the filters that need to be\n * applied on the numeric attributes.\n *\n * The key is the name of the attribute, and the value is the\n * filters to apply to this attribute.\n *\n * When querying algolia, the values stored in this attribute will\n * be translated into the `numericFilters` attribute.\n * @member {Object.}\n */\n this.numericRefinements = params.numericRefinements || {};\n /**\n * This attribute contains all the tags used to refine the query.\n *\n * When querying algolia, the values stored in this attribute will\n * be translated into the `tagFilters` attribute.\n * @member {string[]}\n */\n this.tagRefinements = params.tagRefinements || [];\n /**\n * This attribute contains all the filters that need to be\n * applied on the hierarchical facets. Each facet must be properly\n * defined in the `hierarchicalFacets` attribute.\n *\n * The key is the name of the facet, and the `FacetList` contains all\n * filters selected for the associated facet name. The FacetList values\n * are structured as a string that contain the values for each level\n * separated by the configured separator.\n *\n * When querying algolia, the values stored in this attribute will\n * be translated into the `facetFilters` attribute.\n * @member {Object.}\n */\n this.hierarchicalFacetsRefinements = params.hierarchicalFacetsRefinements || {};\n\n var self = this;\n Object.keys(params).forEach(function(paramName) {\n var isKeyKnown = SearchParameters.PARAMETERS.indexOf(paramName) !== -1;\n var isValueDefined = params[paramName] !== undefined;\n\n if (!isKeyKnown && isValueDefined) {\n self[paramName] = params[paramName];\n }\n });\n}\n\n/**\n * List all the properties in SearchParameters and therefore all the known Algolia properties\n * This doesn't contain any beta/hidden features.\n * @private\n */\nSearchParameters.PARAMETERS = Object.keys(new SearchParameters());\n\n/**\n * @private\n * @param {object} partialState full or part of a state\n * @return {object} a new object with the number keys as number\n */\nSearchParameters._parseNumbers = function(partialState) {\n // Do not reparse numbers in SearchParameters, they ought to be parsed already\n if (partialState instanceof SearchParameters) return partialState;\n\n var numbers = {};\n\n var numberKeys = [\n 'aroundPrecision',\n 'aroundRadius',\n 'getRankingInfo',\n 'minWordSizefor2Typos',\n 'minWordSizefor1Typo',\n 'page',\n 'maxValuesPerFacet',\n 'distinct',\n 'minimumAroundRadius',\n 'hitsPerPage',\n 'minProximity'\n ];\n\n numberKeys.forEach(function(k) {\n var value = partialState[k];\n if (typeof value === 'string') {\n var parsedValue = parseFloat(value);\n // global isNaN is ok to use here, value is only number or NaN\n numbers[k] = isNaN(parsedValue) ? value : parsedValue;\n }\n });\n\n // there's two formats of insideBoundingBox, we need to parse\n // the one which is an array of float geo rectangles\n if (Array.isArray(partialState.insideBoundingBox)) {\n numbers.insideBoundingBox = partialState.insideBoundingBox.map(function(geoRect) {\n if (Array.isArray(geoRect)) {\n return geoRect.map(function(value) {\n return parseFloat(value);\n });\n }\n return geoRect;\n });\n }\n\n if (partialState.numericRefinements) {\n var numericRefinements = {};\n Object.keys(partialState.numericRefinements).forEach(function(attribute) {\n var operators = partialState.numericRefinements[attribute] || {};\n numericRefinements[attribute] = {};\n Object.keys(operators).forEach(function(operator) {\n var values = operators[operator];\n var parsedValues = values.map(function(v) {\n if (Array.isArray(v)) {\n return v.map(function(vPrime) {\n if (typeof vPrime === 'string') {\n return parseFloat(vPrime);\n }\n return vPrime;\n });\n } else if (typeof v === 'string') {\n return parseFloat(v);\n }\n return v;\n });\n numericRefinements[attribute][operator] = parsedValues;\n });\n });\n numbers.numericRefinements = numericRefinements;\n }\n\n return merge({}, partialState, numbers);\n};\n\n/**\n * Factory for SearchParameters\n * @param {object|SearchParameters} newParameters existing parameters or partial\n * object for the properties of a new SearchParameters\n * @return {SearchParameters} frozen instance of SearchParameters\n */\nSearchParameters.make = function makeSearchParameters(newParameters) {\n var instance = new SearchParameters(newParameters);\n\n var hierarchicalFacets = newParameters.hierarchicalFacets || [];\n hierarchicalFacets.forEach(function(facet) {\n if (facet.rootPath) {\n var currentRefinement = instance.getHierarchicalRefinement(facet.name);\n\n if (currentRefinement.length > 0 && currentRefinement[0].indexOf(facet.rootPath) !== 0) {\n instance = instance.clearRefinements(facet.name);\n }\n\n // get it again in case it has been cleared\n currentRefinement = instance.getHierarchicalRefinement(facet.name);\n if (currentRefinement.length === 0) {\n instance = instance.toggleHierarchicalFacetRefinement(facet.name, facet.rootPath);\n }\n }\n });\n\n return instance;\n};\n\n/**\n * Validates the new parameters based on the previous state\n * @param {SearchParameters} currentState the current state\n * @param {object|SearchParameters} parameters the new parameters to set\n * @return {Error|null} Error if the modification is invalid, null otherwise\n */\nSearchParameters.validate = function(currentState, parameters) {\n var params = parameters || {};\n\n if (currentState.tagFilters && params.tagRefinements && params.tagRefinements.length > 0) {\n return new Error(\n '[Tags] Cannot switch from the managed tag API to the advanced API. It is probably ' +\n 'an error, if it is really what you want, you should first clear the tags with clearTags method.');\n }\n\n if (currentState.tagRefinements.length > 0 && params.tagFilters) {\n return new Error(\n '[Tags] Cannot switch from the advanced tag API to the managed API. It is probably ' +\n 'an error, if it is not, you should first clear the tags with clearTags method.');\n }\n\n if (\n currentState.numericFilters &&\n params.numericRefinements &&\n objectHasKeys(params.numericRefinements)\n ) {\n return new Error(\n \"[Numeric filters] Can't switch from the advanced to the managed API. It\" +\n ' is probably an error, if this is really what you want, you have to first' +\n ' clear the numeric filters.'\n );\n }\n\n if (objectHasKeys(currentState.numericRefinements) && params.numericFilters) {\n return new Error(\n \"[Numeric filters] Can't switch from the managed API to the advanced. It\" +\n ' is probably an error, if this is really what you want, you have to first' +\n ' clear the numeric filters.');\n }\n\n return null;\n};\n\nSearchParameters.prototype = {\n constructor: SearchParameters,\n\n /**\n * Remove all refinements (disjunctive + conjunctive + excludes + numeric filters)\n * @method\n * @param {undefined|string|SearchParameters.clearCallback} [attribute] optional string or function\n * - If not given, means to clear all the filters.\n * - If `string`, means to clear all refinements for the `attribute` named filter.\n * - If `function`, means to clear all the refinements that return truthy values.\n * @return {SearchParameters}\n */\n clearRefinements: function clearRefinements(attribute) {\n var patch = {\n numericRefinements: this._clearNumericRefinements(attribute),\n facetsRefinements: RefinementList.clearRefinement(\n this.facetsRefinements,\n attribute,\n 'conjunctiveFacet'\n ),\n facetsExcludes: RefinementList.clearRefinement(\n this.facetsExcludes,\n attribute,\n 'exclude'\n ),\n disjunctiveFacetsRefinements: RefinementList.clearRefinement(\n this.disjunctiveFacetsRefinements,\n attribute,\n 'disjunctiveFacet'\n ),\n hierarchicalFacetsRefinements: RefinementList.clearRefinement(\n this.hierarchicalFacetsRefinements,\n attribute,\n 'hierarchicalFacet'\n )\n };\n if (\n patch.numericRefinements === this.numericRefinements &&\n patch.facetsRefinements === this.facetsRefinements &&\n patch.facetsExcludes === this.facetsExcludes &&\n patch.disjunctiveFacetsRefinements === this.disjunctiveFacetsRefinements &&\n patch.hierarchicalFacetsRefinements === this.hierarchicalFacetsRefinements\n ) {\n return this;\n }\n return this.setQueryParameters(patch);\n },\n /**\n * Remove all the refined tags from the SearchParameters\n * @method\n * @return {SearchParameters}\n */\n clearTags: function clearTags() {\n if (this.tagFilters === undefined && this.tagRefinements.length === 0) return this;\n\n return this.setQueryParameters({\n tagFilters: undefined,\n tagRefinements: []\n });\n },\n /**\n * Set the index.\n * @method\n * @param {string} index the index name\n * @return {SearchParameters}\n */\n setIndex: function setIndex(index) {\n if (index === this.index) return this;\n\n return this.setQueryParameters({\n index: index\n });\n },\n /**\n * Query setter\n * @method\n * @param {string} newQuery value for the new query\n * @return {SearchParameters}\n */\n setQuery: function setQuery(newQuery) {\n if (newQuery === this.query) return this;\n\n return this.setQueryParameters({\n query: newQuery\n });\n },\n /**\n * Page setter\n * @method\n * @param {number} newPage new page number\n * @return {SearchParameters}\n */\n setPage: function setPage(newPage) {\n if (newPage === this.page) return this;\n\n return this.setQueryParameters({\n page: newPage\n });\n },\n /**\n * Facets setter\n * The facets are the simple facets, used for conjunctive (and) faceting.\n * @method\n * @param {string[]} facets all the attributes of the algolia records used for conjunctive faceting\n * @return {SearchParameters}\n */\n setFacets: function setFacets(facets) {\n return this.setQueryParameters({\n facets: facets\n });\n },\n /**\n * Disjunctive facets setter\n * Change the list of disjunctive (or) facets the helper chan handle.\n * @method\n * @param {string[]} facets all the attributes of the algolia records used for disjunctive faceting\n * @return {SearchParameters}\n */\n setDisjunctiveFacets: function setDisjunctiveFacets(facets) {\n return this.setQueryParameters({\n disjunctiveFacets: facets\n });\n },\n /**\n * HitsPerPage setter\n * Hits per page represents the number of hits retrieved for this query\n * @method\n * @param {number} n number of hits retrieved per page of results\n * @return {SearchParameters}\n */\n setHitsPerPage: function setHitsPerPage(n) {\n if (this.hitsPerPage === n) return this;\n\n return this.setQueryParameters({\n hitsPerPage: n\n });\n },\n /**\n * typoTolerance setter\n * Set the value of typoTolerance\n * @method\n * @param {string} typoTolerance new value of typoTolerance (\"true\", \"false\", \"min\" or \"strict\")\n * @return {SearchParameters}\n */\n setTypoTolerance: function setTypoTolerance(typoTolerance) {\n if (this.typoTolerance === typoTolerance) return this;\n\n return this.setQueryParameters({\n typoTolerance: typoTolerance\n });\n },\n /**\n * Add a numeric filter for a given attribute\n * When value is an array, they are combined with OR\n * When value is a single value, it will combined with AND\n * @method\n * @param {string} attribute attribute to set the filter on\n * @param {string} operator operator of the filter (possible values: =, >, >=, <, <=, !=)\n * @param {number | number[]} value value of the filter\n * @return {SearchParameters}\n * @example\n * // for price = 50 or 40\n * searchparameter.addNumericRefinement('price', '=', [50, 40]);\n * @example\n * // for size = 38 and 40\n * searchparameter.addNumericRefinement('size', '=', 38);\n * searchparameter.addNumericRefinement('size', '=', 40);\n */\n addNumericRefinement: function(attribute, operator, v) {\n var value = valToNumber(v);\n\n if (this.isNumericRefined(attribute, operator, value)) return this;\n\n var mod = merge({}, this.numericRefinements);\n\n mod[attribute] = merge({}, mod[attribute]);\n\n if (mod[attribute][operator]) {\n // Array copy\n mod[attribute][operator] = mod[attribute][operator].slice();\n // Add the element. Concat can't be used here because value can be an array.\n mod[attribute][operator].push(value);\n } else {\n mod[attribute][operator] = [value];\n }\n\n return this.setQueryParameters({\n numericRefinements: mod\n });\n },\n /**\n * Get the list of conjunctive refinements for a single facet\n * @param {string} facetName name of the attribute used for faceting\n * @return {string[]} list of refinements\n */\n getConjunctiveRefinements: function(facetName) {\n if (!this.isConjunctiveFacet(facetName)) {\n return [];\n }\n return this.facetsRefinements[facetName] || [];\n },\n /**\n * Get the list of disjunctive refinements for a single facet\n * @param {string} facetName name of the attribute used for faceting\n * @return {string[]} list of refinements\n */\n getDisjunctiveRefinements: function(facetName) {\n if (!this.isDisjunctiveFacet(facetName)) {\n return [];\n }\n return this.disjunctiveFacetsRefinements[facetName] || [];\n },\n /**\n * Get the list of hierarchical refinements for a single facet\n * @param {string} facetName name of the attribute used for faceting\n * @return {string[]} list of refinements\n */\n getHierarchicalRefinement: function(facetName) {\n // we send an array but we currently do not support multiple\n // hierarchicalRefinements for a hierarchicalFacet\n return this.hierarchicalFacetsRefinements[facetName] || [];\n },\n /**\n * Get the list of exclude refinements for a single facet\n * @param {string} facetName name of the attribute used for faceting\n * @return {string[]} list of refinements\n */\n getExcludeRefinements: function(facetName) {\n if (!this.isConjunctiveFacet(facetName)) {\n return [];\n }\n return this.facetsExcludes[facetName] || [];\n },\n\n /**\n * Remove all the numeric filter for a given (attribute, operator)\n * @method\n * @param {string} attribute attribute to set the filter on\n * @param {string} [operator] operator of the filter (possible values: =, >, >=, <, <=, !=)\n * @param {number} [number] the value to be removed\n * @return {SearchParameters}\n */\n removeNumericRefinement: function(attribute, operator, paramValue) {\n if (paramValue !== undefined) {\n if (!this.isNumericRefined(attribute, operator, paramValue)) {\n return this;\n }\n return this.setQueryParameters({\n numericRefinements: this._clearNumericRefinements(function(value, key) {\n return (\n key === attribute &&\n value.op === operator &&\n isEqualNumericRefinement(value.val, valToNumber(paramValue))\n );\n })\n });\n } else if (operator !== undefined) {\n if (!this.isNumericRefined(attribute, operator)) return this;\n return this.setQueryParameters({\n numericRefinements: this._clearNumericRefinements(function(value, key) {\n return key === attribute && value.op === operator;\n })\n });\n }\n\n if (!this.isNumericRefined(attribute)) return this;\n return this.setQueryParameters({\n numericRefinements: this._clearNumericRefinements(function(value, key) {\n return key === attribute;\n })\n });\n },\n /**\n * Get the list of numeric refinements for a single facet\n * @param {string} facetName name of the attribute used for faceting\n * @return {SearchParameters.OperatorList} list of refinements\n */\n getNumericRefinements: function(facetName) {\n return this.numericRefinements[facetName] || {};\n },\n /**\n * Return the current refinement for the (attribute, operator)\n * @param {string} attribute attribute in the record\n * @param {string} operator operator applied on the refined values\n * @return {Array.} refined values\n */\n getNumericRefinement: function(attribute, operator) {\n return this.numericRefinements[attribute] && this.numericRefinements[attribute][operator];\n },\n /**\n * Clear numeric filters.\n * @method\n * @private\n * @param {string|SearchParameters.clearCallback} [attribute] optional string or function\n * - If not given, means to clear all the filters.\n * - If `string`, means to clear all refinements for the `attribute` named filter.\n * - If `function`, means to clear all the refinements that return truthy values.\n * @return {Object.}\n */\n _clearNumericRefinements: function _clearNumericRefinements(attribute) {\n if (attribute === undefined) {\n if (!objectHasKeys(this.numericRefinements)) {\n return this.numericRefinements;\n }\n return {};\n } else if (typeof attribute === 'string') {\n return omit(this.numericRefinements, [attribute]);\n } else if (typeof attribute === 'function') {\n var hasChanged = false;\n var numericRefinements = this.numericRefinements;\n var newNumericRefinements = Object.keys(numericRefinements).reduce(function(memo, key) {\n var operators = numericRefinements[key];\n var operatorList = {};\n\n operators = operators || {};\n Object.keys(operators).forEach(function(operator) {\n var values = operators[operator] || [];\n var outValues = [];\n values.forEach(function(value) {\n var predicateResult = attribute({val: value, op: operator}, key, 'numeric');\n if (!predicateResult) outValues.push(value);\n });\n if (outValues.length !== values.length) {\n hasChanged = true;\n }\n operatorList[operator] = outValues;\n });\n\n memo[key] = operatorList;\n\n return memo;\n }, {});\n\n if (hasChanged) return newNumericRefinements;\n return this.numericRefinements;\n }\n },\n /**\n * Add a facet to the facets attribute of the helper configuration, if it\n * isn't already present.\n * @method\n * @param {string} facet facet name to add\n * @return {SearchParameters}\n */\n addFacet: function addFacet(facet) {\n if (this.isConjunctiveFacet(facet)) {\n return this;\n }\n\n return this.setQueryParameters({\n facets: this.facets.concat([facet])\n });\n },\n /**\n * Add a disjunctive facet to the disjunctiveFacets attribute of the helper\n * configuration, if it isn't already present.\n * @method\n * @param {string} facet disjunctive facet name to add\n * @return {SearchParameters}\n */\n addDisjunctiveFacet: function addDisjunctiveFacet(facet) {\n if (this.isDisjunctiveFacet(facet)) {\n return this;\n }\n\n return this.setQueryParameters({\n disjunctiveFacets: this.disjunctiveFacets.concat([facet])\n });\n },\n /**\n * Add a hierarchical facet to the hierarchicalFacets attribute of the helper\n * configuration.\n * @method\n * @param {object} hierarchicalFacet hierarchical facet to add\n * @return {SearchParameters}\n * @throws will throw an error if a hierarchical facet with the same name was already declared\n */\n addHierarchicalFacet: function addHierarchicalFacet(hierarchicalFacet) {\n if (this.isHierarchicalFacet(hierarchicalFacet.name)) {\n throw new Error(\n 'Cannot declare two hierarchical facets with the same name: `' + hierarchicalFacet.name + '`');\n }\n\n return this.setQueryParameters({\n hierarchicalFacets: this.hierarchicalFacets.concat([hierarchicalFacet])\n });\n },\n /**\n * Add a refinement on a \"normal\" facet\n * @method\n * @param {string} facet attribute to apply the faceting on\n * @param {string} value value of the attribute (will be converted to string)\n * @return {SearchParameters}\n */\n addFacetRefinement: function addFacetRefinement(facet, value) {\n if (!this.isConjunctiveFacet(facet)) {\n throw new Error(facet + ' is not defined in the facets attribute of the helper configuration');\n }\n if (RefinementList.isRefined(this.facetsRefinements, facet, value)) return this;\n\n return this.setQueryParameters({\n facetsRefinements: RefinementList.addRefinement(this.facetsRefinements, facet, value)\n });\n },\n /**\n * Exclude a value from a \"normal\" facet\n * @method\n * @param {string} facet attribute to apply the exclusion on\n * @param {string} value value of the attribute (will be converted to string)\n * @return {SearchParameters}\n */\n addExcludeRefinement: function addExcludeRefinement(facet, value) {\n if (!this.isConjunctiveFacet(facet)) {\n throw new Error(facet + ' is not defined in the facets attribute of the helper configuration');\n }\n if (RefinementList.isRefined(this.facetsExcludes, facet, value)) return this;\n\n return this.setQueryParameters({\n facetsExcludes: RefinementList.addRefinement(this.facetsExcludes, facet, value)\n });\n },\n /**\n * Adds a refinement on a disjunctive facet.\n * @method\n * @param {string} facet attribute to apply the faceting on\n * @param {string} value value of the attribute (will be converted to string)\n * @return {SearchParameters}\n */\n addDisjunctiveFacetRefinement: function addDisjunctiveFacetRefinement(facet, value) {\n if (!this.isDisjunctiveFacet(facet)) {\n throw new Error(\n facet + ' is not defined in the disjunctiveFacets attribute of the helper configuration');\n }\n\n if (RefinementList.isRefined(this.disjunctiveFacetsRefinements, facet, value)) return this;\n\n return this.setQueryParameters({\n disjunctiveFacetsRefinements: RefinementList.addRefinement(\n this.disjunctiveFacetsRefinements, facet, value)\n });\n },\n /**\n * addTagRefinement adds a tag to the list used to filter the results\n * @param {string} tag tag to be added\n * @return {SearchParameters}\n */\n addTagRefinement: function addTagRefinement(tag) {\n if (this.isTagRefined(tag)) return this;\n\n var modification = {\n tagRefinements: this.tagRefinements.concat(tag)\n };\n\n return this.setQueryParameters(modification);\n },\n /**\n * Remove a facet from the facets attribute of the helper configuration, if it\n * is present.\n * @method\n * @param {string} facet facet name to remove\n * @return {SearchParameters}\n */\n removeFacet: function removeFacet(facet) {\n if (!this.isConjunctiveFacet(facet)) {\n return this;\n }\n\n return this.clearRefinements(facet).setQueryParameters({\n facets: this.facets.filter(function(f) {\n return f !== facet;\n })\n });\n },\n /**\n * Remove a disjunctive facet from the disjunctiveFacets attribute of the\n * helper configuration, if it is present.\n * @method\n * @param {string} facet disjunctive facet name to remove\n * @return {SearchParameters}\n */\n removeDisjunctiveFacet: function removeDisjunctiveFacet(facet) {\n if (!this.isDisjunctiveFacet(facet)) {\n return this;\n }\n\n return this.clearRefinements(facet).setQueryParameters({\n disjunctiveFacets: this.disjunctiveFacets.filter(function(f) {\n return f !== facet;\n })\n });\n },\n /**\n * Remove a hierarchical facet from the hierarchicalFacets attribute of the\n * helper configuration, if it is present.\n * @method\n * @param {string} facet hierarchical facet name to remove\n * @return {SearchParameters}\n */\n removeHierarchicalFacet: function removeHierarchicalFacet(facet) {\n if (!this.isHierarchicalFacet(facet)) {\n return this;\n }\n\n return this.clearRefinements(facet).setQueryParameters({\n hierarchicalFacets: this.hierarchicalFacets.filter(function(f) {\n return f.name !== facet;\n })\n });\n },\n /**\n * Remove a refinement set on facet. If a value is provided, it will clear the\n * refinement for the given value, otherwise it will clear all the refinement\n * values for the faceted attribute.\n * @method\n * @param {string} facet name of the attribute used for faceting\n * @param {string} [value] value used to filter\n * @return {SearchParameters}\n */\n removeFacetRefinement: function removeFacetRefinement(facet, value) {\n if (!this.isConjunctiveFacet(facet)) {\n throw new Error(facet + ' is not defined in the facets attribute of the helper configuration');\n }\n if (!RefinementList.isRefined(this.facetsRefinements, facet, value)) return this;\n\n return this.setQueryParameters({\n facetsRefinements: RefinementList.removeRefinement(this.facetsRefinements, facet, value)\n });\n },\n /**\n * Remove a negative refinement on a facet\n * @method\n * @param {string} facet name of the attribute used for faceting\n * @param {string} value value used to filter\n * @return {SearchParameters}\n */\n removeExcludeRefinement: function removeExcludeRefinement(facet, value) {\n if (!this.isConjunctiveFacet(facet)) {\n throw new Error(facet + ' is not defined in the facets attribute of the helper configuration');\n }\n if (!RefinementList.isRefined(this.facetsExcludes, facet, value)) return this;\n\n return this.setQueryParameters({\n facetsExcludes: RefinementList.removeRefinement(this.facetsExcludes, facet, value)\n });\n },\n /**\n * Remove a refinement on a disjunctive facet\n * @method\n * @param {string} facet name of the attribute used for faceting\n * @param {string} value value used to filter\n * @return {SearchParameters}\n */\n removeDisjunctiveFacetRefinement: function removeDisjunctiveFacetRefinement(facet, value) {\n if (!this.isDisjunctiveFacet(facet)) {\n throw new Error(\n facet + ' is not defined in the disjunctiveFacets attribute of the helper configuration');\n }\n if (!RefinementList.isRefined(this.disjunctiveFacetsRefinements, facet, value)) return this;\n\n return this.setQueryParameters({\n disjunctiveFacetsRefinements: RefinementList.removeRefinement(\n this.disjunctiveFacetsRefinements, facet, value)\n });\n },\n /**\n * Remove a tag from the list of tag refinements\n * @method\n * @param {string} tag the tag to remove\n * @return {SearchParameters}\n */\n removeTagRefinement: function removeTagRefinement(tag) {\n if (!this.isTagRefined(tag)) return this;\n\n var modification = {\n tagRefinements: this.tagRefinements.filter(function(t) {\n return t !== tag;\n })\n };\n\n return this.setQueryParameters(modification);\n },\n /**\n * Generic toggle refinement method to use with facet, disjunctive facets\n * and hierarchical facets\n * @param {string} facet the facet to refine\n * @param {string} value the associated value\n * @return {SearchParameters}\n * @throws will throw an error if the facet is not declared in the settings of the helper\n * @deprecated since version 2.19.0, see {@link SearchParameters#toggleFacetRefinement}\n */\n toggleRefinement: function toggleRefinement(facet, value) {\n return this.toggleFacetRefinement(facet, value);\n },\n /**\n * Generic toggle refinement method to use with facet, disjunctive facets\n * and hierarchical facets\n * @param {string} facet the facet to refine\n * @param {string} value the associated value\n * @return {SearchParameters}\n * @throws will throw an error if the facet is not declared in the settings of the helper\n */\n toggleFacetRefinement: function toggleFacetRefinement(facet, value) {\n if (this.isHierarchicalFacet(facet)) {\n return this.toggleHierarchicalFacetRefinement(facet, value);\n } else if (this.isConjunctiveFacet(facet)) {\n return this.toggleConjunctiveFacetRefinement(facet, value);\n } else if (this.isDisjunctiveFacet(facet)) {\n return this.toggleDisjunctiveFacetRefinement(facet, value);\n }\n\n throw new Error('Cannot refine the undeclared facet ' + facet +\n '; it should be added to the helper options facets, disjunctiveFacets or hierarchicalFacets');\n },\n /**\n * Switch the refinement applied over a facet/value\n * @method\n * @param {string} facet name of the attribute used for faceting\n * @param {value} value value used for filtering\n * @return {SearchParameters}\n */\n toggleConjunctiveFacetRefinement: function toggleConjunctiveFacetRefinement(facet, value) {\n if (!this.isConjunctiveFacet(facet)) {\n throw new Error(facet + ' is not defined in the facets attribute of the helper configuration');\n }\n\n return this.setQueryParameters({\n facetsRefinements: RefinementList.toggleRefinement(this.facetsRefinements, facet, value)\n });\n },\n /**\n * Switch the refinement applied over a facet/value\n * @method\n * @param {string} facet name of the attribute used for faceting\n * @param {value} value value used for filtering\n * @return {SearchParameters}\n */\n toggleExcludeFacetRefinement: function toggleExcludeFacetRefinement(facet, value) {\n if (!this.isConjunctiveFacet(facet)) {\n throw new Error(facet + ' is not defined in the facets attribute of the helper configuration');\n }\n\n return this.setQueryParameters({\n facetsExcludes: RefinementList.toggleRefinement(this.facetsExcludes, facet, value)\n });\n },\n /**\n * Switch the refinement applied over a facet/value\n * @method\n * @param {string} facet name of the attribute used for faceting\n * @param {value} value value used for filtering\n * @return {SearchParameters}\n */\n toggleDisjunctiveFacetRefinement: function toggleDisjunctiveFacetRefinement(facet, value) {\n if (!this.isDisjunctiveFacet(facet)) {\n throw new Error(\n facet + ' is not defined in the disjunctiveFacets attribute of the helper configuration');\n }\n\n return this.setQueryParameters({\n disjunctiveFacetsRefinements: RefinementList.toggleRefinement(\n this.disjunctiveFacetsRefinements, facet, value)\n });\n },\n /**\n * Switch the refinement applied over a facet/value\n * @method\n * @param {string} facet name of the attribute used for faceting\n * @param {value} value value used for filtering\n * @return {SearchParameters}\n */\n toggleHierarchicalFacetRefinement: function toggleHierarchicalFacetRefinement(facet, value) {\n if (!this.isHierarchicalFacet(facet)) {\n throw new Error(\n facet + ' is not defined in the hierarchicalFacets attribute of the helper configuration');\n }\n\n var separator = this._getHierarchicalFacetSeparator(this.getHierarchicalFacetByName(facet));\n\n var mod = {};\n\n var upOneOrMultipleLevel = this.hierarchicalFacetsRefinements[facet] !== undefined &&\n this.hierarchicalFacetsRefinements[facet].length > 0 && (\n // remove current refinement:\n // refinement was 'beer > IPA', call is toggleRefine('beer > IPA'), refinement should be `beer`\n this.hierarchicalFacetsRefinements[facet][0] === value ||\n // remove a parent refinement of the current refinement:\n // - refinement was 'beer > IPA > Flying dog'\n // - call is toggleRefine('beer > IPA')\n // - refinement should be `beer`\n this.hierarchicalFacetsRefinements[facet][0].indexOf(value + separator) === 0\n );\n\n if (upOneOrMultipleLevel) {\n if (value.indexOf(separator) === -1) {\n // go back to root level\n mod[facet] = [];\n } else {\n mod[facet] = [value.slice(0, value.lastIndexOf(separator))];\n }\n } else {\n mod[facet] = [value];\n }\n\n return this.setQueryParameters({\n hierarchicalFacetsRefinements: defaultsPure({}, mod, this.hierarchicalFacetsRefinements)\n });\n },\n\n /**\n * Adds a refinement on a hierarchical facet.\n * @param {string} facet the facet name\n * @param {string} path the hierarchical facet path\n * @return {SearchParameter} the new state\n * @throws Error if the facet is not defined or if the facet is refined\n */\n addHierarchicalFacetRefinement: function(facet, path) {\n if (this.isHierarchicalFacetRefined(facet)) {\n throw new Error(facet + ' is already refined.');\n }\n if (!this.isHierarchicalFacet(facet)) {\n throw new Error(facet + ' is not defined in the hierarchicalFacets attribute of the helper configuration.');\n }\n var mod = {};\n mod[facet] = [path];\n return this.setQueryParameters({\n hierarchicalFacetsRefinements: defaultsPure({}, mod, this.hierarchicalFacetsRefinements)\n });\n },\n\n /**\n * Removes the refinement set on a hierarchical facet.\n * @param {string} facet the facet name\n * @return {SearchParameter} the new state\n * @throws Error if the facet is not defined or if the facet is not refined\n */\n removeHierarchicalFacetRefinement: function(facet) {\n if (!this.isHierarchicalFacetRefined(facet)) {\n return this;\n }\n var mod = {};\n mod[facet] = [];\n return this.setQueryParameters({\n hierarchicalFacetsRefinements: defaultsPure({}, mod, this.hierarchicalFacetsRefinements)\n });\n },\n /**\n * Switch the tag refinement\n * @method\n * @param {string} tag the tag to remove or add\n * @return {SearchParameters}\n */\n toggleTagRefinement: function toggleTagRefinement(tag) {\n if (this.isTagRefined(tag)) {\n return this.removeTagRefinement(tag);\n }\n\n return this.addTagRefinement(tag);\n },\n /**\n * Test if the facet name is from one of the disjunctive facets\n * @method\n * @param {string} facet facet name to test\n * @return {boolean}\n */\n isDisjunctiveFacet: function(facet) {\n return this.disjunctiveFacets.indexOf(facet) > -1;\n },\n /**\n * Test if the facet name is from one of the hierarchical facets\n * @method\n * @param {string} facetName facet name to test\n * @return {boolean}\n */\n isHierarchicalFacet: function(facetName) {\n return this.getHierarchicalFacetByName(facetName) !== undefined;\n },\n /**\n * Test if the facet name is from one of the conjunctive/normal facets\n * @method\n * @param {string} facet facet name to test\n * @return {boolean}\n */\n isConjunctiveFacet: function(facet) {\n return this.facets.indexOf(facet) > -1;\n },\n /**\n * Returns true if the facet is refined, either for a specific value or in\n * general.\n * @method\n * @param {string} facet name of the attribute for used for faceting\n * @param {string} value, optional value. If passed will test that this value\n * is filtering the given facet.\n * @return {boolean} returns true if refined\n */\n isFacetRefined: function isFacetRefined(facet, value) {\n if (!this.isConjunctiveFacet(facet)) {\n return false;\n }\n return RefinementList.isRefined(this.facetsRefinements, facet, value);\n },\n /**\n * Returns true if the facet contains exclusions or if a specific value is\n * excluded.\n *\n * @method\n * @param {string} facet name of the attribute for used for faceting\n * @param {string} [value] optional value. If passed will test that this value\n * is filtering the given facet.\n * @return {boolean} returns true if refined\n */\n isExcludeRefined: function isExcludeRefined(facet, value) {\n if (!this.isConjunctiveFacet(facet)) {\n return false;\n }\n return RefinementList.isRefined(this.facetsExcludes, facet, value);\n },\n /**\n * Returns true if the facet contains a refinement, or if a value passed is a\n * refinement for the facet.\n * @method\n * @param {string} facet name of the attribute for used for faceting\n * @param {string} value optional, will test if the value is used for refinement\n * if there is one, otherwise will test if the facet contains any refinement\n * @return {boolean}\n */\n isDisjunctiveFacetRefined: function isDisjunctiveFacetRefined(facet, value) {\n if (!this.isDisjunctiveFacet(facet)) {\n return false;\n }\n return RefinementList.isRefined(this.disjunctiveFacetsRefinements, facet, value);\n },\n /**\n * Returns true if the facet contains a refinement, or if a value passed is a\n * refinement for the facet.\n * @method\n * @param {string} facet name of the attribute for used for faceting\n * @param {string} value optional, will test if the value is used for refinement\n * if there is one, otherwise will test if the facet contains any refinement\n * @return {boolean}\n */\n isHierarchicalFacetRefined: function isHierarchicalFacetRefined(facet, value) {\n if (!this.isHierarchicalFacet(facet)) {\n return false;\n }\n\n var refinements = this.getHierarchicalRefinement(facet);\n\n if (!value) {\n return refinements.length > 0;\n }\n\n return refinements.indexOf(value) !== -1;\n },\n /**\n * Test if the triple (attribute, operator, value) is already refined.\n * If only the attribute and the operator are provided, it tests if the\n * contains any refinement value.\n * @method\n * @param {string} attribute attribute for which the refinement is applied\n * @param {string} [operator] operator of the refinement\n * @param {string} [value] value of the refinement\n * @return {boolean} true if it is refined\n */\n isNumericRefined: function isNumericRefined(attribute, operator, value) {\n if (value === undefined && operator === undefined) {\n return !!this.numericRefinements[attribute];\n }\n\n var isOperatorDefined =\n this.numericRefinements[attribute] &&\n this.numericRefinements[attribute][operator] !== undefined;\n\n if (value === undefined || !isOperatorDefined) {\n return isOperatorDefined;\n }\n\n var parsedValue = valToNumber(value);\n var isAttributeValueDefined =\n findArray(this.numericRefinements[attribute][operator], parsedValue) !==\n undefined;\n\n return isOperatorDefined && isAttributeValueDefined;\n },\n /**\n * Returns true if the tag refined, false otherwise\n * @method\n * @param {string} tag the tag to check\n * @return {boolean}\n */\n isTagRefined: function isTagRefined(tag) {\n return this.tagRefinements.indexOf(tag) !== -1;\n },\n /**\n * Returns the list of all disjunctive facets refined\n * @method\n * @param {string} facet name of the attribute used for faceting\n * @param {value} value value used for filtering\n * @return {string[]}\n */\n getRefinedDisjunctiveFacets: function getRefinedDisjunctiveFacets() {\n var self = this;\n\n // attributes used for numeric filter can also be disjunctive\n var disjunctiveNumericRefinedFacets = intersection(\n Object.keys(this.numericRefinements).filter(function(facet) {\n return Object.keys(self.numericRefinements[facet]).length > 0;\n }),\n this.disjunctiveFacets\n );\n\n return Object.keys(this.disjunctiveFacetsRefinements).filter(function(facet) {\n return self.disjunctiveFacetsRefinements[facet].length > 0;\n })\n .concat(disjunctiveNumericRefinedFacets)\n .concat(this.getRefinedHierarchicalFacets());\n },\n /**\n * Returns the list of all disjunctive facets refined\n * @method\n * @param {string} facet name of the attribute used for faceting\n * @param {value} value value used for filtering\n * @return {string[]}\n */\n getRefinedHierarchicalFacets: function getRefinedHierarchicalFacets() {\n var self = this;\n return intersection(\n // enforce the order between the two arrays,\n // so that refinement name index === hierarchical facet index\n this.hierarchicalFacets.map(function(facet) { return facet.name; }),\n Object.keys(this.hierarchicalFacetsRefinements).filter(function(facet) {\n return self.hierarchicalFacetsRefinements[facet].length > 0;\n })\n );\n },\n /**\n * Returned the list of all disjunctive facets not refined\n * @method\n * @return {string[]}\n */\n getUnrefinedDisjunctiveFacets: function() {\n var refinedFacets = this.getRefinedDisjunctiveFacets();\n\n return this.disjunctiveFacets.filter(function(f) {\n return refinedFacets.indexOf(f) === -1;\n });\n },\n\n managedParameters: [\n 'index',\n\n 'facets',\n 'disjunctiveFacets',\n 'facetsRefinements',\n 'hierarchicalFacets',\n 'facetsExcludes',\n\n 'disjunctiveFacetsRefinements',\n 'numericRefinements',\n 'tagRefinements',\n 'hierarchicalFacetsRefinements'\n ],\n getQueryParams: function getQueryParams() {\n var managedParameters = this.managedParameters;\n\n var queryParams = {};\n\n var self = this;\n Object.keys(this).forEach(function(paramName) {\n var paramValue = self[paramName];\n if (managedParameters.indexOf(paramName) === -1 && paramValue !== undefined) {\n queryParams[paramName] = paramValue;\n }\n });\n\n return queryParams;\n },\n /**\n * Let the user set a specific value for a given parameter. Will return the\n * same instance if the parameter is invalid or if the value is the same as the\n * previous one.\n * @method\n * @param {string} parameter the parameter name\n * @param {any} value the value to be set, must be compliant with the definition\n * of the attribute on the object\n * @return {SearchParameters} the updated state\n */\n setQueryParameter: function setParameter(parameter, value) {\n if (this[parameter] === value) return this;\n\n var modification = {};\n\n modification[parameter] = value;\n\n return this.setQueryParameters(modification);\n },\n /**\n * Let the user set any of the parameters with a plain object.\n * @method\n * @param {object} params all the keys and the values to be updated\n * @return {SearchParameters} a new updated instance\n */\n setQueryParameters: function setQueryParameters(params) {\n if (!params) return this;\n\n var error = SearchParameters.validate(this, params);\n\n if (error) {\n throw error;\n }\n\n var self = this;\n var nextWithNumbers = SearchParameters._parseNumbers(params);\n var previousPlainObject = Object.keys(this).reduce(function(acc, key) {\n acc[key] = self[key];\n return acc;\n }, {});\n\n var nextPlainObject = Object.keys(nextWithNumbers).reduce(\n function(previous, key) {\n var isPreviousValueDefined = previous[key] !== undefined;\n var isNextValueDefined = nextWithNumbers[key] !== undefined;\n\n if (isPreviousValueDefined && !isNextValueDefined) {\n return omit(previous, [key]);\n }\n\n if (isNextValueDefined) {\n previous[key] = nextWithNumbers[key];\n }\n\n return previous;\n },\n previousPlainObject\n );\n\n return new this.constructor(nextPlainObject);\n },\n\n /**\n * Returns a new instance with the page reset. Two scenarios possible:\n * the page is omitted -> return the given instance\n * the page is set -> return a new instance with a page of 0\n * @return {SearchParameters} a new updated instance\n */\n resetPage: function() {\n if (this.page === undefined) {\n return this;\n }\n\n return this.setPage(0);\n },\n\n /**\n * Helper function to get the hierarchicalFacet separator or the default one (`>`)\n * @param {object} hierarchicalFacet\n * @return {string} returns the hierarchicalFacet.separator or `>` as default\n */\n _getHierarchicalFacetSortBy: function(hierarchicalFacet) {\n return hierarchicalFacet.sortBy || ['isRefined:desc', 'name:asc'];\n },\n\n /**\n * Helper function to get the hierarchicalFacet separator or the default one (`>`)\n * @private\n * @param {object} hierarchicalFacet\n * @return {string} returns the hierarchicalFacet.separator or `>` as default\n */\n _getHierarchicalFacetSeparator: function(hierarchicalFacet) {\n return hierarchicalFacet.separator || ' > ';\n },\n\n /**\n * Helper function to get the hierarchicalFacet prefix path or null\n * @private\n * @param {object} hierarchicalFacet\n * @return {string} returns the hierarchicalFacet.rootPath or null as default\n */\n _getHierarchicalRootPath: function(hierarchicalFacet) {\n return hierarchicalFacet.rootPath || null;\n },\n\n /**\n * Helper function to check if we show the parent level of the hierarchicalFacet\n * @private\n * @param {object} hierarchicalFacet\n * @return {string} returns the hierarchicalFacet.showParentLevel or true as default\n */\n _getHierarchicalShowParentLevel: function(hierarchicalFacet) {\n if (typeof hierarchicalFacet.showParentLevel === 'boolean') {\n return hierarchicalFacet.showParentLevel;\n }\n return true;\n },\n\n /**\n * Helper function to get the hierarchicalFacet by it's name\n * @param {string} hierarchicalFacetName\n * @return {object} a hierarchicalFacet\n */\n getHierarchicalFacetByName: function(hierarchicalFacetName) {\n return find(\n this.hierarchicalFacets,\n function(f) {\n return f.name === hierarchicalFacetName;\n }\n );\n },\n\n /**\n * Get the current breadcrumb for a hierarchical facet, as an array\n * @param {string} facetName Hierarchical facet name\n * @return {array.} the path as an array of string\n */\n getHierarchicalFacetBreadcrumb: function(facetName) {\n if (!this.isHierarchicalFacet(facetName)) {\n return [];\n }\n\n var refinement = this.getHierarchicalRefinement(facetName)[0];\n if (!refinement) return [];\n\n var separator = this._getHierarchicalFacetSeparator(\n this.getHierarchicalFacetByName(facetName)\n );\n var path = refinement.split(separator);\n return path.map(function(part) {\n return part.trim();\n });\n },\n\n toString: function() {\n return JSON.stringify(this, null, 2);\n }\n};\n\n/**\n * Callback used for clearRefinement method\n * @callback SearchParameters.clearCallback\n * @param {OperatorList|FacetList} value the value of the filter\n * @param {string} key the current attribute name\n * @param {string} type `numeric`, `disjunctiveFacet`, `conjunctiveFacet`, `hierarchicalFacet` or `exclude`\n * depending on the type of facet\n * @return {boolean} `true` if the element should be removed. `false` otherwise.\n */\nmodule.exports = SearchParameters;\n","'use strict';\n\nmodule.exports = generateTrees;\n\nvar orderBy = require('../functions/orderBy');\nvar find = require('../functions/find');\nvar prepareHierarchicalFacetSortBy = require('../functions/formatSort');\nvar fv = require('../functions/escapeFacetValue');\nvar escapeFacetValue = fv.escapeFacetValue;\nvar unescapeFacetValue = fv.unescapeFacetValue;\n\nfunction generateTrees(state) {\n return function generate(hierarchicalFacetResult, hierarchicalFacetIndex) {\n var hierarchicalFacet = state.hierarchicalFacets[hierarchicalFacetIndex];\n var hierarchicalFacetRefinement =\n (state.hierarchicalFacetsRefinements[hierarchicalFacet.name] &&\n state.hierarchicalFacetsRefinements[hierarchicalFacet.name][0]) ||\n '';\n var hierarchicalSeparator = state._getHierarchicalFacetSeparator(\n hierarchicalFacet\n );\n var hierarchicalRootPath = state._getHierarchicalRootPath(\n hierarchicalFacet\n );\n var hierarchicalShowParentLevel = state._getHierarchicalShowParentLevel(\n hierarchicalFacet\n );\n var sortBy = prepareHierarchicalFacetSortBy(\n state._getHierarchicalFacetSortBy(hierarchicalFacet)\n );\n\n var rootExhaustive = hierarchicalFacetResult.every(function(facetResult) {\n return facetResult.exhaustive;\n });\n\n var generateTreeFn = generateHierarchicalTree(\n sortBy,\n hierarchicalSeparator,\n hierarchicalRootPath,\n hierarchicalShowParentLevel,\n hierarchicalFacetRefinement\n );\n\n var results = hierarchicalFacetResult;\n\n if (hierarchicalRootPath) {\n results = hierarchicalFacetResult.slice(\n hierarchicalRootPath.split(hierarchicalSeparator).length\n );\n }\n\n return results.reduce(generateTreeFn, {\n name: state.hierarchicalFacets[hierarchicalFacetIndex].name,\n count: null, // root level, no count\n isRefined: true, // root level, always refined\n path: null, // root level, no path\n escapedValue: null,\n exhaustive: rootExhaustive,\n data: null\n });\n };\n}\n\nfunction generateHierarchicalTree(\n sortBy,\n hierarchicalSeparator,\n hierarchicalRootPath,\n hierarchicalShowParentLevel,\n currentRefinement\n) {\n return function generateTree(\n hierarchicalTree,\n hierarchicalFacetResult,\n currentHierarchicalLevel\n ) {\n var parent = hierarchicalTree;\n\n if (currentHierarchicalLevel > 0) {\n var level = 0;\n\n parent = hierarchicalTree;\n\n while (level < currentHierarchicalLevel) {\n /**\n * @type {object[]]} hierarchical data\n */\n var data = parent && Array.isArray(parent.data) ? parent.data : [];\n parent = find(data, function(subtree) {\n return subtree.isRefined;\n });\n level++;\n }\n }\n\n // we found a refined parent, let's add current level data under it\n if (parent) {\n // filter values in case an object has multiple categories:\n // {\n // categories: {\n // level0: ['beers', 'bières'],\n // level1: ['beers > IPA', 'bières > Belges']\n // }\n // }\n //\n // If parent refinement is `beers`, then we do not want to have `bières > Belges`\n // showing up\n\n var picked = Object.keys(hierarchicalFacetResult.data)\n .map(function(facetValue) {\n return [facetValue, hierarchicalFacetResult.data[facetValue]];\n })\n .filter(function(tuple) {\n var facetValue = tuple[0];\n return onlyMatchingTree(\n facetValue,\n parent.path || hierarchicalRootPath,\n currentRefinement,\n hierarchicalSeparator,\n hierarchicalRootPath,\n hierarchicalShowParentLevel\n );\n });\n\n parent.data = orderBy(\n picked.map(function(tuple) {\n var facetValue = tuple[0];\n var facetCount = tuple[1];\n\n return format(\n facetCount,\n facetValue,\n hierarchicalSeparator,\n unescapeFacetValue(currentRefinement),\n hierarchicalFacetResult.exhaustive\n );\n }),\n sortBy[0],\n sortBy[1]\n );\n }\n\n return hierarchicalTree;\n };\n}\n\nfunction onlyMatchingTree(\n facetValue,\n parentPath,\n currentRefinement,\n hierarchicalSeparator,\n hierarchicalRootPath,\n hierarchicalShowParentLevel\n) {\n // we want the facetValue is a child of hierarchicalRootPath\n if (\n hierarchicalRootPath &&\n (facetValue.indexOf(hierarchicalRootPath) !== 0 ||\n hierarchicalRootPath === facetValue)\n ) {\n return false;\n }\n\n // we always want root levels (only when there is no prefix path)\n return (\n (!hierarchicalRootPath &&\n facetValue.indexOf(hierarchicalSeparator) === -1) ||\n // if there is a rootPath, being root level mean 1 level under rootPath\n (hierarchicalRootPath &&\n facetValue.split(hierarchicalSeparator).length -\n hierarchicalRootPath.split(hierarchicalSeparator).length ===\n 1) ||\n // if current refinement is a root level and current facetValue is a root level,\n // keep the facetValue\n (facetValue.indexOf(hierarchicalSeparator) === -1 &&\n currentRefinement.indexOf(hierarchicalSeparator) === -1) ||\n // currentRefinement is a child of the facet value\n currentRefinement.indexOf(facetValue) === 0 ||\n // facetValue is a child of the current parent, add it\n (facetValue.indexOf(parentPath + hierarchicalSeparator) === 0 &&\n (hierarchicalShowParentLevel ||\n facetValue.indexOf(currentRefinement) === 0))\n );\n}\n\nfunction format(\n facetCount,\n facetValue,\n hierarchicalSeparator,\n currentRefinement,\n exhaustive\n) {\n var parts = facetValue.split(hierarchicalSeparator);\n return {\n name: parts[parts.length - 1].trim(),\n path: facetValue,\n escapedValue: escapeFacetValue(facetValue),\n count: facetCount,\n isRefined:\n currentRefinement === facetValue ||\n currentRefinement.indexOf(facetValue + hierarchicalSeparator) === 0,\n exhaustive: exhaustive,\n data: null\n };\n}\n","'use strict';\n\nvar merge = require('../functions/merge');\nvar defaultsPure = require('../functions/defaultsPure');\nvar orderBy = require('../functions/orderBy');\nvar compact = require('../functions/compact');\nvar find = require('../functions/find');\nvar findIndex = require('../functions/findIndex');\nvar formatSort = require('../functions/formatSort');\nvar fv = require('../functions/escapeFacetValue');\nvar escapeFacetValue = fv.escapeFacetValue;\nvar unescapeFacetValue = fv.unescapeFacetValue;\n\nvar generateHierarchicalTree = require('./generate-hierarchical-tree');\n\n/**\n * @typedef SearchResults.Facet\n * @type {object}\n * @property {string} name name of the attribute in the record\n * @property {object} data the faceting data: value, number of entries\n * @property {object} stats undefined unless facet_stats is retrieved from algolia\n */\n\n/**\n * @typedef SearchResults.HierarchicalFacet\n * @type {object}\n * @property {string} name name of the current value given the hierarchical level, trimmed.\n * If root node, you get the facet name\n * @property {number} count number of objects matching this hierarchical value\n * @property {string} path the current hierarchical value full path\n * @property {boolean} isRefined `true` if the current value was refined, `false` otherwise\n * @property {HierarchicalFacet[]} data sub values for the current level\n */\n\n/**\n * @typedef SearchResults.FacetValue\n * @type {object}\n * @property {string} name the facet value itself\n * @property {number} count times this facet appears in the results\n * @property {boolean} isRefined is the facet currently selected\n * @property {boolean} isExcluded is the facet currently excluded (only for conjunctive facets)\n */\n\n/**\n * @typedef Refinement\n * @type {object}\n * @property {string} type the type of filter used:\n * `numeric`, `facet`, `exclude`, `disjunctive`, `hierarchical`\n * @property {string} attributeName name of the attribute used for filtering\n * @property {string} name the value of the filter\n * @property {number} numericValue the value as a number. Only for numeric filters.\n * @property {string} operator the operator used. Only for numeric filters.\n * @property {number} count the number of computed hits for this filter. Only on facets.\n * @property {boolean} exhaustive if the count is exhaustive\n */\n\n/**\n * @param {string[]} attributes\n */\nfunction getIndices(attributes) {\n var indices = {};\n\n attributes.forEach(function(val, idx) {\n indices[val] = idx;\n });\n\n return indices;\n}\n\nfunction assignFacetStats(dest, facetStats, key) {\n if (facetStats && facetStats[key]) {\n dest.stats = facetStats[key];\n }\n}\n\n/**\n * @typedef {Object} HierarchicalFacet\n * @property {string} name\n * @property {string[]} attributes\n */\n\n/**\n * @param {HierarchicalFacet[]} hierarchicalFacets\n * @param {string} hierarchicalAttributeName\n */\nfunction findMatchingHierarchicalFacetFromAttributeName(\n hierarchicalFacets,\n hierarchicalAttributeName\n) {\n return find(hierarchicalFacets, function facetKeyMatchesAttribute(\n hierarchicalFacet\n ) {\n var facetNames = hierarchicalFacet.attributes || [];\n return facetNames.indexOf(hierarchicalAttributeName) > -1;\n });\n}\n\n/*eslint-disable */\n/**\n * Constructor for SearchResults\n * @class\n * @classdesc SearchResults contains the results of a query to Algolia using the\n * {@link AlgoliaSearchHelper}.\n * @param {SearchParameters} state state that led to the response\n * @param {array.} results the results from algolia client\n * @example SearchResults of the first query in\n * the instant search demo\n{\n \"hitsPerPage\": 10,\n \"processingTimeMS\": 2,\n \"facets\": [\n {\n \"name\": \"type\",\n \"data\": {\n \"HardGood\": 6627,\n \"BlackTie\": 550,\n \"Music\": 665,\n \"Software\": 131,\n \"Game\": 456,\n \"Movie\": 1571\n },\n \"exhaustive\": false\n },\n {\n \"exhaustive\": false,\n \"data\": {\n \"Free shipping\": 5507\n },\n \"name\": \"shipping\"\n }\n ],\n \"hits\": [\n {\n \"thumbnailImage\": \"http://img.bbystatic.com/BestBuy_US/images/products/1688/1688832_54x108_s.gif\",\n \"_highlightResult\": {\n \"shortDescription\": {\n \"matchLevel\": \"none\",\n \"value\": \"Safeguard your PC, Mac, Android and iOS devices with comprehensive Internet protection\",\n \"matchedWords\": []\n },\n \"category\": {\n \"matchLevel\": \"none\",\n \"value\": \"Computer Security Software\",\n \"matchedWords\": []\n },\n \"manufacturer\": {\n \"matchedWords\": [],\n \"value\": \"Webroot\",\n \"matchLevel\": \"none\"\n },\n \"name\": {\n \"value\": \"Webroot SecureAnywhere Internet Security (3-Device) (1-Year Subscription) - Mac/Windows\",\n \"matchedWords\": [],\n \"matchLevel\": \"none\"\n }\n },\n \"image\": \"http://img.bbystatic.com/BestBuy_US/images/products/1688/1688832_105x210_sc.jpg\",\n \"shipping\": \"Free shipping\",\n \"bestSellingRank\": 4,\n \"shortDescription\": \"Safeguard your PC, Mac, Android and iOS devices with comprehensive Internet protection\",\n \"url\": \"http://www.bestbuy.com/site/webroot-secureanywhere-internet-security-3-devi…d=1219060687969&skuId=1688832&cmp=RMX&ky=2d3GfEmNIzjA0vkzveHdZEBgpPCyMnLTJ\",\n \"name\": \"Webroot SecureAnywhere Internet Security (3-Device) (1-Year Subscription) - Mac/Windows\",\n \"category\": \"Computer Security Software\",\n \"salePrice_range\": \"1 - 50\",\n \"objectID\": \"1688832\",\n \"type\": \"Software\",\n \"customerReviewCount\": 5980,\n \"salePrice\": 49.99,\n \"manufacturer\": \"Webroot\"\n },\n ....\n ],\n \"nbHits\": 10000,\n \"disjunctiveFacets\": [\n {\n \"exhaustive\": false,\n \"data\": {\n \"5\": 183,\n \"12\": 112,\n \"7\": 149,\n ...\n },\n \"name\": \"customerReviewCount\",\n \"stats\": {\n \"max\": 7461,\n \"avg\": 157.939,\n \"min\": 1\n }\n },\n {\n \"data\": {\n \"Printer Ink\": 142,\n \"Wireless Speakers\": 60,\n \"Point & Shoot Cameras\": 48,\n ...\n },\n \"name\": \"category\",\n \"exhaustive\": false\n },\n {\n \"exhaustive\": false,\n \"data\": {\n \"> 5000\": 2,\n \"1 - 50\": 6524,\n \"501 - 2000\": 566,\n \"201 - 500\": 1501,\n \"101 - 200\": 1360,\n \"2001 - 5000\": 47\n },\n \"name\": \"salePrice_range\"\n },\n {\n \"data\": {\n \"Dynex™\": 202,\n \"Insignia™\": 230,\n \"PNY\": 72,\n ...\n },\n \"name\": \"manufacturer\",\n \"exhaustive\": false\n }\n ],\n \"query\": \"\",\n \"nbPages\": 100,\n \"page\": 0,\n \"index\": \"bestbuy\"\n}\n **/\n/*eslint-enable */\nfunction SearchResults(state, results, options) {\n var mainSubResponse = results[0];\n\n this._rawResults = results;\n\n var self = this;\n\n // https://www.algolia.com/doc/api-reference/api-methods/search/#response\n Object.keys(mainSubResponse).forEach(function(key) {\n self[key] = mainSubResponse[key];\n });\n\n // Make every key of the result options reachable from the instance\n Object.keys(options || {}).forEach(function(key) {\n self[key] = options[key];\n });\n\n /**\n * query used to generate the results\n * @name query\n * @member {string}\n * @memberof SearchResults\n * @instance\n */\n /**\n * The query as parsed by the engine given all the rules.\n * @name parsedQuery\n * @member {string}\n * @memberof SearchResults\n * @instance\n */\n /**\n * all the records that match the search parameters. Each record is\n * augmented with a new attribute `_highlightResult`\n * which is an object keyed by attribute and with the following properties:\n * - `value` : the value of the facet highlighted (html)\n * - `matchLevel`: full, partial or none depending on how the query terms match\n * @name hits\n * @member {object[]}\n * @memberof SearchResults\n * @instance\n */\n /**\n * index where the results come from\n * @name index\n * @member {string}\n * @memberof SearchResults\n * @instance\n */\n /**\n * number of hits per page requested\n * @name hitsPerPage\n * @member {number}\n * @memberof SearchResults\n * @instance\n */\n /**\n * total number of hits of this query on the index\n * @name nbHits\n * @member {number}\n * @memberof SearchResults\n * @instance\n */\n /**\n * total number of pages with respect to the number of hits per page and the total number of hits\n * @name nbPages\n * @member {number}\n * @memberof SearchResults\n * @instance\n */\n /**\n * current page\n * @name page\n * @member {number}\n * @memberof SearchResults\n * @instance\n */\n /**\n * The position if the position was guessed by IP.\n * @name aroundLatLng\n * @member {string}\n * @memberof SearchResults\n * @instance\n * @example \"48.8637,2.3615\",\n */\n /**\n * The radius computed by Algolia.\n * @name automaticRadius\n * @member {string}\n * @memberof SearchResults\n * @instance\n * @example \"126792922\",\n */\n /**\n * String identifying the server used to serve this request.\n *\n * getRankingInfo needs to be set to `true` for this to be returned\n *\n * @name serverUsed\n * @member {string}\n * @memberof SearchResults\n * @instance\n * @example \"c7-use-2.algolia.net\",\n */\n /**\n * Boolean that indicates if the computation of the counts did time out.\n * @deprecated\n * @name timeoutCounts\n * @member {boolean}\n * @memberof SearchResults\n * @instance\n */\n /**\n * Boolean that indicates if the computation of the hits did time out.\n * @deprecated\n * @name timeoutHits\n * @member {boolean}\n * @memberof SearchResults\n * @instance\n */\n /**\n * True if the counts of the facets is exhaustive\n * @name exhaustiveFacetsCount\n * @member {boolean}\n * @memberof SearchResults\n * @instance\n */\n /**\n * True if the number of hits is exhaustive\n * @name exhaustiveNbHits\n * @member {boolean}\n * @memberof SearchResults\n * @instance\n */\n /**\n * Contains the userData if they are set by a [query rule](https://www.algolia.com/doc/guides/query-rules/query-rules-overview/).\n * @name userData\n * @member {object[]}\n * @memberof SearchResults\n * @instance\n */\n /**\n * queryID is the unique identifier of the query used to generate the current search results.\n * This value is only available if the `clickAnalytics` search parameter is set to `true`.\n * @name queryID\n * @member {string}\n * @memberof SearchResults\n * @instance\n */\n\n /**\n * sum of the processing time of all the queries\n * @member {number}\n */\n this.processingTimeMS = results.reduce(function(sum, result) {\n return result.processingTimeMS === undefined\n ? sum\n : sum + result.processingTimeMS;\n }, 0);\n\n /**\n * disjunctive facets results\n * @member {SearchResults.Facet[]}\n */\n this.disjunctiveFacets = [];\n /**\n * disjunctive facets results\n * @member {SearchResults.HierarchicalFacet[]}\n */\n this.hierarchicalFacets = state.hierarchicalFacets.map(function initFutureTree() {\n return [];\n });\n /**\n * other facets results\n * @member {SearchResults.Facet[]}\n */\n this.facets = [];\n\n var disjunctiveFacets = state.getRefinedDisjunctiveFacets();\n\n var facetsIndices = getIndices(state.facets);\n var disjunctiveFacetsIndices = getIndices(state.disjunctiveFacets);\n var nextDisjunctiveResult = 1;\n\n // Since we send request only for disjunctive facets that have been refined,\n // we get the facets information from the first, general, response.\n\n var mainFacets = mainSubResponse.facets || {};\n\n Object.keys(mainFacets).forEach(function(facetKey) {\n var facetValueObject = mainFacets[facetKey];\n\n var hierarchicalFacet = findMatchingHierarchicalFacetFromAttributeName(\n state.hierarchicalFacets,\n facetKey\n );\n\n if (hierarchicalFacet) {\n // Place the hierarchicalFacet data at the correct index depending on\n // the attributes order that was defined at the helper initialization\n var facetIndex = hierarchicalFacet.attributes.indexOf(facetKey);\n var idxAttributeName = findIndex(state.hierarchicalFacets, function(f) {\n return f.name === hierarchicalFacet.name;\n });\n self.hierarchicalFacets[idxAttributeName][facetIndex] = {\n attribute: facetKey,\n data: facetValueObject,\n exhaustive: mainSubResponse.exhaustiveFacetsCount\n };\n } else {\n var isFacetDisjunctive = state.disjunctiveFacets.indexOf(facetKey) !== -1;\n var isFacetConjunctive = state.facets.indexOf(facetKey) !== -1;\n var position;\n\n if (isFacetDisjunctive) {\n position = disjunctiveFacetsIndices[facetKey];\n self.disjunctiveFacets[position] = {\n name: facetKey,\n data: facetValueObject,\n exhaustive: mainSubResponse.exhaustiveFacetsCount\n };\n assignFacetStats(self.disjunctiveFacets[position], mainSubResponse.facets_stats, facetKey);\n }\n if (isFacetConjunctive) {\n position = facetsIndices[facetKey];\n self.facets[position] = {\n name: facetKey,\n data: facetValueObject,\n exhaustive: mainSubResponse.exhaustiveFacetsCount\n };\n assignFacetStats(self.facets[position], mainSubResponse.facets_stats, facetKey);\n }\n }\n });\n\n // Make sure we do not keep holes within the hierarchical facets\n this.hierarchicalFacets = compact(this.hierarchicalFacets);\n\n // aggregate the refined disjunctive facets\n disjunctiveFacets.forEach(function(disjunctiveFacet) {\n var result = results[nextDisjunctiveResult];\n var facets = result && result.facets ? result.facets : {};\n var hierarchicalFacet = state.getHierarchicalFacetByName(disjunctiveFacet);\n\n // There should be only item in facets.\n Object.keys(facets).forEach(function(dfacet) {\n var facetResults = facets[dfacet];\n\n var position;\n\n if (hierarchicalFacet) {\n position = findIndex(state.hierarchicalFacets, function(f) {\n return f.name === hierarchicalFacet.name;\n });\n var attributeIndex = findIndex(self.hierarchicalFacets[position], function(f) {\n return f.attribute === dfacet;\n });\n\n // previous refinements and no results so not able to find it\n if (attributeIndex === -1) {\n return;\n }\n\n self.hierarchicalFacets[position][attributeIndex].data = merge(\n {},\n self.hierarchicalFacets[position][attributeIndex].data,\n facetResults\n );\n } else {\n position = disjunctiveFacetsIndices[dfacet];\n\n var dataFromMainRequest = mainSubResponse.facets && mainSubResponse.facets[dfacet] || {};\n\n self.disjunctiveFacets[position] = {\n name: dfacet,\n data: defaultsPure({}, facetResults, dataFromMainRequest),\n exhaustive: result.exhaustiveFacetsCount\n };\n assignFacetStats(self.disjunctiveFacets[position], result.facets_stats, dfacet);\n\n if (state.disjunctiveFacetsRefinements[dfacet]) {\n state.disjunctiveFacetsRefinements[dfacet].forEach(function(refinementValue) {\n // add the disjunctive refinements if it is no more retrieved\n if (!self.disjunctiveFacets[position].data[refinementValue] &&\n state.disjunctiveFacetsRefinements[dfacet].indexOf(unescapeFacetValue(refinementValue)) > -1) {\n self.disjunctiveFacets[position].data[refinementValue] = 0;\n }\n });\n }\n }\n });\n nextDisjunctiveResult++;\n });\n\n // if we have some parent level values for hierarchical facets, merge them\n state.getRefinedHierarchicalFacets().forEach(function(refinedFacet) {\n var hierarchicalFacet = state.getHierarchicalFacetByName(refinedFacet);\n var separator = state._getHierarchicalFacetSeparator(hierarchicalFacet);\n\n var currentRefinement = state.getHierarchicalRefinement(refinedFacet);\n // if we are already at a root refinement (or no refinement at all), there is no\n // root level values request\n if (currentRefinement.length === 0 || currentRefinement[0].split(separator).length < 2) {\n return;\n }\n\n results.slice(nextDisjunctiveResult).forEach(function(result) {\n var facets = result && result.facets\n ? result.facets\n : {};\n\n Object.keys(facets).forEach(function(dfacet) {\n var facetResults = facets[dfacet];\n var position = findIndex(state.hierarchicalFacets, function(f) {\n return f.name === hierarchicalFacet.name;\n });\n var attributeIndex = findIndex(self.hierarchicalFacets[position], function(f) {\n return f.attribute === dfacet;\n });\n\n // previous refinements and no results so not able to find it\n if (attributeIndex === -1) {\n return;\n }\n\n // when we always get root levels, if the hits refinement is `beers > IPA` (count: 5),\n // then the disjunctive values will be `beers` (count: 100),\n // but we do not want to display\n // | beers (100)\n // > IPA (5)\n // We want\n // | beers (5)\n // > IPA (5)\n var defaultData = {};\n\n if (currentRefinement.length > 0) {\n var root = currentRefinement[0].split(separator)[0];\n defaultData[root] = self.hierarchicalFacets[position][attributeIndex].data[root];\n }\n\n self.hierarchicalFacets[position][attributeIndex].data = defaultsPure(\n defaultData,\n facetResults,\n self.hierarchicalFacets[position][attributeIndex].data\n );\n });\n\n nextDisjunctiveResult++;\n });\n });\n\n // add the excludes\n Object.keys(state.facetsExcludes).forEach(function(facetName) {\n var excludes = state.facetsExcludes[facetName];\n var position = facetsIndices[facetName];\n\n self.facets[position] = {\n name: facetName,\n data: mainSubResponse.facets[facetName],\n exhaustive: mainSubResponse.exhaustiveFacetsCount\n };\n excludes.forEach(function(facetValue) {\n self.facets[position] = self.facets[position] || {name: facetName};\n self.facets[position].data = self.facets[position].data || {};\n self.facets[position].data[facetValue] = 0;\n });\n });\n\n /**\n * @type {Array}\n */\n this.hierarchicalFacets = this.hierarchicalFacets.map(generateHierarchicalTree(state));\n\n /**\n * @type {Array}\n */\n this.facets = compact(this.facets);\n /**\n * @type {Array}\n */\n this.disjunctiveFacets = compact(this.disjunctiveFacets);\n\n this._state = state;\n}\n\n/**\n * Get a facet object with its name\n * @deprecated\n * @param {string} name name of the faceted attribute\n * @return {SearchResults.Facet} the facet object\n */\nSearchResults.prototype.getFacetByName = function(name) {\n function predicate(facet) {\n return facet.name === name;\n }\n\n return find(this.facets, predicate) ||\n find(this.disjunctiveFacets, predicate) ||\n find(this.hierarchicalFacets, predicate);\n};\n\n/**\n * Get the facet values of a specified attribute from a SearchResults object.\n * @private\n * @param {SearchResults} results the search results to search in\n * @param {string} attribute name of the faceted attribute to search for\n * @return {array|object} facet values. For the hierarchical facets it is an object.\n */\nfunction extractNormalizedFacetValues(results, attribute) {\n function predicate(facet) {\n return facet.name === attribute;\n }\n\n if (results._state.isConjunctiveFacet(attribute)) {\n var facet = find(results.facets, predicate);\n if (!facet) return [];\n\n return Object.keys(facet.data).map(function(name) {\n var value = escapeFacetValue(name);\n return {\n name: name,\n escapedValue: value,\n count: facet.data[name],\n isRefined: results._state.isFacetRefined(attribute, value),\n isExcluded: results._state.isExcludeRefined(attribute, name)\n };\n });\n } else if (results._state.isDisjunctiveFacet(attribute)) {\n var disjunctiveFacet = find(results.disjunctiveFacets, predicate);\n if (!disjunctiveFacet) return [];\n\n return Object.keys(disjunctiveFacet.data).map(function(name) {\n var value = escapeFacetValue(name);\n return {\n name: name,\n escapedValue: value,\n count: disjunctiveFacet.data[name],\n isRefined: results._state.isDisjunctiveFacetRefined(attribute, value)\n };\n });\n } else if (results._state.isHierarchicalFacet(attribute)) {\n return find(results.hierarchicalFacets, predicate);\n }\n}\n\n/**\n * Sort nodes of a hierarchical or disjunctive facet results\n * @private\n * @param {function} sortFn\n * @param {HierarchicalFacet|Array} node node upon which we want to apply the sort\n * @param {string[]} names attribute names\n * @param {number} [level=0] current index in the names array\n */\nfunction recSort(sortFn, node, names, level) {\n level = level || 0;\n\n if (Array.isArray(node)) {\n return sortFn(node, names[level]);\n }\n\n if (!node.data || node.data.length === 0) {\n return node;\n }\n\n var children = node.data.map(function(childNode) {\n return recSort(sortFn, childNode, names, level + 1);\n });\n var sortedChildren = sortFn(children, names[level]);\n var newNode = defaultsPure({data: sortedChildren}, node);\n return newNode;\n}\n\nSearchResults.DEFAULT_SORT = ['isRefined:desc', 'count:desc', 'name:asc'];\n\nfunction vanillaSortFn(order, data) {\n return data.sort(order);\n}\n\n/**\n * @typedef FacetOrdering\n * @type {Object}\n * @property {string[]} [order]\n * @property {'count' | 'alpha' | 'hidden'} [sortRemainingBy]\n */\n\n/**\n * Sorts facet arrays via their facet ordering\n * @param {Array} facetValues the values\n * @param {FacetOrdering} facetOrdering the ordering\n * @returns {Array}\n */\nfunction sortViaFacetOrdering(facetValues, facetOrdering) {\n var orderedFacets = [];\n var remainingFacets = [];\n\n var order = facetOrdering.order || [];\n /**\n * an object with the keys being the values in order, the values their index:\n * ['one', 'two'] -> { one: 0, two: 1 }\n */\n var reverseOrder = order.reduce(function(acc, name, i) {\n acc[name] = i;\n return acc;\n }, {});\n\n facetValues.forEach(function(item) {\n // hierarchical facets get sorted using their raw name\n var name = item.path || item.name;\n if (reverseOrder[name] !== undefined) {\n orderedFacets[reverseOrder[name]] = item;\n } else {\n remainingFacets.push(item);\n }\n });\n\n orderedFacets = orderedFacets.filter(function(facet) {\n return facet;\n });\n\n var sortRemainingBy = facetOrdering.sortRemainingBy;\n var ordering;\n if (sortRemainingBy === 'hidden') {\n return orderedFacets;\n } else if (sortRemainingBy === 'alpha') {\n ordering = [['path', 'name'], ['asc', 'asc']];\n } else {\n ordering = [['count'], ['desc']];\n }\n\n return orderedFacets.concat(\n orderBy(remainingFacets, ordering[0], ordering[1])\n );\n}\n\n/**\n * @param {SearchResults} results the search results class\n * @param {string} attribute the attribute to retrieve ordering of\n * @returns {FacetOrdering=}\n */\nfunction getFacetOrdering(results, attribute) {\n return (\n results.renderingContent &&\n results.renderingContent.facetOrdering &&\n results.renderingContent.facetOrdering.values &&\n results.renderingContent.facetOrdering.values[attribute]\n );\n}\n\n/**\n * Get a the list of values for a given facet attribute. Those values are sorted\n * refinement first, descending count (bigger value on top), and name ascending\n * (alphabetical order). The sort formula can overridden using either string based\n * predicates or a function.\n *\n * This method will return all the values returned by the Algolia engine plus all\n * the values already refined. This means that it can happen that the\n * `maxValuesPerFacet` [configuration](https://www.algolia.com/doc/rest-api/search#param-maxValuesPerFacet)\n * might not be respected if you have facet values that are already refined.\n * @param {string} attribute attribute name\n * @param {object} opts configuration options.\n * @param {boolean} [opts.facetOrdering]\n * Force the use of facetOrdering from the result if a sortBy is present. If\n * sortBy isn't present, facetOrdering will be used automatically.\n * @param {Array. | function} opts.sortBy\n * When using strings, it consists of\n * the name of the [FacetValue](#SearchResults.FacetValue) or the\n * [HierarchicalFacet](#SearchResults.HierarchicalFacet) attributes with the\n * order (`asc` or `desc`). For example to order the value by count, the\n * argument would be `['count:asc']`.\n *\n * If only the attribute name is specified, the ordering defaults to the one\n * specified in the default value for this attribute.\n *\n * When not specified, the order is\n * ascending. This parameter can also be a function which takes two facet\n * values and should return a number, 0 if equal, 1 if the first argument is\n * bigger or -1 otherwise.\n *\n * The default value for this attribute `['isRefined:desc', 'count:desc', 'name:asc']`\n * @return {FacetValue[]|HierarchicalFacet|undefined} depending on the type of facet of\n * the attribute requested (hierarchical, disjunctive or conjunctive)\n * @example\n * helper.on('result', function(event){\n * //get values ordered only by name ascending using the string predicate\n * event.results.getFacetValues('city', {sortBy: ['name:asc']});\n * //get values ordered only by count ascending using a function\n * event.results.getFacetValues('city', {\n * // this is equivalent to ['count:asc']\n * sortBy: function(a, b) {\n * if (a.count === b.count) return 0;\n * if (a.count > b.count) return 1;\n * if (b.count > a.count) return -1;\n * }\n * });\n * });\n */\nSearchResults.prototype.getFacetValues = function(attribute, opts) {\n var facetValues = extractNormalizedFacetValues(this, attribute);\n if (!facetValues) {\n return undefined;\n }\n\n var options = defaultsPure({}, opts, {\n sortBy: SearchResults.DEFAULT_SORT,\n // if no sortBy is given, attempt to sort based on facetOrdering\n // if it is given, we still allow to sort via facet ordering first\n facetOrdering: !(opts && opts.sortBy)\n });\n\n var results = this;\n var attributes;\n if (Array.isArray(facetValues)) {\n attributes = [attribute];\n } else {\n var config = results._state.getHierarchicalFacetByName(facetValues.name);\n attributes = config.attributes;\n }\n\n return recSort(function(data, facetName) {\n if (options.facetOrdering) {\n var facetOrdering = getFacetOrdering(results, facetName);\n if (Boolean(facetOrdering)) {\n return sortViaFacetOrdering(data, facetOrdering);\n }\n }\n\n if (Array.isArray(options.sortBy)) {\n var order = formatSort(options.sortBy, SearchResults.DEFAULT_SORT);\n return orderBy(data, order[0], order[1]);\n } else if (typeof options.sortBy === 'function') {\n return vanillaSortFn(options.sortBy, data);\n }\n throw new Error(\n 'options.sortBy is optional but if defined it must be ' +\n 'either an array of string (predicates) or a sorting function'\n );\n }, facetValues, attributes);\n};\n\n/**\n * Returns the facet stats if attribute is defined and the facet contains some.\n * Otherwise returns undefined.\n * @param {string} attribute name of the faceted attribute\n * @return {object} The stats of the facet\n */\nSearchResults.prototype.getFacetStats = function(attribute) {\n if (this._state.isConjunctiveFacet(attribute)) {\n return getFacetStatsIfAvailable(this.facets, attribute);\n } else if (this._state.isDisjunctiveFacet(attribute)) {\n return getFacetStatsIfAvailable(this.disjunctiveFacets, attribute);\n }\n\n return undefined;\n};\n\n/**\n * @typedef {Object} FacetListItem\n * @property {string} name\n */\n\n/**\n * @param {FacetListItem[]} facetList (has more items, but enough for here)\n * @param {string} facetName\n */\nfunction getFacetStatsIfAvailable(facetList, facetName) {\n var data = find(facetList, function(facet) {\n return facet.name === facetName;\n });\n return data && data.stats;\n}\n\n/**\n * Returns all refinements for all filters + tags. It also provides\n * additional information: count and exhaustiveness for each filter.\n *\n * See the [refinement type](#Refinement) for an exhaustive view of the available\n * data.\n *\n * Note that for a numeric refinement, results are grouped per operator, this\n * means that it will return responses for operators which are empty.\n *\n * @return {Array.} all the refinements\n */\nSearchResults.prototype.getRefinements = function() {\n var state = this._state;\n var results = this;\n var res = [];\n\n Object.keys(state.facetsRefinements).forEach(function(attributeName) {\n state.facetsRefinements[attributeName].forEach(function(name) {\n res.push(getRefinement(state, 'facet', attributeName, name, results.facets));\n });\n });\n\n Object.keys(state.facetsExcludes).forEach(function(attributeName) {\n state.facetsExcludes[attributeName].forEach(function(name) {\n res.push(getRefinement(state, 'exclude', attributeName, name, results.facets));\n });\n });\n\n Object.keys(state.disjunctiveFacetsRefinements).forEach(function(attributeName) {\n state.disjunctiveFacetsRefinements[attributeName].forEach(function(name) {\n res.push(getRefinement(state, 'disjunctive', attributeName, name, results.disjunctiveFacets));\n });\n });\n\n Object.keys(state.hierarchicalFacetsRefinements).forEach(function(attributeName) {\n state.hierarchicalFacetsRefinements[attributeName].forEach(function(name) {\n res.push(getHierarchicalRefinement(state, attributeName, name, results.hierarchicalFacets));\n });\n });\n\n\n Object.keys(state.numericRefinements).forEach(function(attributeName) {\n var operators = state.numericRefinements[attributeName];\n Object.keys(operators).forEach(function(operator) {\n operators[operator].forEach(function(value) {\n res.push({\n type: 'numeric',\n attributeName: attributeName,\n name: value,\n numericValue: value,\n operator: operator\n });\n });\n });\n });\n\n state.tagRefinements.forEach(function(name) {\n res.push({type: 'tag', attributeName: '_tags', name: name});\n });\n\n return res;\n};\n\n/**\n * @typedef {Object} Facet\n * @property {string} name\n * @property {Object} data\n * @property {boolean} exhaustive\n */\n\n/**\n * @param {*} state\n * @param {*} type\n * @param {string} attributeName\n * @param {*} name\n * @param {Facet[]} resultsFacets\n */\nfunction getRefinement(state, type, attributeName, name, resultsFacets) {\n var facet = find(resultsFacets, function(f) {\n return f.name === attributeName;\n });\n var count = facet && facet.data && facet.data[name] ? facet.data[name] : 0;\n var exhaustive = (facet && facet.exhaustive) || false;\n\n return {\n type: type,\n attributeName: attributeName,\n name: name,\n count: count,\n exhaustive: exhaustive\n };\n}\n\n/**\n * @param {*} state\n * @param {string} attributeName\n * @param {*} name\n * @param {Facet[]} resultsFacets\n */\nfunction getHierarchicalRefinement(state, attributeName, name, resultsFacets) {\n var facetDeclaration = state.getHierarchicalFacetByName(attributeName);\n var separator = state._getHierarchicalFacetSeparator(facetDeclaration);\n var split = name.split(separator);\n var rootFacet = find(resultsFacets, function(facet) {\n return facet.name === attributeName;\n });\n\n var facet = split.reduce(function(intermediateFacet, part) {\n var newFacet =\n intermediateFacet && find(intermediateFacet.data, function(f) {\n return f.name === part;\n });\n return newFacet !== undefined ? newFacet : intermediateFacet;\n }, rootFacet);\n\n var count = (facet && facet.count) || 0;\n var exhaustive = (facet && facet.exhaustive) || false;\n var path = (facet && facet.path) || '';\n\n return {\n type: 'hierarchical',\n attributeName: attributeName,\n name: path,\n count: count,\n exhaustive: exhaustive\n };\n}\n\nmodule.exports = SearchResults;\n","'use strict';\n\nvar SearchParameters = require('./SearchParameters');\nvar SearchResults = require('./SearchResults');\nvar DerivedHelper = require('./DerivedHelper');\nvar requestBuilder = require('./requestBuilder');\n\nvar EventEmitter = require('@algolia/events');\nvar inherits = require('./functions/inherits');\nvar objectHasKeys = require('./functions/objectHasKeys');\nvar omit = require('./functions/omit');\nvar merge = require('./functions/merge');\n\nvar version = require('./version');\nvar escapeFacetValue = require('./functions/escapeFacetValue').escapeFacetValue;\n\n/**\n * Event triggered when a parameter is set or updated\n * @event AlgoliaSearchHelper#event:change\n * @property {object} event\n * @property {SearchParameters} event.state the current parameters with the latest changes applied\n * @property {SearchResults} event.results the previous results received from Algolia. `null` before the first request\n * @example\n * helper.on('change', function(event) {\n * console.log('The parameters have changed');\n * });\n */\n\n/**\n * Event triggered when a main search is sent to Algolia\n * @event AlgoliaSearchHelper#event:search\n * @property {object} event\n * @property {SearchParameters} event.state the parameters used for this search\n * @property {SearchResults} event.results the results from the previous search. `null` if it is the first search.\n * @example\n * helper.on('search', function(event) {\n * console.log('Search sent');\n * });\n */\n\n/**\n * Event triggered when a search using `searchForFacetValues` is sent to Algolia\n * @event AlgoliaSearchHelper#event:searchForFacetValues\n * @property {object} event\n * @property {SearchParameters} event.state the parameters used for this search it is the first search.\n * @property {string} event.facet the facet searched into\n * @property {string} event.query the query used to search in the facets\n * @example\n * helper.on('searchForFacetValues', function(event) {\n * console.log('searchForFacetValues sent');\n * });\n */\n\n/**\n * Event triggered when a search using `searchOnce` is sent to Algolia\n * @event AlgoliaSearchHelper#event:searchOnce\n * @property {object} event\n * @property {SearchParameters} event.state the parameters used for this search it is the first search.\n * @example\n * helper.on('searchOnce', function(event) {\n * console.log('searchOnce sent');\n * });\n */\n\n/**\n * Event triggered when the results are retrieved from Algolia\n * @event AlgoliaSearchHelper#event:result\n * @property {object} event\n * @property {SearchResults} event.results the results received from Algolia\n * @property {SearchParameters} event.state the parameters used to query Algolia. Those might be different from the one in the helper instance (for example if the network is unreliable).\n * @example\n * helper.on('result', function(event) {\n * console.log('Search results received');\n * });\n */\n\n/**\n * Event triggered when Algolia sends back an error. For example, if an unknown parameter is\n * used, the error can be caught using this event.\n * @event AlgoliaSearchHelper#event:error\n * @property {object} event\n * @property {Error} event.error the error returned by the Algolia.\n * @example\n * helper.on('error', function(event) {\n * console.log('Houston we got a problem.');\n * });\n */\n\n/**\n * Event triggered when the queue of queries have been depleted (with any result or outdated queries)\n * @event AlgoliaSearchHelper#event:searchQueueEmpty\n * @example\n * helper.on('searchQueueEmpty', function() {\n * console.log('No more search pending');\n * // This is received before the result event if we're not expecting new results\n * });\n *\n * helper.search();\n */\n\n/**\n * Initialize a new AlgoliaSearchHelper\n * @class\n * @classdesc The AlgoliaSearchHelper is a class that ease the management of the\n * search. It provides an event based interface for search callbacks:\n * - change: when the internal search state is changed.\n * This event contains a {@link SearchParameters} object and the\n * {@link SearchResults} of the last result if any.\n * - search: when a search is triggered using the `search()` method.\n * - result: when the response is retrieved from Algolia and is processed.\n * This event contains a {@link SearchResults} object and the\n * {@link SearchParameters} corresponding to this answer.\n * - error: when the response is an error. This event contains the error returned by the server.\n * @param {AlgoliaSearch} client an AlgoliaSearch client\n * @param {string} index the index name to query\n * @param {SearchParameters | object} options an object defining the initial\n * config of the search. It doesn't have to be a {SearchParameters},\n * just an object containing the properties you need from it.\n */\nfunction AlgoliaSearchHelper(client, index, options) {\n if (typeof client.addAlgoliaAgent === 'function') {\n client.addAlgoliaAgent('JS Helper (' + version + ')');\n }\n\n this.setClient(client);\n var opts = options || {};\n opts.index = index;\n this.state = SearchParameters.make(opts);\n this.lastResults = null;\n this._queryId = 0;\n this._lastQueryIdReceived = -1;\n this.derivedHelpers = [];\n this._currentNbQueries = 0;\n}\n\ninherits(AlgoliaSearchHelper, EventEmitter);\n\n/**\n * Start the search with the parameters set in the state. When the\n * method is called, it triggers a `search` event. The results will\n * be available through the `result` event. If an error occurs, an\n * `error` will be fired instead.\n * @return {AlgoliaSearchHelper}\n * @fires search\n * @fires result\n * @fires error\n * @chainable\n */\nAlgoliaSearchHelper.prototype.search = function() {\n this._search({onlyWithDerivedHelpers: false});\n return this;\n};\n\nAlgoliaSearchHelper.prototype.searchOnlyWithDerivedHelpers = function() {\n this._search({onlyWithDerivedHelpers: true});\n return this;\n};\n\n/**\n * Gets the search query parameters that would be sent to the Algolia Client\n * for the hits\n * @return {object} Query Parameters\n */\nAlgoliaSearchHelper.prototype.getQuery = function() {\n var state = this.state;\n return requestBuilder._getHitsSearchParams(state);\n};\n\n/**\n * Start a search using a modified version of the current state. This method does\n * not trigger the helper lifecycle and does not modify the state kept internally\n * by the helper. This second aspect means that the next search call will be the\n * same as a search call before calling searchOnce.\n * @param {object} options can contain all the parameters that can be set to SearchParameters\n * plus the index\n * @param {function} [callback] optional callback executed when the response from the\n * server is back.\n * @return {promise|undefined} if a callback is passed the method returns undefined\n * otherwise it returns a promise containing an object with two keys :\n * - content with a SearchResults\n * - state with the state used for the query as a SearchParameters\n * @example\n * // Changing the number of records returned per page to 1\n * // This example uses the callback API\n * var state = helper.searchOnce({hitsPerPage: 1},\n * function(error, content, state) {\n * // if an error occurred it will be passed in error, otherwise its value is null\n * // content contains the results formatted as a SearchResults\n * // state is the instance of SearchParameters used for this search\n * });\n * @example\n * // Changing the number of records returned per page to 1\n * // This example uses the promise API\n * var state1 = helper.searchOnce({hitsPerPage: 1})\n * .then(promiseHandler);\n *\n * function promiseHandler(res) {\n * // res contains\n * // {\n * // content : SearchResults\n * // state : SearchParameters (the one used for this specific search)\n * // }\n * }\n */\nAlgoliaSearchHelper.prototype.searchOnce = function(options, cb) {\n var tempState = !options ? this.state : this.state.setQueryParameters(options);\n var queries = requestBuilder._getQueries(tempState.index, tempState);\n var self = this;\n\n this._currentNbQueries++;\n\n this.emit('searchOnce', {\n state: tempState\n });\n\n if (cb) {\n this.client\n .search(queries)\n .then(function(content) {\n self._currentNbQueries--;\n if (self._currentNbQueries === 0) {\n self.emit('searchQueueEmpty');\n }\n\n cb(null, new SearchResults(tempState, content.results), tempState);\n })\n .catch(function(err) {\n self._currentNbQueries--;\n if (self._currentNbQueries === 0) {\n self.emit('searchQueueEmpty');\n }\n\n cb(err, null, tempState);\n });\n\n return undefined;\n }\n\n return this.client.search(queries).then(function(content) {\n self._currentNbQueries--;\n if (self._currentNbQueries === 0) self.emit('searchQueueEmpty');\n return {\n content: new SearchResults(tempState, content.results),\n state: tempState,\n _originalResponse: content\n };\n }, function(e) {\n self._currentNbQueries--;\n if (self._currentNbQueries === 0) self.emit('searchQueueEmpty');\n throw e;\n });\n};\n\n /**\n * Start the search for answers with the parameters set in the state.\n * This method returns a promise.\n * @param {Object} options - the options for answers API call\n * @param {string[]} options.attributesForPrediction - Attributes to use for predictions. If empty, `searchableAttributes` is used instead.\n * @param {string[]} options.queryLanguages - The languages in the query. Currently only supports ['en'].\n * @param {number} options.nbHits - Maximum number of answers to retrieve from the Answers Engine. Cannot be greater than 1000.\n *\n * @return {promise} the answer results\n */\nAlgoliaSearchHelper.prototype.findAnswers = function(options) {\n var state = this.state;\n var derivedHelper = this.derivedHelpers[0];\n if (!derivedHelper) {\n return Promise.resolve([]);\n }\n var derivedState = derivedHelper.getModifiedState(state);\n var data = merge(\n {\n attributesForPrediction: options.attributesForPrediction,\n nbHits: options.nbHits\n },\n {\n params: omit(requestBuilder._getHitsSearchParams(derivedState), [\n 'attributesToSnippet',\n 'hitsPerPage',\n 'restrictSearchableAttributes',\n 'snippetEllipsisText' // FIXME remove this line once the engine is fixed.\n ])\n }\n );\n\n var errorMessage = 'search for answers was called, but this client does not have a function client.initIndex(index).findAnswers';\n if (typeof this.client.initIndex !== 'function') {\n throw new Error(errorMessage);\n }\n var index = this.client.initIndex(derivedState.index);\n if (typeof index.findAnswers !== 'function') {\n throw new Error(errorMessage);\n }\n return index.findAnswers(derivedState.query, options.queryLanguages, data);\n};\n\n/**\n * Structure of each result when using\n * [`searchForFacetValues()`](reference.html#AlgoliaSearchHelper#searchForFacetValues)\n * @typedef FacetSearchHit\n * @type {object}\n * @property {string} value the facet value\n * @property {string} highlighted the facet value highlighted with the query string\n * @property {number} count number of occurrence of this facet value\n * @property {boolean} isRefined true if the value is already refined\n */\n\n/**\n * Structure of the data resolved by the\n * [`searchForFacetValues()`](reference.html#AlgoliaSearchHelper#searchForFacetValues)\n * promise.\n * @typedef FacetSearchResult\n * @type {object}\n * @property {FacetSearchHit} facetHits the results for this search for facet values\n * @property {number} processingTimeMS time taken by the query inside the engine\n */\n\n/**\n * Search for facet values based on an query and the name of a faceted attribute. This\n * triggers a search and will return a promise. On top of using the query, it also sends\n * the parameters from the state so that the search is narrowed down to only the possible values.\n *\n * See the description of [FacetSearchResult](reference.html#FacetSearchResult)\n * @param {string} facet the name of the faceted attribute\n * @param {string} query the string query for the search\n * @param {number} [maxFacetHits] the maximum number values returned. Should be > 0 and <= 100\n * @param {object} [userState] the set of custom parameters to use on top of the current state. Setting a property to `undefined` removes\n * it in the generated query.\n * @return {promise.} the results of the search\n */\nAlgoliaSearchHelper.prototype.searchForFacetValues = function(facet, query, maxFacetHits, userState) {\n var clientHasSFFV = typeof this.client.searchForFacetValues === 'function';\n var clientHasInitIndex = typeof this.client.initIndex === 'function';\n if (\n !clientHasSFFV &&\n !clientHasInitIndex &&\n typeof this.client.search !== 'function'\n ) {\n throw new Error(\n 'search for facet values (searchable) was called, but this client does not have a function client.searchForFacetValues or client.initIndex(index).searchForFacetValues'\n );\n }\n\n var state = this.state.setQueryParameters(userState || {});\n var isDisjunctive = state.isDisjunctiveFacet(facet);\n var algoliaQuery = requestBuilder.getSearchForFacetQuery(facet, query, maxFacetHits, state);\n\n this._currentNbQueries++;\n var self = this;\n var searchForFacetValuesPromise;\n // newer algoliasearch ^3.27.1 - ~4.0.0\n if (clientHasSFFV) {\n searchForFacetValuesPromise = this.client.searchForFacetValues([\n {indexName: state.index, params: algoliaQuery}\n ]);\n // algoliasearch < 3.27.1\n } else if (clientHasInitIndex) {\n searchForFacetValuesPromise = this.client\n .initIndex(state.index)\n .searchForFacetValues(algoliaQuery);\n // algoliasearch ~5.0.0\n } else {\n // @MAJOR only use client.search\n delete algoliaQuery.facetName;\n searchForFacetValuesPromise = this.client\n .search([\n {\n type: 'facet',\n facet: facet,\n indexName: state.index,\n params: algoliaQuery\n }\n ])\n .then(function processResponse(response) {\n return response.results[0];\n });\n }\n\n this.emit('searchForFacetValues', {\n state: state,\n facet: facet,\n query: query\n });\n\n return searchForFacetValuesPromise.then(function addIsRefined(content) {\n self._currentNbQueries--;\n if (self._currentNbQueries === 0) self.emit('searchQueueEmpty');\n\n content = Array.isArray(content) ? content[0] : content;\n\n content.facetHits.forEach(function(f) {\n f.escapedValue = escapeFacetValue(f.value);\n f.isRefined = isDisjunctive\n ? state.isDisjunctiveFacetRefined(facet, f.escapedValue)\n : state.isFacetRefined(facet, f.escapedValue);\n });\n\n return content;\n }, function(e) {\n self._currentNbQueries--;\n if (self._currentNbQueries === 0) self.emit('searchQueueEmpty');\n throw e;\n });\n};\n\n/**\n * Sets the text query used for the search.\n *\n * This method resets the current page to 0.\n * @param {string} q the user query\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.setQuery = function(q) {\n this._change({\n state: this.state.resetPage().setQuery(q),\n isPageReset: true\n });\n\n return this;\n};\n\n/**\n * Remove all the types of refinements except tags. A string can be provided to remove\n * only the refinements of a specific attribute. For more advanced use case, you can\n * provide a function instead. This function should follow the\n * [clearCallback definition](#SearchParameters.clearCallback).\n *\n * This method resets the current page to 0.\n * @param {string} [name] optional name of the facet / attribute on which we want to remove all refinements\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n * @example\n * // Removing all the refinements\n * helper.clearRefinements().search();\n * @example\n * // Removing all the filters on a the category attribute.\n * helper.clearRefinements('category').search();\n * @example\n * // Removing only the exclude filters on the category facet.\n * helper.clearRefinements(function(value, attribute, type) {\n * return type === 'exclude' && attribute === 'category';\n * }).search();\n */\nAlgoliaSearchHelper.prototype.clearRefinements = function(name) {\n this._change({\n state: this.state.resetPage().clearRefinements(name),\n isPageReset: true\n });\n\n return this;\n};\n\n/**\n * Remove all the tag filters.\n *\n * This method resets the current page to 0.\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.clearTags = function() {\n this._change({\n state: this.state.resetPage().clearTags(),\n isPageReset: true\n });\n\n return this;\n};\n\n/**\n * Adds a disjunctive filter to a faceted attribute with the `value` provided. If the\n * filter is already set, it doesn't change the filters.\n *\n * This method resets the current page to 0.\n * @param {string} facet the facet to refine\n * @param {string} value the associated value (will be converted to string)\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.addDisjunctiveFacetRefinement = function(facet, value) {\n this._change({\n state: this.state.resetPage().addDisjunctiveFacetRefinement(facet, value),\n isPageReset: true\n });\n\n return this;\n};\n\n/**\n * @deprecated since version 2.4.0, see {@link AlgoliaSearchHelper#addDisjunctiveFacetRefinement}\n */\nAlgoliaSearchHelper.prototype.addDisjunctiveRefine = function() {\n return this.addDisjunctiveFacetRefinement.apply(this, arguments);\n};\n\n/**\n * Adds a refinement on a hierarchical facet. It will throw\n * an exception if the facet is not defined or if the facet\n * is already refined.\n *\n * This method resets the current page to 0.\n * @param {string} facet the facet name\n * @param {string} path the hierarchical facet path\n * @return {AlgoliaSearchHelper}\n * @throws Error if the facet is not defined or if the facet is refined\n * @chainable\n * @fires change\n */\nAlgoliaSearchHelper.prototype.addHierarchicalFacetRefinement = function(facet, value) {\n this._change({\n state: this.state.resetPage().addHierarchicalFacetRefinement(facet, value),\n isPageReset: true\n });\n\n return this;\n};\n\n/**\n * Adds a an numeric filter to an attribute with the `operator` and `value` provided. If the\n * filter is already set, it doesn't change the filters.\n *\n * This method resets the current page to 0.\n * @param {string} attribute the attribute on which the numeric filter applies\n * @param {string} operator the operator of the filter\n * @param {number} value the value of the filter\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.addNumericRefinement = function(attribute, operator, value) {\n this._change({\n state: this.state.resetPage().addNumericRefinement(attribute, operator, value),\n isPageReset: true\n });\n\n return this;\n};\n\n/**\n * Adds a filter to a faceted attribute with the `value` provided. If the\n * filter is already set, it doesn't change the filters.\n *\n * This method resets the current page to 0.\n * @param {string} facet the facet to refine\n * @param {string} value the associated value (will be converted to string)\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.addFacetRefinement = function(facet, value) {\n this._change({\n state: this.state.resetPage().addFacetRefinement(facet, value),\n isPageReset: true\n });\n\n return this;\n};\n\n/**\n * @deprecated since version 2.4.0, see {@link AlgoliaSearchHelper#addFacetRefinement}\n */\nAlgoliaSearchHelper.prototype.addRefine = function() {\n return this.addFacetRefinement.apply(this, arguments);\n};\n\n\n/**\n * Adds a an exclusion filter to a faceted attribute with the `value` provided. If the\n * filter is already set, it doesn't change the filters.\n *\n * This method resets the current page to 0.\n * @param {string} facet the facet to refine\n * @param {string} value the associated value (will be converted to string)\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.addFacetExclusion = function(facet, value) {\n this._change({\n state: this.state.resetPage().addExcludeRefinement(facet, value),\n isPageReset: true\n });\n\n return this;\n};\n\n/**\n * @deprecated since version 2.4.0, see {@link AlgoliaSearchHelper#addFacetExclusion}\n */\nAlgoliaSearchHelper.prototype.addExclude = function() {\n return this.addFacetExclusion.apply(this, arguments);\n};\n\n/**\n * Adds a tag filter with the `tag` provided. If the\n * filter is already set, it doesn't change the filters.\n *\n * This method resets the current page to 0.\n * @param {string} tag the tag to add to the filter\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.addTag = function(tag) {\n this._change({\n state: this.state.resetPage().addTagRefinement(tag),\n isPageReset: true\n });\n\n return this;\n};\n\n/**\n * Removes an numeric filter to an attribute with the `operator` and `value` provided. If the\n * filter is not set, it doesn't change the filters.\n *\n * Some parameters are optional, triggering different behavior:\n * - if the value is not provided, then all the numeric value will be removed for the\n * specified attribute/operator couple.\n * - if the operator is not provided either, then all the numeric filter on this attribute\n * will be removed.\n *\n * This method resets the current page to 0.\n * @param {string} attribute the attribute on which the numeric filter applies\n * @param {string} [operator] the operator of the filter\n * @param {number} [value] the value of the filter\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.removeNumericRefinement = function(attribute, operator, value) {\n this._change({\n state: this.state.resetPage().removeNumericRefinement(attribute, operator, value),\n isPageReset: true\n });\n\n return this;\n};\n\n/**\n * Removes a disjunctive filter to a faceted attribute with the `value` provided. If the\n * filter is not set, it doesn't change the filters.\n *\n * If the value is omitted, then this method will remove all the filters for the\n * attribute.\n *\n * This method resets the current page to 0.\n * @param {string} facet the facet to refine\n * @param {string} [value] the associated value\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.removeDisjunctiveFacetRefinement = function(facet, value) {\n this._change({\n state: this.state.resetPage().removeDisjunctiveFacetRefinement(facet, value),\n isPageReset: true\n });\n\n return this;\n};\n\n/**\n * @deprecated since version 2.4.0, see {@link AlgoliaSearchHelper#removeDisjunctiveFacetRefinement}\n */\nAlgoliaSearchHelper.prototype.removeDisjunctiveRefine = function() {\n return this.removeDisjunctiveFacetRefinement.apply(this, arguments);\n};\n\n/**\n * Removes the refinement set on a hierarchical facet.\n * @param {string} facet the facet name\n * @return {AlgoliaSearchHelper}\n * @throws Error if the facet is not defined or if the facet is not refined\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.removeHierarchicalFacetRefinement = function(facet) {\n this._change({\n state: this.state.resetPage().removeHierarchicalFacetRefinement(facet),\n isPageReset: true\n });\n\n return this;\n};\n\n/**\n * Removes a filter to a faceted attribute with the `value` provided. If the\n * filter is not set, it doesn't change the filters.\n *\n * If the value is omitted, then this method will remove all the filters for the\n * attribute.\n *\n * This method resets the current page to 0.\n * @param {string} facet the facet to refine\n * @param {string} [value] the associated value\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.removeFacetRefinement = function(facet, value) {\n this._change({\n state: this.state.resetPage().removeFacetRefinement(facet, value),\n isPageReset: true\n });\n\n return this;\n};\n\n/**\n * @deprecated since version 2.4.0, see {@link AlgoliaSearchHelper#removeFacetRefinement}\n */\nAlgoliaSearchHelper.prototype.removeRefine = function() {\n return this.removeFacetRefinement.apply(this, arguments);\n};\n\n/**\n * Removes an exclusion filter to a faceted attribute with the `value` provided. If the\n * filter is not set, it doesn't change the filters.\n *\n * If the value is omitted, then this method will remove all the filters for the\n * attribute.\n *\n * This method resets the current page to 0.\n * @param {string} facet the facet to refine\n * @param {string} [value] the associated value\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.removeFacetExclusion = function(facet, value) {\n this._change({\n state: this.state.resetPage().removeExcludeRefinement(facet, value),\n isPageReset: true\n });\n\n return this;\n};\n\n/**\n * @deprecated since version 2.4.0, see {@link AlgoliaSearchHelper#removeFacetExclusion}\n */\nAlgoliaSearchHelper.prototype.removeExclude = function() {\n return this.removeFacetExclusion.apply(this, arguments);\n};\n\n/**\n * Removes a tag filter with the `tag` provided. If the\n * filter is not set, it doesn't change the filters.\n *\n * This method resets the current page to 0.\n * @param {string} tag tag to remove from the filter\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.removeTag = function(tag) {\n this._change({\n state: this.state.resetPage().removeTagRefinement(tag),\n isPageReset: true\n });\n\n return this;\n};\n\n/**\n * Adds or removes an exclusion filter to a faceted attribute with the `value` provided. If\n * the value is set then it removes it, otherwise it adds the filter.\n *\n * This method resets the current page to 0.\n * @param {string} facet the facet to refine\n * @param {string} value the associated value\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.toggleFacetExclusion = function(facet, value) {\n this._change({\n state: this.state.resetPage().toggleExcludeFacetRefinement(facet, value),\n isPageReset: true\n });\n\n return this;\n};\n\n/**\n * @deprecated since version 2.4.0, see {@link AlgoliaSearchHelper#toggleFacetExclusion}\n */\nAlgoliaSearchHelper.prototype.toggleExclude = function() {\n return this.toggleFacetExclusion.apply(this, arguments);\n};\n\n/**\n * Adds or removes a filter to a faceted attribute with the `value` provided. If\n * the value is set then it removes it, otherwise it adds the filter.\n *\n * This method can be used for conjunctive, disjunctive and hierarchical filters.\n *\n * This method resets the current page to 0.\n * @param {string} facet the facet to refine\n * @param {string} value the associated value\n * @return {AlgoliaSearchHelper}\n * @throws Error will throw an error if the facet is not declared in the settings of the helper\n * @fires change\n * @chainable\n * @deprecated since version 2.19.0, see {@link AlgoliaSearchHelper#toggleFacetRefinement}\n */\nAlgoliaSearchHelper.prototype.toggleRefinement = function(facet, value) {\n return this.toggleFacetRefinement(facet, value);\n};\n\n/**\n * Adds or removes a filter to a faceted attribute with the `value` provided. If\n * the value is set then it removes it, otherwise it adds the filter.\n *\n * This method can be used for conjunctive, disjunctive and hierarchical filters.\n *\n * This method resets the current page to 0.\n * @param {string} facet the facet to refine\n * @param {string} value the associated value\n * @return {AlgoliaSearchHelper}\n * @throws Error will throw an error if the facet is not declared in the settings of the helper\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.toggleFacetRefinement = function(facet, value) {\n this._change({\n state: this.state.resetPage().toggleFacetRefinement(facet, value),\n isPageReset: true\n });\n\n return this;\n};\n\n/**\n * @deprecated since version 2.4.0, see {@link AlgoliaSearchHelper#toggleFacetRefinement}\n */\nAlgoliaSearchHelper.prototype.toggleRefine = function() {\n return this.toggleFacetRefinement.apply(this, arguments);\n};\n\n/**\n * Adds or removes a tag filter with the `value` provided. If\n * the value is set then it removes it, otherwise it adds the filter.\n *\n * This method resets the current page to 0.\n * @param {string} tag tag to remove or add\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.toggleTag = function(tag) {\n this._change({\n state: this.state.resetPage().toggleTagRefinement(tag),\n isPageReset: true\n });\n\n return this;\n};\n\n/**\n * Increments the page number by one.\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n * @example\n * helper.setPage(0).nextPage().getPage();\n * // returns 1\n */\nAlgoliaSearchHelper.prototype.nextPage = function() {\n var page = this.state.page || 0;\n return this.setPage(page + 1);\n};\n\n/**\n * Decrements the page number by one.\n * @fires change\n * @return {AlgoliaSearchHelper}\n * @chainable\n * @example\n * helper.setPage(1).previousPage().getPage();\n * // returns 0\n */\nAlgoliaSearchHelper.prototype.previousPage = function() {\n var page = this.state.page || 0;\n return this.setPage(page - 1);\n};\n\n/**\n * @private\n */\nfunction setCurrentPage(page) {\n if (page < 0) throw new Error('Page requested below 0.');\n\n this._change({\n state: this.state.setPage(page),\n isPageReset: false\n });\n\n return this;\n}\n\n/**\n * Change the current page\n * @deprecated\n * @param {number} page The page number\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.setCurrentPage = setCurrentPage;\n\n/**\n * Updates the current page.\n * @function\n * @param {number} page The page number\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.setPage = setCurrentPage;\n\n/**\n * Updates the name of the index that will be targeted by the query.\n *\n * This method resets the current page to 0.\n * @param {string} name the index name\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.setIndex = function(name) {\n this._change({\n state: this.state.resetPage().setIndex(name),\n isPageReset: true\n });\n\n return this;\n};\n\n/**\n * Update a parameter of the search. This method reset the page\n *\n * The complete list of parameters is available on the\n * [Algolia website](https://www.algolia.com/doc/rest#query-an-index).\n * The most commonly used parameters have their own [shortcuts](#query-parameters-shortcuts)\n * or benefit from higher-level APIs (all the kind of filters and facets have their own API)\n *\n * This method resets the current page to 0.\n * @param {string} parameter name of the parameter to update\n * @param {any} value new value of the parameter\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n * @example\n * helper.setQueryParameter('hitsPerPage', 20).search();\n */\nAlgoliaSearchHelper.prototype.setQueryParameter = function(parameter, value) {\n this._change({\n state: this.state.resetPage().setQueryParameter(parameter, value),\n isPageReset: true\n });\n\n return this;\n};\n\n/**\n * Set the whole state (warning: will erase previous state)\n * @param {SearchParameters} newState the whole new state\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.setState = function(newState) {\n this._change({\n state: SearchParameters.make(newState),\n isPageReset: false\n });\n\n return this;\n};\n\n/**\n * Override the current state without triggering a change event.\n * Do not use this method unless you know what you are doing. (see the example\n * for a legit use case)\n * @param {SearchParameters} newState the whole new state\n * @return {AlgoliaSearchHelper}\n * @example\n * helper.on('change', function(state){\n * // In this function you might want to find a way to store the state in the url/history\n * updateYourURL(state)\n * })\n * window.onpopstate = function(event){\n * // This is naive though as you should check if the state is really defined etc.\n * helper.overrideStateWithoutTriggeringChangeEvent(event.state).search()\n * }\n * @chainable\n */\nAlgoliaSearchHelper.prototype.overrideStateWithoutTriggeringChangeEvent = function(newState) {\n this.state = new SearchParameters(newState);\n return this;\n};\n\n/**\n * Check if an attribute has any numeric, conjunctive, disjunctive or hierarchical filters.\n * @param {string} attribute the name of the attribute\n * @return {boolean} true if the attribute is filtered by at least one value\n * @example\n * // hasRefinements works with numeric, conjunctive, disjunctive and hierarchical filters\n * helper.hasRefinements('price'); // false\n * helper.addNumericRefinement('price', '>', 100);\n * helper.hasRefinements('price'); // true\n *\n * helper.hasRefinements('color'); // false\n * helper.addFacetRefinement('color', 'blue');\n * helper.hasRefinements('color'); // true\n *\n * helper.hasRefinements('material'); // false\n * helper.addDisjunctiveFacetRefinement('material', 'plastic');\n * helper.hasRefinements('material'); // true\n *\n * helper.hasRefinements('categories'); // false\n * helper.toggleFacetRefinement('categories', 'kitchen > knife');\n * helper.hasRefinements('categories'); // true\n *\n */\nAlgoliaSearchHelper.prototype.hasRefinements = function(attribute) {\n if (objectHasKeys(this.state.getNumericRefinements(attribute))) {\n return true;\n } else if (this.state.isConjunctiveFacet(attribute)) {\n return this.state.isFacetRefined(attribute);\n } else if (this.state.isDisjunctiveFacet(attribute)) {\n return this.state.isDisjunctiveFacetRefined(attribute);\n } else if (this.state.isHierarchicalFacet(attribute)) {\n return this.state.isHierarchicalFacetRefined(attribute);\n }\n\n // there's currently no way to know that the user did call `addNumericRefinement` at some point\n // thus we cannot distinguish if there once was a numeric refinement that was cleared\n // so we will return false in every other situations to be consistent\n // while what we should do here is throw because we did not find the attribute in any type\n // of refinement\n return false;\n};\n\n/**\n * Check if a value is excluded for a specific faceted attribute. If the value\n * is omitted then the function checks if there is any excluding refinements.\n *\n * @param {string} facet name of the attribute for used for faceting\n * @param {string} [value] optional value. If passed will test that this value\n * is filtering the given facet.\n * @return {boolean} true if refined\n * @example\n * helper.isExcludeRefined('color'); // false\n * helper.isExcludeRefined('color', 'blue') // false\n * helper.isExcludeRefined('color', 'red') // false\n *\n * helper.addFacetExclusion('color', 'red');\n *\n * helper.isExcludeRefined('color'); // true\n * helper.isExcludeRefined('color', 'blue') // false\n * helper.isExcludeRefined('color', 'red') // true\n */\nAlgoliaSearchHelper.prototype.isExcluded = function(facet, value) {\n return this.state.isExcludeRefined(facet, value);\n};\n\n/**\n * @deprecated since 2.4.0, see {@link AlgoliaSearchHelper#hasRefinements}\n */\nAlgoliaSearchHelper.prototype.isDisjunctiveRefined = function(facet, value) {\n return this.state.isDisjunctiveFacetRefined(facet, value);\n};\n\n/**\n * Check if the string is a currently filtering tag.\n * @param {string} tag tag to check\n * @return {boolean}\n */\nAlgoliaSearchHelper.prototype.hasTag = function(tag) {\n return this.state.isTagRefined(tag);\n};\n\n/**\n * @deprecated since 2.4.0, see {@link AlgoliaSearchHelper#hasTag}\n */\nAlgoliaSearchHelper.prototype.isTagRefined = function() {\n return this.hasTagRefinements.apply(this, arguments);\n};\n\n\n/**\n * Get the name of the currently used index.\n * @return {string}\n * @example\n * helper.setIndex('highestPrice_products').getIndex();\n * // returns 'highestPrice_products'\n */\nAlgoliaSearchHelper.prototype.getIndex = function() {\n return this.state.index;\n};\n\nfunction getCurrentPage() {\n return this.state.page;\n}\n\n/**\n * Get the currently selected page\n * @deprecated\n * @return {number} the current page\n */\nAlgoliaSearchHelper.prototype.getCurrentPage = getCurrentPage;\n/**\n * Get the currently selected page\n * @function\n * @return {number} the current page\n */\nAlgoliaSearchHelper.prototype.getPage = getCurrentPage;\n\n/**\n * Get all the tags currently set to filters the results.\n *\n * @return {string[]} The list of tags currently set.\n */\nAlgoliaSearchHelper.prototype.getTags = function() {\n return this.state.tagRefinements;\n};\n\n/**\n * Get the list of refinements for a given attribute. This method works with\n * conjunctive, disjunctive, excluding and numerical filters.\n *\n * See also SearchResults#getRefinements\n *\n * @param {string} facetName attribute name used for faceting\n * @return {Array.} All Refinement are objects that contain a value, and\n * a type. Numeric also contains an operator.\n * @example\n * helper.addNumericRefinement('price', '>', 100);\n * helper.getRefinements('price');\n * // [\n * // {\n * // \"value\": [\n * // 100\n * // ],\n * // \"operator\": \">\",\n * // \"type\": \"numeric\"\n * // }\n * // ]\n * @example\n * helper.addFacetRefinement('color', 'blue');\n * helper.addFacetExclusion('color', 'red');\n * helper.getRefinements('color');\n * // [\n * // {\n * // \"value\": \"blue\",\n * // \"type\": \"conjunctive\"\n * // },\n * // {\n * // \"value\": \"red\",\n * // \"type\": \"exclude\"\n * // }\n * // ]\n * @example\n * helper.addDisjunctiveFacetRefinement('material', 'plastic');\n * // [\n * // {\n * // \"value\": \"plastic\",\n * // \"type\": \"disjunctive\"\n * // }\n * // ]\n */\nAlgoliaSearchHelper.prototype.getRefinements = function(facetName) {\n var refinements = [];\n\n if (this.state.isConjunctiveFacet(facetName)) {\n var conjRefinements = this.state.getConjunctiveRefinements(facetName);\n\n conjRefinements.forEach(function(r) {\n refinements.push({\n value: r,\n type: 'conjunctive'\n });\n });\n\n var excludeRefinements = this.state.getExcludeRefinements(facetName);\n\n excludeRefinements.forEach(function(r) {\n refinements.push({\n value: r,\n type: 'exclude'\n });\n });\n } else if (this.state.isDisjunctiveFacet(facetName)) {\n var disjRefinements = this.state.getDisjunctiveRefinements(facetName);\n\n disjRefinements.forEach(function(r) {\n refinements.push({\n value: r,\n type: 'disjunctive'\n });\n });\n }\n\n var numericRefinements = this.state.getNumericRefinements(facetName);\n\n Object.keys(numericRefinements).forEach(function(operator) {\n var value = numericRefinements[operator];\n\n refinements.push({\n value: value,\n operator: operator,\n type: 'numeric'\n });\n });\n\n return refinements;\n};\n\n/**\n * Return the current refinement for the (attribute, operator)\n * @param {string} attribute attribute in the record\n * @param {string} operator operator applied on the refined values\n * @return {Array.} refined values\n */\nAlgoliaSearchHelper.prototype.getNumericRefinement = function(attribute, operator) {\n return this.state.getNumericRefinement(attribute, operator);\n};\n\n/**\n * Get the current breadcrumb for a hierarchical facet, as an array\n * @param {string} facetName Hierarchical facet name\n * @return {array.} the path as an array of string\n */\nAlgoliaSearchHelper.prototype.getHierarchicalFacetBreadcrumb = function(facetName) {\n return this.state.getHierarchicalFacetBreadcrumb(facetName);\n};\n\n// /////////// PRIVATE\n\n/**\n * Perform the underlying queries\n * @private\n * @return {undefined}\n * @fires search\n * @fires result\n * @fires error\n */\nAlgoliaSearchHelper.prototype._search = function(options) {\n var state = this.state;\n var states = [];\n var mainQueries = [];\n\n if (!options.onlyWithDerivedHelpers) {\n mainQueries = requestBuilder._getQueries(state.index, state);\n\n states.push({\n state: state,\n queriesCount: mainQueries.length,\n helper: this\n });\n\n this.emit('search', {\n state: state,\n results: this.lastResults\n });\n }\n\n var derivedQueries = this.derivedHelpers.map(function(derivedHelper) {\n var derivedState = derivedHelper.getModifiedState(state);\n var derivedStateQueries = requestBuilder._getQueries(derivedState.index, derivedState);\n\n states.push({\n state: derivedState,\n queriesCount: derivedStateQueries.length,\n helper: derivedHelper\n });\n\n derivedHelper.emit('search', {\n state: derivedState,\n results: derivedHelper.lastResults\n });\n\n return derivedStateQueries;\n });\n\n var queries = Array.prototype.concat.apply(mainQueries, derivedQueries);\n var queryId = this._queryId++;\n\n this._currentNbQueries++;\n\n try {\n this.client.search(queries)\n .then(this._dispatchAlgoliaResponse.bind(this, states, queryId))\n .catch(this._dispatchAlgoliaError.bind(this, queryId));\n } catch (error) {\n // If we reach this part, we're in an internal error state\n this.emit('error', {\n error: error\n });\n }\n};\n\n/**\n * Transform the responses as sent by the server and transform them into a user\n * usable object that merge the results of all the batch requests. It will dispatch\n * over the different helper + derived helpers (when there are some).\n * @private\n * @param {array.<{SearchParameters, AlgoliaQueries, AlgoliaSearchHelper}>}\n * state state used for to generate the request\n * @param {number} queryId id of the current request\n * @param {object} content content of the response\n * @return {undefined}\n */\nAlgoliaSearchHelper.prototype._dispatchAlgoliaResponse = function(states, queryId, content) {\n // FIXME remove the number of outdated queries discarded instead of just one\n\n if (queryId < this._lastQueryIdReceived) {\n // Outdated answer\n return;\n }\n\n this._currentNbQueries -= (queryId - this._lastQueryIdReceived);\n this._lastQueryIdReceived = queryId;\n\n if (this._currentNbQueries === 0) this.emit('searchQueueEmpty');\n\n var results = content.results.slice();\n\n states.forEach(function(s) {\n var state = s.state;\n var queriesCount = s.queriesCount;\n var helper = s.helper;\n var specificResults = results.splice(0, queriesCount);\n\n var formattedResponse = helper.lastResults = new SearchResults(state, specificResults);\n\n helper.emit('result', {\n results: formattedResponse,\n state: state\n });\n });\n};\n\nAlgoliaSearchHelper.prototype._dispatchAlgoliaError = function(queryId, error) {\n if (queryId < this._lastQueryIdReceived) {\n // Outdated answer\n return;\n }\n\n this._currentNbQueries -= queryId - this._lastQueryIdReceived;\n this._lastQueryIdReceived = queryId;\n\n this.emit('error', {\n error: error\n });\n\n if (this._currentNbQueries === 0) this.emit('searchQueueEmpty');\n};\n\nAlgoliaSearchHelper.prototype.containsRefinement = function(query, facetFilters, numericFilters, tagFilters) {\n return query ||\n facetFilters.length !== 0 ||\n numericFilters.length !== 0 ||\n tagFilters.length !== 0;\n};\n\n/**\n * Test if there are some disjunctive refinements on the facet\n * @private\n * @param {string} facet the attribute to test\n * @return {boolean}\n */\nAlgoliaSearchHelper.prototype._hasDisjunctiveRefinements = function(facet) {\n return this.state.disjunctiveRefinements[facet] &&\n this.state.disjunctiveRefinements[facet].length > 0;\n};\n\nAlgoliaSearchHelper.prototype._change = function(event) {\n var state = event.state;\n var isPageReset = event.isPageReset;\n\n if (state !== this.state) {\n this.state = state;\n\n this.emit('change', {\n state: this.state,\n results: this.lastResults,\n isPageReset: isPageReset\n });\n }\n};\n\n/**\n * Clears the cache of the underlying Algolia client.\n * @return {AlgoliaSearchHelper}\n */\nAlgoliaSearchHelper.prototype.clearCache = function() {\n this.client.clearCache && this.client.clearCache();\n return this;\n};\n\n/**\n * Updates the internal client instance. If the reference of the clients\n * are equal then no update is actually done.\n * @param {AlgoliaSearch} newClient an AlgoliaSearch client\n * @return {AlgoliaSearchHelper}\n */\nAlgoliaSearchHelper.prototype.setClient = function(newClient) {\n if (this.client === newClient) return this;\n\n if (typeof newClient.addAlgoliaAgent === 'function') {\n newClient.addAlgoliaAgent('JS Helper (' + version + ')');\n }\n this.client = newClient;\n\n return this;\n};\n\n/**\n * Gets the instance of the currently used client.\n * @return {AlgoliaSearch}\n */\nAlgoliaSearchHelper.prototype.getClient = function() {\n return this.client;\n};\n\n/**\n * Creates an derived instance of the Helper. A derived helper\n * is a way to request other indices synchronised with the lifecycle\n * of the main Helper. This mechanism uses the multiqueries feature\n * of Algolia to aggregate all the requests in a single network call.\n *\n * This method takes a function that is used to create a new SearchParameter\n * that will be used to create requests to Algolia. Those new requests\n * are created just before the `search` event. The signature of the function\n * is `SearchParameters -> SearchParameters`.\n *\n * This method returns a new DerivedHelper which is an EventEmitter\n * that fires the same `search`, `result` and `error` events. Those\n * events, however, will receive data specific to this DerivedHelper\n * and the SearchParameters that is returned by the call of the\n * parameter function.\n * @param {function} fn SearchParameters -> SearchParameters\n * @return {DerivedHelper}\n */\nAlgoliaSearchHelper.prototype.derive = function(fn) {\n var derivedHelper = new DerivedHelper(this, fn);\n this.derivedHelpers.push(derivedHelper);\n return derivedHelper;\n};\n\n/**\n * This method detaches a derived Helper from the main one. Prefer using the one from the\n * derived helper itself, to remove the event listeners too.\n * @private\n * @return {undefined}\n * @throws Error\n */\nAlgoliaSearchHelper.prototype.detachDerivedHelper = function(derivedHelper) {\n var pos = this.derivedHelpers.indexOf(derivedHelper);\n if (pos === -1) throw new Error('Derived helper already detached');\n this.derivedHelpers.splice(pos, 1);\n};\n\n/**\n * This method returns true if there is currently at least one on-going search.\n * @return {boolean} true if there is a search pending\n */\nAlgoliaSearchHelper.prototype.hasPendingRequests = function() {\n return this._currentNbQueries > 0;\n};\n\n/**\n * @typedef AlgoliaSearchHelper.NumericRefinement\n * @type {object}\n * @property {number[]} value the numbers that are used for filtering this attribute with\n * the operator specified.\n * @property {string} operator the faceting data: value, number of entries\n * @property {string} type will be 'numeric'\n */\n\n/**\n * @typedef AlgoliaSearchHelper.FacetRefinement\n * @type {object}\n * @property {string} value the string use to filter the attribute\n * @property {string} type the type of filter: 'conjunctive', 'disjunctive', 'exclude'\n */\n\nmodule.exports = AlgoliaSearchHelper;\n","'use strict';\n\nmodule.exports = function compact(array) {\n if (!Array.isArray(array)) {\n return [];\n }\n\n return array.filter(Boolean);\n};\n","'use strict';\n\n// NOTE: this behaves like lodash/defaults, but doesn't mutate the target\n// it also preserve keys order\nmodule.exports = function defaultsPure() {\n var sources = Array.prototype.slice.call(arguments);\n\n return sources.reduceRight(function(acc, source) {\n Object.keys(Object(source)).forEach(function(key) {\n if (source[key] === undefined) {\n return;\n }\n if (acc[key] !== undefined) {\n // remove if already added, so that we can add it in correct order\n delete acc[key];\n }\n acc[key] = source[key];\n });\n return acc;\n }, {});\n};\n","'use strict';\n\n/**\n * Replaces a leading - with \\-\n * @private\n * @param {any} value the facet value to replace\n * @returns any\n */\nfunction escapeFacetValue(value) {\n if (typeof value !== 'string') return value;\n\n return String(value).replace(/^-/, '\\\\-');\n}\n\n/**\n * Replaces a leading \\- with -\n * @private\n * @param {any} value the escaped facet value\n * @returns any\n */\nfunction unescapeFacetValue(value) {\n if (typeof value !== 'string') return value;\n\n return value.replace(/^\\\\-/, '-');\n}\n\nmodule.exports = {\n escapeFacetValue: escapeFacetValue,\n unescapeFacetValue: unescapeFacetValue\n};\n","'use strict';\n\n// @MAJOR can be replaced by native Array#find when we change support\nmodule.exports = function find(array, comparator) {\n if (!Array.isArray(array)) {\n return undefined;\n }\n\n for (var i = 0; i < array.length; i++) {\n if (comparator(array[i])) {\n return array[i];\n }\n }\n};\n","'use strict';\n\n// @MAJOR can be replaced by native Array#findIndex when we change support\nmodule.exports = function find(array, comparator) {\n if (!Array.isArray(array)) {\n return -1;\n }\n\n for (var i = 0; i < array.length; i++) {\n if (comparator(array[i])) {\n return i;\n }\n }\n return -1;\n};\n","'use strict';\n\nvar find = require('./find');\n\n/**\n * Transform sort format from user friendly notation to lodash format\n * @param {string[]} sortBy array of predicate of the form \"attribute:order\"\n * @param {string[]} [defaults] array of predicate of the form \"attribute:order\"\n * @return {array.} array containing 2 elements : attributes, orders\n */\nmodule.exports = function formatSort(sortBy, defaults) {\n var defaultInstructions = (defaults || []).map(function(sort) {\n return sort.split(':');\n });\n\n return sortBy.reduce(\n function preparePredicate(out, sort) {\n var sortInstruction = sort.split(':');\n\n var matchingDefault = find(defaultInstructions, function(\n defaultInstruction\n ) {\n return defaultInstruction[0] === sortInstruction[0];\n });\n\n if (sortInstruction.length > 1 || !matchingDefault) {\n out[0].push(sortInstruction[0]);\n out[1].push(sortInstruction[1]);\n return out;\n }\n\n out[0].push(matchingDefault[0]);\n out[1].push(matchingDefault[1]);\n return out;\n },\n [[], []]\n );\n};\n","'use strict';\n\nfunction inherits(ctor, superCtor) {\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n}\n\nmodule.exports = inherits;\n","'use strict';\n\nfunction intersection(arr1, arr2) {\n return arr1.filter(function(value, index) {\n return (\n arr2.indexOf(value) > -1 &&\n arr1.indexOf(value) === index /* skips duplicates */\n );\n });\n}\n\nmodule.exports = intersection;\n","'use strict';\n\nfunction clone(value) {\n if (typeof value === 'object' && value !== null) {\n return _merge(Array.isArray(value) ? [] : {}, value);\n }\n return value;\n}\n\nfunction isObjectOrArrayOrFunction(value) {\n return (\n typeof value === 'function' ||\n Array.isArray(value) ||\n Object.prototype.toString.call(value) === '[object Object]'\n );\n}\n\nfunction _merge(target, source) {\n if (target === source) {\n return target;\n }\n\n for (var key in source) {\n if (\n !Object.prototype.hasOwnProperty.call(source, key) ||\n key === '__proto__'\n ) {\n continue;\n }\n\n var sourceVal = source[key];\n var targetVal = target[key];\n\n if (typeof targetVal !== 'undefined' && typeof sourceVal === 'undefined') {\n continue;\n }\n\n if (\n isObjectOrArrayOrFunction(targetVal) &&\n isObjectOrArrayOrFunction(sourceVal)\n ) {\n target[key] = _merge(targetVal, sourceVal);\n } else {\n target[key] = clone(sourceVal);\n }\n }\n return target;\n}\n\n/**\n * This method is like Object.assign, but recursively merges own and inherited\n * enumerable keyed properties of source objects into the destination object.\n *\n * NOTE: this behaves like lodash/merge, but:\n * - does mutate functions if they are a source\n * - treats non-plain objects as plain\n * - does not work for circular objects\n * - treats sparse arrays as sparse\n * - does not convert Array-like objects (Arguments, NodeLists, etc.) to arrays\n *\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n */\n\nfunction merge(target) {\n if (!isObjectOrArrayOrFunction(target)) {\n target = {};\n }\n\n for (var i = 1, l = arguments.length; i < l; i++) {\n var source = arguments[i];\n\n if (isObjectOrArrayOrFunction(source)) {\n _merge(target, source);\n }\n }\n return target;\n}\n\nmodule.exports = merge;\n","'use strict';\n\nfunction objectHasKeys(obj) {\n return obj && Object.keys(obj).length > 0;\n}\n\nmodule.exports = objectHasKeys;\n","'use strict';\n\n// https://github.com/babel/babel/blob/3aaafae053fa75febb3aa45d45b6f00646e30ba4/packages/babel-helpers/src/helpers.js#L604-L620\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source === null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key;\n var i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\n\nmodule.exports = _objectWithoutPropertiesLoose;\n","'use strict';\n\nfunction compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined;\n var valIsNull = value === null;\n\n var othIsDefined = other !== undefined;\n var othIsNull = other === null;\n\n if (\n (!othIsNull && value > other) ||\n (valIsNull && othIsDefined) ||\n !valIsDefined\n ) {\n return 1;\n }\n if (\n (!valIsNull && value < other) ||\n (othIsNull && valIsDefined) ||\n !othIsDefined\n ) {\n return -1;\n }\n }\n return 0;\n}\n\n/**\n * @param {Array} collection object with keys in attributes\n * @param {Array} iteratees attributes\n * @param {Array} orders asc | desc\n */\nfunction orderBy(collection, iteratees, orders) {\n if (!Array.isArray(collection)) {\n return [];\n }\n\n if (!Array.isArray(orders)) {\n orders = [];\n }\n\n var result = collection.map(function(value, index) {\n return {\n criteria: iteratees.map(function(iteratee) {\n return value[iteratee];\n }),\n index: index,\n value: value\n };\n });\n\n result.sort(function comparer(object, other) {\n var index = -1;\n\n while (++index < object.criteria.length) {\n var res = compareAscending(object.criteria[index], other.criteria[index]);\n if (res) {\n if (index >= orders.length) {\n return res;\n }\n if (orders[index] === 'desc') {\n return -res;\n }\n return res;\n }\n }\n\n // This ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n });\n\n return result.map(function(res) {\n return res.value;\n });\n}\n\nmodule.exports = orderBy;\n","'use strict';\n\nfunction valToNumber(v) {\n if (typeof v === 'number') {\n return v;\n } else if (typeof v === 'string') {\n return parseFloat(v);\n } else if (Array.isArray(v)) {\n return v.map(valToNumber);\n }\n\n throw new Error('The value should be a number, a parsable string or an array of those.');\n}\n\nmodule.exports = valToNumber;\n","'use strict';\n\nvar merge = require('./functions/merge');\n\nfunction sortObject(obj) {\n return Object.keys(obj)\n .sort(function(a, b) {\n return a.localeCompare(b);\n })\n .reduce(function(acc, curr) {\n acc[curr] = obj[curr];\n return acc;\n }, {});\n}\n\nvar requestBuilder = {\n /**\n * Get all the queries to send to the client, those queries can used directly\n * with the Algolia client.\n * @private\n * @return {object[]} The queries\n */\n _getQueries: function getQueries(index, state) {\n var queries = [];\n\n // One query for the hits\n queries.push({\n indexName: index,\n params: requestBuilder._getHitsSearchParams(state)\n });\n\n // One for each disjunctive facets\n state.getRefinedDisjunctiveFacets().forEach(function(refinedFacet) {\n queries.push({\n indexName: index,\n params: requestBuilder._getDisjunctiveFacetSearchParams(state, refinedFacet)\n });\n });\n\n // More to get the parent levels of the hierarchical facets when refined\n state.getRefinedHierarchicalFacets().forEach(function(refinedFacet) {\n var hierarchicalFacet = state.getHierarchicalFacetByName(refinedFacet);\n var currentRefinement = state.getHierarchicalRefinement(refinedFacet);\n var separator = state._getHierarchicalFacetSeparator(hierarchicalFacet);\n\n // If we are deeper than level 0 (starting from `beer > IPA`)\n // we want to get all parent values\n if (currentRefinement.length > 0 && currentRefinement[0].split(separator).length > 1) {\n // We generate a map of the filters we will use for our facet values queries\n var filtersMap = currentRefinement[0].split(separator).slice(0, -1).reduce(\n function createFiltersMap(map, segment, level) {\n return map.concat({\n attribute: hierarchicalFacet.attributes[level],\n value: level === 0\n ? segment\n : [map[map.length - 1].value, segment].join(separator)\n });\n }\n , []);\n\n filtersMap.forEach(function(filter, level) {\n var params = requestBuilder._getDisjunctiveFacetSearchParams(\n state,\n filter.attribute,\n level === 0\n );\n\n // Keep facet filters unrelated to current hierarchical attributes\n function hasHierarchicalFacetFilter(value) {\n return hierarchicalFacet.attributes.some(function(attribute) {\n return attribute === value.split(':')[0];\n });\n }\n\n var filteredFacetFilters = (params.facetFilters || []).reduce(function(acc, facetFilter) {\n if (Array.isArray(facetFilter)) {\n var filtered = facetFilter.filter(function(filterValue) {\n return !hasHierarchicalFacetFilter(filterValue);\n });\n\n if (filtered.length > 0) {\n acc.push(filtered);\n }\n }\n\n if (typeof facetFilter === 'string' && !hasHierarchicalFacetFilter(facetFilter)) {\n acc.push(facetFilter);\n }\n\n return acc;\n }, []);\n\n var parent = filtersMap[level - 1];\n if (level > 0) {\n params.facetFilters = filteredFacetFilters.concat(parent.attribute + ':' + parent.value);\n } else {\n params.facetFilters = filteredFacetFilters.length > 0 ? filteredFacetFilters : undefined;\n }\n\n queries.push({indexName: index, params: params});\n });\n }\n });\n\n return queries;\n },\n\n /**\n * Build search parameters used to fetch hits\n * @private\n * @return {object.}\n */\n _getHitsSearchParams: function(state) {\n var facets = state.facets\n .concat(state.disjunctiveFacets)\n .concat(requestBuilder._getHitsHierarchicalFacetsAttributes(state));\n\n\n var facetFilters = requestBuilder._getFacetFilters(state);\n var numericFilters = requestBuilder._getNumericFilters(state);\n var tagFilters = requestBuilder._getTagFilters(state);\n var additionalParams = {\n facets: facets.indexOf('*') > -1 ? ['*'] : facets,\n tagFilters: tagFilters\n };\n\n if (facetFilters.length > 0) {\n additionalParams.facetFilters = facetFilters;\n }\n\n if (numericFilters.length > 0) {\n additionalParams.numericFilters = numericFilters;\n }\n\n return sortObject(merge({}, state.getQueryParams(), additionalParams));\n },\n\n /**\n * Build search parameters used to fetch a disjunctive facet\n * @private\n * @param {string} facet the associated facet name\n * @param {boolean} hierarchicalRootLevel ?? FIXME\n * @return {object}\n */\n _getDisjunctiveFacetSearchParams: function(state, facet, hierarchicalRootLevel) {\n var facetFilters = requestBuilder._getFacetFilters(state, facet, hierarchicalRootLevel);\n var numericFilters = requestBuilder._getNumericFilters(state, facet);\n var tagFilters = requestBuilder._getTagFilters(state);\n var additionalParams = {\n hitsPerPage: 0,\n page: 0,\n analytics: false,\n clickAnalytics: false\n };\n\n if (tagFilters.length > 0) {\n additionalParams.tagFilters = tagFilters;\n }\n\n var hierarchicalFacet = state.getHierarchicalFacetByName(facet);\n\n if (hierarchicalFacet) {\n additionalParams.facets = requestBuilder._getDisjunctiveHierarchicalFacetAttribute(\n state,\n hierarchicalFacet,\n hierarchicalRootLevel\n );\n } else {\n additionalParams.facets = facet;\n }\n\n if (numericFilters.length > 0) {\n additionalParams.numericFilters = numericFilters;\n }\n\n if (facetFilters.length > 0) {\n additionalParams.facetFilters = facetFilters;\n }\n\n return sortObject(merge({}, state.getQueryParams(), additionalParams));\n },\n\n /**\n * Return the numeric filters in an algolia request fashion\n * @private\n * @param {string} [facetName] the name of the attribute for which the filters should be excluded\n * @return {string[]} the numeric filters in the algolia format\n */\n _getNumericFilters: function(state, facetName) {\n if (state.numericFilters) {\n return state.numericFilters;\n }\n\n var numericFilters = [];\n\n Object.keys(state.numericRefinements).forEach(function(attribute) {\n var operators = state.numericRefinements[attribute] || {};\n Object.keys(operators).forEach(function(operator) {\n var values = operators[operator] || [];\n if (facetName !== attribute) {\n values.forEach(function(value) {\n if (Array.isArray(value)) {\n var vs = value.map(function(v) {\n return attribute + operator + v;\n });\n numericFilters.push(vs);\n } else {\n numericFilters.push(attribute + operator + value);\n }\n });\n }\n });\n });\n\n return numericFilters;\n },\n\n /**\n * Return the tags filters depending\n * @private\n * @return {string}\n */\n _getTagFilters: function(state) {\n if (state.tagFilters) {\n return state.tagFilters;\n }\n\n return state.tagRefinements.join(',');\n },\n\n\n /**\n * Build facetFilters parameter based on current refinements. The array returned\n * contains strings representing the facet filters in the algolia format.\n * @private\n * @param {string} [facet] if set, the current disjunctive facet\n * @return {array.}\n */\n _getFacetFilters: function(state, facet, hierarchicalRootLevel) {\n var facetFilters = [];\n\n var facetsRefinements = state.facetsRefinements || {};\n Object.keys(facetsRefinements).forEach(function(facetName) {\n var facetValues = facetsRefinements[facetName] || [];\n facetValues.forEach(function(facetValue) {\n facetFilters.push(facetName + ':' + facetValue);\n });\n });\n\n var facetsExcludes = state.facetsExcludes || {};\n Object.keys(facetsExcludes).forEach(function(facetName) {\n var facetValues = facetsExcludes[facetName] || [];\n facetValues.forEach(function(facetValue) {\n facetFilters.push(facetName + ':-' + facetValue);\n });\n });\n\n var disjunctiveFacetsRefinements = state.disjunctiveFacetsRefinements || {};\n Object.keys(disjunctiveFacetsRefinements).forEach(function(facetName) {\n var facetValues = disjunctiveFacetsRefinements[facetName] || [];\n if (facetName === facet || !facetValues || facetValues.length === 0) {\n return;\n }\n var orFilters = [];\n\n facetValues.forEach(function(facetValue) {\n orFilters.push(facetName + ':' + facetValue);\n });\n\n facetFilters.push(orFilters);\n });\n\n var hierarchicalFacetsRefinements = state.hierarchicalFacetsRefinements || {};\n Object.keys(hierarchicalFacetsRefinements).forEach(function(facetName) {\n var facetValues = hierarchicalFacetsRefinements[facetName] || [];\n var facetValue = facetValues[0];\n\n if (facetValue === undefined) {\n return;\n }\n\n var hierarchicalFacet = state.getHierarchicalFacetByName(facetName);\n var separator = state._getHierarchicalFacetSeparator(hierarchicalFacet);\n var rootPath = state._getHierarchicalRootPath(hierarchicalFacet);\n var attributeToRefine;\n var attributesIndex;\n\n // we ask for parent facet values only when the `facet` is the current hierarchical facet\n if (facet === facetName) {\n // if we are at the root level already, no need to ask for facet values, we get them from\n // the hits query\n if (facetValue.indexOf(separator) === -1 || (!rootPath && hierarchicalRootLevel === true) ||\n (rootPath && rootPath.split(separator).length === facetValue.split(separator).length)) {\n return;\n }\n\n if (!rootPath) {\n attributesIndex = facetValue.split(separator).length - 2;\n facetValue = facetValue.slice(0, facetValue.lastIndexOf(separator));\n } else {\n attributesIndex = rootPath.split(separator).length - 1;\n facetValue = rootPath;\n }\n\n attributeToRefine = hierarchicalFacet.attributes[attributesIndex];\n } else {\n attributesIndex = facetValue.split(separator).length - 1;\n\n attributeToRefine = hierarchicalFacet.attributes[attributesIndex];\n }\n\n if (attributeToRefine) {\n facetFilters.push([attributeToRefine + ':' + facetValue]);\n }\n });\n\n return facetFilters;\n },\n\n _getHitsHierarchicalFacetsAttributes: function(state) {\n var out = [];\n\n return state.hierarchicalFacets.reduce(\n // ask for as much levels as there's hierarchical refinements\n function getHitsAttributesForHierarchicalFacet(allAttributes, hierarchicalFacet) {\n var hierarchicalRefinement = state.getHierarchicalRefinement(hierarchicalFacet.name)[0];\n\n // if no refinement, ask for root level\n if (!hierarchicalRefinement) {\n allAttributes.push(hierarchicalFacet.attributes[0]);\n return allAttributes;\n }\n\n var separator = state._getHierarchicalFacetSeparator(hierarchicalFacet);\n var level = hierarchicalRefinement.split(separator).length;\n var newAttributes = hierarchicalFacet.attributes.slice(0, level + 1);\n\n return allAttributes.concat(newAttributes);\n }, out);\n },\n\n _getDisjunctiveHierarchicalFacetAttribute: function(state, hierarchicalFacet, rootLevel) {\n var separator = state._getHierarchicalFacetSeparator(hierarchicalFacet);\n if (rootLevel === true) {\n var rootPath = state._getHierarchicalRootPath(hierarchicalFacet);\n var attributeIndex = 0;\n\n if (rootPath) {\n attributeIndex = rootPath.split(separator).length;\n }\n return [hierarchicalFacet.attributes[attributeIndex]];\n }\n\n var hierarchicalRefinement = state.getHierarchicalRefinement(hierarchicalFacet.name)[0] || '';\n // if refinement is 'beers > IPA > Flying dog',\n // then we want `facets: ['beers > IPA']` as disjunctive facet (parent level values)\n\n var parentLevel = hierarchicalRefinement.split(separator).length - 1;\n return hierarchicalFacet.attributes.slice(0, parentLevel + 1);\n },\n\n getSearchForFacetQuery: function(facetName, query, maxFacetHits, state) {\n var stateForSearchForFacetValues = state.isDisjunctiveFacet(facetName) ?\n state.clearRefinements(facetName) :\n state;\n var searchForFacetSearchParameters = {\n facetQuery: query,\n facetName: facetName\n };\n if (typeof maxFacetHits === 'number') {\n searchForFacetSearchParameters.maxFacetHits = maxFacetHits;\n }\n return sortObject(merge(\n {},\n requestBuilder._getHitsSearchParams(stateForSearchForFacetValues),\n searchForFacetSearchParameters\n ));\n }\n};\n\nmodule.exports = requestBuilder;\n","'use strict';\n\nmodule.exports = function isValidUserToken(userToken) {\n if (userToken === null) {\n return false;\n }\n return /^[a-zA-Z0-9_-]{1,64}$/.test(userToken);\n};\n","'use strict';\n\nmodule.exports = '3.11.1';\n","/*! algoliasearch-lite.umd.js | 4.14.2 | © Algolia, inc. | https://github.com/algolia/algoliasearch-client-javascript */\n!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=e||self).algoliasearch=t()}(this,(function(){\"use strict\";function e(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function t(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function r(r){for(var n=1;n=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function o(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if(!(Symbol.iterator in Object(e)||\"[object Arguments]\"===Object.prototype.toString.call(e)))return;var r=[],n=!0,o=!1,a=void 0;try{for(var u,i=e[Symbol.iterator]();!(n=(u=i.next()).done)&&(r.push(u.value),!t||r.length!==t);n=!0);}catch(e){o=!0,a=e}finally{try{n||null==i.return||i.return()}finally{if(o)throw a}}return r}(e,t)||function(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance\")}()}function a(e){return function(e){if(Array.isArray(e)){for(var t=0,r=new Array(e.length);t2&&void 0!==arguments[2]?arguments[2]:{miss:function(){return Promise.resolve()}};return Promise.resolve().then((function(){var r=JSON.stringify(e),n=a()[r];return Promise.all([n||t(),void 0!==n])})).then((function(e){var t=o(e,2),n=t[0],a=t[1];return Promise.all([n,a||r.miss(n)])})).then((function(e){return o(e,1)[0]}))},set:function(e,t){return Promise.resolve().then((function(){var o=a();return o[JSON.stringify(e)]=t,n().setItem(r,JSON.stringify(o)),t}))},delete:function(e){return Promise.resolve().then((function(){var t=a();delete t[JSON.stringify(e)],n().setItem(r,JSON.stringify(t))}))},clear:function(){return Promise.resolve().then((function(){n().removeItem(r)}))}}}function i(e){var t=a(e.caches),r=t.shift();return void 0===r?{get:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{miss:function(){return Promise.resolve()}},n=t();return n.then((function(e){return Promise.all([e,r.miss(e)])})).then((function(e){return o(e,1)[0]}))},set:function(e,t){return Promise.resolve(t)},delete:function(e){return Promise.resolve()},clear:function(){return Promise.resolve()}}:{get:function(e,n){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{miss:function(){return Promise.resolve()}};return r.get(e,n,o).catch((function(){return i({caches:t}).get(e,n,o)}))},set:function(e,n){return r.set(e,n).catch((function(){return i({caches:t}).set(e,n)}))},delete:function(e){return r.delete(e).catch((function(){return i({caches:t}).delete(e)}))},clear:function(){return r.clear().catch((function(){return i({caches:t}).clear()}))}}}function s(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{serializable:!0},t={};return{get:function(r,n){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{miss:function(){return Promise.resolve()}},a=JSON.stringify(r);if(a in t)return Promise.resolve(e.serializable?JSON.parse(t[a]):t[a]);var u=n(),i=o&&o.miss||function(){return Promise.resolve()};return u.then((function(e){return i(e)})).then((function(){return u}))},set:function(r,n){return t[JSON.stringify(r)]=e.serializable?JSON.stringify(n):n,Promise.resolve(n)},delete:function(e){return delete t[JSON.stringify(e)],Promise.resolve()},clear:function(){return t={},Promise.resolve()}}}function c(e){for(var t=e.length-1;t>0;t--){var r=Math.floor(Math.random()*(t+1)),n=e[t];e[t]=e[r],e[r]=n}return e}function l(e,t){return t?(Object.keys(t).forEach((function(r){e[r]=t[r](e)})),e):e}function f(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n0?n:void 0,timeout:r.timeout||t,headers:r.headers||{},queryParameters:r.queryParameters||{},cacheable:r.cacheable}}var m={Read:1,Write:2,Any:3},p=1,v=2,y=3;function g(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:p;return r(r({},e),{},{status:t,lastUpdate:Date.now()})}function b(e){return\"string\"==typeof e?{protocol:\"https\",url:e,accept:m.Any}:{protocol:e.protocol||\"https\",url:e.url,accept:e.accept||m.Any}}var O=\"GET\",P=\"POST\";function q(e,t){return Promise.all(t.map((function(t){return e.get(t,(function(){return Promise.resolve(g(t))}))}))).then((function(e){var r=e.filter((function(e){return function(e){return e.status===p||Date.now()-e.lastUpdate>12e4}(e)})),n=e.filter((function(e){return function(e){return e.status===y&&Date.now()-e.lastUpdate<=12e4}(e)})),o=[].concat(a(r),a(n));return{getTimeout:function(e,t){return(0===n.length&&0===e?1:n.length+3+e)*t},statelessHosts:o.length>0?o.map((function(e){return b(e)})):t}}))}function w(e,t,n,o){var u=[],i=function(e,t){if(e.method===O||void 0===e.data&&void 0===t.data)return;var n=Array.isArray(e.data)?e.data:r(r({},e.data),t.data);return JSON.stringify(n)}(n,o),s=function(e,t){var n=r(r({},e.headers),t.headers),o={};return Object.keys(n).forEach((function(e){var t=n[e];o[e.toLowerCase()]=t})),o}(e,o),c=n.method,l=n.method!==O?{}:r(r({},n.data),o.data),f=r(r(r({\"x-algolia-agent\":e.userAgent.value},e.queryParameters),l),o.queryParameters),h=0,d=function t(r,a){var l=r.pop();if(void 0===l)throw{name:\"RetryError\",message:\"Unreachable hosts - your application id may be incorrect. If the error persists, contact support@algolia.com.\",transporterStackTrace:A(u)};var d={data:i,headers:s,method:c,url:S(l,n.path,f),connectTimeout:a(h,e.timeouts.connect),responseTimeout:a(h,o.timeout)},m=function(e){var t={request:d,response:e,host:l,triesLeft:r.length};return u.push(t),t},p={onSuccess:function(e){return function(e){try{return JSON.parse(e.content)}catch(t){throw function(e,t){return{name:\"DeserializationError\",message:e,response:t}}(t.message,e)}}(e)},onRetry:function(n){var o=m(n);return n.isTimedOut&&h++,Promise.all([e.logger.info(\"Retryable failure\",x(o)),e.hostsCache.set(l,g(l,n.isTimedOut?y:v))]).then((function(){return t(r,a)}))},onFail:function(e){throw m(e),function(e,t){var r=e.content,n=e.status,o=r;try{o=JSON.parse(r).message}catch(e){}return function(e,t,r){return{name:\"ApiError\",message:e,status:t,transporterStackTrace:r}}(o,n,t)}(e,A(u))}};return e.requester.send(d).then((function(e){return function(e,t){return function(e){var t=e.status;return e.isTimedOut||function(e){var t=e.isTimedOut,r=e.status;return!t&&0==~~r}(e)||2!=~~(t/100)&&4!=~~(t/100)}(e)?t.onRetry(e):2==~~(e.status/100)?t.onSuccess(e):t.onFail(e)}(e,p)}))};return q(e.hostsCache,t).then((function(e){return d(a(e.statelessHosts).reverse(),e.getTimeout)}))}function j(e){var t={value:\"Algolia for JavaScript (\".concat(e,\")\"),add:function(e){var r=\"; \".concat(e.segment).concat(void 0!==e.version?\" (\".concat(e.version,\")\"):\"\");return-1===t.value.indexOf(r)&&(t.value=\"\".concat(t.value).concat(r)),t}};return t}function S(e,t,r){var n=T(r),o=\"\".concat(e.protocol,\"://\").concat(e.url,\"/\").concat(\"/\"===t.charAt(0)?t.substr(1):t);return n.length&&(o+=\"?\".concat(n)),o}function T(e){return Object.keys(e).map((function(t){return f(\"%s=%s\",t,(r=e[t],\"[object Object]\"===Object.prototype.toString.call(r)||\"[object Array]\"===Object.prototype.toString.call(r)?JSON.stringify(e[t]):e[t]));var r})).join(\"&\")}function A(e){return e.map((function(e){return x(e)}))}function x(e){var t=e.request.headers[\"x-algolia-api-key\"]?{\"x-algolia-api-key\":\"*****\"}:{};return r(r({},e),{},{request:r(r({},e.request),{},{headers:r(r({},e.request.headers),t)})})}var N=function(e){var t=e.appId,n=function(e,t,r){var n={\"x-algolia-api-key\":r,\"x-algolia-application-id\":t};return{headers:function(){return e===h.WithinHeaders?n:{}},queryParameters:function(){return e===h.WithinQueryParameters?n:{}}}}(void 0!==e.authMode?e.authMode:h.WithinHeaders,t,e.apiKey),a=function(e){var t=e.hostsCache,r=e.logger,n=e.requester,a=e.requestsCache,u=e.responsesCache,i=e.timeouts,s=e.userAgent,c=e.hosts,l=e.queryParameters,f={hostsCache:t,logger:r,requester:n,requestsCache:a,responsesCache:u,timeouts:i,userAgent:s,headers:e.headers,queryParameters:l,hosts:c.map((function(e){return b(e)})),read:function(e,t){var r=d(t,f.timeouts.read),n=function(){return w(f,f.hosts.filter((function(e){return 0!=(e.accept&m.Read)})),e,r)};if(!0!==(void 0!==r.cacheable?r.cacheable:e.cacheable))return n();var a={request:e,mappedRequestOptions:r,transporter:{queryParameters:f.queryParameters,headers:f.headers}};return f.responsesCache.get(a,(function(){return f.requestsCache.get(a,(function(){return f.requestsCache.set(a,n()).then((function(e){return Promise.all([f.requestsCache.delete(a),e])}),(function(e){return Promise.all([f.requestsCache.delete(a),Promise.reject(e)])})).then((function(e){var t=o(e,2);t[0];return t[1]}))}))}),{miss:function(e){return f.responsesCache.set(a,e)}})},write:function(e,t){return w(f,f.hosts.filter((function(e){return 0!=(e.accept&m.Write)})),e,d(t,f.timeouts.write))}};return f}(r(r({hosts:[{url:\"\".concat(t,\"-dsn.algolia.net\"),accept:m.Read},{url:\"\".concat(t,\".algolia.net\"),accept:m.Write}].concat(c([{url:\"\".concat(t,\"-1.algolianet.com\")},{url:\"\".concat(t,\"-2.algolianet.com\")},{url:\"\".concat(t,\"-3.algolianet.com\")}]))},e),{},{headers:r(r(r({},n.headers()),{\"content-type\":\"application/x-www-form-urlencoded\"}),e.headers),queryParameters:r(r({},n.queryParameters()),e.queryParameters)}));return l({transporter:a,appId:t,addAlgoliaAgent:function(e,t){a.userAgent.add({segment:e,version:t})},clearCache:function(){return Promise.all([a.requestsCache.clear(),a.responsesCache.clear()]).then((function(){}))}},e.methods)},C=function(e){return function(t,r){return t.method===O?e.transporter.read(t,r):e.transporter.write(t,r)}},k=function(e){return function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n={transporter:e.transporter,appId:e.appId,indexName:t};return l(n,r.methods)}},J=function(e){return function(t,n){var o=t.map((function(e){return r(r({},e),{},{params:T(e.params||{})})}));return e.transporter.read({method:P,path:\"1/indexes/*/queries\",data:{requests:o},cacheable:!0},n)}},E=function(e){return function(t,o){return Promise.all(t.map((function(t){var a=t.params,u=a.facetName,i=a.facetQuery,s=n(a,[\"facetName\",\"facetQuery\"]);return k(e)(t.indexName,{methods:{searchForFacetValues:R}}).searchForFacetValues(u,i,r(r({},o),s))})))}},I=function(e){return function(t,r,n){return e.transporter.read({method:P,path:f(\"1/answers/%s/prediction\",e.indexName),data:{query:t,queryLanguages:r},cacheable:!0},n)}},F=function(e){return function(t,r){return e.transporter.read({method:P,path:f(\"1/indexes/%s/query\",e.indexName),data:{query:t},cacheable:!0},r)}},R=function(e){return function(t,r,n){return e.transporter.read({method:P,path:f(\"1/indexes/%s/facets/%s/query\",e.indexName,t),data:{facetQuery:r},cacheable:!0},n)}},D=1,W=2,H=3;function Q(e,t,n){var o,a={appId:e,apiKey:t,timeouts:{connect:1,read:2,write:30},requester:{send:function(e){return new Promise((function(t){var r=new XMLHttpRequest;r.open(e.method,e.url,!0),Object.keys(e.headers).forEach((function(t){return r.setRequestHeader(t,e.headers[t])}));var n,o=function(e,n){return setTimeout((function(){r.abort(),t({status:0,content:n,isTimedOut:!0})}),1e3*e)},a=o(e.connectTimeout,\"Connection timeout\");r.onreadystatechange=function(){r.readyState>r.OPENED&&void 0===n&&(clearTimeout(a),n=o(e.responseTimeout,\"Socket timeout\"))},r.onerror=function(){0===r.status&&(clearTimeout(a),clearTimeout(n),t({content:r.responseText||\"Network request failed\",status:r.status,isTimedOut:!1}))},r.onload=function(){clearTimeout(a),clearTimeout(n),t({content:r.responseText,status:r.status,isTimedOut:!1})},r.send(e.data)}))}},logger:(o=H,{debug:function(e,t){return D>=o&&console.debug(e,t),Promise.resolve()},info:function(e,t){return W>=o&&console.info(e,t),Promise.resolve()},error:function(e,t){return console.error(e,t),Promise.resolve()}}),responsesCache:s(),requestsCache:s({serializable:!1}),hostsCache:i({caches:[u({key:\"\".concat(\"4.14.2\",\"-\").concat(e)}),s()]}),userAgent:j(\"4.14.2\").add({segment:\"Browser\",version:\"lite\"}),authMode:h.WithinQueryParameters};return N(r(r(r({},a),n),{},{methods:{search:J,searchForFacetValues:E,multipleQueries:J,multipleSearchForFacetValues:E,customRequest:C,initIndex:function(e){return function(t){return k(e)(t,{methods:{search:F,searchForFacetValues:R,findAnswers:I}})}}}}))}return Q.version=\"4.14.2\",Q}));\n","/*\n * anime.js v3.2.2\n * (c) 2023 Julian Garnier\n * Released under the MIT license\n * animejs.com\n */\n\n// Defaults\n\nvar defaultInstanceSettings = {\n update: null,\n begin: null,\n loopBegin: null,\n changeBegin: null,\n change: null,\n changeComplete: null,\n loopComplete: null,\n complete: null,\n loop: 1,\n direction: 'normal',\n autoplay: true,\n timelineOffset: 0\n};\n\nvar defaultTweenSettings = {\n duration: 1000,\n delay: 0,\n endDelay: 0,\n easing: 'easeOutElastic(1, .5)',\n round: 0\n};\n\nvar validTransforms = ['translateX', 'translateY', 'translateZ', 'rotate', 'rotateX', 'rotateY', 'rotateZ', 'scale', 'scaleX', 'scaleY', 'scaleZ', 'skew', 'skewX', 'skewY', 'perspective', 'matrix', 'matrix3d'];\n\n// Caching\n\nvar cache = {\n CSS: {},\n springs: {}\n};\n\n// Utils\n\nfunction minMax(val, min, max) {\n return Math.min(Math.max(val, min), max);\n}\n\nfunction stringContains(str, text) {\n return str.indexOf(text) > -1;\n}\n\nfunction applyArguments(func, args) {\n return func.apply(null, args);\n}\n\nvar is = {\n arr: function (a) { return Array.isArray(a); },\n obj: function (a) { return stringContains(Object.prototype.toString.call(a), 'Object'); },\n pth: function (a) { return is.obj(a) && a.hasOwnProperty('totalLength'); },\n svg: function (a) { return a instanceof SVGElement; },\n inp: function (a) { return a instanceof HTMLInputElement; },\n dom: function (a) { return a.nodeType || is.svg(a); },\n str: function (a) { return typeof a === 'string'; },\n fnc: function (a) { return typeof a === 'function'; },\n und: function (a) { return typeof a === 'undefined'; },\n nil: function (a) { return is.und(a) || a === null; },\n hex: function (a) { return /(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(a); },\n rgb: function (a) { return /^rgb/.test(a); },\n hsl: function (a) { return /^hsl/.test(a); },\n col: function (a) { return (is.hex(a) || is.rgb(a) || is.hsl(a)); },\n key: function (a) { return !defaultInstanceSettings.hasOwnProperty(a) && !defaultTweenSettings.hasOwnProperty(a) && a !== 'targets' && a !== 'keyframes'; },\n};\n\n// Easings\n\nfunction parseEasingParameters(string) {\n var match = /\\(([^)]+)\\)/.exec(string);\n return match ? match[1].split(',').map(function (p) { return parseFloat(p); }) : [];\n}\n\n// Spring solver inspired by Webkit Copyright © 2016 Apple Inc. All rights reserved. https://webkit.org/demos/spring/spring.js\n\nfunction spring(string, duration) {\n\n var params = parseEasingParameters(string);\n var mass = minMax(is.und(params[0]) ? 1 : params[0], .1, 100);\n var stiffness = minMax(is.und(params[1]) ? 100 : params[1], .1, 100);\n var damping = minMax(is.und(params[2]) ? 10 : params[2], .1, 100);\n var velocity = minMax(is.und(params[3]) ? 0 : params[3], .1, 100);\n var w0 = Math.sqrt(stiffness / mass);\n var zeta = damping / (2 * Math.sqrt(stiffness * mass));\n var wd = zeta < 1 ? w0 * Math.sqrt(1 - zeta * zeta) : 0;\n var a = 1;\n var b = zeta < 1 ? (zeta * w0 + -velocity) / wd : -velocity + w0;\n\n function solver(t) {\n var progress = duration ? (duration * t) / 1000 : t;\n if (zeta < 1) {\n progress = Math.exp(-progress * zeta * w0) * (a * Math.cos(wd * progress) + b * Math.sin(wd * progress));\n } else {\n progress = (a + b * progress) * Math.exp(-progress * w0);\n }\n if (t === 0 || t === 1) { return t; }\n return 1 - progress;\n }\n\n function getDuration() {\n var cached = cache.springs[string];\n if (cached) { return cached; }\n var frame = 1/6;\n var elapsed = 0;\n var rest = 0;\n while(true) {\n elapsed += frame;\n if (solver(elapsed) === 1) {\n rest++;\n if (rest >= 16) { break; }\n } else {\n rest = 0;\n }\n }\n var duration = elapsed * frame * 1000;\n cache.springs[string] = duration;\n return duration;\n }\n\n return duration ? solver : getDuration;\n\n}\n\n// Basic steps easing implementation https://developer.mozilla.org/fr/docs/Web/CSS/transition-timing-function\n\nfunction steps(steps) {\n if ( steps === void 0 ) steps = 10;\n\n return function (t) { return Math.ceil((minMax(t, 0.000001, 1)) * steps) * (1 / steps); };\n}\n\n// BezierEasing https://github.com/gre/bezier-easing\n\nvar bezier = (function () {\n\n var kSplineTableSize = 11;\n var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\n\n function A(aA1, aA2) { return 1.0 - 3.0 * aA2 + 3.0 * aA1 }\n function B(aA1, aA2) { return 3.0 * aA2 - 6.0 * aA1 }\n function C(aA1) { return 3.0 * aA1 }\n\n function calcBezier(aT, aA1, aA2) { return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT }\n function getSlope(aT, aA1, aA2) { return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1) }\n\n function binarySubdivide(aX, aA, aB, mX1, mX2) {\n var currentX, currentT, i = 0;\n do {\n currentT = aA + (aB - aA) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - aX;\n if (currentX > 0.0) { aB = currentT; } else { aA = currentT; }\n } while (Math.abs(currentX) > 0.0000001 && ++i < 10);\n return currentT;\n }\n\n function newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {\n for (var i = 0; i < 4; ++i) {\n var currentSlope = getSlope(aGuessT, mX1, mX2);\n if (currentSlope === 0.0) { return aGuessT; }\n var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n aGuessT -= currentX / currentSlope;\n }\n return aGuessT;\n }\n\n function bezier(mX1, mY1, mX2, mY2) {\n\n if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1)) { return; }\n var sampleValues = new Float32Array(kSplineTableSize);\n\n if (mX1 !== mY1 || mX2 !== mY2) {\n for (var i = 0; i < kSplineTableSize; ++i) {\n sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n }\n }\n\n function getTForX(aX) {\n\n var intervalStart = 0;\n var currentSample = 1;\n var lastSample = kSplineTableSize - 1;\n\n for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample) {\n intervalStart += kSampleStepSize;\n }\n\n --currentSample;\n\n var dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]);\n var guessForT = intervalStart + dist * kSampleStepSize;\n var initialSlope = getSlope(guessForT, mX1, mX2);\n\n if (initialSlope >= 0.001) {\n return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\n } else if (initialSlope === 0.0) {\n return guessForT;\n } else {\n return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\n }\n\n }\n\n return function (x) {\n if (mX1 === mY1 && mX2 === mY2) { return x; }\n if (x === 0 || x === 1) { return x; }\n return calcBezier(getTForX(x), mY1, mY2);\n }\n\n }\n\n return bezier;\n\n})();\n\nvar penner = (function () {\n\n // Based on jQuery UI's implemenation of easing equations from Robert Penner (http://www.robertpenner.com/easing)\n\n var eases = { linear: function () { return function (t) { return t; }; } };\n\n var functionEasings = {\n Sine: function () { return function (t) { return 1 - Math.cos(t * Math.PI / 2); }; },\n Expo: function () { return function (t) { return t ? Math.pow(2, 10 * t - 10) : 0; }; },\n Circ: function () { return function (t) { return 1 - Math.sqrt(1 - t * t); }; },\n Back: function () { return function (t) { return t * t * (3 * t - 2); }; },\n Bounce: function () { return function (t) {\n var pow2, b = 4;\n while (t < (( pow2 = Math.pow(2, --b)) - 1) / 11) {}\n return 1 / Math.pow(4, 3 - b) - 7.5625 * Math.pow(( pow2 * 3 - 2 ) / 22 - t, 2)\n }; },\n Elastic: function (amplitude, period) {\n if ( amplitude === void 0 ) amplitude = 1;\n if ( period === void 0 ) period = .5;\n\n var a = minMax(amplitude, 1, 10);\n var p = minMax(period, .1, 2);\n return function (t) {\n return (t === 0 || t === 1) ? t : \n -a * Math.pow(2, 10 * (t - 1)) * Math.sin((((t - 1) - (p / (Math.PI * 2) * Math.asin(1 / a))) * (Math.PI * 2)) / p);\n }\n }\n };\n\n var baseEasings = ['Quad', 'Cubic', 'Quart', 'Quint'];\n\n baseEasings.forEach(function (name, i) {\n functionEasings[name] = function () { return function (t) { return Math.pow(t, i + 2); }; };\n });\n\n Object.keys(functionEasings).forEach(function (name) {\n var easeIn = functionEasings[name];\n eases['easeIn' + name] = easeIn;\n eases['easeOut' + name] = function (a, b) { return function (t) { return 1 - easeIn(a, b)(1 - t); }; };\n eases['easeInOut' + name] = function (a, b) { return function (t) { return t < 0.5 ? easeIn(a, b)(t * 2) / 2 : \n 1 - easeIn(a, b)(t * -2 + 2) / 2; }; };\n eases['easeOutIn' + name] = function (a, b) { return function (t) { return t < 0.5 ? (1 - easeIn(a, b)(1 - t * 2)) / 2 : \n (easeIn(a, b)(t * 2 - 1) + 1) / 2; }; };\n });\n\n return eases;\n\n})();\n\nfunction parseEasings(easing, duration) {\n if (is.fnc(easing)) { return easing; }\n var name = easing.split('(')[0];\n var ease = penner[name];\n var args = parseEasingParameters(easing);\n switch (name) {\n case 'spring' : return spring(easing, duration);\n case 'cubicBezier' : return applyArguments(bezier, args);\n case 'steps' : return applyArguments(steps, args);\n default : return applyArguments(ease, args);\n }\n}\n\n// Strings\n\nfunction selectString(str) {\n try {\n var nodes = document.querySelectorAll(str);\n return nodes;\n } catch(e) {\n return;\n }\n}\n\n// Arrays\n\nfunction filterArray(arr, callback) {\n var len = arr.length;\n var thisArg = arguments.length >= 2 ? arguments[1] : void 0;\n var result = [];\n for (var i = 0; i < len; i++) {\n if (i in arr) {\n var val = arr[i];\n if (callback.call(thisArg, val, i, arr)) {\n result.push(val);\n }\n }\n }\n return result;\n}\n\nfunction flattenArray(arr) {\n return arr.reduce(function (a, b) { return a.concat(is.arr(b) ? flattenArray(b) : b); }, []);\n}\n\nfunction toArray(o) {\n if (is.arr(o)) { return o; }\n if (is.str(o)) { o = selectString(o) || o; }\n if (o instanceof NodeList || o instanceof HTMLCollection) { return [].slice.call(o); }\n return [o];\n}\n\nfunction arrayContains(arr, val) {\n return arr.some(function (a) { return a === val; });\n}\n\n// Objects\n\nfunction cloneObject(o) {\n var clone = {};\n for (var p in o) { clone[p] = o[p]; }\n return clone;\n}\n\nfunction replaceObjectProps(o1, o2) {\n var o = cloneObject(o1);\n for (var p in o1) { o[p] = o2.hasOwnProperty(p) ? o2[p] : o1[p]; }\n return o;\n}\n\nfunction mergeObjects(o1, o2) {\n var o = cloneObject(o1);\n for (var p in o2) { o[p] = is.und(o1[p]) ? o2[p] : o1[p]; }\n return o;\n}\n\n// Colors\n\nfunction rgbToRgba(rgbValue) {\n var rgb = /rgb\\((\\d+,\\s*[\\d]+,\\s*[\\d]+)\\)/g.exec(rgbValue);\n return rgb ? (\"rgba(\" + (rgb[1]) + \",1)\") : rgbValue;\n}\n\nfunction hexToRgba(hexValue) {\n var rgx = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i;\n var hex = hexValue.replace(rgx, function (m, r, g, b) { return r + r + g + g + b + b; } );\n var rgb = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n var r = parseInt(rgb[1], 16);\n var g = parseInt(rgb[2], 16);\n var b = parseInt(rgb[3], 16);\n return (\"rgba(\" + r + \",\" + g + \",\" + b + \",1)\");\n}\n\nfunction hslToRgba(hslValue) {\n var hsl = /hsl\\((\\d+),\\s*([\\d.]+)%,\\s*([\\d.]+)%\\)/g.exec(hslValue) || /hsla\\((\\d+),\\s*([\\d.]+)%,\\s*([\\d.]+)%,\\s*([\\d.]+)\\)/g.exec(hslValue);\n var h = parseInt(hsl[1], 10) / 360;\n var s = parseInt(hsl[2], 10) / 100;\n var l = parseInt(hsl[3], 10) / 100;\n var a = hsl[4] || 1;\n function hue2rgb(p, q, t) {\n if (t < 0) { t += 1; }\n if (t > 1) { t -= 1; }\n if (t < 1/6) { return p + (q - p) * 6 * t; }\n if (t < 1/2) { return q; }\n if (t < 2/3) { return p + (q - p) * (2/3 - t) * 6; }\n return p;\n }\n var r, g, b;\n if (s == 0) {\n r = g = b = l;\n } else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1/3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1/3);\n }\n return (\"rgba(\" + (r * 255) + \",\" + (g * 255) + \",\" + (b * 255) + \",\" + a + \")\");\n}\n\nfunction colorToRgb(val) {\n if (is.rgb(val)) { return rgbToRgba(val); }\n if (is.hex(val)) { return hexToRgba(val); }\n if (is.hsl(val)) { return hslToRgba(val); }\n}\n\n// Units\n\nfunction getUnit(val) {\n var split = /[+-]?\\d*\\.?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?(%|px|pt|em|rem|in|cm|mm|ex|ch|pc|vw|vh|vmin|vmax|deg|rad|turn)?$/.exec(val);\n if (split) { return split[1]; }\n}\n\nfunction getTransformUnit(propName) {\n if (stringContains(propName, 'translate') || propName === 'perspective') { return 'px'; }\n if (stringContains(propName, 'rotate') || stringContains(propName, 'skew')) { return 'deg'; }\n}\n\n// Values\n\nfunction getFunctionValue(val, animatable) {\n if (!is.fnc(val)) { return val; }\n return val(animatable.target, animatable.id, animatable.total);\n}\n\nfunction getAttribute(el, prop) {\n return el.getAttribute(prop);\n}\n\nfunction convertPxToUnit(el, value, unit) {\n var valueUnit = getUnit(value);\n if (arrayContains([unit, 'deg', 'rad', 'turn'], valueUnit)) { return value; }\n var cached = cache.CSS[value + unit];\n if (!is.und(cached)) { return cached; }\n var baseline = 100;\n var tempEl = document.createElement(el.tagName);\n var parentEl = (el.parentNode && (el.parentNode !== document)) ? el.parentNode : document.body;\n parentEl.appendChild(tempEl);\n tempEl.style.position = 'absolute';\n tempEl.style.width = baseline + unit;\n var factor = baseline / tempEl.offsetWidth;\n parentEl.removeChild(tempEl);\n var convertedUnit = factor * parseFloat(value);\n cache.CSS[value + unit] = convertedUnit;\n return convertedUnit;\n}\n\nfunction getCSSValue(el, prop, unit) {\n if (prop in el.style) {\n var uppercasePropName = prop.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n var value = el.style[prop] || getComputedStyle(el).getPropertyValue(uppercasePropName) || '0';\n return unit ? convertPxToUnit(el, value, unit) : value;\n }\n}\n\nfunction getAnimationType(el, prop) {\n if (is.dom(el) && !is.inp(el) && (!is.nil(getAttribute(el, prop)) || (is.svg(el) && el[prop]))) { return 'attribute'; }\n if (is.dom(el) && arrayContains(validTransforms, prop)) { return 'transform'; }\n if (is.dom(el) && (prop !== 'transform' && getCSSValue(el, prop))) { return 'css'; }\n if (el[prop] != null) { return 'object'; }\n}\n\nfunction getElementTransforms(el) {\n if (!is.dom(el)) { return; }\n var str = el.style.transform || '';\n var reg = /(\\w+)\\(([^)]*)\\)/g;\n var transforms = new Map();\n var m; while (m = reg.exec(str)) { transforms.set(m[1], m[2]); }\n return transforms;\n}\n\nfunction getTransformValue(el, propName, animatable, unit) {\n var defaultVal = stringContains(propName, 'scale') ? 1 : 0 + getTransformUnit(propName);\n var value = getElementTransforms(el).get(propName) || defaultVal;\n if (animatable) {\n animatable.transforms.list.set(propName, value);\n animatable.transforms['last'] = propName;\n }\n return unit ? convertPxToUnit(el, value, unit) : value;\n}\n\nfunction getOriginalTargetValue(target, propName, unit, animatable) {\n switch (getAnimationType(target, propName)) {\n case 'transform': return getTransformValue(target, propName, animatable, unit);\n case 'css': return getCSSValue(target, propName, unit);\n case 'attribute': return getAttribute(target, propName);\n default: return target[propName] || 0;\n }\n}\n\nfunction getRelativeValue(to, from) {\n var operator = /^(\\*=|\\+=|-=)/.exec(to);\n if (!operator) { return to; }\n var u = getUnit(to) || 0;\n var x = parseFloat(from);\n var y = parseFloat(to.replace(operator[0], ''));\n switch (operator[0][0]) {\n case '+': return x + y + u;\n case '-': return x - y + u;\n case '*': return x * y + u;\n }\n}\n\nfunction validateValue(val, unit) {\n if (is.col(val)) { return colorToRgb(val); }\n if (/\\s/g.test(val)) { return val; }\n var originalUnit = getUnit(val);\n var unitLess = originalUnit ? val.substr(0, val.length - originalUnit.length) : val;\n if (unit) { return unitLess + unit; }\n return unitLess;\n}\n\n// getTotalLength() equivalent for circle, rect, polyline, polygon and line shapes\n// adapted from https://gist.github.com/SebLambla/3e0550c496c236709744\n\nfunction getDistance(p1, p2) {\n return Math.sqrt(Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2));\n}\n\nfunction getCircleLength(el) {\n return Math.PI * 2 * getAttribute(el, 'r');\n}\n\nfunction getRectLength(el) {\n return (getAttribute(el, 'width') * 2) + (getAttribute(el, 'height') * 2);\n}\n\nfunction getLineLength(el) {\n return getDistance(\n {x: getAttribute(el, 'x1'), y: getAttribute(el, 'y1')}, \n {x: getAttribute(el, 'x2'), y: getAttribute(el, 'y2')}\n );\n}\n\nfunction getPolylineLength(el) {\n var points = el.points;\n var totalLength = 0;\n var previousPos;\n for (var i = 0 ; i < points.numberOfItems; i++) {\n var currentPos = points.getItem(i);\n if (i > 0) { totalLength += getDistance(previousPos, currentPos); }\n previousPos = currentPos;\n }\n return totalLength;\n}\n\nfunction getPolygonLength(el) {\n var points = el.points;\n return getPolylineLength(el) + getDistance(points.getItem(points.numberOfItems - 1), points.getItem(0));\n}\n\n// Path animation\n\nfunction getTotalLength(el) {\n if (el.getTotalLength) { return el.getTotalLength(); }\n switch(el.tagName.toLowerCase()) {\n case 'circle': return getCircleLength(el);\n case 'rect': return getRectLength(el);\n case 'line': return getLineLength(el);\n case 'polyline': return getPolylineLength(el);\n case 'polygon': return getPolygonLength(el);\n }\n}\n\nfunction setDashoffset(el) {\n var pathLength = getTotalLength(el);\n el.setAttribute('stroke-dasharray', pathLength);\n return pathLength;\n}\n\n// Motion path\n\nfunction getParentSvgEl(el) {\n var parentEl = el.parentNode;\n while (is.svg(parentEl)) {\n if (!is.svg(parentEl.parentNode)) { break; }\n parentEl = parentEl.parentNode;\n }\n return parentEl;\n}\n\nfunction getParentSvg(pathEl, svgData) {\n var svg = svgData || {};\n var parentSvgEl = svg.el || getParentSvgEl(pathEl);\n var rect = parentSvgEl.getBoundingClientRect();\n var viewBoxAttr = getAttribute(parentSvgEl, 'viewBox');\n var width = rect.width;\n var height = rect.height;\n var viewBox = svg.viewBox || (viewBoxAttr ? viewBoxAttr.split(' ') : [0, 0, width, height]);\n return {\n el: parentSvgEl,\n viewBox: viewBox,\n x: viewBox[0] / 1,\n y: viewBox[1] / 1,\n w: width,\n h: height,\n vW: viewBox[2],\n vH: viewBox[3]\n }\n}\n\nfunction getPath(path, percent) {\n var pathEl = is.str(path) ? selectString(path)[0] : path;\n var p = percent || 100;\n return function(property) {\n return {\n property: property,\n el: pathEl,\n svg: getParentSvg(pathEl),\n totalLength: getTotalLength(pathEl) * (p / 100)\n }\n }\n}\n\nfunction getPathProgress(path, progress, isPathTargetInsideSVG) {\n function point(offset) {\n if ( offset === void 0 ) offset = 0;\n\n var l = progress + offset >= 1 ? progress + offset : 0;\n return path.el.getPointAtLength(l);\n }\n var svg = getParentSvg(path.el, path.svg);\n var p = point();\n var p0 = point(-1);\n var p1 = point(+1);\n var scaleX = isPathTargetInsideSVG ? 1 : svg.w / svg.vW;\n var scaleY = isPathTargetInsideSVG ? 1 : svg.h / svg.vH;\n switch (path.property) {\n case 'x': return (p.x - svg.x) * scaleX;\n case 'y': return (p.y - svg.y) * scaleY;\n case 'angle': return Math.atan2(p1.y - p0.y, p1.x - p0.x) * 180 / Math.PI;\n }\n}\n\n// Decompose value\n\nfunction decomposeValue(val, unit) {\n // const rgx = /-?\\d*\\.?\\d+/g; // handles basic numbers\n // const rgx = /[+-]?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?/g; // handles exponents notation\n var rgx = /[+-]?\\d*\\.?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?/g; // handles exponents notation\n var value = validateValue((is.pth(val) ? val.totalLength : val), unit) + '';\n return {\n original: value,\n numbers: value.match(rgx) ? value.match(rgx).map(Number) : [0],\n strings: (is.str(val) || unit) ? value.split(rgx) : []\n }\n}\n\n// Animatables\n\nfunction parseTargets(targets) {\n var targetsArray = targets ? (flattenArray(is.arr(targets) ? targets.map(toArray) : toArray(targets))) : [];\n return filterArray(targetsArray, function (item, pos, self) { return self.indexOf(item) === pos; });\n}\n\nfunction getAnimatables(targets) {\n var parsed = parseTargets(targets);\n return parsed.map(function (t, i) {\n return {target: t, id: i, total: parsed.length, transforms: { list: getElementTransforms(t) } };\n });\n}\n\n// Properties\n\nfunction normalizePropertyTweens(prop, tweenSettings) {\n var settings = cloneObject(tweenSettings);\n // Override duration if easing is a spring\n if (/^spring/.test(settings.easing)) { settings.duration = spring(settings.easing); }\n if (is.arr(prop)) {\n var l = prop.length;\n var isFromTo = (l === 2 && !is.obj(prop[0]));\n if (!isFromTo) {\n // Duration divided by the number of tweens\n if (!is.fnc(tweenSettings.duration)) { settings.duration = tweenSettings.duration / l; }\n } else {\n // Transform [from, to] values shorthand to a valid tween value\n prop = {value: prop};\n }\n }\n var propArray = is.arr(prop) ? prop : [prop];\n return propArray.map(function (v, i) {\n var obj = (is.obj(v) && !is.pth(v)) ? v : {value: v};\n // Default delay value should only be applied to the first tween\n if (is.und(obj.delay)) { obj.delay = !i ? tweenSettings.delay : 0; }\n // Default endDelay value should only be applied to the last tween\n if (is.und(obj.endDelay)) { obj.endDelay = i === propArray.length - 1 ? tweenSettings.endDelay : 0; }\n return obj;\n }).map(function (k) { return mergeObjects(k, settings); });\n}\n\n\nfunction flattenKeyframes(keyframes) {\n var propertyNames = filterArray(flattenArray(keyframes.map(function (key) { return Object.keys(key); })), function (p) { return is.key(p); })\n .reduce(function (a,b) { if (a.indexOf(b) < 0) { a.push(b); } return a; }, []);\n var properties = {};\n var loop = function ( i ) {\n var propName = propertyNames[i];\n properties[propName] = keyframes.map(function (key) {\n var newKey = {};\n for (var p in key) {\n if (is.key(p)) {\n if (p == propName) { newKey.value = key[p]; }\n } else {\n newKey[p] = key[p];\n }\n }\n return newKey;\n });\n };\n\n for (var i = 0; i < propertyNames.length; i++) loop( i );\n return properties;\n}\n\nfunction getProperties(tweenSettings, params) {\n var properties = [];\n var keyframes = params.keyframes;\n if (keyframes) { params = mergeObjects(flattenKeyframes(keyframes), params); }\n for (var p in params) {\n if (is.key(p)) {\n properties.push({\n name: p,\n tweens: normalizePropertyTweens(params[p], tweenSettings)\n });\n }\n }\n return properties;\n}\n\n// Tweens\n\nfunction normalizeTweenValues(tween, animatable) {\n var t = {};\n for (var p in tween) {\n var value = getFunctionValue(tween[p], animatable);\n if (is.arr(value)) {\n value = value.map(function (v) { return getFunctionValue(v, animatable); });\n if (value.length === 1) { value = value[0]; }\n }\n t[p] = value;\n }\n t.duration = parseFloat(t.duration);\n t.delay = parseFloat(t.delay);\n return t;\n}\n\nfunction normalizeTweens(prop, animatable) {\n var previousTween;\n return prop.tweens.map(function (t) {\n var tween = normalizeTweenValues(t, animatable);\n var tweenValue = tween.value;\n var to = is.arr(tweenValue) ? tweenValue[1] : tweenValue;\n var toUnit = getUnit(to);\n var originalValue = getOriginalTargetValue(animatable.target, prop.name, toUnit, animatable);\n var previousValue = previousTween ? previousTween.to.original : originalValue;\n var from = is.arr(tweenValue) ? tweenValue[0] : previousValue;\n var fromUnit = getUnit(from) || getUnit(originalValue);\n var unit = toUnit || fromUnit;\n if (is.und(to)) { to = previousValue; }\n tween.from = decomposeValue(from, unit);\n tween.to = decomposeValue(getRelativeValue(to, from), unit);\n tween.start = previousTween ? previousTween.end : 0;\n tween.end = tween.start + tween.delay + tween.duration + tween.endDelay;\n tween.easing = parseEasings(tween.easing, tween.duration);\n tween.isPath = is.pth(tweenValue);\n tween.isPathTargetInsideSVG = tween.isPath && is.svg(animatable.target);\n tween.isColor = is.col(tween.from.original);\n if (tween.isColor) { tween.round = 1; }\n previousTween = tween;\n return tween;\n });\n}\n\n// Tween progress\n\nvar setProgressValue = {\n css: function (t, p, v) { return t.style[p] = v; },\n attribute: function (t, p, v) { return t.setAttribute(p, v); },\n object: function (t, p, v) { return t[p] = v; },\n transform: function (t, p, v, transforms, manual) {\n transforms.list.set(p, v);\n if (p === transforms.last || manual) {\n var str = '';\n transforms.list.forEach(function (value, prop) { str += prop + \"(\" + value + \") \"; });\n t.style.transform = str;\n }\n }\n};\n\n// Set Value helper\n\nfunction setTargetsValue(targets, properties) {\n var animatables = getAnimatables(targets);\n animatables.forEach(function (animatable) {\n for (var property in properties) {\n var value = getFunctionValue(properties[property], animatable);\n var target = animatable.target;\n var valueUnit = getUnit(value);\n var originalValue = getOriginalTargetValue(target, property, valueUnit, animatable);\n var unit = valueUnit || getUnit(originalValue);\n var to = getRelativeValue(validateValue(value, unit), originalValue);\n var animType = getAnimationType(target, property);\n setProgressValue[animType](target, property, to, animatable.transforms, true);\n }\n });\n}\n\n// Animations\n\nfunction createAnimation(animatable, prop) {\n var animType = getAnimationType(animatable.target, prop.name);\n if (animType) {\n var tweens = normalizeTweens(prop, animatable);\n var lastTween = tweens[tweens.length - 1];\n return {\n type: animType,\n property: prop.name,\n animatable: animatable,\n tweens: tweens,\n duration: lastTween.end,\n delay: tweens[0].delay,\n endDelay: lastTween.endDelay\n }\n }\n}\n\nfunction getAnimations(animatables, properties) {\n return filterArray(flattenArray(animatables.map(function (animatable) {\n return properties.map(function (prop) {\n return createAnimation(animatable, prop);\n });\n })), function (a) { return !is.und(a); });\n}\n\n// Create Instance\n\nfunction getInstanceTimings(animations, tweenSettings) {\n var animLength = animations.length;\n var getTlOffset = function (anim) { return anim.timelineOffset ? anim.timelineOffset : 0; };\n var timings = {};\n timings.duration = animLength ? Math.max.apply(Math, animations.map(function (anim) { return getTlOffset(anim) + anim.duration; })) : tweenSettings.duration;\n timings.delay = animLength ? Math.min.apply(Math, animations.map(function (anim) { return getTlOffset(anim) + anim.delay; })) : tweenSettings.delay;\n timings.endDelay = animLength ? timings.duration - Math.max.apply(Math, animations.map(function (anim) { return getTlOffset(anim) + anim.duration - anim.endDelay; })) : tweenSettings.endDelay;\n return timings;\n}\n\nvar instanceID = 0;\n\nfunction createNewInstance(params) {\n var instanceSettings = replaceObjectProps(defaultInstanceSettings, params);\n var tweenSettings = replaceObjectProps(defaultTweenSettings, params);\n var properties = getProperties(tweenSettings, params);\n var animatables = getAnimatables(params.targets);\n var animations = getAnimations(animatables, properties);\n var timings = getInstanceTimings(animations, tweenSettings);\n var id = instanceID;\n instanceID++;\n return mergeObjects(instanceSettings, {\n id: id,\n children: [],\n animatables: animatables,\n animations: animations,\n duration: timings.duration,\n delay: timings.delay,\n endDelay: timings.endDelay\n });\n}\n\n// Core\n\nvar activeInstances = [];\n\nvar engine = (function () {\n var raf;\n\n function play() {\n if (!raf && (!isDocumentHidden() || !anime.suspendWhenDocumentHidden) && activeInstances.length > 0) {\n raf = requestAnimationFrame(step);\n }\n }\n function step(t) {\n // memo on algorithm issue:\n // dangerous iteration over mutable `activeInstances`\n // (that collection may be updated from within callbacks of `tick`-ed animation instances)\n var activeInstancesLength = activeInstances.length;\n var i = 0;\n while (i < activeInstancesLength) {\n var activeInstance = activeInstances[i];\n if (!activeInstance.paused) {\n activeInstance.tick(t);\n i++;\n } else {\n activeInstances.splice(i, 1);\n activeInstancesLength--;\n }\n }\n raf = i > 0 ? requestAnimationFrame(step) : undefined;\n }\n\n function handleVisibilityChange() {\n if (!anime.suspendWhenDocumentHidden) { return; }\n\n if (isDocumentHidden()) {\n // suspend ticks\n raf = cancelAnimationFrame(raf);\n } else { // is back to active tab\n // first adjust animations to consider the time that ticks were suspended\n activeInstances.forEach(\n function (instance) { return instance ._onDocumentVisibility(); }\n );\n engine();\n }\n }\n if (typeof document !== 'undefined') {\n document.addEventListener('visibilitychange', handleVisibilityChange);\n }\n\n return play;\n})();\n\nfunction isDocumentHidden() {\n return !!document && document.hidden;\n}\n\n// Public Instance\n\nfunction anime(params) {\n if ( params === void 0 ) params = {};\n\n\n var startTime = 0, lastTime = 0, now = 0;\n var children, childrenLength = 0;\n var resolve = null;\n\n function makePromise(instance) {\n var promise = window.Promise && new Promise(function (_resolve) { return resolve = _resolve; });\n instance.finished = promise;\n return promise;\n }\n\n var instance = createNewInstance(params);\n var promise = makePromise(instance);\n\n function toggleInstanceDirection() {\n var direction = instance.direction;\n if (direction !== 'alternate') {\n instance.direction = direction !== 'normal' ? 'normal' : 'reverse';\n }\n instance.reversed = !instance.reversed;\n children.forEach(function (child) { return child.reversed = instance.reversed; });\n }\n\n function adjustTime(time) {\n return instance.reversed ? instance.duration - time : time;\n }\n\n function resetTime() {\n startTime = 0;\n lastTime = adjustTime(instance.currentTime) * (1 / anime.speed);\n }\n\n function seekChild(time, child) {\n if (child) { child.seek(time - child.timelineOffset); }\n }\n\n function syncInstanceChildren(time) {\n if (!instance.reversePlayback) {\n for (var i = 0; i < childrenLength; i++) { seekChild(time, children[i]); }\n } else {\n for (var i$1 = childrenLength; i$1--;) { seekChild(time, children[i$1]); }\n }\n }\n\n function setAnimationsProgress(insTime) {\n var i = 0;\n var animations = instance.animations;\n var animationsLength = animations.length;\n while (i < animationsLength) {\n var anim = animations[i];\n var animatable = anim.animatable;\n var tweens = anim.tweens;\n var tweenLength = tweens.length - 1;\n var tween = tweens[tweenLength];\n // Only check for keyframes if there is more than one tween\n if (tweenLength) { tween = filterArray(tweens, function (t) { return (insTime < t.end); })[0] || tween; }\n var elapsed = minMax(insTime - tween.start - tween.delay, 0, tween.duration) / tween.duration;\n var eased = isNaN(elapsed) ? 1 : tween.easing(elapsed);\n var strings = tween.to.strings;\n var round = tween.round;\n var numbers = [];\n var toNumbersLength = tween.to.numbers.length;\n var progress = (void 0);\n for (var n = 0; n < toNumbersLength; n++) {\n var value = (void 0);\n var toNumber = tween.to.numbers[n];\n var fromNumber = tween.from.numbers[n] || 0;\n if (!tween.isPath) {\n value = fromNumber + (eased * (toNumber - fromNumber));\n } else {\n value = getPathProgress(tween.value, eased * toNumber, tween.isPathTargetInsideSVG);\n }\n if (round) {\n if (!(tween.isColor && n > 2)) {\n value = Math.round(value * round) / round;\n }\n }\n numbers.push(value);\n }\n // Manual Array.reduce for better performances\n var stringsLength = strings.length;\n if (!stringsLength) {\n progress = numbers[0];\n } else {\n progress = strings[0];\n for (var s = 0; s < stringsLength; s++) {\n var a = strings[s];\n var b = strings[s + 1];\n var n$1 = numbers[s];\n if (!isNaN(n$1)) {\n if (!b) {\n progress += n$1 + ' ';\n } else {\n progress += n$1 + b;\n }\n }\n }\n }\n setProgressValue[anim.type](animatable.target, anim.property, progress, animatable.transforms);\n anim.currentValue = progress;\n i++;\n }\n }\n\n function setCallback(cb) {\n if (instance[cb] && !instance.passThrough) { instance[cb](instance); }\n }\n\n function countIteration() {\n if (instance.remaining && instance.remaining !== true) {\n instance.remaining--;\n }\n }\n\n function setInstanceProgress(engineTime) {\n var insDuration = instance.duration;\n var insDelay = instance.delay;\n var insEndDelay = insDuration - instance.endDelay;\n var insTime = adjustTime(engineTime);\n instance.progress = minMax((insTime / insDuration) * 100, 0, 100);\n instance.reversePlayback = insTime < instance.currentTime;\n if (children) { syncInstanceChildren(insTime); }\n if (!instance.began && instance.currentTime > 0) {\n instance.began = true;\n setCallback('begin');\n }\n if (!instance.loopBegan && instance.currentTime > 0) {\n instance.loopBegan = true;\n setCallback('loopBegin');\n }\n if (insTime <= insDelay && instance.currentTime !== 0) {\n setAnimationsProgress(0);\n }\n if ((insTime >= insEndDelay && instance.currentTime !== insDuration) || !insDuration) {\n setAnimationsProgress(insDuration);\n }\n if (insTime > insDelay && insTime < insEndDelay) {\n if (!instance.changeBegan) {\n instance.changeBegan = true;\n instance.changeCompleted = false;\n setCallback('changeBegin');\n }\n setCallback('change');\n setAnimationsProgress(insTime);\n } else {\n if (instance.changeBegan) {\n instance.changeCompleted = true;\n instance.changeBegan = false;\n setCallback('changeComplete');\n }\n }\n instance.currentTime = minMax(insTime, 0, insDuration);\n if (instance.began) { setCallback('update'); }\n if (engineTime >= insDuration) {\n lastTime = 0;\n countIteration();\n if (!instance.remaining) {\n instance.paused = true;\n if (!instance.completed) {\n instance.completed = true;\n setCallback('loopComplete');\n setCallback('complete');\n if (!instance.passThrough && 'Promise' in window) {\n resolve();\n promise = makePromise(instance);\n }\n }\n } else {\n startTime = now;\n setCallback('loopComplete');\n instance.loopBegan = false;\n if (instance.direction === 'alternate') {\n toggleInstanceDirection();\n }\n }\n }\n }\n\n instance.reset = function() {\n var direction = instance.direction;\n instance.passThrough = false;\n instance.currentTime = 0;\n instance.progress = 0;\n instance.paused = true;\n instance.began = false;\n instance.loopBegan = false;\n instance.changeBegan = false;\n instance.completed = false;\n instance.changeCompleted = false;\n instance.reversePlayback = false;\n instance.reversed = direction === 'reverse';\n instance.remaining = instance.loop;\n children = instance.children;\n childrenLength = children.length;\n for (var i = childrenLength; i--;) { instance.children[i].reset(); }\n if (instance.reversed && instance.loop !== true || (direction === 'alternate' && instance.loop === 1)) { instance.remaining++; }\n setAnimationsProgress(instance.reversed ? instance.duration : 0);\n };\n\n // internal method (for engine) to adjust animation timings before restoring engine ticks (rAF)\n instance._onDocumentVisibility = resetTime;\n\n // Set Value helper\n\n instance.set = function(targets, properties) {\n setTargetsValue(targets, properties);\n return instance;\n };\n\n instance.tick = function(t) {\n now = t;\n if (!startTime) { startTime = now; }\n setInstanceProgress((now + (lastTime - startTime)) * anime.speed);\n };\n\n instance.seek = function(time) {\n setInstanceProgress(adjustTime(time));\n };\n\n instance.pause = function() {\n instance.paused = true;\n resetTime();\n };\n\n instance.play = function() {\n if (!instance.paused) { return; }\n if (instance.completed) { instance.reset(); }\n instance.paused = false;\n activeInstances.push(instance);\n resetTime();\n engine();\n };\n\n instance.reverse = function() {\n toggleInstanceDirection();\n instance.completed = instance.reversed ? false : true;\n resetTime();\n };\n\n instance.restart = function() {\n instance.reset();\n instance.play();\n };\n\n instance.remove = function(targets) {\n var targetsArray = parseTargets(targets);\n removeTargetsFromInstance(targetsArray, instance);\n };\n\n instance.reset();\n\n if (instance.autoplay) { instance.play(); }\n\n return instance;\n\n}\n\n// Remove targets from animation\n\nfunction removeTargetsFromAnimations(targetsArray, animations) {\n for (var a = animations.length; a--;) {\n if (arrayContains(targetsArray, animations[a].animatable.target)) {\n animations.splice(a, 1);\n }\n }\n}\n\nfunction removeTargetsFromInstance(targetsArray, instance) {\n var animations = instance.animations;\n var children = instance.children;\n removeTargetsFromAnimations(targetsArray, animations);\n for (var c = children.length; c--;) {\n var child = children[c];\n var childAnimations = child.animations;\n removeTargetsFromAnimations(targetsArray, childAnimations);\n if (!childAnimations.length && !child.children.length) { children.splice(c, 1); }\n }\n if (!animations.length && !children.length) { instance.pause(); }\n}\n\nfunction removeTargetsFromActiveInstances(targets) {\n var targetsArray = parseTargets(targets);\n for (var i = activeInstances.length; i--;) {\n var instance = activeInstances[i];\n removeTargetsFromInstance(targetsArray, instance);\n }\n}\n\n// Stagger helpers\n\nfunction stagger(val, params) {\n if ( params === void 0 ) params = {};\n\n var direction = params.direction || 'normal';\n var easing = params.easing ? parseEasings(params.easing) : null;\n var grid = params.grid;\n var axis = params.axis;\n var fromIndex = params.from || 0;\n var fromFirst = fromIndex === 'first';\n var fromCenter = fromIndex === 'center';\n var fromLast = fromIndex === 'last';\n var isRange = is.arr(val);\n var val1 = isRange ? parseFloat(val[0]) : parseFloat(val);\n var val2 = isRange ? parseFloat(val[1]) : 0;\n var unit = getUnit(isRange ? val[1] : val) || 0;\n var start = params.start || 0 + (isRange ? val1 : 0);\n var values = [];\n var maxValue = 0;\n return function (el, i, t) {\n if (fromFirst) { fromIndex = 0; }\n if (fromCenter) { fromIndex = (t - 1) / 2; }\n if (fromLast) { fromIndex = t - 1; }\n if (!values.length) {\n for (var index = 0; index < t; index++) {\n if (!grid) {\n values.push(Math.abs(fromIndex - index));\n } else {\n var fromX = !fromCenter ? fromIndex%grid[0] : (grid[0]-1)/2;\n var fromY = !fromCenter ? Math.floor(fromIndex/grid[0]) : (grid[1]-1)/2;\n var toX = index%grid[0];\n var toY = Math.floor(index/grid[0]);\n var distanceX = fromX - toX;\n var distanceY = fromY - toY;\n var value = Math.sqrt(distanceX * distanceX + distanceY * distanceY);\n if (axis === 'x') { value = -distanceX; }\n if (axis === 'y') { value = -distanceY; }\n values.push(value);\n }\n maxValue = Math.max.apply(Math, values);\n }\n if (easing) { values = values.map(function (val) { return easing(val / maxValue) * maxValue; }); }\n if (direction === 'reverse') { values = values.map(function (val) { return axis ? (val < 0) ? val * -1 : -val : Math.abs(maxValue - val); }); }\n }\n var spacing = isRange ? (val2 - val1) / maxValue : val1;\n return start + (spacing * (Math.round(values[i] * 100) / 100)) + unit;\n }\n}\n\n// Timeline\n\nfunction timeline(params) {\n if ( params === void 0 ) params = {};\n\n var tl = anime(params);\n tl.duration = 0;\n tl.add = function(instanceParams, timelineOffset) {\n var tlIndex = activeInstances.indexOf(tl);\n var children = tl.children;\n if (tlIndex > -1) { activeInstances.splice(tlIndex, 1); }\n function passThrough(ins) { ins.passThrough = true; }\n for (var i = 0; i < children.length; i++) { passThrough(children[i]); }\n var insParams = mergeObjects(instanceParams, replaceObjectProps(defaultTweenSettings, params));\n insParams.targets = insParams.targets || params.targets;\n var tlDuration = tl.duration;\n insParams.autoplay = false;\n insParams.direction = tl.direction;\n insParams.timelineOffset = is.und(timelineOffset) ? tlDuration : getRelativeValue(timelineOffset, tlDuration);\n passThrough(tl);\n tl.seek(insParams.timelineOffset);\n var ins = anime(insParams);\n passThrough(ins);\n children.push(ins);\n var timings = getInstanceTimings(children, params);\n tl.delay = timings.delay;\n tl.endDelay = timings.endDelay;\n tl.duration = timings.duration;\n tl.seek(0);\n tl.reset();\n if (tl.autoplay) { tl.play(); }\n return tl;\n };\n return tl;\n}\n\nanime.version = '3.2.1';\nanime.speed = 1;\n// TODO:#review: naming, documentation\nanime.suspendWhenDocumentHidden = true;\nanime.running = activeInstances;\nanime.remove = removeTargetsFromActiveInstances;\nanime.get = getOriginalTargetValue;\nanime.set = setTargetsValue;\nanime.convertPx = convertPxToUnit;\nanime.path = getPath;\nanime.setDashoffset = setDashoffset;\nanime.stagger = stagger;\nanime.timeline = timeline;\nanime.easing = parseEasings;\nanime.penner = penner;\nanime.random = function (min, max) { return Math.floor(Math.random() * (max - min + 1)) + min; };\n\nexport default anime;\n","'use strict';\n\nmodule.exports = {\n number: require('./src/card-number'),\n expirationDate: require('./src/expiration-date'),\n expirationMonth: require('./src/expiration-month'),\n expirationYear: require('./src/expiration-year'),\n cvv: require('./src/cvv'),\n postalCode: require('./src/postal-code'),\n creditCardType: require('credit-card-type')\n};\n","'use strict';\n\nvar luhn10 = require('./luhn-10');\nvar getCardTypes = require('credit-card-type');\n\nfunction verification(card, isPotentiallyValid, isValid) {\n return {card: card, isPotentiallyValid: isPotentiallyValid, isValid: isValid};\n}\n\nfunction cardNumber(value, options) {\n var potentialTypes, cardType, isPotentiallyValid, isValid, i, maxLength;\n\n options = options || {};\n\n if (typeof value === 'number') {\n value = String(value);\n }\n\n if (typeof value !== 'string') { return verification(null, false, false); }\n\n value = value.replace(/\\-|\\s/g, '');\n\n if (!/^\\d*$/.test(value)) { return verification(null, false, false); }\n\n potentialTypes = getCardTypes(value);\n\n if (potentialTypes.length === 0) {\n return verification(null, false, false);\n } else if (potentialTypes.length !== 1) {\n return verification(null, true, false);\n }\n\n cardType = potentialTypes[0];\n\n if (options.maxLength && value.length > options.maxLength) {\n return verification(cardType, false, false);\n }\n\n if (cardType.type === getCardTypes.types.UNIONPAY && options.luhnValidateUnionPay !== true) {\n isValid = true;\n } else {\n isValid = luhn10(value);\n }\n\n maxLength = Math.max.apply(null, cardType.lengths);\n if (options.maxLength) {\n maxLength = Math.min(options.maxLength, maxLength);\n }\n\n for (i = 0; i < cardType.lengths.length; i++) {\n if (cardType.lengths[i] === value.length) {\n isPotentiallyValid = value.length < maxLength || isValid;\n\n return verification(cardType, isPotentiallyValid, isValid);\n }\n }\n\n return verification(cardType, value.length < maxLength, false);\n}\n\nmodule.exports = cardNumber;\n","'use strict';\n\nvar DEFAULT_LENGTH = 3;\n\nfunction includes(array, thing) {\n var i = 0;\n\n for (; i < array.length; i++) {\n if (thing === array[i]) { return true; }\n }\n\n return false;\n}\n\nfunction max(array) {\n var maximum = DEFAULT_LENGTH;\n var i = 0;\n\n for (; i < array.length; i++) {\n maximum = array[i] > maximum ? array[i] : maximum;\n }\n\n return maximum;\n}\n\nfunction verification(isValid, isPotentiallyValid) {\n return {isValid: isValid, isPotentiallyValid: isPotentiallyValid};\n}\n\nfunction cvv(value, maxLength) {\n maxLength = maxLength || DEFAULT_LENGTH;\n maxLength = maxLength instanceof Array ? maxLength : [maxLength];\n\n if (typeof value !== 'string') { return verification(false, false); }\n if (!/^\\d*$/.test(value)) { return verification(false, false); }\n if (includes(maxLength, value.length)) { return verification(true, true); }\n if (value.length < Math.min.apply(null, maxLength)) { return verification(false, true); }\n if (value.length > max(maxLength)) { return verification(false, false); }\n\n return verification(true, true);\n}\n\nmodule.exports = cvv;\n","'use strict';\n\nvar parseDate = require('./parse-date');\nvar expirationMonth = require('./expiration-month');\nvar expirationYear = require('./expiration-year');\n\nfunction verification(isValid, isPotentiallyValid, month, year) {\n return {\n isValid: isValid,\n isPotentiallyValid: isPotentiallyValid,\n month: month,\n year: year\n };\n}\n\nfunction expirationDate(value, maxElapsedYear) {\n var date, monthValid, yearValid, isValidForThisYear;\n\n if (typeof value === 'string') {\n value = value.replace(/^(\\d\\d) (\\d\\d(\\d\\d)?)$/, '$1/$2');\n date = parseDate(value);\n } else if (value !== null && typeof value === 'object') {\n date = {\n month: String(value.month),\n year: String(value.year)\n };\n } else {\n return verification(false, false, null, null);\n }\n\n monthValid = expirationMonth(date.month);\n yearValid = expirationYear(date.year, maxElapsedYear);\n\n if (monthValid.isValid) {\n if (yearValid.isCurrentYear) {\n isValidForThisYear = monthValid.isValidForThisYear;\n\n return verification(isValidForThisYear, isValidForThisYear, date.month, date.year);\n }\n\n if (yearValid.isValid) {\n return verification(true, true, date.month, date.year);\n }\n }\n\n if (monthValid.isPotentiallyValid && yearValid.isPotentiallyValid) {\n return verification(false, true, null, null);\n }\n\n return verification(false, false, null, null);\n}\n\nmodule.exports = expirationDate;\n","'use strict';\n\nfunction verification(isValid, isPotentiallyValid, isValidForThisYear) {\n return {\n isValid: isValid,\n isPotentiallyValid: isPotentiallyValid,\n isValidForThisYear: isValidForThisYear || false\n };\n}\n\nfunction expirationMonth(value) {\n var month, result;\n var currentMonth = new Date().getMonth() + 1;\n\n if (typeof value !== 'string') {\n return verification(false, false);\n }\n if (value.replace(/\\s/g, '') === '' || value === '0') {\n return verification(false, true);\n }\n if (!/^\\d*$/.test(value)) {\n return verification(false, false);\n }\n\n month = parseInt(value, 10);\n\n if (isNaN(value)) {\n return verification(false, false);\n }\n\n result = month > 0 && month < 13;\n\n return verification(result, result, result && month >= currentMonth);\n}\n\nmodule.exports = expirationMonth;\n","'use strict';\n\nvar DEFAULT_VALID_NUMBER_OF_YEARS_IN_THE_FUTURE = 19;\n\nfunction verification(isValid, isPotentiallyValid, isCurrentYear) {\n return {\n isValid: isValid,\n isPotentiallyValid: isPotentiallyValid,\n isCurrentYear: isCurrentYear || false\n };\n}\n\nfunction expirationYear(value, maxElapsedYear) {\n var currentFirstTwo, currentYear, firstTwo, len, twoDigitYear, valid, isCurrentYear;\n\n maxElapsedYear = maxElapsedYear || DEFAULT_VALID_NUMBER_OF_YEARS_IN_THE_FUTURE;\n\n if (typeof value !== 'string') {\n return verification(false, false);\n }\n if (value.replace(/\\s/g, '') === '') {\n return verification(false, true);\n }\n if (!/^\\d*$/.test(value)) {\n return verification(false, false);\n }\n\n len = value.length;\n\n if (len < 2) {\n return verification(false, true);\n }\n\n currentYear = new Date().getFullYear();\n\n if (len === 3) {\n // 20x === 20x\n firstTwo = value.slice(0, 2);\n currentFirstTwo = String(currentYear).slice(0, 2);\n\n return verification(false, firstTwo === currentFirstTwo);\n }\n\n if (len > 4) {\n return verification(false, false);\n }\n\n value = parseInt(value, 10);\n twoDigitYear = Number(String(currentYear).substr(2, 2));\n\n if (len === 2) {\n isCurrentYear = twoDigitYear === value;\n valid = value >= twoDigitYear && value <= twoDigitYear + maxElapsedYear;\n } else if (len === 4) {\n isCurrentYear = currentYear === value;\n valid = value >= currentYear && value <= currentYear + maxElapsedYear;\n }\n\n return verification(valid, valid, isCurrentYear);\n}\n\nmodule.exports = expirationYear;\n","'use strict';\n\n// Polyfill taken from .\n\nmodule.exports = Array.isArray || function (arg) {\n return Object.prototype.toString.call(arg) === '[object Array]';\n};\n","/*\n * Luhn algorithm implementation in JavaScript\n * Copyright (c) 2009 Nicholas C. Zakas\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n'use strict';\n\nfunction luhn10(identifier) {\n var sum = 0;\n var alt = false;\n var i = identifier.length - 1;\n var num;\n\n while (i >= 0) {\n num = parseInt(identifier.charAt(i), 10);\n\n if (alt) {\n num *= 2;\n if (num > 9) {\n num = (num % 10) + 1; // eslint-disable-line no-extra-parens\n }\n }\n\n alt = !alt;\n\n sum += num;\n\n i--;\n }\n\n return sum % 10 === 0;\n}\n\nmodule.exports = luhn10;\n","'use strict';\n\nvar expirationYear = require('./expiration-year');\nvar isArray = require('./lib/is-array');\n\nfunction getNumberOfMonthDigitsInDateString(dateString) {\n var firstCharacter = Number(dateString[0]);\n var assumedYear;\n\n /*\n if the first character in the string starts with `0`,\n we know that the month will be 2 digits.\n\n '0122' => {month: '01', year: '22'}\n */\n if (firstCharacter === 0) {\n return 2;\n }\n\n /*\n if the first character in the string starts with\n number greater than 1, it must be a 1 digit month\n\n '322' => {month: '3', year: '22'}\n */\n if (firstCharacter > 1) {\n return 1;\n }\n\n /*\n if the first 2 characters make up a number between\n 13-19, we know that the month portion must be 1\n\n '139' => {month: '1', year: '39'}\n */\n if (firstCharacter === 1 && Number(dateString[1]) > 2) {\n return 1;\n }\n\n /*\n if the first 2 characters make up a number between\n 10-12, we check if the year portion would be considered\n valid if we assumed that the month was 1. If it is\n not potentially valid, we assume the month must have\n 2 digits.\n\n '109' => {month: '10', year: '9'}\n '120' => {month: '1', year: '20'} // when checked in the year 2019\n '120' => {month: '12', year: '0'} // when checked in the year 2021\n */\n if (firstCharacter === 1) {\n assumedYear = dateString.substr(1);\n\n return expirationYear(assumedYear).isPotentiallyValid ? 1 : 2;\n }\n\n /*\n If the length of the value is exactly 5 characters,\n we assume a full year was passed in, meaning the remaining\n single leading digit must be the month value.\n\n '12202' => {month: '1', year: '2202'}\n */\n if (dateString.length === 5) {\n return 1;\n }\n\n /*\n If the length of the value is more than five characters,\n we assume a full year was passed in addition to the month\n and therefore the month portion must be 2 digits.\n\n '112020' => {month: '11', year: '2020'}\n */\n if (dateString.length > 5) {\n return 2;\n }\n\n /*\n By default, the month value is the first value\n */\n return 1;\n}\n\nfunction parseDate(date) {\n var month, numberOfDigitsInMonth;\n\n if (/^\\d{4}-\\d{1,2}$/.test(date)) {\n date = date.split('-').reverse();\n } else if (/\\//.test(date)) {\n date = date.split(/\\s*\\/\\s*/g);\n } else if (/\\s/.test(date)) {\n date = date.split(/ +/g);\n }\n\n if (isArray(date)) {\n return {\n month: date[0] || '',\n year: date.slice(1).join()\n };\n }\n\n numberOfDigitsInMonth = getNumberOfMonthDigitsInDateString(date);\n\n month = date.substr(0, numberOfDigitsInMonth);\n\n return {\n month: month,\n year: date.substr(month.length)\n };\n}\n\nmodule.exports = parseDate;\n","'use strict';\n\nvar DEFAULT_MIN_POSTAL_CODE_LENGTH = 3;\n\nfunction verification(isValid, isPotentiallyValid) {\n return {isValid: isValid, isPotentiallyValid: isPotentiallyValid};\n}\n\nfunction postalCode(value, options) {\n var minLength;\n\n options = options || {};\n\n minLength = options.minLength || DEFAULT_MIN_POSTAL_CODE_LENGTH;\n\n if (typeof value !== 'string') {\n return verification(false, false);\n } else if (value.length < minLength) {\n return verification(false, true);\n }\n\n return verification(true, true);\n}\n\nmodule.exports = postalCode;\n","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"react\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"react\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Cleave\"] = factory(require(\"react\"));\n\telse\n\t\troot[\"Cleave\"] = factory(root[\"React\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_1__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\tfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\n\tvar React = __webpack_require__(1); // eslint-disable-line no-unused-vars\n\tvar CreateReactClass = __webpack_require__(2);\n\n\tvar NumeralFormatter = __webpack_require__(9);\n\tvar DateFormatter = __webpack_require__(10);\n\tvar TimeFormatter = __webpack_require__(11);\n\tvar PhoneFormatter = __webpack_require__(12);\n\tvar CreditCardDetector = __webpack_require__(13);\n\tvar Util = __webpack_require__(14);\n\tvar DefaultProperties = __webpack_require__(15);\n\n\tvar cleaveReactClass = CreateReactClass({\n\t componentDidMount: function componentDidMount() {\n\t this.init();\n\t },\n\n\t componentDidUpdate: function componentDidUpdate(prevProps) {\n\t var owner = this,\n\t phoneRegionCode = (owner.props.options || {}).phoneRegionCode,\n\t newValue = owner.props.value,\n\t pps = owner.properties;\n\n\t owner.updateRegisteredEvents(owner.props);\n\t if (prevProps.value !== newValue && newValue !== undefined && newValue !== null) {\n\t newValue = newValue.toString();\n\n\t if (newValue !== owner.properties.result) {\n\t owner.properties.initValue = newValue;\n\t owner.onInput(newValue, true);\n\t }\n\t }\n\n\t // update phone region code\n\t var prevPhoneRegionCode = (prevProps.options || {}).phoneRegionCode;\n\t if (prevPhoneRegionCode !== phoneRegionCode && phoneRegionCode && phoneRegionCode !== owner.properties.phoneRegionCode) {\n\t owner.properties.phoneRegionCode = phoneRegionCode;\n\t owner.initPhoneFormatter();\n\t owner.onInput(owner.properties.result);\n\t }\n\n\t Util.setSelection(owner.element, owner.state.cursorPosition, pps.document);\n\t },\n\n\t updateRegisteredEvents: function updateRegisteredEvents(props) {\n\t var owner = this,\n\t _owner$registeredEven = owner.registeredEvents,\n\t onKeyDown = _owner$registeredEven.onKeyDown,\n\t onChange = _owner$registeredEven.onChange,\n\t onFocus = _owner$registeredEven.onFocus,\n\t onBlur = _owner$registeredEven.onBlur,\n\t onInit = _owner$registeredEven.onInit;\n\n\n\t if (props.onInit && props.onInit !== onInit) owner.registeredEvents.onInit = props.onInit;\n\t if (props.onChange && props.onChange !== onChange) owner.registeredEvents.onChange = props.onChange;\n\t if (props.onFocus && props.onFocus !== onFocus) owner.registeredEvents.onFocus = props.onFocus;\n\t if (props.onBlur && props.onBlur !== onBlur) owner.registeredEvents.onBlur = props.onBlur;\n\t if (props.onKeyDown && props.onKeyDown !== onKeyDown) owner.registeredEvents.onKeyDown = props.onKeyDown;\n\t },\n\n\t getInitialState: function getInitialState() {\n\t var owner = this,\n\t _owner$props = owner.props,\n\t value = _owner$props.value,\n\t options = _owner$props.options,\n\t onKeyDown = _owner$props.onKeyDown,\n\t onChange = _owner$props.onChange,\n\t onFocus = _owner$props.onFocus,\n\t onBlur = _owner$props.onBlur,\n\t onInit = _owner$props.onInit;\n\n\n\t owner.registeredEvents = {\n\t onInit: onInit || Util.noop,\n\t onChange: onChange || Util.noop,\n\t onFocus: onFocus || Util.noop,\n\t onBlur: onBlur || Util.noop,\n\t onKeyDown: onKeyDown || Util.noop\n\t };\n\n\t if (!options) {\n\t options = {};\n\t }\n\n\t options.initValue = value;\n\n\t owner.properties = DefaultProperties.assign({}, options);\n\n\t return {\n\t value: owner.properties.result,\n\t cursorPosition: 0\n\t };\n\t },\n\n\t init: function init() {\n\t var owner = this,\n\t pps = owner.properties;\n\n\t // so no need for this lib at all\n\t if (!pps.numeral && !pps.phone && !pps.creditCard && !pps.time && !pps.date && pps.blocksLength === 0 && !pps.prefix) {\n\t owner.onInput(pps.initValue);\n\t owner.registeredEvents.onInit(owner);\n\n\t return;\n\t }\n\n\t pps.maxLength = Util.getMaxLength(pps.blocks);\n\n\t owner.isAndroid = Util.isAndroid();\n\n\t owner.initPhoneFormatter();\n\t owner.initDateFormatter();\n\t owner.initTimeFormatter();\n\t owner.initNumeralFormatter();\n\n\t // avoid touch input field if value is null\n\t // otherwise Firefox will add red box-shadow for \n\t if (pps.initValue || pps.prefix && !pps.noImmediatePrefix) {\n\t owner.onInput(pps.initValue);\n\t }\n\n\t owner.registeredEvents.onInit(owner);\n\t },\n\n\t initNumeralFormatter: function initNumeralFormatter() {\n\t var owner = this,\n\t pps = owner.properties;\n\n\t if (!pps.numeral) {\n\t return;\n\t }\n\n\t pps.numeralFormatter = new NumeralFormatter(pps.numeralDecimalMark, pps.numeralIntegerScale, pps.numeralDecimalScale, pps.numeralThousandsGroupStyle, pps.numeralPositiveOnly, pps.stripLeadingZeroes, pps.prefix, pps.signBeforePrefix, pps.tailPrefix, pps.delimiter);\n\t },\n\n\t initTimeFormatter: function initTimeFormatter() {\n\t var owner = this,\n\t pps = owner.properties;\n\n\t if (!pps.time) {\n\t return;\n\t }\n\n\t pps.timeFormatter = new TimeFormatter(pps.timePattern, pps.timeFormat);\n\t pps.blocks = pps.timeFormatter.getBlocks();\n\t pps.blocksLength = pps.blocks.length;\n\t pps.maxLength = Util.getMaxLength(pps.blocks);\n\t },\n\n\t initDateFormatter: function initDateFormatter() {\n\t var owner = this,\n\t pps = owner.properties;\n\n\t if (!pps.date) {\n\t return;\n\t }\n\n\t pps.dateFormatter = new DateFormatter(pps.datePattern, pps.dateMin, pps.dateMax);\n\t pps.blocks = pps.dateFormatter.getBlocks();\n\t pps.blocksLength = pps.blocks.length;\n\t pps.maxLength = Util.getMaxLength(pps.blocks);\n\t },\n\n\t initPhoneFormatter: function initPhoneFormatter() {\n\t var owner = this,\n\t pps = owner.properties;\n\n\t if (!pps.phone) {\n\t return;\n\t }\n\n\t // Cleave.AsYouTypeFormatter should be provided by\n\t // external google closure lib\n\t try {\n\t pps.phoneFormatter = new PhoneFormatter(new pps.root.Cleave.AsYouTypeFormatter(pps.phoneRegionCode), pps.delimiter);\n\t } catch (ex) {\n\t throw new Error('Please include phone-type-formatter.{country}.js lib');\n\t }\n\t },\n\n\t setRawValue: function setRawValue(value) {\n\t var owner = this,\n\t pps = owner.properties;\n\n\t value = value !== undefined && value !== null ? value.toString() : '';\n\n\t if (pps.numeral) {\n\t value = value.replace('.', pps.numeralDecimalMark);\n\t }\n\n\t pps.postDelimiterBackspace = false;\n\n\t owner.onChange({\n\t target: { value: value },\n\n\t // Methods to better resemble a SyntheticEvent\n\t stopPropagation: Util.noop,\n\t preventDefault: Util.noop,\n\t persist: Util.noop\n\t });\n\t },\n\n\t getRawValue: function getRawValue() {\n\t var owner = this,\n\t pps = owner.properties,\n\t rawValue = pps.result;\n\n\t if (pps.rawValueTrimPrefix) {\n\t rawValue = Util.getPrefixStrippedValue(rawValue, pps.prefix, pps.prefixLength, pps.result, pps.delimiter, pps.delimiters, pps.noImmediatePrefix, pps.tailPrefix, pps.signBeforePrefix);\n\t }\n\n\t if (pps.numeral) {\n\t rawValue = pps.numeralFormatter ? pps.numeralFormatter.getRawValue(rawValue) : '';\n\t } else {\n\t rawValue = Util.stripDelimiters(rawValue, pps.delimiter, pps.delimiters);\n\t }\n\n\t return rawValue;\n\t },\n\n\t getISOFormatDate: function getISOFormatDate() {\n\t var owner = this,\n\t pps = owner.properties;\n\n\t return pps.date ? pps.dateFormatter.getISOFormatDate() : '';\n\t },\n\n\t getISOFormatTime: function getISOFormatTime() {\n\t var owner = this,\n\t pps = owner.properties;\n\n\t return pps.time ? pps.timeFormatter.getISOFormatTime() : '';\n\t },\n\n\t onInit: function onInit(owner) {\n\t return owner;\n\t },\n\n\t onKeyDown: function onKeyDown(event) {\n\t var owner = this,\n\t pps = owner.properties,\n\t charCode = event.which || event.keyCode;\n\n\t owner.lastInputValue = pps.result;\n\t owner.isBackward = charCode === 8;\n\n\t owner.registeredEvents.onKeyDown(event);\n\t },\n\n\t onFocus: function onFocus(event) {\n\t var owner = this,\n\t pps = owner.properties;\n\n\t if (pps.prefix && pps.noImmediatePrefix && !event.target.value) {\n\t owner.onInput(pps.prefix);\n\t }\n\n\t event.target.rawValue = owner.getRawValue();\n\t event.target.value = pps.result;\n\n\t owner.registeredEvents.onFocus(event);\n\n\t Util.fixPrefixCursor(owner.element, pps.prefix, pps.delimiter, pps.delimiters);\n\t },\n\n\t onBlur: function onBlur(event) {\n\t var owner = this,\n\t pps = owner.properties;\n\n\t event.target.rawValue = owner.getRawValue();\n\t event.target.value = pps.result;\n\n\t owner.registeredEvents.onBlur(event);\n\t },\n\n\t onChange: function onChange(event) {\n\t var owner = this,\n\t pps = owner.properties;\n\n\t owner.isBackward = owner.isBackward || event.inputType === 'deleteContentBackward';\n\t // hit backspace when last character is delimiter\n\t var postDelimiter = Util.getPostDelimiter(owner.lastInputValue, pps.delimiter, pps.delimiters);\n\n\t if (owner.isBackward && postDelimiter) {\n\t pps.postDelimiterBackspace = postDelimiter;\n\t } else {\n\t pps.postDelimiterBackspace = false;\n\t }\n\n\t owner.onInput(event.target.value);\n\n\t event.target.rawValue = owner.getRawValue();\n\t event.target.value = pps.result;\n\n\t owner.registeredEvents.onChange(event);\n\t },\n\n\t onInput: function onInput(value, fromProps) {\n\t var owner = this,\n\t pps = owner.properties;\n\n\t // case 1: delete one more character \"4\"\n\t // 1234*| -> hit backspace -> 123|\n\t // case 2: last character is not delimiter which is:\n\t // 12|34* -> hit backspace -> 1|34*\n\t var postDelimiterAfter = Util.getPostDelimiter(value, pps.delimiter, pps.delimiters);\n\t if (!fromProps && !pps.numeral && pps.postDelimiterBackspace && !postDelimiterAfter) {\n\t value = Util.headStr(value, value.length - pps.postDelimiterBackspace.length);\n\t }\n\n\t // phone formatter\n\t if (pps.phone) {\n\t if (pps.prefix && (!pps.noImmediatePrefix || value.length)) {\n\t pps.result = pps.prefix + pps.phoneFormatter.format(value).slice(pps.prefix.length);\n\t } else {\n\t pps.result = pps.phoneFormatter.format(value);\n\t }\n\t owner.updateValueState();\n\n\t return;\n\t }\n\n\t // numeral formatter\n\t if (pps.numeral) {\n\t // Do not show prefix when noImmediatePrefix is specified\n\t // This mostly because we need to show user the native input placeholder\n\t if (pps.prefix && pps.noImmediatePrefix && value.length === 0) {\n\t pps.result = '';\n\t } else {\n\t pps.result = pps.numeralFormatter.format(value);\n\t }\n\t owner.updateValueState();\n\n\t return;\n\t }\n\n\t // date\n\t if (pps.date) {\n\t value = pps.dateFormatter.getValidatedDate(value);\n\t }\n\n\t // time\n\t if (pps.time) {\n\t value = pps.timeFormatter.getValidatedTime(value);\n\t }\n\n\t // strip delimiters\n\t value = Util.stripDelimiters(value, pps.delimiter, pps.delimiters);\n\n\t // strip prefix\n\t value = Util.getPrefixStrippedValue(value, pps.prefix, pps.prefixLength, pps.result, pps.delimiter, pps.delimiters, pps.noImmediatePrefix, pps.tailPrefix, pps.signBeforePrefix);\n\n\t // strip non-numeric characters\n\t value = pps.numericOnly ? Util.strip(value, /[^\\d]/g) : value;\n\n\t // convert case\n\t value = pps.uppercase ? value.toUpperCase() : value;\n\t value = pps.lowercase ? value.toLowerCase() : value;\n\n\t // prevent from showing prefix when no immediate option enabled with empty input value\n\t if (pps.prefix) {\n\t if (pps.tailPrefix) {\n\t value = value + pps.prefix;\n\t } else {\n\t value = pps.prefix + value;\n\t }\n\n\t // no blocks specified, no need to do formatting\n\t if (pps.blocksLength === 0) {\n\t pps.result = value;\n\t owner.updateValueState();\n\n\t return;\n\t }\n\t }\n\n\t // update credit card props\n\t if (pps.creditCard) {\n\t owner.updateCreditCardPropsByValue(value);\n\t }\n\n\t // strip over length characters\n\t value = pps.maxLength > 0 ? Util.headStr(value, pps.maxLength) : value;\n\n\t // apply blocks\n\t pps.result = Util.getFormattedValue(value, pps.blocks, pps.blocksLength, pps.delimiter, pps.delimiters, pps.delimiterLazyShow);\n\n\t owner.updateValueState();\n\t },\n\n\t updateCreditCardPropsByValue: function updateCreditCardPropsByValue(value) {\n\t var owner = this,\n\t pps = owner.properties,\n\t creditCardInfo;\n\n\t // At least one of the first 4 characters has changed\n\t if (Util.headStr(pps.result, 4) === Util.headStr(value, 4)) {\n\t return;\n\t }\n\n\t creditCardInfo = CreditCardDetector.getInfo(value, pps.creditCardStrictMode);\n\n\t pps.blocks = creditCardInfo.blocks;\n\t pps.blocksLength = pps.blocks.length;\n\t pps.maxLength = Util.getMaxLength(pps.blocks);\n\n\t // credit card type changed\n\t if (pps.creditCardType !== creditCardInfo.type) {\n\t pps.creditCardType = creditCardInfo.type;\n\n\t pps.onCreditCardTypeChanged.call(owner, pps.creditCardType);\n\t }\n\t },\n\n\t updateValueState: function updateValueState() {\n\t var owner = this,\n\t pps = owner.properties;\n\n\t if (!owner.element) {\n\t owner.setState({ value: pps.result });\n\t return;\n\t }\n\n\t var endPos = owner.element.selectionEnd;\n\t var oldValue = owner.element.value;\n\t var newValue = pps.result;\n\n\t owner.lastInputValue = newValue;\n\n\t endPos = Util.getNextCursorPosition(endPos, oldValue, newValue, pps.delimiter, pps.delimiters);\n\n\t if (owner.isAndroid) {\n\t window.setTimeout(function () {\n\t owner.setState({ value: newValue, cursorPosition: endPos });\n\t }, 1);\n\n\t return;\n\t }\n\n\t owner.setState({ value: newValue, cursorPosition: endPos });\n\t },\n\n\t render: function render() {\n\t var owner = this;\n\t // eslint-disable-next-line\n\n\t var _owner$props2 = owner.props,\n\t value = _owner$props2.value,\n\t options = _owner$props2.options,\n\t onKeyDown = _owner$props2.onKeyDown,\n\t onFocus = _owner$props2.onFocus,\n\t onBlur = _owner$props2.onBlur,\n\t onChange = _owner$props2.onChange,\n\t onInit = _owner$props2.onInit,\n\t htmlRef = _owner$props2.htmlRef,\n\t propsToTransfer = _objectWithoutProperties(_owner$props2, ['value', 'options', 'onKeyDown', 'onFocus', 'onBlur', 'onChange', 'onInit', 'htmlRef']);\n\n\t return React.createElement('input', _extends({\n\t type: 'text',\n\t ref: function ref(_ref) {\n\t owner.element = _ref;\n\n\t if (!htmlRef) {\n\t return;\n\t }\n\n\t htmlRef.apply(this, arguments);\n\t },\n\t value: owner.state.value,\n\t onKeyDown: owner.onKeyDown,\n\t onChange: owner.onChange,\n\t onFocus: owner.onFocus,\n\t onBlur: owner.onBlur\n\t }, propsToTransfer));\n\t }\n\t});\n\n\tmodule.exports = cleaveReactClass;\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_1__;\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright (c) 2013-present, Facebook, Inc.\n\t *\n\t * This source code is licensed under the MIT license found in the\n\t * LICENSE file in the root directory of this source tree.\n\t *\n\t */\n\n\t'use strict';\n\n\tvar React = __webpack_require__(1);\n\tvar factory = __webpack_require__(3);\n\n\tif (typeof React === 'undefined') {\n\t throw Error(\n\t 'create-react-class could not find the React object. If you are using script tags, ' +\n\t 'make sure that React is being loaded before create-react-class.'\n\t );\n\t}\n\n\t// Hack to grab NoopUpdateQueue from isomorphic React\n\tvar ReactNoopUpdateQueue = new React.Component().updater;\n\n\tmodule.exports = factory(\n\t React.Component,\n\t React.isValidElement,\n\t ReactNoopUpdateQueue\n\t);\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright (c) 2013-present, Facebook, Inc.\n\t *\n\t * This source code is licensed under the MIT license found in the\n\t * LICENSE file in the root directory of this source tree.\n\t *\n\t */\n\n\t'use strict';\n\n\tvar _assign = __webpack_require__(4);\n\n\tvar emptyObject = __webpack_require__(5);\n\tvar _invariant = __webpack_require__(6);\n\n\tif (process.env.NODE_ENV !== 'production') {\n\t var warning = __webpack_require__(7);\n\t}\n\n\tvar MIXINS_KEY = 'mixins';\n\n\t// Helper function to allow the creation of anonymous functions which do not\n\t// have .name set to the name of the variable being assigned to.\n\tfunction identity(fn) {\n\t return fn;\n\t}\n\n\tvar ReactPropTypeLocationNames;\n\tif (process.env.NODE_ENV !== 'production') {\n\t ReactPropTypeLocationNames = {\n\t prop: 'prop',\n\t context: 'context',\n\t childContext: 'child context'\n\t };\n\t} else {\n\t ReactPropTypeLocationNames = {};\n\t}\n\n\tfunction factory(ReactComponent, isValidElement, ReactNoopUpdateQueue) {\n\t /**\n\t * Policies that describe methods in `ReactClassInterface`.\n\t */\n\n\t var injectedMixins = [];\n\n\t /**\n\t * Composite components are higher-level components that compose other composite\n\t * or host components.\n\t *\n\t * To create a new type of `ReactClass`, pass a specification of\n\t * your new class to `React.createClass`. The only requirement of your class\n\t * specification is that you implement a `render` method.\n\t *\n\t * var MyComponent = React.createClass({\n\t * render: function() {\n\t * return
Hello World
;\n\t * }\n\t * });\n\t *\n\t * The class specification supports a specific protocol of methods that have\n\t * special meaning (e.g. `render`). See `ReactClassInterface` for\n\t * more the comprehensive protocol. Any other properties and methods in the\n\t * class specification will be available on the prototype.\n\t *\n\t * @interface ReactClassInterface\n\t * @internal\n\t */\n\t var ReactClassInterface = {\n\t /**\n\t * An array of Mixin objects to include when defining your component.\n\t *\n\t * @type {array}\n\t * @optional\n\t */\n\t mixins: 'DEFINE_MANY',\n\n\t /**\n\t * An object containing properties and methods that should be defined on\n\t * the component's constructor instead of its prototype (static methods).\n\t *\n\t * @type {object}\n\t * @optional\n\t */\n\t statics: 'DEFINE_MANY',\n\n\t /**\n\t * Definition of prop types for this component.\n\t *\n\t * @type {object}\n\t * @optional\n\t */\n\t propTypes: 'DEFINE_MANY',\n\n\t /**\n\t * Definition of context types for this component.\n\t *\n\t * @type {object}\n\t * @optional\n\t */\n\t contextTypes: 'DEFINE_MANY',\n\n\t /**\n\t * Definition of context types this component sets for its children.\n\t *\n\t * @type {object}\n\t * @optional\n\t */\n\t childContextTypes: 'DEFINE_MANY',\n\n\t // ==== Definition methods ====\n\n\t /**\n\t * Invoked when the component is mounted. Values in the mapping will be set on\n\t * `this.props` if that prop is not specified (i.e. using an `in` check).\n\t *\n\t * This method is invoked before `getInitialState` and therefore cannot rely\n\t * on `this.state` or use `this.setState`.\n\t *\n\t * @return {object}\n\t * @optional\n\t */\n\t getDefaultProps: 'DEFINE_MANY_MERGED',\n\n\t /**\n\t * Invoked once before the component is mounted. The return value will be used\n\t * as the initial value of `this.state`.\n\t *\n\t * getInitialState: function() {\n\t * return {\n\t * isOn: false,\n\t * fooBaz: new BazFoo()\n\t * }\n\t * }\n\t *\n\t * @return {object}\n\t * @optional\n\t */\n\t getInitialState: 'DEFINE_MANY_MERGED',\n\n\t /**\n\t * @return {object}\n\t * @optional\n\t */\n\t getChildContext: 'DEFINE_MANY_MERGED',\n\n\t /**\n\t * Uses props from `this.props` and state from `this.state` to render the\n\t * structure of the component.\n\t *\n\t * No guarantees are made about when or how often this method is invoked, so\n\t * it must not have side effects.\n\t *\n\t * render: function() {\n\t * var name = this.props.name;\n\t * return
Hello, {name}!
;\n\t * }\n\t *\n\t * @return {ReactComponent}\n\t * @required\n\t */\n\t render: 'DEFINE_ONCE',\n\n\t // ==== Delegate methods ====\n\n\t /**\n\t * Invoked when the component is initially created and about to be mounted.\n\t * This may have side effects, but any external subscriptions or data created\n\t * by this method must be cleaned up in `componentWillUnmount`.\n\t *\n\t * @optional\n\t */\n\t componentWillMount: 'DEFINE_MANY',\n\n\t /**\n\t * Invoked when the component has been mounted and has a DOM representation.\n\t * However, there is no guarantee that the DOM node is in the document.\n\t *\n\t * Use this as an opportunity to operate on the DOM when the component has\n\t * been mounted (initialized and rendered) for the first time.\n\t *\n\t * @param {DOMElement} rootNode DOM element representing the component.\n\t * @optional\n\t */\n\t componentDidMount: 'DEFINE_MANY',\n\n\t /**\n\t * Invoked before the component receives new props.\n\t *\n\t * Use this as an opportunity to react to a prop transition by updating the\n\t * state using `this.setState`. Current props are accessed via `this.props`.\n\t *\n\t * componentWillReceiveProps: function(nextProps, nextContext) {\n\t * this.setState({\n\t * likesIncreasing: nextProps.likeCount > this.props.likeCount\n\t * });\n\t * }\n\t *\n\t * NOTE: There is no equivalent `componentWillReceiveState`. An incoming prop\n\t * transition may cause a state change, but the opposite is not true. If you\n\t * need it, you are probably looking for `componentWillUpdate`.\n\t *\n\t * @param {object} nextProps\n\t * @optional\n\t */\n\t componentWillReceiveProps: 'DEFINE_MANY',\n\n\t /**\n\t * Invoked while deciding if the component should be updated as a result of\n\t * receiving new props, state and/or context.\n\t *\n\t * Use this as an opportunity to `return false` when you're certain that the\n\t * transition to the new props/state/context will not require a component\n\t * update.\n\t *\n\t * shouldComponentUpdate: function(nextProps, nextState, nextContext) {\n\t * return !equal(nextProps, this.props) ||\n\t * !equal(nextState, this.state) ||\n\t * !equal(nextContext, this.context);\n\t * }\n\t *\n\t * @param {object} nextProps\n\t * @param {?object} nextState\n\t * @param {?object} nextContext\n\t * @return {boolean} True if the component should update.\n\t * @optional\n\t */\n\t shouldComponentUpdate: 'DEFINE_ONCE',\n\n\t /**\n\t * Invoked when the component is about to update due to a transition from\n\t * `this.props`, `this.state` and `this.context` to `nextProps`, `nextState`\n\t * and `nextContext`.\n\t *\n\t * Use this as an opportunity to perform preparation before an update occurs.\n\t *\n\t * NOTE: You **cannot** use `this.setState()` in this method.\n\t *\n\t * @param {object} nextProps\n\t * @param {?object} nextState\n\t * @param {?object} nextContext\n\t * @param {ReactReconcileTransaction} transaction\n\t * @optional\n\t */\n\t componentWillUpdate: 'DEFINE_MANY',\n\n\t /**\n\t * Invoked when the component's DOM representation has been updated.\n\t *\n\t * Use this as an opportunity to operate on the DOM when the component has\n\t * been updated.\n\t *\n\t * @param {object} prevProps\n\t * @param {?object} prevState\n\t * @param {?object} prevContext\n\t * @param {DOMElement} rootNode DOM element representing the component.\n\t * @optional\n\t */\n\t componentDidUpdate: 'DEFINE_MANY',\n\n\t /**\n\t * Invoked when the component is about to be removed from its parent and have\n\t * its DOM representation destroyed.\n\t *\n\t * Use this as an opportunity to deallocate any external resources.\n\t *\n\t * NOTE: There is no `componentDidUnmount` since your component will have been\n\t * destroyed by that point.\n\t *\n\t * @optional\n\t */\n\t componentWillUnmount: 'DEFINE_MANY',\n\n\t /**\n\t * Replacement for (deprecated) `componentWillMount`.\n\t *\n\t * @optional\n\t */\n\t UNSAFE_componentWillMount: 'DEFINE_MANY',\n\n\t /**\n\t * Replacement for (deprecated) `componentWillReceiveProps`.\n\t *\n\t * @optional\n\t */\n\t UNSAFE_componentWillReceiveProps: 'DEFINE_MANY',\n\n\t /**\n\t * Replacement for (deprecated) `componentWillUpdate`.\n\t *\n\t * @optional\n\t */\n\t UNSAFE_componentWillUpdate: 'DEFINE_MANY',\n\n\t // ==== Advanced methods ====\n\n\t /**\n\t * Updates the component's currently mounted DOM representation.\n\t *\n\t * By default, this implements React's rendering and reconciliation algorithm.\n\t * Sophisticated clients may wish to override this.\n\t *\n\t * @param {ReactReconcileTransaction} transaction\n\t * @internal\n\t * @overridable\n\t */\n\t updateComponent: 'OVERRIDE_BASE'\n\t };\n\n\t /**\n\t * Similar to ReactClassInterface but for static methods.\n\t */\n\t var ReactClassStaticInterface = {\n\t /**\n\t * This method is invoked after a component is instantiated and when it\n\t * receives new props. Return an object to update state in response to\n\t * prop changes. Return null to indicate no change to state.\n\t *\n\t * If an object is returned, its keys will be merged into the existing state.\n\t *\n\t * @return {object || null}\n\t * @optional\n\t */\n\t getDerivedStateFromProps: 'DEFINE_MANY_MERGED'\n\t };\n\n\t /**\n\t * Mapping from class specification keys to special processing functions.\n\t *\n\t * Although these are declared like instance properties in the specification\n\t * when defining classes using `React.createClass`, they are actually static\n\t * and are accessible on the constructor instead of the prototype. Despite\n\t * being static, they must be defined outside of the \"statics\" key under\n\t * which all other static methods are defined.\n\t */\n\t var RESERVED_SPEC_KEYS = {\n\t displayName: function(Constructor, displayName) {\n\t Constructor.displayName = displayName;\n\t },\n\t mixins: function(Constructor, mixins) {\n\t if (mixins) {\n\t for (var i = 0; i < mixins.length; i++) {\n\t mixSpecIntoComponent(Constructor, mixins[i]);\n\t }\n\t }\n\t },\n\t childContextTypes: function(Constructor, childContextTypes) {\n\t if (process.env.NODE_ENV !== 'production') {\n\t validateTypeDef(Constructor, childContextTypes, 'childContext');\n\t }\n\t Constructor.childContextTypes = _assign(\n\t {},\n\t Constructor.childContextTypes,\n\t childContextTypes\n\t );\n\t },\n\t contextTypes: function(Constructor, contextTypes) {\n\t if (process.env.NODE_ENV !== 'production') {\n\t validateTypeDef(Constructor, contextTypes, 'context');\n\t }\n\t Constructor.contextTypes = _assign(\n\t {},\n\t Constructor.contextTypes,\n\t contextTypes\n\t );\n\t },\n\t /**\n\t * Special case getDefaultProps which should move into statics but requires\n\t * automatic merging.\n\t */\n\t getDefaultProps: function(Constructor, getDefaultProps) {\n\t if (Constructor.getDefaultProps) {\n\t Constructor.getDefaultProps = createMergedResultFunction(\n\t Constructor.getDefaultProps,\n\t getDefaultProps\n\t );\n\t } else {\n\t Constructor.getDefaultProps = getDefaultProps;\n\t }\n\t },\n\t propTypes: function(Constructor, propTypes) {\n\t if (process.env.NODE_ENV !== 'production') {\n\t validateTypeDef(Constructor, propTypes, 'prop');\n\t }\n\t Constructor.propTypes = _assign({}, Constructor.propTypes, propTypes);\n\t },\n\t statics: function(Constructor, statics) {\n\t mixStaticSpecIntoComponent(Constructor, statics);\n\t },\n\t autobind: function() {}\n\t };\n\n\t function validateTypeDef(Constructor, typeDef, location) {\n\t for (var propName in typeDef) {\n\t if (typeDef.hasOwnProperty(propName)) {\n\t // use a warning instead of an _invariant so components\n\t // don't show up in prod but only in __DEV__\n\t if (process.env.NODE_ENV !== 'production') {\n\t warning(\n\t typeof typeDef[propName] === 'function',\n\t '%s: %s type `%s` is invalid; it must be a function, usually from ' +\n\t 'React.PropTypes.',\n\t Constructor.displayName || 'ReactClass',\n\t ReactPropTypeLocationNames[location],\n\t propName\n\t );\n\t }\n\t }\n\t }\n\t }\n\n\t function validateMethodOverride(isAlreadyDefined, name) {\n\t var specPolicy = ReactClassInterface.hasOwnProperty(name)\n\t ? ReactClassInterface[name]\n\t : null;\n\n\t // Disallow overriding of base class methods unless explicitly allowed.\n\t if (ReactClassMixin.hasOwnProperty(name)) {\n\t _invariant(\n\t specPolicy === 'OVERRIDE_BASE',\n\t 'ReactClassInterface: You are attempting to override ' +\n\t '`%s` from your class specification. Ensure that your method names ' +\n\t 'do not overlap with React methods.',\n\t name\n\t );\n\t }\n\n\t // Disallow defining methods more than once unless explicitly allowed.\n\t if (isAlreadyDefined) {\n\t _invariant(\n\t specPolicy === 'DEFINE_MANY' || specPolicy === 'DEFINE_MANY_MERGED',\n\t 'ReactClassInterface: You are attempting to define ' +\n\t '`%s` on your component more than once. This conflict may be due ' +\n\t 'to a mixin.',\n\t name\n\t );\n\t }\n\t }\n\n\t /**\n\t * Mixin helper which handles policy validation and reserved\n\t * specification keys when building React classes.\n\t */\n\t function mixSpecIntoComponent(Constructor, spec) {\n\t if (!spec) {\n\t if (process.env.NODE_ENV !== 'production') {\n\t var typeofSpec = typeof spec;\n\t var isMixinValid = typeofSpec === 'object' && spec !== null;\n\n\t if (process.env.NODE_ENV !== 'production') {\n\t warning(\n\t isMixinValid,\n\t \"%s: You're attempting to include a mixin that is either null \" +\n\t 'or not an object. Check the mixins included by the component, ' +\n\t 'as well as any mixins they include themselves. ' +\n\t 'Expected object but got %s.',\n\t Constructor.displayName || 'ReactClass',\n\t spec === null ? null : typeofSpec\n\t );\n\t }\n\t }\n\n\t return;\n\t }\n\n\t _invariant(\n\t typeof spec !== 'function',\n\t \"ReactClass: You're attempting to \" +\n\t 'use a component class or function as a mixin. Instead, just use a ' +\n\t 'regular object.'\n\t );\n\t _invariant(\n\t !isValidElement(spec),\n\t \"ReactClass: You're attempting to \" +\n\t 'use a component as a mixin. Instead, just use a regular object.'\n\t );\n\n\t var proto = Constructor.prototype;\n\t var autoBindPairs = proto.__reactAutoBindPairs;\n\n\t // By handling mixins before any other properties, we ensure the same\n\t // chaining order is applied to methods with DEFINE_MANY policy, whether\n\t // mixins are listed before or after these methods in the spec.\n\t if (spec.hasOwnProperty(MIXINS_KEY)) {\n\t RESERVED_SPEC_KEYS.mixins(Constructor, spec.mixins);\n\t }\n\n\t for (var name in spec) {\n\t if (!spec.hasOwnProperty(name)) {\n\t continue;\n\t }\n\n\t if (name === MIXINS_KEY) {\n\t // We have already handled mixins in a special case above.\n\t continue;\n\t }\n\n\t var property = spec[name];\n\t var isAlreadyDefined = proto.hasOwnProperty(name);\n\t validateMethodOverride(isAlreadyDefined, name);\n\n\t if (RESERVED_SPEC_KEYS.hasOwnProperty(name)) {\n\t RESERVED_SPEC_KEYS[name](Constructor, property);\n\t } else {\n\t // Setup methods on prototype:\n\t // The following member methods should not be automatically bound:\n\t // 1. Expected ReactClass methods (in the \"interface\").\n\t // 2. Overridden methods (that were mixed in).\n\t var isReactClassMethod = ReactClassInterface.hasOwnProperty(name);\n\t var isFunction = typeof property === 'function';\n\t var shouldAutoBind =\n\t isFunction &&\n\t !isReactClassMethod &&\n\t !isAlreadyDefined &&\n\t spec.autobind !== false;\n\n\t if (shouldAutoBind) {\n\t autoBindPairs.push(name, property);\n\t proto[name] = property;\n\t } else {\n\t if (isAlreadyDefined) {\n\t var specPolicy = ReactClassInterface[name];\n\n\t // These cases should already be caught by validateMethodOverride.\n\t _invariant(\n\t isReactClassMethod &&\n\t (specPolicy === 'DEFINE_MANY_MERGED' ||\n\t specPolicy === 'DEFINE_MANY'),\n\t 'ReactClass: Unexpected spec policy %s for key %s ' +\n\t 'when mixing in component specs.',\n\t specPolicy,\n\t name\n\t );\n\n\t // For methods which are defined more than once, call the existing\n\t // methods before calling the new property, merging if appropriate.\n\t if (specPolicy === 'DEFINE_MANY_MERGED') {\n\t proto[name] = createMergedResultFunction(proto[name], property);\n\t } else if (specPolicy === 'DEFINE_MANY') {\n\t proto[name] = createChainedFunction(proto[name], property);\n\t }\n\t } else {\n\t proto[name] = property;\n\t if (process.env.NODE_ENV !== 'production') {\n\t // Add verbose displayName to the function, which helps when looking\n\t // at profiling tools.\n\t if (typeof property === 'function' && spec.displayName) {\n\t proto[name].displayName = spec.displayName + '_' + name;\n\t }\n\t }\n\t }\n\t }\n\t }\n\t }\n\t }\n\n\t function mixStaticSpecIntoComponent(Constructor, statics) {\n\t if (!statics) {\n\t return;\n\t }\n\n\t for (var name in statics) {\n\t var property = statics[name];\n\t if (!statics.hasOwnProperty(name)) {\n\t continue;\n\t }\n\n\t var isReserved = name in RESERVED_SPEC_KEYS;\n\t _invariant(\n\t !isReserved,\n\t 'ReactClass: You are attempting to define a reserved ' +\n\t 'property, `%s`, that shouldn\\'t be on the \"statics\" key. Define it ' +\n\t 'as an instance property instead; it will still be accessible on the ' +\n\t 'constructor.',\n\t name\n\t );\n\n\t var isAlreadyDefined = name in Constructor;\n\t if (isAlreadyDefined) {\n\t var specPolicy = ReactClassStaticInterface.hasOwnProperty(name)\n\t ? ReactClassStaticInterface[name]\n\t : null;\n\n\t _invariant(\n\t specPolicy === 'DEFINE_MANY_MERGED',\n\t 'ReactClass: You are attempting to define ' +\n\t '`%s` on your component more than once. This conflict may be ' +\n\t 'due to a mixin.',\n\t name\n\t );\n\n\t Constructor[name] = createMergedResultFunction(Constructor[name], property);\n\n\t return;\n\t }\n\n\t Constructor[name] = property;\n\t }\n\t }\n\n\t /**\n\t * Merge two objects, but throw if both contain the same key.\n\t *\n\t * @param {object} one The first object, which is mutated.\n\t * @param {object} two The second object\n\t * @return {object} one after it has been mutated to contain everything in two.\n\t */\n\t function mergeIntoWithNoDuplicateKeys(one, two) {\n\t _invariant(\n\t one && two && typeof one === 'object' && typeof two === 'object',\n\t 'mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects.'\n\t );\n\n\t for (var key in two) {\n\t if (two.hasOwnProperty(key)) {\n\t _invariant(\n\t one[key] === undefined,\n\t 'mergeIntoWithNoDuplicateKeys(): ' +\n\t 'Tried to merge two objects with the same key: `%s`. This conflict ' +\n\t 'may be due to a mixin; in particular, this may be caused by two ' +\n\t 'getInitialState() or getDefaultProps() methods returning objects ' +\n\t 'with clashing keys.',\n\t key\n\t );\n\t one[key] = two[key];\n\t }\n\t }\n\t return one;\n\t }\n\n\t /**\n\t * Creates a function that invokes two functions and merges their return values.\n\t *\n\t * @param {function} one Function to invoke first.\n\t * @param {function} two Function to invoke second.\n\t * @return {function} Function that invokes the two argument functions.\n\t * @private\n\t */\n\t function createMergedResultFunction(one, two) {\n\t return function mergedResult() {\n\t var a = one.apply(this, arguments);\n\t var b = two.apply(this, arguments);\n\t if (a == null) {\n\t return b;\n\t } else if (b == null) {\n\t return a;\n\t }\n\t var c = {};\n\t mergeIntoWithNoDuplicateKeys(c, a);\n\t mergeIntoWithNoDuplicateKeys(c, b);\n\t return c;\n\t };\n\t }\n\n\t /**\n\t * Creates a function that invokes two functions and ignores their return vales.\n\t *\n\t * @param {function} one Function to invoke first.\n\t * @param {function} two Function to invoke second.\n\t * @return {function} Function that invokes the two argument functions.\n\t * @private\n\t */\n\t function createChainedFunction(one, two) {\n\t return function chainedFunction() {\n\t one.apply(this, arguments);\n\t two.apply(this, arguments);\n\t };\n\t }\n\n\t /**\n\t * Binds a method to the component.\n\t *\n\t * @param {object} component Component whose method is going to be bound.\n\t * @param {function} method Method to be bound.\n\t * @return {function} The bound method.\n\t */\n\t function bindAutoBindMethod(component, method) {\n\t var boundMethod = method.bind(component);\n\t if (process.env.NODE_ENV !== 'production') {\n\t boundMethod.__reactBoundContext = component;\n\t boundMethod.__reactBoundMethod = method;\n\t boundMethod.__reactBoundArguments = null;\n\t var componentName = component.constructor.displayName;\n\t var _bind = boundMethod.bind;\n\t boundMethod.bind = function(newThis) {\n\t for (\n\t var _len = arguments.length,\n\t args = Array(_len > 1 ? _len - 1 : 0),\n\t _key = 1;\n\t _key < _len;\n\t _key++\n\t ) {\n\t args[_key - 1] = arguments[_key];\n\t }\n\n\t // User is trying to bind() an autobound method; we effectively will\n\t // ignore the value of \"this\" that the user is trying to use, so\n\t // let's warn.\n\t if (newThis !== component && newThis !== null) {\n\t if (process.env.NODE_ENV !== 'production') {\n\t warning(\n\t false,\n\t 'bind(): React component methods may only be bound to the ' +\n\t 'component instance. See %s',\n\t componentName\n\t );\n\t }\n\t } else if (!args.length) {\n\t if (process.env.NODE_ENV !== 'production') {\n\t warning(\n\t false,\n\t 'bind(): You are binding a component method to the component. ' +\n\t 'React does this for you automatically in a high-performance ' +\n\t 'way, so you can safely remove this call. See %s',\n\t componentName\n\t );\n\t }\n\t return boundMethod;\n\t }\n\t var reboundMethod = _bind.apply(boundMethod, arguments);\n\t reboundMethod.__reactBoundContext = component;\n\t reboundMethod.__reactBoundMethod = method;\n\t reboundMethod.__reactBoundArguments = args;\n\t return reboundMethod;\n\t };\n\t }\n\t return boundMethod;\n\t }\n\n\t /**\n\t * Binds all auto-bound methods in a component.\n\t *\n\t * @param {object} component Component whose method is going to be bound.\n\t */\n\t function bindAutoBindMethods(component) {\n\t var pairs = component.__reactAutoBindPairs;\n\t for (var i = 0; i < pairs.length; i += 2) {\n\t var autoBindKey = pairs[i];\n\t var method = pairs[i + 1];\n\t component[autoBindKey] = bindAutoBindMethod(component, method);\n\t }\n\t }\n\n\t var IsMountedPreMixin = {\n\t componentDidMount: function() {\n\t this.__isMounted = true;\n\t }\n\t };\n\n\t var IsMountedPostMixin = {\n\t componentWillUnmount: function() {\n\t this.__isMounted = false;\n\t }\n\t };\n\n\t /**\n\t * Add more to the ReactClass base class. These are all legacy features and\n\t * therefore not already part of the modern ReactComponent.\n\t */\n\t var ReactClassMixin = {\n\t /**\n\t * TODO: This will be deprecated because state should always keep a consistent\n\t * type signature and the only use case for this, is to avoid that.\n\t */\n\t replaceState: function(newState, callback) {\n\t this.updater.enqueueReplaceState(this, newState, callback);\n\t },\n\n\t /**\n\t * Checks whether or not this composite component is mounted.\n\t * @return {boolean} True if mounted, false otherwise.\n\t * @protected\n\t * @final\n\t */\n\t isMounted: function() {\n\t if (process.env.NODE_ENV !== 'production') {\n\t warning(\n\t this.__didWarnIsMounted,\n\t '%s: isMounted is deprecated. Instead, make sure to clean up ' +\n\t 'subscriptions and pending requests in componentWillUnmount to ' +\n\t 'prevent memory leaks.',\n\t (this.constructor && this.constructor.displayName) ||\n\t this.name ||\n\t 'Component'\n\t );\n\t this.__didWarnIsMounted = true;\n\t }\n\t return !!this.__isMounted;\n\t }\n\t };\n\n\t var ReactClassComponent = function() {};\n\t _assign(\n\t ReactClassComponent.prototype,\n\t ReactComponent.prototype,\n\t ReactClassMixin\n\t );\n\n\t /**\n\t * Creates a composite component class given a class specification.\n\t * See https://facebook.github.io/react/docs/top-level-api.html#react.createclass\n\t *\n\t * @param {object} spec Class specification (which must define `render`).\n\t * @return {function} Component constructor function.\n\t * @public\n\t */\n\t function createClass(spec) {\n\t // To keep our warnings more understandable, we'll use a little hack here to\n\t // ensure that Constructor.name !== 'Constructor'. This makes sure we don't\n\t // unnecessarily identify a class without displayName as 'Constructor'.\n\t var Constructor = identity(function(props, context, updater) {\n\t // This constructor gets overridden by mocks. The argument is used\n\t // by mocks to assert on what gets mounted.\n\n\t if (process.env.NODE_ENV !== 'production') {\n\t warning(\n\t this instanceof Constructor,\n\t 'Something is calling a React component directly. Use a factory or ' +\n\t 'JSX instead. See: https://fb.me/react-legacyfactory'\n\t );\n\t }\n\n\t // Wire up auto-binding\n\t if (this.__reactAutoBindPairs.length) {\n\t bindAutoBindMethods(this);\n\t }\n\n\t this.props = props;\n\t this.context = context;\n\t this.refs = emptyObject;\n\t this.updater = updater || ReactNoopUpdateQueue;\n\n\t this.state = null;\n\n\t // ReactClasses doesn't have constructors. Instead, they use the\n\t // getInitialState and componentWillMount methods for initialization.\n\n\t var initialState = this.getInitialState ? this.getInitialState() : null;\n\t if (process.env.NODE_ENV !== 'production') {\n\t // We allow auto-mocks to proceed as if they're returning null.\n\t if (\n\t initialState === undefined &&\n\t this.getInitialState._isMockFunction\n\t ) {\n\t // This is probably bad practice. Consider warning here and\n\t // deprecating this convenience.\n\t initialState = null;\n\t }\n\t }\n\t _invariant(\n\t typeof initialState === 'object' && !Array.isArray(initialState),\n\t '%s.getInitialState(): must return an object or null',\n\t Constructor.displayName || 'ReactCompositeComponent'\n\t );\n\n\t this.state = initialState;\n\t });\n\t Constructor.prototype = new ReactClassComponent();\n\t Constructor.prototype.constructor = Constructor;\n\t Constructor.prototype.__reactAutoBindPairs = [];\n\n\t injectedMixins.forEach(mixSpecIntoComponent.bind(null, Constructor));\n\n\t mixSpecIntoComponent(Constructor, IsMountedPreMixin);\n\t mixSpecIntoComponent(Constructor, spec);\n\t mixSpecIntoComponent(Constructor, IsMountedPostMixin);\n\n\t // Initialize the defaultProps property after all mixins have been merged.\n\t if (Constructor.getDefaultProps) {\n\t Constructor.defaultProps = Constructor.getDefaultProps();\n\t }\n\n\t if (process.env.NODE_ENV !== 'production') {\n\t // This is a tag to indicate that the use of these method names is ok,\n\t // since it's used with createClass. If it's not, then it's likely a\n\t // mistake so we'll warn you to use the static property, property\n\t // initializer or constructor respectively.\n\t if (Constructor.getDefaultProps) {\n\t Constructor.getDefaultProps.isReactClassApproved = {};\n\t }\n\t if (Constructor.prototype.getInitialState) {\n\t Constructor.prototype.getInitialState.isReactClassApproved = {};\n\t }\n\t }\n\n\t _invariant(\n\t Constructor.prototype.render,\n\t 'createClass(...): Class specification must implement a `render` method.'\n\t );\n\n\t if (process.env.NODE_ENV !== 'production') {\n\t warning(\n\t !Constructor.prototype.componentShouldUpdate,\n\t '%s has a method called ' +\n\t 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' +\n\t 'The name is phrased as a question because the function is ' +\n\t 'expected to return a value.',\n\t spec.displayName || 'A component'\n\t );\n\t warning(\n\t !Constructor.prototype.componentWillRecieveProps,\n\t '%s has a method called ' +\n\t 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?',\n\t spec.displayName || 'A component'\n\t );\n\t warning(\n\t !Constructor.prototype.UNSAFE_componentWillRecieveProps,\n\t '%s has a method called UNSAFE_componentWillRecieveProps(). ' +\n\t 'Did you mean UNSAFE_componentWillReceiveProps()?',\n\t spec.displayName || 'A component'\n\t );\n\t }\n\n\t // Reduce time spent doing lookups by setting these on the prototype.\n\t for (var methodName in ReactClassInterface) {\n\t if (!Constructor.prototype[methodName]) {\n\t Constructor.prototype[methodName] = null;\n\t }\n\t }\n\n\t return Constructor;\n\t }\n\n\t return createClass;\n\t}\n\n\tmodule.exports = factory;\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports) {\n\n\t/*\n\tobject-assign\n\t(c) Sindre Sorhus\n\t@license MIT\n\t*/\n\n\t'use strict';\n\t/* eslint-disable no-unused-vars */\n\tvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\n\tvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\tvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\n\tfunction toObject(val) {\n\t\tif (val === null || val === undefined) {\n\t\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t\t}\n\n\t\treturn Object(val);\n\t}\n\n\tfunction shouldUseNative() {\n\t\ttry {\n\t\t\tif (!Object.assign) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\t\ttest1[5] = 'de';\n\t\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\t\tvar test2 = {};\n\t\t\tfor (var i = 0; i < 10; i++) {\n\t\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t\t}\n\t\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\t\treturn test2[n];\n\t\t\t});\n\t\t\tif (order2.join('') !== '0123456789') {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\t\tvar test3 = {};\n\t\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\t\ttest3[letter] = letter;\n\t\t\t});\n\t\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn true;\n\t\t} catch (err) {\n\t\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\t\tvar from;\n\t\tvar to = toObject(target);\n\t\tvar symbols;\n\n\t\tfor (var s = 1; s < arguments.length; s++) {\n\t\t\tfrom = Object(arguments[s]);\n\n\t\t\tfor (var key in from) {\n\t\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\t\tto[key] = from[key];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (getOwnPropertySymbols) {\n\t\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn to;\n\t};\n\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports) {\n\n\t/**\n\t * Copyright (c) 2013-present, Facebook, Inc.\n\t *\n\t * This source code is licensed under the MIT license found in the\n\t * LICENSE file in the root directory of this source tree.\n\t *\n\t */\n\n\t'use strict';\n\n\tvar emptyObject = {};\n\n\tif (process.env.NODE_ENV !== 'production') {\n\t Object.freeze(emptyObject);\n\t}\n\n\tmodule.exports = emptyObject;\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports) {\n\n\t/**\n\t * Copyright (c) 2013-present, Facebook, Inc.\n\t *\n\t * This source code is licensed under the MIT license found in the\n\t * LICENSE file in the root directory of this source tree.\n\t *\n\t */\n\n\t'use strict';\n\n\t/**\n\t * Use invariant() to assert state which your program assumes to be true.\n\t *\n\t * Provide sprintf-style format (only %s is supported) and arguments\n\t * to provide information about what broke and what you were\n\t * expecting.\n\t *\n\t * The invariant message will be stripped in production, but the invariant\n\t * will remain to ensure logic does not differ in production.\n\t */\n\n\tvar validateFormat = function validateFormat(format) {};\n\n\tif (process.env.NODE_ENV !== 'production') {\n\t validateFormat = function validateFormat(format) {\n\t if (format === undefined) {\n\t throw new Error('invariant requires an error message argument');\n\t }\n\t };\n\t}\n\n\tfunction invariant(condition, format, a, b, c, d, e, f) {\n\t validateFormat(format);\n\n\t if (!condition) {\n\t var error;\n\t if (format === undefined) {\n\t error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n\t } else {\n\t var args = [a, b, c, d, e, f];\n\t var argIndex = 0;\n\t error = new Error(format.replace(/%s/g, function () {\n\t return args[argIndex++];\n\t }));\n\t error.name = 'Invariant Violation';\n\t }\n\n\t error.framesToPop = 1; // we don't care about invariant's own frame\n\t throw error;\n\t }\n\t}\n\n\tmodule.exports = invariant;\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t/**\n\t * Copyright (c) 2014-present, Facebook, Inc.\n\t *\n\t * This source code is licensed under the MIT license found in the\n\t * LICENSE file in the root directory of this source tree.\n\t *\n\t */\n\n\t'use strict';\n\n\tvar emptyFunction = __webpack_require__(8);\n\n\t/**\n\t * Similar to invariant but only logs a warning if the condition is not met.\n\t * This can be used to log issues in development environments in critical\n\t * paths. Removing the logging code for production environments will keep the\n\t * same logic and follow the same code paths.\n\t */\n\n\tvar warning = emptyFunction;\n\n\tif (process.env.NODE_ENV !== 'production') {\n\t var printWarning = function printWarning(format) {\n\t for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n\t args[_key - 1] = arguments[_key];\n\t }\n\n\t var argIndex = 0;\n\t var message = 'Warning: ' + format.replace(/%s/g, function () {\n\t return args[argIndex++];\n\t });\n\t if (typeof console !== 'undefined') {\n\t console.error(message);\n\t }\n\t try {\n\t // --- Welcome to debugging React ---\n\t // This error was thrown as a convenience so that you can use this stack\n\t // to find the callsite that caused this warning to fire.\n\t throw new Error(message);\n\t } catch (x) {}\n\t };\n\n\t warning = function warning(condition, format) {\n\t if (format === undefined) {\n\t throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n\t }\n\n\t if (format.indexOf('Failed Composite propType: ') === 0) {\n\t return; // Ignore CompositeComponent proptype check.\n\t }\n\n\t if (!condition) {\n\t for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n\t args[_key2 - 2] = arguments[_key2];\n\t }\n\n\t printWarning.apply(undefined, [format].concat(args));\n\t }\n\t };\n\t}\n\n\tmodule.exports = warning;\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports) {\n\n\t\"use strict\";\n\n\t/**\n\t * Copyright (c) 2013-present, Facebook, Inc.\n\t *\n\t * This source code is licensed under the MIT license found in the\n\t * LICENSE file in the root directory of this source tree.\n\t *\n\t * \n\t */\n\n\tfunction makeEmptyFunction(arg) {\n\t return function () {\n\t return arg;\n\t };\n\t}\n\n\t/**\n\t * This function accepts and discards inputs; it has no side effects. This is\n\t * primarily useful idiomatically for overridable function endpoints which\n\t * always need to be callable, since JS lacks a null-call idiom ala Cocoa.\n\t */\n\tvar emptyFunction = function emptyFunction() {};\n\n\temptyFunction.thatReturns = makeEmptyFunction;\n\temptyFunction.thatReturnsFalse = makeEmptyFunction(false);\n\temptyFunction.thatReturnsTrue = makeEmptyFunction(true);\n\temptyFunction.thatReturnsNull = makeEmptyFunction(null);\n\temptyFunction.thatReturnsThis = function () {\n\t return this;\n\t};\n\temptyFunction.thatReturnsArgument = function (arg) {\n\t return arg;\n\t};\n\n\tmodule.exports = emptyFunction;\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports) {\n\n\t'use strict';\n\n\tvar NumeralFormatter = function NumeralFormatter(numeralDecimalMark, numeralIntegerScale, numeralDecimalScale, numeralThousandsGroupStyle, numeralPositiveOnly, stripLeadingZeroes, prefix, signBeforePrefix, tailPrefix, delimiter) {\n\t var owner = this;\n\n\t owner.numeralDecimalMark = numeralDecimalMark || '.';\n\t owner.numeralIntegerScale = numeralIntegerScale > 0 ? numeralIntegerScale : 0;\n\t owner.numeralDecimalScale = numeralDecimalScale >= 0 ? numeralDecimalScale : 2;\n\t owner.numeralThousandsGroupStyle = numeralThousandsGroupStyle || NumeralFormatter.groupStyle.thousand;\n\t owner.numeralPositiveOnly = !!numeralPositiveOnly;\n\t owner.stripLeadingZeroes = stripLeadingZeroes !== false;\n\t owner.prefix = prefix || prefix === '' ? prefix : '';\n\t owner.signBeforePrefix = !!signBeforePrefix;\n\t owner.tailPrefix = !!tailPrefix;\n\t owner.delimiter = delimiter || delimiter === '' ? delimiter : ',';\n\t owner.delimiterRE = delimiter ? new RegExp('\\\\' + delimiter, 'g') : '';\n\t};\n\n\tNumeralFormatter.groupStyle = {\n\t thousand: 'thousand',\n\t lakh: 'lakh',\n\t wan: 'wan',\n\t none: 'none'\n\t};\n\n\tNumeralFormatter.prototype = {\n\t getRawValue: function getRawValue(value) {\n\t return value.replace(this.delimiterRE, '').replace(this.numeralDecimalMark, '.');\n\t },\n\n\t format: function format(value) {\n\t var owner = this,\n\t parts,\n\t partSign,\n\t partSignAndPrefix,\n\t partInteger,\n\t partDecimal = '';\n\n\t // strip alphabet letters\n\t value = value.replace(/[A-Za-z]/g, '')\n\t // replace the first decimal mark with reserved placeholder\n\t .replace(owner.numeralDecimalMark, 'M')\n\n\t // strip non numeric letters except minus and \"M\"\n\t // this is to ensure prefix has been stripped\n\t .replace(/[^\\dM-]/g, '')\n\n\t // replace the leading minus with reserved placeholder\n\t .replace(/^\\-/, 'N')\n\n\t // strip the other minus sign (if present)\n\t .replace(/\\-/g, '')\n\n\t // replace the minus sign (if present)\n\t .replace('N', owner.numeralPositiveOnly ? '' : '-')\n\n\t // replace decimal mark\n\t .replace('M', owner.numeralDecimalMark);\n\n\t // strip any leading zeros\n\t if (owner.stripLeadingZeroes) {\n\t value = value.replace(/^(-)?0+(?=\\d)/, '$1');\n\t }\n\n\t partSign = value.slice(0, 1) === '-' ? '-' : '';\n\t if (typeof owner.prefix != 'undefined') {\n\t if (owner.signBeforePrefix) {\n\t partSignAndPrefix = partSign + owner.prefix;\n\t } else {\n\t partSignAndPrefix = owner.prefix + partSign;\n\t }\n\t } else {\n\t partSignAndPrefix = partSign;\n\t }\n\n\t partInteger = value;\n\n\t if (value.indexOf(owner.numeralDecimalMark) >= 0) {\n\t parts = value.split(owner.numeralDecimalMark);\n\t partInteger = parts[0];\n\t partDecimal = owner.numeralDecimalMark + parts[1].slice(0, owner.numeralDecimalScale);\n\t }\n\n\t if (partSign === '-') {\n\t partInteger = partInteger.slice(1);\n\t }\n\n\t if (owner.numeralIntegerScale > 0) {\n\t partInteger = partInteger.slice(0, owner.numeralIntegerScale);\n\t }\n\n\t switch (owner.numeralThousandsGroupStyle) {\n\t case NumeralFormatter.groupStyle.lakh:\n\t partInteger = partInteger.replace(/(\\d)(?=(\\d\\d)+\\d$)/g, '$1' + owner.delimiter);\n\n\t break;\n\n\t case NumeralFormatter.groupStyle.wan:\n\t partInteger = partInteger.replace(/(\\d)(?=(\\d{4})+$)/g, '$1' + owner.delimiter);\n\n\t break;\n\n\t case NumeralFormatter.groupStyle.thousand:\n\t partInteger = partInteger.replace(/(\\d)(?=(\\d{3})+$)/g, '$1' + owner.delimiter);\n\n\t break;\n\t }\n\n\t if (owner.tailPrefix) {\n\t return partSign + partInteger.toString() + (owner.numeralDecimalScale > 0 ? partDecimal.toString() : '') + owner.prefix;\n\t }\n\n\t return partSignAndPrefix + partInteger.toString() + (owner.numeralDecimalScale > 0 ? partDecimal.toString() : '');\n\t }\n\t};\n\n\tmodule.exports = NumeralFormatter;\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports) {\n\n\t'use strict';\n\n\tvar DateFormatter = function DateFormatter(datePattern, dateMin, dateMax) {\n\t var owner = this;\n\n\t owner.date = [];\n\t owner.blocks = [];\n\t owner.datePattern = datePattern;\n\t owner.dateMin = dateMin.split('-').reverse().map(function (x) {\n\t return parseInt(x, 10);\n\t });\n\t if (owner.dateMin.length === 2) owner.dateMin.unshift(0);\n\n\t owner.dateMax = dateMax.split('-').reverse().map(function (x) {\n\t return parseInt(x, 10);\n\t });\n\t if (owner.dateMax.length === 2) owner.dateMax.unshift(0);\n\n\t owner.initBlocks();\n\t};\n\n\tDateFormatter.prototype = {\n\t initBlocks: function initBlocks() {\n\t var owner = this;\n\t owner.datePattern.forEach(function (value) {\n\t if (value === 'Y') {\n\t owner.blocks.push(4);\n\t } else {\n\t owner.blocks.push(2);\n\t }\n\t });\n\t },\n\n\t getISOFormatDate: function getISOFormatDate() {\n\t var owner = this,\n\t date = owner.date;\n\n\t return date[2] ? date[2] + '-' + owner.addLeadingZero(date[1]) + '-' + owner.addLeadingZero(date[0]) : '';\n\t },\n\n\t getBlocks: function getBlocks() {\n\t return this.blocks;\n\t },\n\n\t getValidatedDate: function getValidatedDate(value) {\n\t var owner = this,\n\t result = '';\n\n\t value = value.replace(/[^\\d]/g, '');\n\n\t owner.blocks.forEach(function (length, index) {\n\t if (value.length > 0) {\n\t var sub = value.slice(0, length),\n\t sub0 = sub.slice(0, 1),\n\t rest = value.slice(length);\n\n\t switch (owner.datePattern[index]) {\n\t case 'd':\n\t if (sub === '00') {\n\t sub = '01';\n\t } else if (parseInt(sub0, 10) > 3) {\n\t sub = '0' + sub0;\n\t } else if (parseInt(sub, 10) > 31) {\n\t sub = '31';\n\t }\n\n\t break;\n\n\t case 'm':\n\t if (sub === '00') {\n\t sub = '01';\n\t } else if (parseInt(sub0, 10) > 1) {\n\t sub = '0' + sub0;\n\t } else if (parseInt(sub, 10) > 12) {\n\t sub = '12';\n\t }\n\n\t break;\n\t }\n\n\t result += sub;\n\n\t // update remaining string\n\t value = rest;\n\t }\n\t });\n\n\t return this.getFixedDateString(result);\n\t },\n\n\t getFixedDateString: function getFixedDateString(value) {\n\t var owner = this,\n\t datePattern = owner.datePattern,\n\t date = [],\n\t dayIndex = 0,\n\t monthIndex = 0,\n\t yearIndex = 0,\n\t dayStartIndex = 0,\n\t monthStartIndex = 0,\n\t yearStartIndex = 0,\n\t day,\n\t month,\n\t year,\n\t fullYearDone = false;\n\n\t // mm-dd || dd-mm\n\t if (value.length === 4 && datePattern[0].toLowerCase() !== 'y' && datePattern[1].toLowerCase() !== 'y') {\n\t dayStartIndex = datePattern[0] === 'd' ? 0 : 2;\n\t monthStartIndex = 2 - dayStartIndex;\n\t day = parseInt(value.slice(dayStartIndex, dayStartIndex + 2), 10);\n\t month = parseInt(value.slice(monthStartIndex, monthStartIndex + 2), 10);\n\n\t date = this.getFixedDate(day, month, 0);\n\t }\n\n\t // yyyy-mm-dd || yyyy-dd-mm || mm-dd-yyyy || dd-mm-yyyy || dd-yyyy-mm || mm-yyyy-dd\n\t if (value.length === 8) {\n\t datePattern.forEach(function (type, index) {\n\t switch (type) {\n\t case 'd':\n\t dayIndex = index;\n\t break;\n\t case 'm':\n\t monthIndex = index;\n\t break;\n\t default:\n\t yearIndex = index;\n\t break;\n\t }\n\t });\n\n\t yearStartIndex = yearIndex * 2;\n\t dayStartIndex = dayIndex <= yearIndex ? dayIndex * 2 : dayIndex * 2 + 2;\n\t monthStartIndex = monthIndex <= yearIndex ? monthIndex * 2 : monthIndex * 2 + 2;\n\n\t day = parseInt(value.slice(dayStartIndex, dayStartIndex + 2), 10);\n\t month = parseInt(value.slice(monthStartIndex, monthStartIndex + 2), 10);\n\t year = parseInt(value.slice(yearStartIndex, yearStartIndex + 4), 10);\n\n\t fullYearDone = value.slice(yearStartIndex, yearStartIndex + 4).length === 4;\n\n\t date = this.getFixedDate(day, month, year);\n\t }\n\n\t // mm-yy || yy-mm\n\t if (value.length === 4 && (datePattern[0] === 'y' || datePattern[1] === 'y')) {\n\t monthStartIndex = datePattern[0] === 'm' ? 0 : 2;\n\t yearStartIndex = 2 - monthStartIndex;\n\t month = parseInt(value.slice(monthStartIndex, monthStartIndex + 2), 10);\n\t year = parseInt(value.slice(yearStartIndex, yearStartIndex + 2), 10);\n\n\t fullYearDone = value.slice(yearStartIndex, yearStartIndex + 2).length === 2;\n\n\t date = [0, month, year];\n\t }\n\n\t // mm-yyyy || yyyy-mm\n\t if (value.length === 6 && (datePattern[0] === 'Y' || datePattern[1] === 'Y')) {\n\t monthStartIndex = datePattern[0] === 'm' ? 0 : 4;\n\t yearStartIndex = 2 - 0.5 * monthStartIndex;\n\t month = parseInt(value.slice(monthStartIndex, monthStartIndex + 2), 10);\n\t year = parseInt(value.slice(yearStartIndex, yearStartIndex + 4), 10);\n\n\t fullYearDone = value.slice(yearStartIndex, yearStartIndex + 4).length === 4;\n\n\t date = [0, month, year];\n\t }\n\n\t date = owner.getRangeFixedDate(date);\n\t owner.date = date;\n\n\t var result = date.length === 0 ? value : datePattern.reduce(function (previous, current) {\n\t switch (current) {\n\t case 'd':\n\t return previous + (date[0] === 0 ? '' : owner.addLeadingZero(date[0]));\n\t case 'm':\n\t return previous + (date[1] === 0 ? '' : owner.addLeadingZero(date[1]));\n\t case 'y':\n\t return previous + (fullYearDone ? owner.addLeadingZeroForYear(date[2], false) : '');\n\t case 'Y':\n\t return previous + (fullYearDone ? owner.addLeadingZeroForYear(date[2], true) : '');\n\t }\n\t }, '');\n\n\t return result;\n\t },\n\n\t getRangeFixedDate: function getRangeFixedDate(date) {\n\t var owner = this,\n\t datePattern = owner.datePattern,\n\t dateMin = owner.dateMin || [],\n\t dateMax = owner.dateMax || [];\n\n\t if (!date.length || dateMin.length < 3 && dateMax.length < 3) return date;\n\n\t if (datePattern.find(function (x) {\n\t return x.toLowerCase() === 'y';\n\t }) && date[2] === 0) return date;\n\n\t if (dateMax.length && (dateMax[2] < date[2] || dateMax[2] === date[2] && (dateMax[1] < date[1] || dateMax[1] === date[1] && dateMax[0] < date[0]))) return dateMax;\n\n\t if (dateMin.length && (dateMin[2] > date[2] || dateMin[2] === date[2] && (dateMin[1] > date[1] || dateMin[1] === date[1] && dateMin[0] > date[0]))) return dateMin;\n\n\t return date;\n\t },\n\n\t getFixedDate: function getFixedDate(day, month, year) {\n\t day = Math.min(day, 31);\n\t month = Math.min(month, 12);\n\t year = parseInt(year || 0, 10);\n\n\t if (month < 7 && month % 2 === 0 || month > 8 && month % 2 === 1) {\n\t day = Math.min(day, month === 2 ? this.isLeapYear(year) ? 29 : 28 : 30);\n\t }\n\n\t return [day, month, year];\n\t },\n\n\t isLeapYear: function isLeapYear(year) {\n\t return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;\n\t },\n\n\t addLeadingZero: function addLeadingZero(number) {\n\t return (number < 10 ? '0' : '') + number;\n\t },\n\n\t addLeadingZeroForYear: function addLeadingZeroForYear(number, fullYearMode) {\n\t if (fullYearMode) {\n\t return (number < 10 ? '000' : number < 100 ? '00' : number < 1000 ? '0' : '') + number;\n\t }\n\n\t return (number < 10 ? '0' : '') + number;\n\t }\n\t};\n\n\tmodule.exports = DateFormatter;\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports) {\n\n\t'use strict';\n\n\tvar TimeFormatter = function TimeFormatter(timePattern, timeFormat) {\n\t var owner = this;\n\n\t owner.time = [];\n\t owner.blocks = [];\n\t owner.timePattern = timePattern;\n\t owner.timeFormat = timeFormat;\n\t owner.initBlocks();\n\t};\n\n\tTimeFormatter.prototype = {\n\t initBlocks: function initBlocks() {\n\t var owner = this;\n\t owner.timePattern.forEach(function () {\n\t owner.blocks.push(2);\n\t });\n\t },\n\n\t getISOFormatTime: function getISOFormatTime() {\n\t var owner = this,\n\t time = owner.time;\n\n\t return time[2] ? owner.addLeadingZero(time[0]) + ':' + owner.addLeadingZero(time[1]) + ':' + owner.addLeadingZero(time[2]) : '';\n\t },\n\n\t getBlocks: function getBlocks() {\n\t return this.blocks;\n\t },\n\n\t getTimeFormatOptions: function getTimeFormatOptions() {\n\t var owner = this;\n\t if (String(owner.timeFormat) === '12') {\n\t return {\n\t maxHourFirstDigit: 1,\n\t maxHours: 12,\n\t maxMinutesFirstDigit: 5,\n\t maxMinutes: 60\n\t };\n\t }\n\n\t return {\n\t maxHourFirstDigit: 2,\n\t maxHours: 23,\n\t maxMinutesFirstDigit: 5,\n\t maxMinutes: 60\n\t };\n\t },\n\n\t getValidatedTime: function getValidatedTime(value) {\n\t var owner = this,\n\t result = '';\n\n\t value = value.replace(/[^\\d]/g, '');\n\n\t var timeFormatOptions = owner.getTimeFormatOptions();\n\n\t owner.blocks.forEach(function (length, index) {\n\t if (value.length > 0) {\n\t var sub = value.slice(0, length),\n\t sub0 = sub.slice(0, 1),\n\t rest = value.slice(length);\n\n\t switch (owner.timePattern[index]) {\n\n\t case 'h':\n\t if (parseInt(sub0, 10) > timeFormatOptions.maxHourFirstDigit) {\n\t sub = '0' + sub0;\n\t } else if (parseInt(sub, 10) > timeFormatOptions.maxHours) {\n\t sub = timeFormatOptions.maxHours + '';\n\t }\n\n\t break;\n\n\t case 'm':\n\t case 's':\n\t if (parseInt(sub0, 10) > timeFormatOptions.maxMinutesFirstDigit) {\n\t sub = '0' + sub0;\n\t } else if (parseInt(sub, 10) > timeFormatOptions.maxMinutes) {\n\t sub = timeFormatOptions.maxMinutes + '';\n\t }\n\t break;\n\t }\n\n\t result += sub;\n\n\t // update remaining string\n\t value = rest;\n\t }\n\t });\n\n\t return this.getFixedTimeString(result);\n\t },\n\n\t getFixedTimeString: function getFixedTimeString(value) {\n\t var owner = this,\n\t timePattern = owner.timePattern,\n\t time = [],\n\t secondIndex = 0,\n\t minuteIndex = 0,\n\t hourIndex = 0,\n\t secondStartIndex = 0,\n\t minuteStartIndex = 0,\n\t hourStartIndex = 0,\n\t second,\n\t minute,\n\t hour;\n\n\t if (value.length === 6) {\n\t timePattern.forEach(function (type, index) {\n\t switch (type) {\n\t case 's':\n\t secondIndex = index * 2;\n\t break;\n\t case 'm':\n\t minuteIndex = index * 2;\n\t break;\n\t case 'h':\n\t hourIndex = index * 2;\n\t break;\n\t }\n\t });\n\n\t hourStartIndex = hourIndex;\n\t minuteStartIndex = minuteIndex;\n\t secondStartIndex = secondIndex;\n\n\t second = parseInt(value.slice(secondStartIndex, secondStartIndex + 2), 10);\n\t minute = parseInt(value.slice(minuteStartIndex, minuteStartIndex + 2), 10);\n\t hour = parseInt(value.slice(hourStartIndex, hourStartIndex + 2), 10);\n\n\t time = this.getFixedTime(hour, minute, second);\n\t }\n\n\t if (value.length === 4 && owner.timePattern.indexOf('s') < 0) {\n\t timePattern.forEach(function (type, index) {\n\t switch (type) {\n\t case 'm':\n\t minuteIndex = index * 2;\n\t break;\n\t case 'h':\n\t hourIndex = index * 2;\n\t break;\n\t }\n\t });\n\n\t hourStartIndex = hourIndex;\n\t minuteStartIndex = minuteIndex;\n\n\t second = 0;\n\t minute = parseInt(value.slice(minuteStartIndex, minuteStartIndex + 2), 10);\n\t hour = parseInt(value.slice(hourStartIndex, hourStartIndex + 2), 10);\n\n\t time = this.getFixedTime(hour, minute, second);\n\t }\n\n\t owner.time = time;\n\n\t return time.length === 0 ? value : timePattern.reduce(function (previous, current) {\n\t switch (current) {\n\t case 's':\n\t return previous + owner.addLeadingZero(time[2]);\n\t case 'm':\n\t return previous + owner.addLeadingZero(time[1]);\n\t case 'h':\n\t return previous + owner.addLeadingZero(time[0]);\n\t }\n\t }, '');\n\t },\n\n\t getFixedTime: function getFixedTime(hour, minute, second) {\n\t second = Math.min(parseInt(second || 0, 10), 60);\n\t minute = Math.min(minute, 60);\n\t hour = Math.min(hour, 60);\n\n\t return [hour, minute, second];\n\t },\n\n\t addLeadingZero: function addLeadingZero(number) {\n\t return (number < 10 ? '0' : '') + number;\n\t }\n\t};\n\n\tmodule.exports = TimeFormatter;\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports) {\n\n\t'use strict';\n\n\tvar PhoneFormatter = function PhoneFormatter(formatter, delimiter) {\n\t var owner = this;\n\n\t owner.delimiter = delimiter || delimiter === '' ? delimiter : ' ';\n\t owner.delimiterRE = delimiter ? new RegExp('\\\\' + delimiter, 'g') : '';\n\n\t owner.formatter = formatter;\n\t};\n\n\tPhoneFormatter.prototype = {\n\t setFormatter: function setFormatter(formatter) {\n\t this.formatter = formatter;\n\t },\n\n\t format: function format(phoneNumber) {\n\t var owner = this;\n\n\t owner.formatter.clear();\n\n\t // only keep number and +\n\t phoneNumber = phoneNumber.replace(/[^\\d+]/g, '');\n\n\t // strip non-leading +\n\t phoneNumber = phoneNumber.replace(/^\\+/, 'B').replace(/\\+/g, '').replace('B', '+');\n\n\t // strip delimiter\n\t phoneNumber = phoneNumber.replace(owner.delimiterRE, '');\n\n\t var result = '',\n\t current,\n\t validated = false;\n\n\t for (var i = 0, iMax = phoneNumber.length; i < iMax; i++) {\n\t current = owner.formatter.inputDigit(phoneNumber.charAt(i));\n\n\t // has ()- or space inside\n\t if (/[\\s()-]/g.test(current)) {\n\t result = current;\n\n\t validated = true;\n\t } else {\n\t if (!validated) {\n\t result = current;\n\t }\n\t // else: over length input\n\t // it turns to invalid number again\n\t }\n\t }\n\n\t // strip ()\n\t // e.g. US: 7161234567 returns (716) 123-4567\n\t result = result.replace(/[()]/g, '');\n\t // replace library delimiter with user customized delimiter\n\t result = result.replace(/[\\s-]/g, owner.delimiter);\n\n\t return result;\n\t }\n\t};\n\n\tmodule.exports = PhoneFormatter;\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports) {\n\n\t'use strict';\n\n\tvar CreditCardDetector = {\n\t blocks: {\n\t uatp: [4, 5, 6],\n\t amex: [4, 6, 5],\n\t diners: [4, 6, 4],\n\t discover: [4, 4, 4, 4],\n\t mastercard: [4, 4, 4, 4],\n\t dankort: [4, 4, 4, 4],\n\t instapayment: [4, 4, 4, 4],\n\t jcb15: [4, 6, 5],\n\t jcb: [4, 4, 4, 4],\n\t maestro: [4, 4, 4, 4],\n\t visa: [4, 4, 4, 4],\n\t mir: [4, 4, 4, 4],\n\t unionPay: [4, 4, 4, 4],\n\t general: [4, 4, 4, 4]\n\t },\n\n\t re: {\n\t // starts with 1; 15 digits, not starts with 1800 (jcb card)\n\t uatp: /^(?!1800)1\\d{0,14}/,\n\n\t // starts with 34/37; 15 digits\n\t amex: /^3[47]\\d{0,13}/,\n\n\t // starts with 6011/65/644-649; 16 digits\n\t discover: /^(?:6011|65\\d{0,2}|64[4-9]\\d?)\\d{0,12}/,\n\n\t // starts with 300-305/309 or 36/38/39; 14 digits\n\t diners: /^3(?:0([0-5]|9)|[689]\\d?)\\d{0,11}/,\n\n\t // starts with 51-55/2221–2720; 16 digits\n\t mastercard: /^(5[1-5]\\d{0,2}|22[2-9]\\d{0,1}|2[3-7]\\d{0,2})\\d{0,12}/,\n\n\t // starts with 5019/4175/4571; 16 digits\n\t dankort: /^(5019|4175|4571)\\d{0,12}/,\n\n\t // starts with 637-639; 16 digits\n\t instapayment: /^63[7-9]\\d{0,13}/,\n\n\t // starts with 2131/1800; 15 digits\n\t jcb15: /^(?:2131|1800)\\d{0,11}/,\n\n\t // starts with 2131/1800/35; 16 digits\n\t jcb: /^(?:35\\d{0,2})\\d{0,12}/,\n\n\t // starts with 50/56-58/6304/67; 16 digits\n\t maestro: /^(?:5[0678]\\d{0,2}|6304|67\\d{0,2})\\d{0,12}/,\n\n\t // starts with 22; 16 digits\n\t mir: /^220[0-4]\\d{0,12}/,\n\n\t // starts with 4; 16 digits\n\t visa: /^4\\d{0,15}/,\n\n\t // starts with 62/81; 16 digits\n\t unionPay: /^(62|81)\\d{0,14}/\n\t },\n\n\t getStrictBlocks: function getStrictBlocks(block) {\n\t var total = block.reduce(function (prev, current) {\n\t return prev + current;\n\t }, 0);\n\n\t return block.concat(19 - total);\n\t },\n\n\t getInfo: function getInfo(value, strictMode) {\n\t var blocks = CreditCardDetector.blocks,\n\t re = CreditCardDetector.re;\n\n\t // Some credit card can have up to 19 digits number.\n\t // Set strictMode to true will remove the 16 max-length restrain,\n\t // however, I never found any website validate card number like\n\t // this, hence probably you don't want to enable this option.\n\t strictMode = !!strictMode;\n\n\t for (var key in re) {\n\t if (re[key].test(value)) {\n\t var matchedBlocks = blocks[key];\n\t return {\n\t type: key,\n\t blocks: strictMode ? this.getStrictBlocks(matchedBlocks) : matchedBlocks\n\t };\n\t }\n\t }\n\n\t return {\n\t type: 'unknown',\n\t blocks: strictMode ? this.getStrictBlocks(blocks.general) : blocks.general\n\t };\n\t }\n\t};\n\n\tmodule.exports = CreditCardDetector;\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports) {\n\n\t'use strict';\n\n\tvar Util = {\n\t noop: function noop() {},\n\n\t strip: function strip(value, re) {\n\t return value.replace(re, '');\n\t },\n\n\t getPostDelimiter: function getPostDelimiter(value, delimiter, delimiters) {\n\t // single delimiter\n\t if (delimiters.length === 0) {\n\t return value.slice(-delimiter.length) === delimiter ? delimiter : '';\n\t }\n\n\t // multiple delimiters\n\t var matchedDelimiter = '';\n\t delimiters.forEach(function (current) {\n\t if (value.slice(-current.length) === current) {\n\t matchedDelimiter = current;\n\t }\n\t });\n\n\t return matchedDelimiter;\n\t },\n\n\t getDelimiterREByDelimiter: function getDelimiterREByDelimiter(delimiter) {\n\t return new RegExp(delimiter.replace(/([.?*+^$[\\]\\\\(){}|-])/g, '\\\\$1'), 'g');\n\t },\n\n\t getNextCursorPosition: function getNextCursorPosition(prevPos, oldValue, newValue, delimiter, delimiters) {\n\t // If cursor was at the end of value, just place it back.\n\t // Because new value could contain additional chars.\n\t if (oldValue.length === prevPos) {\n\t return newValue.length;\n\t }\n\n\t return prevPos + this.getPositionOffset(prevPos, oldValue, newValue, delimiter, delimiters);\n\t },\n\n\t getPositionOffset: function getPositionOffset(prevPos, oldValue, newValue, delimiter, delimiters) {\n\t var oldRawValue, newRawValue, lengthOffset;\n\n\t oldRawValue = this.stripDelimiters(oldValue.slice(0, prevPos), delimiter, delimiters);\n\t newRawValue = this.stripDelimiters(newValue.slice(0, prevPos), delimiter, delimiters);\n\t lengthOffset = oldRawValue.length - newRawValue.length;\n\n\t return lengthOffset !== 0 ? lengthOffset / Math.abs(lengthOffset) : 0;\n\t },\n\n\t stripDelimiters: function stripDelimiters(value, delimiter, delimiters) {\n\t var owner = this;\n\n\t // single delimiter\n\t if (delimiters.length === 0) {\n\t var delimiterRE = delimiter ? owner.getDelimiterREByDelimiter(delimiter) : '';\n\n\t return value.replace(delimiterRE, '');\n\t }\n\n\t // multiple delimiters\n\t delimiters.forEach(function (current) {\n\t current.split('').forEach(function (letter) {\n\t value = value.replace(owner.getDelimiterREByDelimiter(letter), '');\n\t });\n\t });\n\n\t return value;\n\t },\n\n\t headStr: function headStr(str, length) {\n\t return str.slice(0, length);\n\t },\n\n\t getMaxLength: function getMaxLength(blocks) {\n\t return blocks.reduce(function (previous, current) {\n\t return previous + current;\n\t }, 0);\n\t },\n\n\t // strip prefix\n\t // Before type | After type | Return value\n\t // PEFIX-... | PEFIX-... | ''\n\t // PREFIX-123 | PEFIX-123 | 123\n\t // PREFIX-123 | PREFIX-23 | 23\n\t // PREFIX-123 | PREFIX-1234 | 1234\n\t getPrefixStrippedValue: function getPrefixStrippedValue(value, prefix, prefixLength, prevResult, delimiter, delimiters, noImmediatePrefix, tailPrefix, signBeforePrefix) {\n\t // No prefix\n\t if (prefixLength === 0) {\n\t return value;\n\t }\n\n\t // Value is prefix\n\t if (value === prefix && value !== '') {\n\t return '';\n\t }\n\n\t if (signBeforePrefix && value.slice(0, 1) == '-') {\n\t var prev = prevResult.slice(0, 1) == '-' ? prevResult.slice(1) : prevResult;\n\t return '-' + this.getPrefixStrippedValue(value.slice(1), prefix, prefixLength, prev, delimiter, delimiters, noImmediatePrefix, tailPrefix, signBeforePrefix);\n\t }\n\n\t // Pre result prefix string does not match pre-defined prefix\n\t if (prevResult.slice(0, prefixLength) !== prefix && !tailPrefix) {\n\t // Check if the first time user entered something\n\t if (noImmediatePrefix && !prevResult && value) return value;\n\t return '';\n\t } else if (prevResult.slice(-prefixLength) !== prefix && tailPrefix) {\n\t // Check if the first time user entered something\n\t if (noImmediatePrefix && !prevResult && value) return value;\n\t return '';\n\t }\n\n\t var prevValue = this.stripDelimiters(prevResult, delimiter, delimiters);\n\n\t // New value has issue, someone typed in between prefix letters\n\t // Revert to pre value\n\t if (value.slice(0, prefixLength) !== prefix && !tailPrefix) {\n\t return prevValue.slice(prefixLength);\n\t } else if (value.slice(-prefixLength) !== prefix && tailPrefix) {\n\t return prevValue.slice(0, -prefixLength - 1);\n\t }\n\n\t // No issue, strip prefix for new value\n\t return tailPrefix ? value.slice(0, -prefixLength) : value.slice(prefixLength);\n\t },\n\n\t getFirstDiffIndex: function getFirstDiffIndex(prev, current) {\n\t var index = 0;\n\n\t while (prev.charAt(index) === current.charAt(index)) {\n\t if (prev.charAt(index++) === '') {\n\t return -1;\n\t }\n\t }\n\n\t return index;\n\t },\n\n\t getFormattedValue: function getFormattedValue(value, blocks, blocksLength, delimiter, delimiters, delimiterLazyShow) {\n\t var result = '',\n\t multipleDelimiters = delimiters.length > 0,\n\t currentDelimiter = '';\n\n\t // no options, normal input\n\t if (blocksLength === 0) {\n\t return value;\n\t }\n\n\t blocks.forEach(function (length, index) {\n\t if (value.length > 0) {\n\t var sub = value.slice(0, length),\n\t rest = value.slice(length);\n\n\t if (multipleDelimiters) {\n\t currentDelimiter = delimiters[delimiterLazyShow ? index - 1 : index] || currentDelimiter;\n\t } else {\n\t currentDelimiter = delimiter;\n\t }\n\n\t if (delimiterLazyShow) {\n\t if (index > 0) {\n\t result += currentDelimiter;\n\t }\n\n\t result += sub;\n\t } else {\n\t result += sub;\n\n\t if (sub.length === length && index < blocksLength - 1) {\n\t result += currentDelimiter;\n\t }\n\t }\n\n\t // update remaining string\n\t value = rest;\n\t }\n\t });\n\n\t return result;\n\t },\n\n\t // move cursor to the end\n\t // the first time user focuses on an input with prefix\n\t fixPrefixCursor: function fixPrefixCursor(el, prefix, delimiter, delimiters) {\n\t if (!el) {\n\t return;\n\t }\n\n\t var val = el.value,\n\t appendix = delimiter || delimiters[0] || ' ';\n\n\t if (!el.setSelectionRange || !prefix || prefix.length + appendix.length <= val.length) {\n\t return;\n\t }\n\n\t var len = val.length * 2;\n\n\t // set timeout to avoid blink\n\t setTimeout(function () {\n\t el.setSelectionRange(len, len);\n\t }, 1);\n\t },\n\n\t // Check if input field is fully selected\n\t checkFullSelection: function checkFullSelection(value) {\n\t try {\n\t var selection = window.getSelection() || document.getSelection() || {};\n\t return selection.toString().length === value.length;\n\t } catch (ex) {\n\t // Ignore\n\t }\n\n\t return false;\n\t },\n\n\t setSelection: function setSelection(element, position, doc) {\n\t if (element !== this.getActiveElement(doc)) {\n\t return;\n\t }\n\n\t // cursor is already in the end\n\t if (element && element.value.length <= position) {\n\t return;\n\t }\n\n\t if (element.createTextRange) {\n\t var range = element.createTextRange();\n\n\t range.move('character', position);\n\t range.select();\n\t } else {\n\t try {\n\t element.setSelectionRange(position, position);\n\t } catch (e) {\n\t // eslint-disable-next-line\n\t console.warn('The input element type does not support selection');\n\t }\n\t }\n\t },\n\n\t getActiveElement: function getActiveElement(parent) {\n\t var activeElement = parent.activeElement;\n\t if (activeElement && activeElement.shadowRoot) {\n\t return this.getActiveElement(activeElement.shadowRoot);\n\t }\n\t return activeElement;\n\t },\n\n\t isAndroid: function isAndroid() {\n\t return navigator && /android/i.test(navigator.userAgent);\n\t },\n\n\t // On Android chrome, the keyup and keydown events\n\t // always return key code 229 as a composition that\n\t // buffers the user’s keystrokes\n\t // see https://github.com/nosir/cleave.js/issues/147\n\t isAndroidBackspaceKeydown: function isAndroidBackspaceKeydown(lastInputValue, currentInputValue) {\n\t if (!this.isAndroid() || !lastInputValue || !currentInputValue) {\n\t return false;\n\t }\n\n\t return currentInputValue === lastInputValue.slice(0, -1);\n\t }\n\t};\n\n\tmodule.exports = Util;\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports) {\n\n\t'use strict';\n\n\t/**\n\t * Props Assignment\n\t *\n\t * Separate this, so react module can share the usage\n\t */\n\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n\tvar DefaultProperties = {\n\t // Maybe change to object-assign\n\t // for now just keep it as simple\n\t assign: function assign(target, opts) {\n\t target = target || {};\n\t opts = opts || {};\n\n\t // credit card\n\t target.creditCard = !!opts.creditCard;\n\t target.creditCardStrictMode = !!opts.creditCardStrictMode;\n\t target.creditCardType = '';\n\t target.onCreditCardTypeChanged = opts.onCreditCardTypeChanged || function () {};\n\n\t // phone\n\t target.phone = !!opts.phone;\n\t target.phoneRegionCode = opts.phoneRegionCode || 'AU';\n\t target.phoneFormatter = {};\n\n\t // time\n\t target.time = !!opts.time;\n\t target.timePattern = opts.timePattern || ['h', 'm', 's'];\n\t target.timeFormat = opts.timeFormat || '24';\n\t target.timeFormatter = {};\n\n\t // date\n\t target.date = !!opts.date;\n\t target.datePattern = opts.datePattern || ['d', 'm', 'Y'];\n\t target.dateMin = opts.dateMin || '';\n\t target.dateMax = opts.dateMax || '';\n\t target.dateFormatter = {};\n\n\t // numeral\n\t target.numeral = !!opts.numeral;\n\t target.numeralIntegerScale = opts.numeralIntegerScale > 0 ? opts.numeralIntegerScale : 0;\n\t target.numeralDecimalScale = opts.numeralDecimalScale >= 0 ? opts.numeralDecimalScale : 2;\n\t target.numeralDecimalMark = opts.numeralDecimalMark || '.';\n\t target.numeralThousandsGroupStyle = opts.numeralThousandsGroupStyle || 'thousand';\n\t target.numeralPositiveOnly = !!opts.numeralPositiveOnly;\n\t target.stripLeadingZeroes = opts.stripLeadingZeroes !== false;\n\t target.signBeforePrefix = !!opts.signBeforePrefix;\n\t target.tailPrefix = !!opts.tailPrefix;\n\n\t // others\n\t target.swapHiddenInput = !!opts.swapHiddenInput;\n\n\t target.numericOnly = target.creditCard || target.date || !!opts.numericOnly;\n\n\t target.uppercase = !!opts.uppercase;\n\t target.lowercase = !!opts.lowercase;\n\n\t target.prefix = target.creditCard || target.date ? '' : opts.prefix || '';\n\t target.noImmediatePrefix = !!opts.noImmediatePrefix;\n\t target.prefixLength = target.prefix.length;\n\t target.rawValueTrimPrefix = !!opts.rawValueTrimPrefix;\n\t target.copyDelimiter = !!opts.copyDelimiter;\n\n\t target.initValue = opts.initValue !== undefined && opts.initValue !== null ? opts.initValue.toString() : '';\n\n\t target.delimiter = opts.delimiter || opts.delimiter === '' ? opts.delimiter : opts.date ? '/' : opts.time ? ':' : opts.numeral ? ',' : opts.phone ? ' ' : ' ';\n\t target.delimiterLength = target.delimiter.length;\n\t target.delimiterLazyShow = !!opts.delimiterLazyShow;\n\t target.delimiters = opts.delimiters || [];\n\n\t target.blocks = opts.blocks || [];\n\t target.blocksLength = target.blocks.length;\n\n\t target.root = (typeof global === 'undefined' ? 'undefined' : _typeof(global)) === 'object' && global ? global : window;\n\t target.document = opts.document || target.root.document;\n\n\t target.maxLength = 0;\n\n\t target.backspace = false;\n\t target.result = '';\n\n\t target.onValueChanged = opts.onValueChanged || function () {};\n\n\t return target;\n\t }\n\t};\n\n\tmodule.exports = DefaultProperties;\n\n/***/ })\n/******/ ])\n});\n;","module.exports = require('./dist/cleave-react-node.js');\n","'use strict';\n\nvar types = require('./lib/card-types');\nvar clone = require('./lib/clone');\nvar findBestMatch = require('./lib/find-best-match');\nvar isValidInputType = require('./lib/is-valid-input-type');\nvar addMatchingCardsToResults = require('./lib/add-matching-cards-to-results');\n\nvar testOrder;\nvar customCards = {};\n\nvar cardNames = {\n VISA: 'visa',\n MASTERCARD: 'mastercard',\n AMERICAN_EXPRESS: 'american-express',\n DINERS_CLUB: 'diners-club',\n DISCOVER: 'discover',\n JCB: 'jcb',\n UNIONPAY: 'unionpay',\n MAESTRO: 'maestro',\n ELO: 'elo',\n MIR: 'mir',\n HIPER: 'hiper',\n HIPERCARD: 'hipercard'\n};\n\nvar ORIGINAL_TEST_ORDER = [\n cardNames.VISA,\n cardNames.MASTERCARD,\n cardNames.AMERICAN_EXPRESS,\n cardNames.DINERS_CLUB,\n cardNames.DISCOVER,\n cardNames.JCB,\n cardNames.UNIONPAY,\n cardNames.MAESTRO,\n cardNames.ELO,\n cardNames.MIR,\n cardNames.HIPER,\n cardNames.HIPERCARD\n];\n\ntestOrder = clone(ORIGINAL_TEST_ORDER);\n\nfunction findType(type) {\n return customCards[type] || types[type];\n}\n\nfunction getAllCardTypes() {\n return testOrder.map(function (type) {\n return clone(findType(type));\n });\n}\n\nfunction getCardPosition(name, ignoreErrorForNotExisting) {\n var position = testOrder.indexOf(name);\n\n if (!ignoreErrorForNotExisting && position === -1) {\n throw new Error('\"' + name + '\" is not a supported card type.');\n }\n\n return position;\n}\n\nfunction creditCardType(cardNumber) {\n var bestMatch;\n var results = [];\n\n if (!isValidInputType(cardNumber)) {\n return [];\n }\n\n if (cardNumber.length === 0) {\n return getAllCardTypes(testOrder);\n }\n\n testOrder.forEach(function (type) {\n var cardConfiguration = findType(type);\n\n addMatchingCardsToResults(cardNumber, cardConfiguration, results);\n });\n\n bestMatch = findBestMatch(results);\n\n if (bestMatch) {\n return [bestMatch];\n }\n\n return results;\n}\n\ncreditCardType.getTypeInfo = function (type) {\n return clone(findType(type));\n};\n\ncreditCardType.removeCard = function (name) {\n var position = getCardPosition(name);\n\n testOrder.splice(position, 1);\n};\n\ncreditCardType.addCard = function (config) {\n var existingCardPosition = getCardPosition(config.type, true);\n\n customCards[config.type] = config;\n\n if (existingCardPosition === -1) {\n testOrder.push(config.type);\n }\n};\n\ncreditCardType.updateCard = function (cardType, updates) {\n var clonedCard;\n var originalObject = customCards[cardType] || types[cardType];\n\n if (!originalObject) {\n throw new Error('\"' + cardType + '\" is not a recognized type. Use `addCard` instead.');\n }\n\n if (updates.type && originalObject.type !== updates.type) {\n throw new Error('Cannot overwrite type parameter.');\n }\n\n clonedCard = clone(originalObject, true);\n\n Object.keys(clonedCard).forEach(function (key) {\n if (updates[key]) {\n clonedCard[key] = updates[key];\n }\n });\n\n customCards[clonedCard.type] = clonedCard;\n};\n\ncreditCardType.changeOrder = function (name, position) {\n var currentPosition = getCardPosition(name);\n\n testOrder.splice(currentPosition, 1);\n testOrder.splice(position, 0, name);\n};\n\ncreditCardType.resetModifications = function () {\n testOrder = clone(ORIGINAL_TEST_ORDER);\n customCards = {};\n};\n\ncreditCardType.types = cardNames;\n\nmodule.exports = creditCardType;\n","'use strict';\n\nvar clone = require('./clone');\nvar matches = require('./matches');\n\nfunction addMatchingCardsToResults(cardNumber, cardConfiguration, results) {\n var i, pattern, patternLength, clonedCardConfiguration;\n\n for (i = 0; i < cardConfiguration.patterns.length; i++) {\n pattern = cardConfiguration.patterns[i];\n\n if (!matches(cardNumber, pattern)) {\n continue;\n }\n\n clonedCardConfiguration = clone(cardConfiguration);\n\n if (Array.isArray(pattern)) {\n patternLength = String(pattern[0]).length;\n } else {\n patternLength = String(pattern).length;\n }\n\n if (cardNumber.length >= patternLength) {\n clonedCardConfiguration.matchStrength = patternLength;\n }\n\n results.push(clonedCardConfiguration);\n break;\n }\n}\n\nmodule.exports = addMatchingCardsToResults;\n","'use strict';\n\nvar cardTypes = {\n visa: {\n niceType: 'Visa',\n type: 'visa',\n patterns: [\n 4\n ],\n gaps: [4, 8, 12],\n lengths: [16, 18, 19],\n code: {\n name: 'CVV',\n size: 3\n }\n },\n mastercard: {\n niceType: 'Mastercard',\n type: 'mastercard',\n patterns: [\n [51, 55],\n [2221, 2229],\n [223, 229],\n [23, 26],\n [270, 271],\n 2720\n ],\n gaps: [4, 8, 12],\n lengths: [16],\n code: {\n name: 'CVC',\n size: 3\n }\n },\n 'american-express': {\n niceType: 'American Express',\n type: 'american-express',\n patterns: [\n 34,\n 37\n ],\n gaps: [4, 10],\n lengths: [15],\n code: {\n name: 'CID',\n size: 4\n }\n },\n 'diners-club': {\n niceType: 'Diners Club',\n type: 'diners-club',\n patterns: [\n [300, 305],\n 36,\n 38,\n 39\n ],\n gaps: [4, 10],\n lengths: [14, 16, 19],\n code: {\n name: 'CVV',\n size: 3\n }\n },\n discover: {\n niceType: 'Discover',\n type: 'discover',\n patterns: [\n 6011,\n [644, 649],\n 65\n ],\n gaps: [4, 8, 12],\n lengths: [16, 19],\n code: {\n name: 'CID',\n size: 3\n }\n },\n jcb: {\n niceType: 'JCB',\n type: 'jcb',\n patterns: [\n 2131,\n 1800,\n [3528, 3589]\n ],\n gaps: [4, 8, 12],\n lengths: [16, 17, 18, 19],\n code: {\n name: 'CVV',\n size: 3\n }\n },\n unionpay: {\n niceType: 'UnionPay',\n type: 'unionpay',\n patterns: [\n 620,\n [624, 626],\n [62100, 62182],\n [62184, 62187],\n [62185, 62197],\n [62200, 62205],\n [622010, 622999],\n 622018,\n [622019, 622999],\n [62207, 62209],\n [622126, 622925],\n [623, 626],\n 6270,\n 6272,\n 6276,\n [627700, 627779],\n [627781, 627799],\n [6282, 6289],\n 6291,\n 6292\n ],\n gaps: [4, 8, 12],\n lengths: [14, 15, 16, 17, 18, 19],\n code: {\n name: 'CVN',\n size: 3\n }\n },\n maestro: {\n niceType: 'Maestro',\n type: 'maestro',\n patterns: [\n 493698,\n [500000, 506698],\n [506779, 508999],\n [56, 59],\n 63,\n 67,\n 6\n ],\n gaps: [4, 8, 12],\n lengths: [12, 13, 14, 15, 16, 17, 18, 19],\n code: {\n name: 'CVC',\n size: 3\n }\n },\n elo: {\n niceType: 'Elo',\n type: 'elo',\n patterns: [\n 401178,\n 401179,\n 438935,\n 457631,\n 457632,\n 431274,\n 451416,\n 457393,\n 504175,\n [506699, 506778],\n [509000, 509999],\n 627780,\n 636297,\n 636368,\n [650031, 650033],\n [650035, 650051],\n [650405, 650439],\n [650485, 650538],\n [650541, 650598],\n [650700, 650718],\n [650720, 650727],\n [650901, 650978],\n [651652, 651679],\n [655000, 655019],\n [655021, 655058]\n ],\n gaps: [4, 8, 12],\n lengths: [16],\n code: {\n name: 'CVE',\n size: 3\n }\n },\n mir: {\n niceType: 'Mir',\n type: 'mir',\n patterns: [\n [2200, 2204]\n ],\n gaps: [4, 8, 12],\n lengths: [16, 17, 18, 19],\n code: {\n name: 'CVP2',\n size: 3\n }\n },\n hiper: {\n niceType: 'Hiper',\n type: 'hiper',\n patterns: [\n 637095,\n 637568,\n 637599,\n 637609,\n 637612\n ],\n gaps: [4, 8, 12],\n lengths: [16],\n code: {\n name: 'CVC',\n size: 3\n }\n },\n hipercard: {\n niceType: 'Hipercard',\n type: 'hipercard',\n patterns: [\n 606282\n ],\n gaps: [4, 8, 12],\n lengths: [16],\n code: {\n name: 'CVC',\n size: 3\n }\n }\n};\n\nmodule.exports = cardTypes;\n","'use strict';\n\nfunction clone(originalObject) {\n var dupe;\n\n if (!originalObject) { return null; }\n\n dupe = JSON.parse(JSON.stringify(originalObject));\n\n return dupe;\n}\n\nmodule.exports = clone;\n","'use strict';\n\nfunction hasEnoughResultsToDetermineBestMatch(results) {\n var numberOfResultsWithMaxStrengthProperty = results.filter(function (result) {\n return result.matchStrength;\n }).length;\n\n // if all possible results have a maxStrength property\n // that means the card number is sufficiently long\n // enough to determine conclusively what the type is\n return numberOfResultsWithMaxStrengthProperty > 0 &&\n numberOfResultsWithMaxStrengthProperty === results.length;\n}\n\nfunction findBestMatch(results) {\n if (!hasEnoughResultsToDetermineBestMatch(results)) {\n return;\n }\n\n return results.reduce(function (bestMatch, result) { // eslint-disable-line consistent-return\n if (!bestMatch) {\n return result;\n }\n\n // if the current best match pattern is less specific\n // than this result, set the result as the new best match\n if (bestMatch.matchStrength < result.matchStrength) {\n return result;\n }\n\n return bestMatch;\n });\n}\n\nmodule.exports = findBestMatch;\n","'use strict';\n\nfunction isValidInputType(cardNumber) {\n return typeof cardNumber === 'string' || cardNumber instanceof String;\n}\n\nmodule.exports = isValidInputType;\n","'use strict';\n\n// Adapted from https://github.com/polvo-labs/card-type/blob/aaab11f80fa1939bccc8f24905a06ae3cd864356/src/cardType.js#L37-L42\nfunction matchesRange(cardNumber, min, max) {\n var maxLengthToCheck = String(min).length;\n var substr = cardNumber.substr(0, maxLengthToCheck);\n var integerRepresentationOfCardNumber = parseInt(substr, 10);\n\n min = parseInt(String(min).substr(0, substr.length), 10);\n max = parseInt(String(max).substr(0, substr.length), 10);\n\n return integerRepresentationOfCardNumber >= min && integerRepresentationOfCardNumber <= max;\n}\n\nfunction matchesPattern(cardNumber, pattern) {\n pattern = String(pattern);\n\n return pattern.substring(0, cardNumber.length) === cardNumber.substring(0, pattern.length);\n}\n\nfunction matches(cardNumber, pattern) {\n if (Array.isArray(pattern)) {\n return matchesRange(cardNumber, pattern[0], pattern[1]);\n }\n\n return matchesPattern(cardNumber, pattern);\n}\n\nmodule.exports = matches;\n","/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = escapeHtml;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '"';\n break;\n case 38: // &\n escape = '&';\n break;\n case 39: // '\n escape = ''';\n break;\n case 60: // <\n escape = '<';\n break;\n case 62: // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/**\n * Return true if `value` is object-like. A value is object-like if it's not\n * `null` and has a `typeof` result of \"object\".\n */\nexport default function isObjectLike(value) {\n return _typeof(value) == 'object' && value !== null;\n}\n","/**\n * Represents a location in a Source.\n */\n\n/**\n * Takes a Source and a UTF-8 character offset, and returns the corresponding\n * line and column as a SourceLocation.\n */\nexport function getLocation(source, position) {\n var lineRegexp = /\\r\\n|[\\n\\r]/g;\n var line = 1;\n var column = position + 1;\n var match;\n\n while ((match = lineRegexp.exec(source.body)) && match.index < position) {\n line += 1;\n column = position + 1 - (match.index + match[0].length);\n }\n\n return {\n line: line,\n column: column\n };\n}\n","import { getLocation } from \"./location.mjs\";\n/**\n * Render a helpful description of the location in the GraphQL Source document.\n */\n\nexport function printLocation(location) {\n return printSourceLocation(location.source, getLocation(location.source, location.start));\n}\n/**\n * Render a helpful description of the location in the GraphQL Source document.\n */\n\nexport function printSourceLocation(source, sourceLocation) {\n var firstLineColumnOffset = source.locationOffset.column - 1;\n var body = whitespace(firstLineColumnOffset) + source.body;\n var lineIndex = sourceLocation.line - 1;\n var lineOffset = source.locationOffset.line - 1;\n var lineNum = sourceLocation.line + lineOffset;\n var columnOffset = sourceLocation.line === 1 ? firstLineColumnOffset : 0;\n var columnNum = sourceLocation.column + columnOffset;\n var locationStr = \"\".concat(source.name, \":\").concat(lineNum, \":\").concat(columnNum, \"\\n\");\n var lines = body.split(/\\r\\n|[\\n\\r]/g);\n var locationLine = lines[lineIndex]; // Special case for minified documents\n\n if (locationLine.length > 120) {\n var subLineIndex = Math.floor(columnNum / 80);\n var subLineColumnNum = columnNum % 80;\n var subLines = [];\n\n for (var i = 0; i < locationLine.length; i += 80) {\n subLines.push(locationLine.slice(i, i + 80));\n }\n\n return locationStr + printPrefixedLines([[\"\".concat(lineNum), subLines[0]]].concat(subLines.slice(1, subLineIndex + 1).map(function (subLine) {\n return ['', subLine];\n }), [[' ', whitespace(subLineColumnNum - 1) + '^'], ['', subLines[subLineIndex + 1]]]));\n }\n\n return locationStr + printPrefixedLines([// Lines specified like this: [\"prefix\", \"string\"],\n [\"\".concat(lineNum - 1), lines[lineIndex - 1]], [\"\".concat(lineNum), locationLine], ['', whitespace(columnNum - 1) + '^'], [\"\".concat(lineNum + 1), lines[lineIndex + 1]]]);\n}\n\nfunction printPrefixedLines(lines) {\n var existingLines = lines.filter(function (_ref) {\n var _ = _ref[0],\n line = _ref[1];\n return line !== undefined;\n });\n var padLen = Math.max.apply(Math, existingLines.map(function (_ref2) {\n var prefix = _ref2[0];\n return prefix.length;\n }));\n return existingLines.map(function (_ref3) {\n var prefix = _ref3[0],\n line = _ref3[1];\n return leftPad(padLen, prefix) + (line ? ' | ' + line : ' |');\n }).join('\\n');\n}\n\nfunction whitespace(len) {\n return Array(len + 1).join(' ');\n}\n\nfunction leftPad(len, str) {\n return whitespace(len - str.length) + str;\n}\n","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _wrapNativeSuper(Class) { var _cache = typeof Map === \"function\" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== \"function\") { throw new TypeError(\"Super expression must either be null or a function\"); } if (typeof _cache !== \"undefined\") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }\n\nfunction _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _isNativeFunction(fn) { return Function.toString.call(fn).indexOf(\"[native code]\") !== -1; }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport isObjectLike from \"../jsutils/isObjectLike.mjs\";\nimport { SYMBOL_TO_STRING_TAG } from \"../polyfills/symbols.mjs\";\nimport { getLocation } from \"../language/location.mjs\";\nimport { printLocation, printSourceLocation } from \"../language/printLocation.mjs\";\n/**\n * A GraphQLError describes an Error found during the parse, validate, or\n * execute phases of performing a GraphQL operation. In addition to a message\n * and stack trace, it also includes information about the locations in a\n * GraphQL document and/or execution result that correspond to the Error.\n */\n\nexport var GraphQLError = /*#__PURE__*/function (_Error) {\n _inherits(GraphQLError, _Error);\n\n var _super = _createSuper(GraphQLError);\n\n /**\n * An array of { line, column } locations within the source GraphQL document\n * which correspond to this error.\n *\n * Errors during validation often contain multiple locations, for example to\n * point out two things with the same name. Errors during execution include a\n * single location, the field which produced the error.\n *\n * Enumerable, and appears in the result of JSON.stringify().\n */\n\n /**\n * An array describing the JSON-path into the execution response which\n * corresponds to this error. Only included for errors during execution.\n *\n * Enumerable, and appears in the result of JSON.stringify().\n */\n\n /**\n * An array of GraphQL AST Nodes corresponding to this error.\n */\n\n /**\n * The source GraphQL document for the first location of this error.\n *\n * Note that if this Error represents more than one node, the source may not\n * represent nodes after the first node.\n */\n\n /**\n * An array of character offsets within the source GraphQL document\n * which correspond to this error.\n */\n\n /**\n * The original error thrown from a field resolver during execution.\n */\n\n /**\n * Extension fields to add to the formatted error.\n */\n function GraphQLError(message, nodes, source, positions, path, originalError, extensions) {\n var _nodeLocations, _nodeLocations2, _nodeLocations3;\n\n var _this;\n\n _classCallCheck(this, GraphQLError);\n\n _this = _super.call(this, message);\n _this.name = 'GraphQLError';\n _this.originalError = originalError !== null && originalError !== void 0 ? originalError : undefined; // Compute list of blame nodes.\n\n _this.nodes = undefinedIfEmpty(Array.isArray(nodes) ? nodes : nodes ? [nodes] : undefined);\n var nodeLocations = [];\n\n for (var _i2 = 0, _ref3 = (_this$nodes = _this.nodes) !== null && _this$nodes !== void 0 ? _this$nodes : []; _i2 < _ref3.length; _i2++) {\n var _this$nodes;\n\n var _ref4 = _ref3[_i2];\n var loc = _ref4.loc;\n\n if (loc != null) {\n nodeLocations.push(loc);\n }\n }\n\n nodeLocations = undefinedIfEmpty(nodeLocations); // Compute locations in the source for the given nodes/positions.\n\n _this.source = source !== null && source !== void 0 ? source : (_nodeLocations = nodeLocations) === null || _nodeLocations === void 0 ? void 0 : _nodeLocations[0].source;\n _this.positions = positions !== null && positions !== void 0 ? positions : (_nodeLocations2 = nodeLocations) === null || _nodeLocations2 === void 0 ? void 0 : _nodeLocations2.map(function (loc) {\n return loc.start;\n });\n _this.locations = positions && source ? positions.map(function (pos) {\n return getLocation(source, pos);\n }) : (_nodeLocations3 = nodeLocations) === null || _nodeLocations3 === void 0 ? void 0 : _nodeLocations3.map(function (loc) {\n return getLocation(loc.source, loc.start);\n });\n _this.path = path !== null && path !== void 0 ? path : undefined;\n var originalExtensions = originalError === null || originalError === void 0 ? void 0 : originalError.extensions;\n\n if (extensions == null && isObjectLike(originalExtensions)) {\n _this.extensions = _objectSpread({}, originalExtensions);\n } else {\n _this.extensions = extensions !== null && extensions !== void 0 ? extensions : {};\n } // By being enumerable, JSON.stringify will include bellow properties in the resulting output.\n // This ensures that the simplest possible GraphQL service adheres to the spec.\n\n\n Object.defineProperties(_assertThisInitialized(_this), {\n message: {\n enumerable: true\n },\n locations: {\n enumerable: _this.locations != null\n },\n path: {\n enumerable: _this.path != null\n },\n extensions: {\n enumerable: _this.extensions != null && Object.keys(_this.extensions).length > 0\n },\n name: {\n enumerable: false\n },\n nodes: {\n enumerable: false\n },\n source: {\n enumerable: false\n },\n positions: {\n enumerable: false\n },\n originalError: {\n enumerable: false\n }\n }); // Include (non-enumerable) stack trace.\n\n if (originalError !== null && originalError !== void 0 && originalError.stack) {\n Object.defineProperty(_assertThisInitialized(_this), 'stack', {\n value: originalError.stack,\n writable: true,\n configurable: true\n });\n return _possibleConstructorReturn(_this);\n } // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')\n\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(_assertThisInitialized(_this), GraphQLError);\n } else {\n Object.defineProperty(_assertThisInitialized(_this), 'stack', {\n value: Error().stack,\n writable: true,\n configurable: true\n });\n }\n\n return _this;\n }\n\n _createClass(GraphQLError, [{\n key: \"toString\",\n value: function toString() {\n return printError(this);\n } // FIXME: workaround to not break chai comparisons, should be remove in v16\n // $FlowFixMe[unsupported-syntax] Flow doesn't support computed properties yet\n\n }, {\n key: SYMBOL_TO_STRING_TAG,\n get: function get() {\n return 'Object';\n }\n }]);\n\n return GraphQLError;\n}( /*#__PURE__*/_wrapNativeSuper(Error));\n\nfunction undefinedIfEmpty(array) {\n return array === undefined || array.length === 0 ? undefined : array;\n}\n/**\n * Prints a GraphQLError to a string, representing useful location information\n * about the error's position in the source.\n */\n\n\nexport function printError(error) {\n var output = error.message;\n\n if (error.nodes) {\n for (var _i4 = 0, _error$nodes2 = error.nodes; _i4 < _error$nodes2.length; _i4++) {\n var node = _error$nodes2[_i4];\n\n if (node.loc) {\n output += '\\n\\n' + printLocation(node.loc);\n }\n }\n } else if (error.source && error.locations) {\n for (var _i6 = 0, _error$locations2 = error.locations; _i6 < _error$locations2.length; _i6++) {\n var location = _error$locations2[_i6];\n output += '\\n\\n' + printSourceLocation(error.source, location);\n }\n }\n\n return output;\n}\n","import { GraphQLError } from \"./GraphQLError.mjs\";\n/**\n * Produces a GraphQLError representing a syntax error, containing useful\n * descriptive information about the syntax error's position in the source.\n */\n\nexport function syntaxError(source, position, description) {\n return new GraphQLError(\"Syntax Error: \".concat(description), undefined, source, [position]);\n}\n","/**\n * An exported enum describing the different kinds of tokens that the\n * lexer emits.\n */\nexport var TokenKind = Object.freeze({\n SOF: '',\n EOF: '',\n BANG: '!',\n DOLLAR: '$',\n AMP: '&',\n PAREN_L: '(',\n PAREN_R: ')',\n SPREAD: '...',\n COLON: ':',\n EQUALS: '=',\n AT: '@',\n BRACKET_L: '[',\n BRACKET_R: ']',\n BRACE_L: '{',\n PIPE: '|',\n BRACE_R: '}',\n NAME: 'Name',\n INT: 'Int',\n FLOAT: 'Float',\n STRING: 'String',\n BLOCK_STRING: 'BlockString',\n COMMENT: 'Comment'\n});\n/**\n * The enum type representing the token kinds values.\n */\n","/**\n * The set of allowed directive location values.\n */\nexport var DirectiveLocation = Object.freeze({\n // Request Definitions\n QUERY: 'QUERY',\n MUTATION: 'MUTATION',\n SUBSCRIPTION: 'SUBSCRIPTION',\n FIELD: 'FIELD',\n FRAGMENT_DEFINITION: 'FRAGMENT_DEFINITION',\n FRAGMENT_SPREAD: 'FRAGMENT_SPREAD',\n INLINE_FRAGMENT: 'INLINE_FRAGMENT',\n VARIABLE_DEFINITION: 'VARIABLE_DEFINITION',\n // Type System Definitions\n SCHEMA: 'SCHEMA',\n SCALAR: 'SCALAR',\n OBJECT: 'OBJECT',\n FIELD_DEFINITION: 'FIELD_DEFINITION',\n ARGUMENT_DEFINITION: 'ARGUMENT_DEFINITION',\n INTERFACE: 'INTERFACE',\n UNION: 'UNION',\n ENUM: 'ENUM',\n ENUM_VALUE: 'ENUM_VALUE',\n INPUT_OBJECT: 'INPUT_OBJECT',\n INPUT_FIELD_DEFINITION: 'INPUT_FIELD_DEFINITION'\n});\n/**\n * The enum type representing the directive location values.\n */\n","import { syntaxError } from \"../error/syntaxError.mjs\";\nimport { Token } from \"./ast.mjs\";\nimport { TokenKind } from \"./tokenKind.mjs\";\nimport { dedentBlockStringValue } from \"./blockString.mjs\";\n/**\n * Given a Source object, creates a Lexer for that source.\n * A Lexer is a stateful stream generator in that every time\n * it is advanced, it returns the next token in the Source. Assuming the\n * source lexes, the final Token emitted by the lexer will be of kind\n * EOF, after which the lexer will repeatedly return the same EOF token\n * whenever called.\n */\n\nexport var Lexer = /*#__PURE__*/function () {\n /**\n * The previously focused non-ignored token.\n */\n\n /**\n * The currently focused non-ignored token.\n */\n\n /**\n * The (1-indexed) line containing the current token.\n */\n\n /**\n * The character offset at which the current line begins.\n */\n function Lexer(source) {\n var startOfFileToken = new Token(TokenKind.SOF, 0, 0, 0, 0, null);\n this.source = source;\n this.lastToken = startOfFileToken;\n this.token = startOfFileToken;\n this.line = 1;\n this.lineStart = 0;\n }\n /**\n * Advances the token stream to the next non-ignored token.\n */\n\n\n var _proto = Lexer.prototype;\n\n _proto.advance = function advance() {\n this.lastToken = this.token;\n var token = this.token = this.lookahead();\n return token;\n }\n /**\n * Looks ahead and returns the next non-ignored token, but does not change\n * the state of Lexer.\n */\n ;\n\n _proto.lookahead = function lookahead() {\n var token = this.token;\n\n if (token.kind !== TokenKind.EOF) {\n do {\n var _token$next;\n\n // Note: next is only mutable during parsing, so we cast to allow this.\n token = (_token$next = token.next) !== null && _token$next !== void 0 ? _token$next : token.next = readToken(this, token);\n } while (token.kind === TokenKind.COMMENT);\n }\n\n return token;\n };\n\n return Lexer;\n}();\n/**\n * @internal\n */\n\nexport function isPunctuatorTokenKind(kind) {\n return kind === TokenKind.BANG || kind === TokenKind.DOLLAR || kind === TokenKind.AMP || kind === TokenKind.PAREN_L || kind === TokenKind.PAREN_R || kind === TokenKind.SPREAD || kind === TokenKind.COLON || kind === TokenKind.EQUALS || kind === TokenKind.AT || kind === TokenKind.BRACKET_L || kind === TokenKind.BRACKET_R || kind === TokenKind.BRACE_L || kind === TokenKind.PIPE || kind === TokenKind.BRACE_R;\n}\n\nfunction printCharCode(code) {\n return (// NaN/undefined represents access beyond the end of the file.\n isNaN(code) ? TokenKind.EOF : // Trust JSON for ASCII.\n code < 0x007f ? JSON.stringify(String.fromCharCode(code)) : // Otherwise print the escaped form.\n \"\\\"\\\\u\".concat(('00' + code.toString(16).toUpperCase()).slice(-4), \"\\\"\")\n );\n}\n/**\n * Gets the next token from the source starting at the given position.\n *\n * This skips over whitespace until it finds the next lexable token, then lexes\n * punctuators immediately or calls the appropriate helper function for more\n * complicated tokens.\n */\n\n\nfunction readToken(lexer, prev) {\n var source = lexer.source;\n var body = source.body;\n var bodyLength = body.length;\n var pos = prev.end;\n\n while (pos < bodyLength) {\n var code = body.charCodeAt(pos);\n var _line = lexer.line;\n\n var _col = 1 + pos - lexer.lineStart; // SourceCharacter\n\n\n switch (code) {\n case 0xfeff: // \n\n case 9: // \\t\n\n case 32: // \n\n case 44:\n // ,\n ++pos;\n continue;\n\n case 10:\n // \\n\n ++pos;\n ++lexer.line;\n lexer.lineStart = pos;\n continue;\n\n case 13:\n // \\r\n if (body.charCodeAt(pos + 1) === 10) {\n pos += 2;\n } else {\n ++pos;\n }\n\n ++lexer.line;\n lexer.lineStart = pos;\n continue;\n\n case 33:\n // !\n return new Token(TokenKind.BANG, pos, pos + 1, _line, _col, prev);\n\n case 35:\n // #\n return readComment(source, pos, _line, _col, prev);\n\n case 36:\n // $\n return new Token(TokenKind.DOLLAR, pos, pos + 1, _line, _col, prev);\n\n case 38:\n // &\n return new Token(TokenKind.AMP, pos, pos + 1, _line, _col, prev);\n\n case 40:\n // (\n return new Token(TokenKind.PAREN_L, pos, pos + 1, _line, _col, prev);\n\n case 41:\n // )\n return new Token(TokenKind.PAREN_R, pos, pos + 1, _line, _col, prev);\n\n case 46:\n // .\n if (body.charCodeAt(pos + 1) === 46 && body.charCodeAt(pos + 2) === 46) {\n return new Token(TokenKind.SPREAD, pos, pos + 3, _line, _col, prev);\n }\n\n break;\n\n case 58:\n // :\n return new Token(TokenKind.COLON, pos, pos + 1, _line, _col, prev);\n\n case 61:\n // =\n return new Token(TokenKind.EQUALS, pos, pos + 1, _line, _col, prev);\n\n case 64:\n // @\n return new Token(TokenKind.AT, pos, pos + 1, _line, _col, prev);\n\n case 91:\n // [\n return new Token(TokenKind.BRACKET_L, pos, pos + 1, _line, _col, prev);\n\n case 93:\n // ]\n return new Token(TokenKind.BRACKET_R, pos, pos + 1, _line, _col, prev);\n\n case 123:\n // {\n return new Token(TokenKind.BRACE_L, pos, pos + 1, _line, _col, prev);\n\n case 124:\n // |\n return new Token(TokenKind.PIPE, pos, pos + 1, _line, _col, prev);\n\n case 125:\n // }\n return new Token(TokenKind.BRACE_R, pos, pos + 1, _line, _col, prev);\n\n case 34:\n // \"\n if (body.charCodeAt(pos + 1) === 34 && body.charCodeAt(pos + 2) === 34) {\n return readBlockString(source, pos, _line, _col, prev, lexer);\n }\n\n return readString(source, pos, _line, _col, prev);\n\n case 45: // -\n\n case 48: // 0\n\n case 49: // 1\n\n case 50: // 2\n\n case 51: // 3\n\n case 52: // 4\n\n case 53: // 5\n\n case 54: // 6\n\n case 55: // 7\n\n case 56: // 8\n\n case 57:\n // 9\n return readNumber(source, pos, code, _line, _col, prev);\n\n case 65: // A\n\n case 66: // B\n\n case 67: // C\n\n case 68: // D\n\n case 69: // E\n\n case 70: // F\n\n case 71: // G\n\n case 72: // H\n\n case 73: // I\n\n case 74: // J\n\n case 75: // K\n\n case 76: // L\n\n case 77: // M\n\n case 78: // N\n\n case 79: // O\n\n case 80: // P\n\n case 81: // Q\n\n case 82: // R\n\n case 83: // S\n\n case 84: // T\n\n case 85: // U\n\n case 86: // V\n\n case 87: // W\n\n case 88: // X\n\n case 89: // Y\n\n case 90: // Z\n\n case 95: // _\n\n case 97: // a\n\n case 98: // b\n\n case 99: // c\n\n case 100: // d\n\n case 101: // e\n\n case 102: // f\n\n case 103: // g\n\n case 104: // h\n\n case 105: // i\n\n case 106: // j\n\n case 107: // k\n\n case 108: // l\n\n case 109: // m\n\n case 110: // n\n\n case 111: // o\n\n case 112: // p\n\n case 113: // q\n\n case 114: // r\n\n case 115: // s\n\n case 116: // t\n\n case 117: // u\n\n case 118: // v\n\n case 119: // w\n\n case 120: // x\n\n case 121: // y\n\n case 122:\n // z\n return readName(source, pos, _line, _col, prev);\n }\n\n throw syntaxError(source, pos, unexpectedCharacterMessage(code));\n }\n\n var line = lexer.line;\n var col = 1 + pos - lexer.lineStart;\n return new Token(TokenKind.EOF, bodyLength, bodyLength, line, col, prev);\n}\n/**\n * Report a message that an unexpected character was encountered.\n */\n\n\nfunction unexpectedCharacterMessage(code) {\n if (code < 0x0020 && code !== 0x0009 && code !== 0x000a && code !== 0x000d) {\n return \"Cannot contain the invalid character \".concat(printCharCode(code), \".\");\n }\n\n if (code === 39) {\n // '\n return 'Unexpected single quote character (\\'), did you mean to use a double quote (\")?';\n }\n\n return \"Cannot parse the unexpected character \".concat(printCharCode(code), \".\");\n}\n/**\n * Reads a comment token from the source file.\n *\n * #[\\u0009\\u0020-\\uFFFF]*\n */\n\n\nfunction readComment(source, start, line, col, prev) {\n var body = source.body;\n var code;\n var position = start;\n\n do {\n code = body.charCodeAt(++position);\n } while (!isNaN(code) && ( // SourceCharacter but not LineTerminator\n code > 0x001f || code === 0x0009));\n\n return new Token(TokenKind.COMMENT, start, position, line, col, prev, body.slice(start + 1, position));\n}\n/**\n * Reads a number token from the source file, either a float\n * or an int depending on whether a decimal point appears.\n *\n * Int: -?(0|[1-9][0-9]*)\n * Float: -?(0|[1-9][0-9]*)(\\.[0-9]+)?((E|e)(+|-)?[0-9]+)?\n */\n\n\nfunction readNumber(source, start, firstCode, line, col, prev) {\n var body = source.body;\n var code = firstCode;\n var position = start;\n var isFloat = false;\n\n if (code === 45) {\n // -\n code = body.charCodeAt(++position);\n }\n\n if (code === 48) {\n // 0\n code = body.charCodeAt(++position);\n\n if (code >= 48 && code <= 57) {\n throw syntaxError(source, position, \"Invalid number, unexpected digit after 0: \".concat(printCharCode(code), \".\"));\n }\n } else {\n position = readDigits(source, position, code);\n code = body.charCodeAt(position);\n }\n\n if (code === 46) {\n // .\n isFloat = true;\n code = body.charCodeAt(++position);\n position = readDigits(source, position, code);\n code = body.charCodeAt(position);\n }\n\n if (code === 69 || code === 101) {\n // E e\n isFloat = true;\n code = body.charCodeAt(++position);\n\n if (code === 43 || code === 45) {\n // + -\n code = body.charCodeAt(++position);\n }\n\n position = readDigits(source, position, code);\n code = body.charCodeAt(position);\n } // Numbers cannot be followed by . or NameStart\n\n\n if (code === 46 || isNameStart(code)) {\n throw syntaxError(source, position, \"Invalid number, expected digit but got: \".concat(printCharCode(code), \".\"));\n }\n\n return new Token(isFloat ? TokenKind.FLOAT : TokenKind.INT, start, position, line, col, prev, body.slice(start, position));\n}\n/**\n * Returns the new position in the source after reading digits.\n */\n\n\nfunction readDigits(source, start, firstCode) {\n var body = source.body;\n var position = start;\n var code = firstCode;\n\n if (code >= 48 && code <= 57) {\n // 0 - 9\n do {\n code = body.charCodeAt(++position);\n } while (code >= 48 && code <= 57); // 0 - 9\n\n\n return position;\n }\n\n throw syntaxError(source, position, \"Invalid number, expected digit but got: \".concat(printCharCode(code), \".\"));\n}\n/**\n * Reads a string token from the source file.\n *\n * \"([^\"\\\\\\u000A\\u000D]|(\\\\(u[0-9a-fA-F]{4}|[\"\\\\/bfnrt])))*\"\n */\n\n\nfunction readString(source, start, line, col, prev) {\n var body = source.body;\n var position = start + 1;\n var chunkStart = position;\n var code = 0;\n var value = '';\n\n while (position < body.length && !isNaN(code = body.charCodeAt(position)) && // not LineTerminator\n code !== 0x000a && code !== 0x000d) {\n // Closing Quote (\")\n if (code === 34) {\n value += body.slice(chunkStart, position);\n return new Token(TokenKind.STRING, start, position + 1, line, col, prev, value);\n } // SourceCharacter\n\n\n if (code < 0x0020 && code !== 0x0009) {\n throw syntaxError(source, position, \"Invalid character within String: \".concat(printCharCode(code), \".\"));\n }\n\n ++position;\n\n if (code === 92) {\n // \\\n value += body.slice(chunkStart, position - 1);\n code = body.charCodeAt(position);\n\n switch (code) {\n case 34:\n value += '\"';\n break;\n\n case 47:\n value += '/';\n break;\n\n case 92:\n value += '\\\\';\n break;\n\n case 98:\n value += '\\b';\n break;\n\n case 102:\n value += '\\f';\n break;\n\n case 110:\n value += '\\n';\n break;\n\n case 114:\n value += '\\r';\n break;\n\n case 116:\n value += '\\t';\n break;\n\n case 117:\n {\n // uXXXX\n var charCode = uniCharCode(body.charCodeAt(position + 1), body.charCodeAt(position + 2), body.charCodeAt(position + 3), body.charCodeAt(position + 4));\n\n if (charCode < 0) {\n var invalidSequence = body.slice(position + 1, position + 5);\n throw syntaxError(source, position, \"Invalid character escape sequence: \\\\u\".concat(invalidSequence, \".\"));\n }\n\n value += String.fromCharCode(charCode);\n position += 4;\n break;\n }\n\n default:\n throw syntaxError(source, position, \"Invalid character escape sequence: \\\\\".concat(String.fromCharCode(code), \".\"));\n }\n\n ++position;\n chunkStart = position;\n }\n }\n\n throw syntaxError(source, position, 'Unterminated string.');\n}\n/**\n * Reads a block string token from the source file.\n *\n * \"\"\"(\"?\"?(\\\\\"\"\"|\\\\(?!=\"\"\")|[^\"\\\\]))*\"\"\"\n */\n\n\nfunction readBlockString(source, start, line, col, prev, lexer) {\n var body = source.body;\n var position = start + 3;\n var chunkStart = position;\n var code = 0;\n var rawValue = '';\n\n while (position < body.length && !isNaN(code = body.charCodeAt(position))) {\n // Closing Triple-Quote (\"\"\")\n if (code === 34 && body.charCodeAt(position + 1) === 34 && body.charCodeAt(position + 2) === 34) {\n rawValue += body.slice(chunkStart, position);\n return new Token(TokenKind.BLOCK_STRING, start, position + 3, line, col, prev, dedentBlockStringValue(rawValue));\n } // SourceCharacter\n\n\n if (code < 0x0020 && code !== 0x0009 && code !== 0x000a && code !== 0x000d) {\n throw syntaxError(source, position, \"Invalid character within String: \".concat(printCharCode(code), \".\"));\n }\n\n if (code === 10) {\n // new line\n ++position;\n ++lexer.line;\n lexer.lineStart = position;\n } else if (code === 13) {\n // carriage return\n if (body.charCodeAt(position + 1) === 10) {\n position += 2;\n } else {\n ++position;\n }\n\n ++lexer.line;\n lexer.lineStart = position;\n } else if ( // Escape Triple-Quote (\\\"\"\")\n code === 92 && body.charCodeAt(position + 1) === 34 && body.charCodeAt(position + 2) === 34 && body.charCodeAt(position + 3) === 34) {\n rawValue += body.slice(chunkStart, position) + '\"\"\"';\n position += 4;\n chunkStart = position;\n } else {\n ++position;\n }\n }\n\n throw syntaxError(source, position, 'Unterminated string.');\n}\n/**\n * Converts four hexadecimal chars to the integer that the\n * string represents. For example, uniCharCode('0','0','0','f')\n * will return 15, and uniCharCode('0','0','f','f') returns 255.\n *\n * Returns a negative number on error, if a char was invalid.\n *\n * This is implemented by noting that char2hex() returns -1 on error,\n * which means the result of ORing the char2hex() will also be negative.\n */\n\n\nfunction uniCharCode(a, b, c, d) {\n return char2hex(a) << 12 | char2hex(b) << 8 | char2hex(c) << 4 | char2hex(d);\n}\n/**\n * Converts a hex character to its integer value.\n * '0' becomes 0, '9' becomes 9\n * 'A' becomes 10, 'F' becomes 15\n * 'a' becomes 10, 'f' becomes 15\n *\n * Returns -1 on error.\n */\n\n\nfunction char2hex(a) {\n return a >= 48 && a <= 57 ? a - 48 // 0-9\n : a >= 65 && a <= 70 ? a - 55 // A-F\n : a >= 97 && a <= 102 ? a - 87 // a-f\n : -1;\n}\n/**\n * Reads an alphanumeric + underscore name from the source.\n *\n * [_A-Za-z][_0-9A-Za-z]*\n */\n\n\nfunction readName(source, start, line, col, prev) {\n var body = source.body;\n var bodyLength = body.length;\n var position = start + 1;\n var code = 0;\n\n while (position !== bodyLength && !isNaN(code = body.charCodeAt(position)) && (code === 95 || // _\n code >= 48 && code <= 57 || // 0-9\n code >= 65 && code <= 90 || // A-Z\n code >= 97 && code <= 122) // a-z\n ) {\n ++position;\n }\n\n return new Token(TokenKind.NAME, start, position, line, col, prev, body.slice(start, position));\n} // _ A-Z a-z\n\n\nfunction isNameStart(code) {\n return code === 95 || code >= 65 && code <= 90 || code >= 97 && code <= 122;\n}\n","import { syntaxError } from \"../error/syntaxError.mjs\";\nimport { Kind } from \"./kinds.mjs\";\nimport { Location } from \"./ast.mjs\";\nimport { TokenKind } from \"./tokenKind.mjs\";\nimport { Source, isSource } from \"./source.mjs\";\nimport { DirectiveLocation } from \"./directiveLocation.mjs\";\nimport { Lexer, isPunctuatorTokenKind } from \"./lexer.mjs\";\n/**\n * Configuration options to control parser behavior\n */\n\n/**\n * Given a GraphQL source, parses it into a Document.\n * Throws GraphQLError if a syntax error is encountered.\n */\nexport function parse(source, options) {\n var parser = new Parser(source, options);\n return parser.parseDocument();\n}\n/**\n * Given a string containing a GraphQL value (ex. `[42]`), parse the AST for\n * that value.\n * Throws GraphQLError if a syntax error is encountered.\n *\n * This is useful within tools that operate upon GraphQL Values directly and\n * in isolation of complete GraphQL documents.\n *\n * Consider providing the results to the utility function: valueFromAST().\n */\n\nexport function parseValue(source, options) {\n var parser = new Parser(source, options);\n parser.expectToken(TokenKind.SOF);\n var value = parser.parseValueLiteral(false);\n parser.expectToken(TokenKind.EOF);\n return value;\n}\n/**\n * Given a string containing a GraphQL Type (ex. `[Int!]`), parse the AST for\n * that type.\n * Throws GraphQLError if a syntax error is encountered.\n *\n * This is useful within tools that operate upon GraphQL Types directly and\n * in isolation of complete GraphQL documents.\n *\n * Consider providing the results to the utility function: typeFromAST().\n */\n\nexport function parseType(source, options) {\n var parser = new Parser(source, options);\n parser.expectToken(TokenKind.SOF);\n var type = parser.parseTypeReference();\n parser.expectToken(TokenKind.EOF);\n return type;\n}\n/**\n * This class is exported only to assist people in implementing their own parsers\n * without duplicating too much code and should be used only as last resort for cases\n * such as experimental syntax or if certain features could not be contributed upstream.\n *\n * It is still part of the internal API and is versioned, so any changes to it are never\n * considered breaking changes. If you still need to support multiple versions of the\n * library, please use the `versionInfo` variable for version detection.\n *\n * @internal\n */\n\nexport var Parser = /*#__PURE__*/function () {\n function Parser(source, options) {\n var sourceObj = isSource(source) ? source : new Source(source);\n this._lexer = new Lexer(sourceObj);\n this._options = options;\n }\n /**\n * Converts a name lex token into a name parse node.\n */\n\n\n var _proto = Parser.prototype;\n\n _proto.parseName = function parseName() {\n var token = this.expectToken(TokenKind.NAME);\n return {\n kind: Kind.NAME,\n value: token.value,\n loc: this.loc(token)\n };\n } // Implements the parsing rules in the Document section.\n\n /**\n * Document : Definition+\n */\n ;\n\n _proto.parseDocument = function parseDocument() {\n var start = this._lexer.token;\n return {\n kind: Kind.DOCUMENT,\n definitions: this.many(TokenKind.SOF, this.parseDefinition, TokenKind.EOF),\n loc: this.loc(start)\n };\n }\n /**\n * Definition :\n * - ExecutableDefinition\n * - TypeSystemDefinition\n * - TypeSystemExtension\n *\n * ExecutableDefinition :\n * - OperationDefinition\n * - FragmentDefinition\n */\n ;\n\n _proto.parseDefinition = function parseDefinition() {\n if (this.peek(TokenKind.NAME)) {\n switch (this._lexer.token.value) {\n case 'query':\n case 'mutation':\n case 'subscription':\n return this.parseOperationDefinition();\n\n case 'fragment':\n return this.parseFragmentDefinition();\n\n case 'schema':\n case 'scalar':\n case 'type':\n case 'interface':\n case 'union':\n case 'enum':\n case 'input':\n case 'directive':\n return this.parseTypeSystemDefinition();\n\n case 'extend':\n return this.parseTypeSystemExtension();\n }\n } else if (this.peek(TokenKind.BRACE_L)) {\n return this.parseOperationDefinition();\n } else if (this.peekDescription()) {\n return this.parseTypeSystemDefinition();\n }\n\n throw this.unexpected();\n } // Implements the parsing rules in the Operations section.\n\n /**\n * OperationDefinition :\n * - SelectionSet\n * - OperationType Name? VariableDefinitions? Directives? SelectionSet\n */\n ;\n\n _proto.parseOperationDefinition = function parseOperationDefinition() {\n var start = this._lexer.token;\n\n if (this.peek(TokenKind.BRACE_L)) {\n return {\n kind: Kind.OPERATION_DEFINITION,\n operation: 'query',\n name: undefined,\n variableDefinitions: [],\n directives: [],\n selectionSet: this.parseSelectionSet(),\n loc: this.loc(start)\n };\n }\n\n var operation = this.parseOperationType();\n var name;\n\n if (this.peek(TokenKind.NAME)) {\n name = this.parseName();\n }\n\n return {\n kind: Kind.OPERATION_DEFINITION,\n operation: operation,\n name: name,\n variableDefinitions: this.parseVariableDefinitions(),\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n loc: this.loc(start)\n };\n }\n /**\n * OperationType : one of query mutation subscription\n */\n ;\n\n _proto.parseOperationType = function parseOperationType() {\n var operationToken = this.expectToken(TokenKind.NAME);\n\n switch (operationToken.value) {\n case 'query':\n return 'query';\n\n case 'mutation':\n return 'mutation';\n\n case 'subscription':\n return 'subscription';\n }\n\n throw this.unexpected(operationToken);\n }\n /**\n * VariableDefinitions : ( VariableDefinition+ )\n */\n ;\n\n _proto.parseVariableDefinitions = function parseVariableDefinitions() {\n return this.optionalMany(TokenKind.PAREN_L, this.parseVariableDefinition, TokenKind.PAREN_R);\n }\n /**\n * VariableDefinition : Variable : Type DefaultValue? Directives[Const]?\n */\n ;\n\n _proto.parseVariableDefinition = function parseVariableDefinition() {\n var start = this._lexer.token;\n return {\n kind: Kind.VARIABLE_DEFINITION,\n variable: this.parseVariable(),\n type: (this.expectToken(TokenKind.COLON), this.parseTypeReference()),\n defaultValue: this.expectOptionalToken(TokenKind.EQUALS) ? this.parseValueLiteral(true) : undefined,\n directives: this.parseDirectives(true),\n loc: this.loc(start)\n };\n }\n /**\n * Variable : $ Name\n */\n ;\n\n _proto.parseVariable = function parseVariable() {\n var start = this._lexer.token;\n this.expectToken(TokenKind.DOLLAR);\n return {\n kind: Kind.VARIABLE,\n name: this.parseName(),\n loc: this.loc(start)\n };\n }\n /**\n * SelectionSet : { Selection+ }\n */\n ;\n\n _proto.parseSelectionSet = function parseSelectionSet() {\n var start = this._lexer.token;\n return {\n kind: Kind.SELECTION_SET,\n selections: this.many(TokenKind.BRACE_L, this.parseSelection, TokenKind.BRACE_R),\n loc: this.loc(start)\n };\n }\n /**\n * Selection :\n * - Field\n * - FragmentSpread\n * - InlineFragment\n */\n ;\n\n _proto.parseSelection = function parseSelection() {\n return this.peek(TokenKind.SPREAD) ? this.parseFragment() : this.parseField();\n }\n /**\n * Field : Alias? Name Arguments? Directives? SelectionSet?\n *\n * Alias : Name :\n */\n ;\n\n _proto.parseField = function parseField() {\n var start = this._lexer.token;\n var nameOrAlias = this.parseName();\n var alias;\n var name;\n\n if (this.expectOptionalToken(TokenKind.COLON)) {\n alias = nameOrAlias;\n name = this.parseName();\n } else {\n name = nameOrAlias;\n }\n\n return {\n kind: Kind.FIELD,\n alias: alias,\n name: name,\n arguments: this.parseArguments(false),\n directives: this.parseDirectives(false),\n selectionSet: this.peek(TokenKind.BRACE_L) ? this.parseSelectionSet() : undefined,\n loc: this.loc(start)\n };\n }\n /**\n * Arguments[Const] : ( Argument[?Const]+ )\n */\n ;\n\n _proto.parseArguments = function parseArguments(isConst) {\n var item = isConst ? this.parseConstArgument : this.parseArgument;\n return this.optionalMany(TokenKind.PAREN_L, item, TokenKind.PAREN_R);\n }\n /**\n * Argument[Const] : Name : Value[?Const]\n */\n ;\n\n _proto.parseArgument = function parseArgument() {\n var start = this._lexer.token;\n var name = this.parseName();\n this.expectToken(TokenKind.COLON);\n return {\n kind: Kind.ARGUMENT,\n name: name,\n value: this.parseValueLiteral(false),\n loc: this.loc(start)\n };\n };\n\n _proto.parseConstArgument = function parseConstArgument() {\n var start = this._lexer.token;\n return {\n kind: Kind.ARGUMENT,\n name: this.parseName(),\n value: (this.expectToken(TokenKind.COLON), this.parseValueLiteral(true)),\n loc: this.loc(start)\n };\n } // Implements the parsing rules in the Fragments section.\n\n /**\n * Corresponds to both FragmentSpread and InlineFragment in the spec.\n *\n * FragmentSpread : ... FragmentName Directives?\n *\n * InlineFragment : ... TypeCondition? Directives? SelectionSet\n */\n ;\n\n _proto.parseFragment = function parseFragment() {\n var start = this._lexer.token;\n this.expectToken(TokenKind.SPREAD);\n var hasTypeCondition = this.expectOptionalKeyword('on');\n\n if (!hasTypeCondition && this.peek(TokenKind.NAME)) {\n return {\n kind: Kind.FRAGMENT_SPREAD,\n name: this.parseFragmentName(),\n directives: this.parseDirectives(false),\n loc: this.loc(start)\n };\n }\n\n return {\n kind: Kind.INLINE_FRAGMENT,\n typeCondition: hasTypeCondition ? this.parseNamedType() : undefined,\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n loc: this.loc(start)\n };\n }\n /**\n * FragmentDefinition :\n * - fragment FragmentName on TypeCondition Directives? SelectionSet\n *\n * TypeCondition : NamedType\n */\n ;\n\n _proto.parseFragmentDefinition = function parseFragmentDefinition() {\n var _this$_options;\n\n var start = this._lexer.token;\n this.expectKeyword('fragment'); // Experimental support for defining variables within fragments changes\n // the grammar of FragmentDefinition:\n // - fragment FragmentName VariableDefinitions? on TypeCondition Directives? SelectionSet\n\n if (((_this$_options = this._options) === null || _this$_options === void 0 ? void 0 : _this$_options.experimentalFragmentVariables) === true) {\n return {\n kind: Kind.FRAGMENT_DEFINITION,\n name: this.parseFragmentName(),\n variableDefinitions: this.parseVariableDefinitions(),\n typeCondition: (this.expectKeyword('on'), this.parseNamedType()),\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n loc: this.loc(start)\n };\n }\n\n return {\n kind: Kind.FRAGMENT_DEFINITION,\n name: this.parseFragmentName(),\n typeCondition: (this.expectKeyword('on'), this.parseNamedType()),\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n loc: this.loc(start)\n };\n }\n /**\n * FragmentName : Name but not `on`\n */\n ;\n\n _proto.parseFragmentName = function parseFragmentName() {\n if (this._lexer.token.value === 'on') {\n throw this.unexpected();\n }\n\n return this.parseName();\n } // Implements the parsing rules in the Values section.\n\n /**\n * Value[Const] :\n * - [~Const] Variable\n * - IntValue\n * - FloatValue\n * - StringValue\n * - BooleanValue\n * - NullValue\n * - EnumValue\n * - ListValue[?Const]\n * - ObjectValue[?Const]\n *\n * BooleanValue : one of `true` `false`\n *\n * NullValue : `null`\n *\n * EnumValue : Name but not `true`, `false` or `null`\n */\n ;\n\n _proto.parseValueLiteral = function parseValueLiteral(isConst) {\n var token = this._lexer.token;\n\n switch (token.kind) {\n case TokenKind.BRACKET_L:\n return this.parseList(isConst);\n\n case TokenKind.BRACE_L:\n return this.parseObject(isConst);\n\n case TokenKind.INT:\n this._lexer.advance();\n\n return {\n kind: Kind.INT,\n value: token.value,\n loc: this.loc(token)\n };\n\n case TokenKind.FLOAT:\n this._lexer.advance();\n\n return {\n kind: Kind.FLOAT,\n value: token.value,\n loc: this.loc(token)\n };\n\n case TokenKind.STRING:\n case TokenKind.BLOCK_STRING:\n return this.parseStringLiteral();\n\n case TokenKind.NAME:\n this._lexer.advance();\n\n switch (token.value) {\n case 'true':\n return {\n kind: Kind.BOOLEAN,\n value: true,\n loc: this.loc(token)\n };\n\n case 'false':\n return {\n kind: Kind.BOOLEAN,\n value: false,\n loc: this.loc(token)\n };\n\n case 'null':\n return {\n kind: Kind.NULL,\n loc: this.loc(token)\n };\n\n default:\n return {\n kind: Kind.ENUM,\n value: token.value,\n loc: this.loc(token)\n };\n }\n\n case TokenKind.DOLLAR:\n if (!isConst) {\n return this.parseVariable();\n }\n\n break;\n }\n\n throw this.unexpected();\n };\n\n _proto.parseStringLiteral = function parseStringLiteral() {\n var token = this._lexer.token;\n\n this._lexer.advance();\n\n return {\n kind: Kind.STRING,\n value: token.value,\n block: token.kind === TokenKind.BLOCK_STRING,\n loc: this.loc(token)\n };\n }\n /**\n * ListValue[Const] :\n * - [ ]\n * - [ Value[?Const]+ ]\n */\n ;\n\n _proto.parseList = function parseList(isConst) {\n var _this = this;\n\n var start = this._lexer.token;\n\n var item = function item() {\n return _this.parseValueLiteral(isConst);\n };\n\n return {\n kind: Kind.LIST,\n values: this.any(TokenKind.BRACKET_L, item, TokenKind.BRACKET_R),\n loc: this.loc(start)\n };\n }\n /**\n * ObjectValue[Const] :\n * - { }\n * - { ObjectField[?Const]+ }\n */\n ;\n\n _proto.parseObject = function parseObject(isConst) {\n var _this2 = this;\n\n var start = this._lexer.token;\n\n var item = function item() {\n return _this2.parseObjectField(isConst);\n };\n\n return {\n kind: Kind.OBJECT,\n fields: this.any(TokenKind.BRACE_L, item, TokenKind.BRACE_R),\n loc: this.loc(start)\n };\n }\n /**\n * ObjectField[Const] : Name : Value[?Const]\n */\n ;\n\n _proto.parseObjectField = function parseObjectField(isConst) {\n var start = this._lexer.token;\n var name = this.parseName();\n this.expectToken(TokenKind.COLON);\n return {\n kind: Kind.OBJECT_FIELD,\n name: name,\n value: this.parseValueLiteral(isConst),\n loc: this.loc(start)\n };\n } // Implements the parsing rules in the Directives section.\n\n /**\n * Directives[Const] : Directive[?Const]+\n */\n ;\n\n _proto.parseDirectives = function parseDirectives(isConst) {\n var directives = [];\n\n while (this.peek(TokenKind.AT)) {\n directives.push(this.parseDirective(isConst));\n }\n\n return directives;\n }\n /**\n * Directive[Const] : @ Name Arguments[?Const]?\n */\n ;\n\n _proto.parseDirective = function parseDirective(isConst) {\n var start = this._lexer.token;\n this.expectToken(TokenKind.AT);\n return {\n kind: Kind.DIRECTIVE,\n name: this.parseName(),\n arguments: this.parseArguments(isConst),\n loc: this.loc(start)\n };\n } // Implements the parsing rules in the Types section.\n\n /**\n * Type :\n * - NamedType\n * - ListType\n * - NonNullType\n */\n ;\n\n _proto.parseTypeReference = function parseTypeReference() {\n var start = this._lexer.token;\n var type;\n\n if (this.expectOptionalToken(TokenKind.BRACKET_L)) {\n type = this.parseTypeReference();\n this.expectToken(TokenKind.BRACKET_R);\n type = {\n kind: Kind.LIST_TYPE,\n type: type,\n loc: this.loc(start)\n };\n } else {\n type = this.parseNamedType();\n }\n\n if (this.expectOptionalToken(TokenKind.BANG)) {\n return {\n kind: Kind.NON_NULL_TYPE,\n type: type,\n loc: this.loc(start)\n };\n }\n\n return type;\n }\n /**\n * NamedType : Name\n */\n ;\n\n _proto.parseNamedType = function parseNamedType() {\n var start = this._lexer.token;\n return {\n kind: Kind.NAMED_TYPE,\n name: this.parseName(),\n loc: this.loc(start)\n };\n } // Implements the parsing rules in the Type Definition section.\n\n /**\n * TypeSystemDefinition :\n * - SchemaDefinition\n * - TypeDefinition\n * - DirectiveDefinition\n *\n * TypeDefinition :\n * - ScalarTypeDefinition\n * - ObjectTypeDefinition\n * - InterfaceTypeDefinition\n * - UnionTypeDefinition\n * - EnumTypeDefinition\n * - InputObjectTypeDefinition\n */\n ;\n\n _proto.parseTypeSystemDefinition = function parseTypeSystemDefinition() {\n // Many definitions begin with a description and require a lookahead.\n var keywordToken = this.peekDescription() ? this._lexer.lookahead() : this._lexer.token;\n\n if (keywordToken.kind === TokenKind.NAME) {\n switch (keywordToken.value) {\n case 'schema':\n return this.parseSchemaDefinition();\n\n case 'scalar':\n return this.parseScalarTypeDefinition();\n\n case 'type':\n return this.parseObjectTypeDefinition();\n\n case 'interface':\n return this.parseInterfaceTypeDefinition();\n\n case 'union':\n return this.parseUnionTypeDefinition();\n\n case 'enum':\n return this.parseEnumTypeDefinition();\n\n case 'input':\n return this.parseInputObjectTypeDefinition();\n\n case 'directive':\n return this.parseDirectiveDefinition();\n }\n }\n\n throw this.unexpected(keywordToken);\n };\n\n _proto.peekDescription = function peekDescription() {\n return this.peek(TokenKind.STRING) || this.peek(TokenKind.BLOCK_STRING);\n }\n /**\n * Description : StringValue\n */\n ;\n\n _proto.parseDescription = function parseDescription() {\n if (this.peekDescription()) {\n return this.parseStringLiteral();\n }\n }\n /**\n * SchemaDefinition : Description? schema Directives[Const]? { OperationTypeDefinition+ }\n */\n ;\n\n _proto.parseSchemaDefinition = function parseSchemaDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('schema');\n var directives = this.parseDirectives(true);\n var operationTypes = this.many(TokenKind.BRACE_L, this.parseOperationTypeDefinition, TokenKind.BRACE_R);\n return {\n kind: Kind.SCHEMA_DEFINITION,\n description: description,\n directives: directives,\n operationTypes: operationTypes,\n loc: this.loc(start)\n };\n }\n /**\n * OperationTypeDefinition : OperationType : NamedType\n */\n ;\n\n _proto.parseOperationTypeDefinition = function parseOperationTypeDefinition() {\n var start = this._lexer.token;\n var operation = this.parseOperationType();\n this.expectToken(TokenKind.COLON);\n var type = this.parseNamedType();\n return {\n kind: Kind.OPERATION_TYPE_DEFINITION,\n operation: operation,\n type: type,\n loc: this.loc(start)\n };\n }\n /**\n * ScalarTypeDefinition : Description? scalar Name Directives[Const]?\n */\n ;\n\n _proto.parseScalarTypeDefinition = function parseScalarTypeDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('scalar');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n return {\n kind: Kind.SCALAR_TYPE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n loc: this.loc(start)\n };\n }\n /**\n * ObjectTypeDefinition :\n * Description?\n * type Name ImplementsInterfaces? Directives[Const]? FieldsDefinition?\n */\n ;\n\n _proto.parseObjectTypeDefinition = function parseObjectTypeDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('type');\n var name = this.parseName();\n var interfaces = this.parseImplementsInterfaces();\n var directives = this.parseDirectives(true);\n var fields = this.parseFieldsDefinition();\n return {\n kind: Kind.OBJECT_TYPE_DEFINITION,\n description: description,\n name: name,\n interfaces: interfaces,\n directives: directives,\n fields: fields,\n loc: this.loc(start)\n };\n }\n /**\n * ImplementsInterfaces :\n * - implements `&`? NamedType\n * - ImplementsInterfaces & NamedType\n */\n ;\n\n _proto.parseImplementsInterfaces = function parseImplementsInterfaces() {\n var _this$_options2;\n\n if (!this.expectOptionalKeyword('implements')) {\n return [];\n }\n\n if (((_this$_options2 = this._options) === null || _this$_options2 === void 0 ? void 0 : _this$_options2.allowLegacySDLImplementsInterfaces) === true) {\n var types = []; // Optional leading ampersand\n\n this.expectOptionalToken(TokenKind.AMP);\n\n do {\n types.push(this.parseNamedType());\n } while (this.expectOptionalToken(TokenKind.AMP) || this.peek(TokenKind.NAME));\n\n return types;\n }\n\n return this.delimitedMany(TokenKind.AMP, this.parseNamedType);\n }\n /**\n * FieldsDefinition : { FieldDefinition+ }\n */\n ;\n\n _proto.parseFieldsDefinition = function parseFieldsDefinition() {\n var _this$_options3;\n\n // Legacy support for the SDL?\n if (((_this$_options3 = this._options) === null || _this$_options3 === void 0 ? void 0 : _this$_options3.allowLegacySDLEmptyFields) === true && this.peek(TokenKind.BRACE_L) && this._lexer.lookahead().kind === TokenKind.BRACE_R) {\n this._lexer.advance();\n\n this._lexer.advance();\n\n return [];\n }\n\n return this.optionalMany(TokenKind.BRACE_L, this.parseFieldDefinition, TokenKind.BRACE_R);\n }\n /**\n * FieldDefinition :\n * - Description? Name ArgumentsDefinition? : Type Directives[Const]?\n */\n ;\n\n _proto.parseFieldDefinition = function parseFieldDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n var name = this.parseName();\n var args = this.parseArgumentDefs();\n this.expectToken(TokenKind.COLON);\n var type = this.parseTypeReference();\n var directives = this.parseDirectives(true);\n return {\n kind: Kind.FIELD_DEFINITION,\n description: description,\n name: name,\n arguments: args,\n type: type,\n directives: directives,\n loc: this.loc(start)\n };\n }\n /**\n * ArgumentsDefinition : ( InputValueDefinition+ )\n */\n ;\n\n _proto.parseArgumentDefs = function parseArgumentDefs() {\n return this.optionalMany(TokenKind.PAREN_L, this.parseInputValueDef, TokenKind.PAREN_R);\n }\n /**\n * InputValueDefinition :\n * - Description? Name : Type DefaultValue? Directives[Const]?\n */\n ;\n\n _proto.parseInputValueDef = function parseInputValueDef() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n var name = this.parseName();\n this.expectToken(TokenKind.COLON);\n var type = this.parseTypeReference();\n var defaultValue;\n\n if (this.expectOptionalToken(TokenKind.EQUALS)) {\n defaultValue = this.parseValueLiteral(true);\n }\n\n var directives = this.parseDirectives(true);\n return {\n kind: Kind.INPUT_VALUE_DEFINITION,\n description: description,\n name: name,\n type: type,\n defaultValue: defaultValue,\n directives: directives,\n loc: this.loc(start)\n };\n }\n /**\n * InterfaceTypeDefinition :\n * - Description? interface Name Directives[Const]? FieldsDefinition?\n */\n ;\n\n _proto.parseInterfaceTypeDefinition = function parseInterfaceTypeDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('interface');\n var name = this.parseName();\n var interfaces = this.parseImplementsInterfaces();\n var directives = this.parseDirectives(true);\n var fields = this.parseFieldsDefinition();\n return {\n kind: Kind.INTERFACE_TYPE_DEFINITION,\n description: description,\n name: name,\n interfaces: interfaces,\n directives: directives,\n fields: fields,\n loc: this.loc(start)\n };\n }\n /**\n * UnionTypeDefinition :\n * - Description? union Name Directives[Const]? UnionMemberTypes?\n */\n ;\n\n _proto.parseUnionTypeDefinition = function parseUnionTypeDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('union');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var types = this.parseUnionMemberTypes();\n return {\n kind: Kind.UNION_TYPE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n types: types,\n loc: this.loc(start)\n };\n }\n /**\n * UnionMemberTypes :\n * - = `|`? NamedType\n * - UnionMemberTypes | NamedType\n */\n ;\n\n _proto.parseUnionMemberTypes = function parseUnionMemberTypes() {\n return this.expectOptionalToken(TokenKind.EQUALS) ? this.delimitedMany(TokenKind.PIPE, this.parseNamedType) : [];\n }\n /**\n * EnumTypeDefinition :\n * - Description? enum Name Directives[Const]? EnumValuesDefinition?\n */\n ;\n\n _proto.parseEnumTypeDefinition = function parseEnumTypeDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('enum');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var values = this.parseEnumValuesDefinition();\n return {\n kind: Kind.ENUM_TYPE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n values: values,\n loc: this.loc(start)\n };\n }\n /**\n * EnumValuesDefinition : { EnumValueDefinition+ }\n */\n ;\n\n _proto.parseEnumValuesDefinition = function parseEnumValuesDefinition() {\n return this.optionalMany(TokenKind.BRACE_L, this.parseEnumValueDefinition, TokenKind.BRACE_R);\n }\n /**\n * EnumValueDefinition : Description? EnumValue Directives[Const]?\n *\n * EnumValue : Name\n */\n ;\n\n _proto.parseEnumValueDefinition = function parseEnumValueDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n return {\n kind: Kind.ENUM_VALUE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n loc: this.loc(start)\n };\n }\n /**\n * InputObjectTypeDefinition :\n * - Description? input Name Directives[Const]? InputFieldsDefinition?\n */\n ;\n\n _proto.parseInputObjectTypeDefinition = function parseInputObjectTypeDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('input');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var fields = this.parseInputFieldsDefinition();\n return {\n kind: Kind.INPUT_OBJECT_TYPE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n fields: fields,\n loc: this.loc(start)\n };\n }\n /**\n * InputFieldsDefinition : { InputValueDefinition+ }\n */\n ;\n\n _proto.parseInputFieldsDefinition = function parseInputFieldsDefinition() {\n return this.optionalMany(TokenKind.BRACE_L, this.parseInputValueDef, TokenKind.BRACE_R);\n }\n /**\n * TypeSystemExtension :\n * - SchemaExtension\n * - TypeExtension\n *\n * TypeExtension :\n * - ScalarTypeExtension\n * - ObjectTypeExtension\n * - InterfaceTypeExtension\n * - UnionTypeExtension\n * - EnumTypeExtension\n * - InputObjectTypeDefinition\n */\n ;\n\n _proto.parseTypeSystemExtension = function parseTypeSystemExtension() {\n var keywordToken = this._lexer.lookahead();\n\n if (keywordToken.kind === TokenKind.NAME) {\n switch (keywordToken.value) {\n case 'schema':\n return this.parseSchemaExtension();\n\n case 'scalar':\n return this.parseScalarTypeExtension();\n\n case 'type':\n return this.parseObjectTypeExtension();\n\n case 'interface':\n return this.parseInterfaceTypeExtension();\n\n case 'union':\n return this.parseUnionTypeExtension();\n\n case 'enum':\n return this.parseEnumTypeExtension();\n\n case 'input':\n return this.parseInputObjectTypeExtension();\n }\n }\n\n throw this.unexpected(keywordToken);\n }\n /**\n * SchemaExtension :\n * - extend schema Directives[Const]? { OperationTypeDefinition+ }\n * - extend schema Directives[Const]\n */\n ;\n\n _proto.parseSchemaExtension = function parseSchemaExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('schema');\n var directives = this.parseDirectives(true);\n var operationTypes = this.optionalMany(TokenKind.BRACE_L, this.parseOperationTypeDefinition, TokenKind.BRACE_R);\n\n if (directives.length === 0 && operationTypes.length === 0) {\n throw this.unexpected();\n }\n\n return {\n kind: Kind.SCHEMA_EXTENSION,\n directives: directives,\n operationTypes: operationTypes,\n loc: this.loc(start)\n };\n }\n /**\n * ScalarTypeExtension :\n * - extend scalar Name Directives[Const]\n */\n ;\n\n _proto.parseScalarTypeExtension = function parseScalarTypeExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('scalar');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n\n if (directives.length === 0) {\n throw this.unexpected();\n }\n\n return {\n kind: Kind.SCALAR_TYPE_EXTENSION,\n name: name,\n directives: directives,\n loc: this.loc(start)\n };\n }\n /**\n * ObjectTypeExtension :\n * - extend type Name ImplementsInterfaces? Directives[Const]? FieldsDefinition\n * - extend type Name ImplementsInterfaces? Directives[Const]\n * - extend type Name ImplementsInterfaces\n */\n ;\n\n _proto.parseObjectTypeExtension = function parseObjectTypeExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('type');\n var name = this.parseName();\n var interfaces = this.parseImplementsInterfaces();\n var directives = this.parseDirectives(true);\n var fields = this.parseFieldsDefinition();\n\n if (interfaces.length === 0 && directives.length === 0 && fields.length === 0) {\n throw this.unexpected();\n }\n\n return {\n kind: Kind.OBJECT_TYPE_EXTENSION,\n name: name,\n interfaces: interfaces,\n directives: directives,\n fields: fields,\n loc: this.loc(start)\n };\n }\n /**\n * InterfaceTypeExtension :\n * - extend interface Name ImplementsInterfaces? Directives[Const]? FieldsDefinition\n * - extend interface Name ImplementsInterfaces? Directives[Const]\n * - extend interface Name ImplementsInterfaces\n */\n ;\n\n _proto.parseInterfaceTypeExtension = function parseInterfaceTypeExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('interface');\n var name = this.parseName();\n var interfaces = this.parseImplementsInterfaces();\n var directives = this.parseDirectives(true);\n var fields = this.parseFieldsDefinition();\n\n if (interfaces.length === 0 && directives.length === 0 && fields.length === 0) {\n throw this.unexpected();\n }\n\n return {\n kind: Kind.INTERFACE_TYPE_EXTENSION,\n name: name,\n interfaces: interfaces,\n directives: directives,\n fields: fields,\n loc: this.loc(start)\n };\n }\n /**\n * UnionTypeExtension :\n * - extend union Name Directives[Const]? UnionMemberTypes\n * - extend union Name Directives[Const]\n */\n ;\n\n _proto.parseUnionTypeExtension = function parseUnionTypeExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('union');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var types = this.parseUnionMemberTypes();\n\n if (directives.length === 0 && types.length === 0) {\n throw this.unexpected();\n }\n\n return {\n kind: Kind.UNION_TYPE_EXTENSION,\n name: name,\n directives: directives,\n types: types,\n loc: this.loc(start)\n };\n }\n /**\n * EnumTypeExtension :\n * - extend enum Name Directives[Const]? EnumValuesDefinition\n * - extend enum Name Directives[Const]\n */\n ;\n\n _proto.parseEnumTypeExtension = function parseEnumTypeExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('enum');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var values = this.parseEnumValuesDefinition();\n\n if (directives.length === 0 && values.length === 0) {\n throw this.unexpected();\n }\n\n return {\n kind: Kind.ENUM_TYPE_EXTENSION,\n name: name,\n directives: directives,\n values: values,\n loc: this.loc(start)\n };\n }\n /**\n * InputObjectTypeExtension :\n * - extend input Name Directives[Const]? InputFieldsDefinition\n * - extend input Name Directives[Const]\n */\n ;\n\n _proto.parseInputObjectTypeExtension = function parseInputObjectTypeExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('input');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var fields = this.parseInputFieldsDefinition();\n\n if (directives.length === 0 && fields.length === 0) {\n throw this.unexpected();\n }\n\n return {\n kind: Kind.INPUT_OBJECT_TYPE_EXTENSION,\n name: name,\n directives: directives,\n fields: fields,\n loc: this.loc(start)\n };\n }\n /**\n * DirectiveDefinition :\n * - Description? directive @ Name ArgumentsDefinition? `repeatable`? on DirectiveLocations\n */\n ;\n\n _proto.parseDirectiveDefinition = function parseDirectiveDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('directive');\n this.expectToken(TokenKind.AT);\n var name = this.parseName();\n var args = this.parseArgumentDefs();\n var repeatable = this.expectOptionalKeyword('repeatable');\n this.expectKeyword('on');\n var locations = this.parseDirectiveLocations();\n return {\n kind: Kind.DIRECTIVE_DEFINITION,\n description: description,\n name: name,\n arguments: args,\n repeatable: repeatable,\n locations: locations,\n loc: this.loc(start)\n };\n }\n /**\n * DirectiveLocations :\n * - `|`? DirectiveLocation\n * - DirectiveLocations | DirectiveLocation\n */\n ;\n\n _proto.parseDirectiveLocations = function parseDirectiveLocations() {\n return this.delimitedMany(TokenKind.PIPE, this.parseDirectiveLocation);\n }\n /*\n * DirectiveLocation :\n * - ExecutableDirectiveLocation\n * - TypeSystemDirectiveLocation\n *\n * ExecutableDirectiveLocation : one of\n * `QUERY`\n * `MUTATION`\n * `SUBSCRIPTION`\n * `FIELD`\n * `FRAGMENT_DEFINITION`\n * `FRAGMENT_SPREAD`\n * `INLINE_FRAGMENT`\n *\n * TypeSystemDirectiveLocation : one of\n * `SCHEMA`\n * `SCALAR`\n * `OBJECT`\n * `FIELD_DEFINITION`\n * `ARGUMENT_DEFINITION`\n * `INTERFACE`\n * `UNION`\n * `ENUM`\n * `ENUM_VALUE`\n * `INPUT_OBJECT`\n * `INPUT_FIELD_DEFINITION`\n */\n ;\n\n _proto.parseDirectiveLocation = function parseDirectiveLocation() {\n var start = this._lexer.token;\n var name = this.parseName();\n\n if (DirectiveLocation[name.value] !== undefined) {\n return name;\n }\n\n throw this.unexpected(start);\n } // Core parsing utility functions\n\n /**\n * Returns a location object, used to identify the place in the source that created a given parsed object.\n */\n ;\n\n _proto.loc = function loc(startToken) {\n var _this$_options4;\n\n if (((_this$_options4 = this._options) === null || _this$_options4 === void 0 ? void 0 : _this$_options4.noLocation) !== true) {\n return new Location(startToken, this._lexer.lastToken, this._lexer.source);\n }\n }\n /**\n * Determines if the next token is of a given kind\n */\n ;\n\n _proto.peek = function peek(kind) {\n return this._lexer.token.kind === kind;\n }\n /**\n * If the next token is of the given kind, return that token after advancing the lexer.\n * Otherwise, do not change the parser state and throw an error.\n */\n ;\n\n _proto.expectToken = function expectToken(kind) {\n var token = this._lexer.token;\n\n if (token.kind === kind) {\n this._lexer.advance();\n\n return token;\n }\n\n throw syntaxError(this._lexer.source, token.start, \"Expected \".concat(getTokenKindDesc(kind), \", found \").concat(getTokenDesc(token), \".\"));\n }\n /**\n * If the next token is of the given kind, return that token after advancing the lexer.\n * Otherwise, do not change the parser state and return undefined.\n */\n ;\n\n _proto.expectOptionalToken = function expectOptionalToken(kind) {\n var token = this._lexer.token;\n\n if (token.kind === kind) {\n this._lexer.advance();\n\n return token;\n }\n\n return undefined;\n }\n /**\n * If the next token is a given keyword, advance the lexer.\n * Otherwise, do not change the parser state and throw an error.\n */\n ;\n\n _proto.expectKeyword = function expectKeyword(value) {\n var token = this._lexer.token;\n\n if (token.kind === TokenKind.NAME && token.value === value) {\n this._lexer.advance();\n } else {\n throw syntaxError(this._lexer.source, token.start, \"Expected \\\"\".concat(value, \"\\\", found \").concat(getTokenDesc(token), \".\"));\n }\n }\n /**\n * If the next token is a given keyword, return \"true\" after advancing the lexer.\n * Otherwise, do not change the parser state and return \"false\".\n */\n ;\n\n _proto.expectOptionalKeyword = function expectOptionalKeyword(value) {\n var token = this._lexer.token;\n\n if (token.kind === TokenKind.NAME && token.value === value) {\n this._lexer.advance();\n\n return true;\n }\n\n return false;\n }\n /**\n * Helper function for creating an error when an unexpected lexed token is encountered.\n */\n ;\n\n _proto.unexpected = function unexpected(atToken) {\n var token = atToken !== null && atToken !== void 0 ? atToken : this._lexer.token;\n return syntaxError(this._lexer.source, token.start, \"Unexpected \".concat(getTokenDesc(token), \".\"));\n }\n /**\n * Returns a possibly empty list of parse nodes, determined by the parseFn.\n * This list begins with a lex token of openKind and ends with a lex token of closeKind.\n * Advances the parser to the next lex token after the closing token.\n */\n ;\n\n _proto.any = function any(openKind, parseFn, closeKind) {\n this.expectToken(openKind);\n var nodes = [];\n\n while (!this.expectOptionalToken(closeKind)) {\n nodes.push(parseFn.call(this));\n }\n\n return nodes;\n }\n /**\n * Returns a list of parse nodes, determined by the parseFn.\n * It can be empty only if open token is missing otherwise it will always return non-empty list\n * that begins with a lex token of openKind and ends with a lex token of closeKind.\n * Advances the parser to the next lex token after the closing token.\n */\n ;\n\n _proto.optionalMany = function optionalMany(openKind, parseFn, closeKind) {\n if (this.expectOptionalToken(openKind)) {\n var nodes = [];\n\n do {\n nodes.push(parseFn.call(this));\n } while (!this.expectOptionalToken(closeKind));\n\n return nodes;\n }\n\n return [];\n }\n /**\n * Returns a non-empty list of parse nodes, determined by the parseFn.\n * This list begins with a lex token of openKind and ends with a lex token of closeKind.\n * Advances the parser to the next lex token after the closing token.\n */\n ;\n\n _proto.many = function many(openKind, parseFn, closeKind) {\n this.expectToken(openKind);\n var nodes = [];\n\n do {\n nodes.push(parseFn.call(this));\n } while (!this.expectOptionalToken(closeKind));\n\n return nodes;\n }\n /**\n * Returns a non-empty list of parse nodes, determined by the parseFn.\n * This list may begin with a lex token of delimiterKind followed by items separated by lex tokens of tokenKind.\n * Advances the parser to the next lex token after last item in the list.\n */\n ;\n\n _proto.delimitedMany = function delimitedMany(delimiterKind, parseFn) {\n this.expectOptionalToken(delimiterKind);\n var nodes = [];\n\n do {\n nodes.push(parseFn.call(this));\n } while (this.expectOptionalToken(delimiterKind));\n\n return nodes;\n };\n\n return Parser;\n}();\n/**\n * A helper function to describe a token as a string for debugging.\n */\n\nfunction getTokenDesc(token) {\n var value = token.value;\n return getTokenKindDesc(token.kind) + (value != null ? \" \\\"\".concat(value, \"\\\"\") : '');\n}\n/**\n * A helper function to describe a token kind as a string for debugging.\n */\n\n\nfunction getTokenKindDesc(kind) {\n return isPunctuatorTokenKind(kind) ? \"\\\"\".concat(kind, \"\\\"\") : kind;\n}\n","import { __assign } from \"tslib\";\nimport { parse } from 'graphql';\nvar docCache = new Map();\nvar fragmentSourceMap = new Map();\nvar printFragmentWarnings = true;\nvar experimentalFragmentVariables = false;\nfunction normalize(string) {\n return string.replace(/[\\s,]+/g, ' ').trim();\n}\nfunction cacheKeyFromLoc(loc) {\n return normalize(loc.source.body.substring(loc.start, loc.end));\n}\nfunction processFragments(ast) {\n var seenKeys = new Set();\n var definitions = [];\n ast.definitions.forEach(function (fragmentDefinition) {\n if (fragmentDefinition.kind === 'FragmentDefinition') {\n var fragmentName = fragmentDefinition.name.value;\n var sourceKey = cacheKeyFromLoc(fragmentDefinition.loc);\n var sourceKeySet = fragmentSourceMap.get(fragmentName);\n if (sourceKeySet && !sourceKeySet.has(sourceKey)) {\n if (printFragmentWarnings) {\n console.warn(\"Warning: fragment with name \" + fragmentName + \" already exists.\\n\"\n + \"graphql-tag enforces all fragment names across your application to be unique; read more about\\n\"\n + \"this in the docs: http://dev.apollodata.com/core/fragments.html#unique-names\");\n }\n }\n else if (!sourceKeySet) {\n fragmentSourceMap.set(fragmentName, sourceKeySet = new Set);\n }\n sourceKeySet.add(sourceKey);\n if (!seenKeys.has(sourceKey)) {\n seenKeys.add(sourceKey);\n definitions.push(fragmentDefinition);\n }\n }\n else {\n definitions.push(fragmentDefinition);\n }\n });\n return __assign(__assign({}, ast), { definitions: definitions });\n}\nfunction stripLoc(doc) {\n var workSet = new Set(doc.definitions);\n workSet.forEach(function (node) {\n if (node.loc)\n delete node.loc;\n Object.keys(node).forEach(function (key) {\n var value = node[key];\n if (value && typeof value === 'object') {\n workSet.add(value);\n }\n });\n });\n var loc = doc.loc;\n if (loc) {\n delete loc.startToken;\n delete loc.endToken;\n }\n return doc;\n}\nfunction parseDocument(source) {\n var cacheKey = normalize(source);\n if (!docCache.has(cacheKey)) {\n var parsed = parse(source, {\n experimentalFragmentVariables: experimentalFragmentVariables,\n allowLegacyFragmentVariables: experimentalFragmentVariables\n });\n if (!parsed || parsed.kind !== 'Document') {\n throw new Error('Not a valid GraphQL document.');\n }\n docCache.set(cacheKey, stripLoc(processFragments(parsed)));\n }\n return docCache.get(cacheKey);\n}\nexport function gql(literals) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n if (typeof literals === 'string') {\n literals = [literals];\n }\n var result = literals[0];\n args.forEach(function (arg, i) {\n if (arg && arg.kind === 'Document') {\n result += arg.loc.source.body;\n }\n else {\n result += arg;\n }\n result += literals[i + 1];\n });\n return parseDocument(result);\n}\nexport function resetCaches() {\n docCache.clear();\n fragmentSourceMap.clear();\n}\nexport function disableFragmentWarnings() {\n printFragmentWarnings = false;\n}\nexport function enableExperimentalFragmentVariables() {\n experimentalFragmentVariables = true;\n}\nexport function disableExperimentalFragmentVariables() {\n experimentalFragmentVariables = false;\n}\nvar extras = {\n gql: gql,\n resetCaches: resetCaches,\n disableFragmentWarnings: disableFragmentWarnings,\n enableExperimentalFragmentVariables: enableExperimentalFragmentVariables,\n disableExperimentalFragmentVariables: disableExperimentalFragmentVariables\n};\n(function (gql_1) {\n gql_1.gql = extras.gql, gql_1.resetCaches = extras.resetCaches, gql_1.disableFragmentWarnings = extras.disableFragmentWarnings, gql_1.enableExperimentalFragmentVariables = extras.enableExperimentalFragmentVariables, gql_1.disableExperimentalFragmentVariables = extras.disableExperimentalFragmentVariables;\n})(gql || (gql = {}));\ngql[\"default\"] = gql;\nexport default gql;\n//# sourceMappingURL=index.js.map","'use strict';\n\nvar replace = String.prototype.replace;\nvar percentTwenties = /%20/g;\n\nmodule.exports = {\n 'default': 'RFC3986',\n formatters: {\n RFC1738: function (value) {\n return replace.call(value, percentTwenties, '+');\n },\n RFC3986: function (value) {\n return String(value);\n }\n },\n RFC1738: 'RFC1738',\n RFC3986: 'RFC3986'\n};\n","'use strict';\n\nvar stringify = require('./stringify');\nvar parse = require('./parse');\nvar formats = require('./formats');\n\nmodule.exports = {\n formats: formats,\n parse: parse,\n stringify: stringify\n};\n","'use strict';\n\nvar utils = require('./utils');\n\nvar has = Object.prototype.hasOwnProperty;\n\nvar defaults = {\n allowDots: false,\n allowPrototypes: false,\n arrayLimit: 20,\n decoder: utils.decode,\n delimiter: '&',\n depth: 5,\n parameterLimit: 1000,\n plainObjects: false,\n strictNullHandling: false\n};\n\nvar parseValues = function parseQueryStringValues(str, options) {\n var obj = {};\n var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\\?/, '') : str;\n var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;\n var parts = cleanStr.split(options.delimiter, limit);\n\n for (var i = 0; i < parts.length; ++i) {\n var part = parts[i];\n\n var bracketEqualsPos = part.indexOf(']=');\n var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;\n\n var key, val;\n if (pos === -1) {\n key = options.decoder(part, defaults.decoder);\n val = options.strictNullHandling ? null : '';\n } else {\n key = options.decoder(part.slice(0, pos), defaults.decoder);\n val = options.decoder(part.slice(pos + 1), defaults.decoder);\n }\n if (has.call(obj, key)) {\n obj[key] = [].concat(obj[key]).concat(val);\n } else {\n obj[key] = val;\n }\n }\n\n return obj;\n};\n\nvar parseObject = function (chain, val, options) {\n var leaf = val;\n\n for (var i = chain.length - 1; i >= 0; --i) {\n var obj;\n var root = chain[i];\n\n if (root === '[]' && options.parseArrays) {\n obj = [].concat(leaf);\n } else {\n obj = options.plainObjects ? Object.create(null) : {};\n var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;\n var index = parseInt(cleanRoot, 10);\n if (!options.parseArrays && cleanRoot === '') {\n obj = { 0: leaf };\n } else if (\n !isNaN(index)\n && root !== cleanRoot\n && String(index) === cleanRoot\n && index >= 0\n && (options.parseArrays && index <= options.arrayLimit)\n ) {\n obj = [];\n obj[index] = leaf;\n } else if (cleanRoot !== '__proto__') {\n obj[cleanRoot] = leaf;\n }\n }\n\n leaf = obj;\n }\n\n return leaf;\n};\n\nvar parseKeys = function parseQueryStringKeys(givenKey, val, options) {\n if (!givenKey) {\n return;\n }\n\n // Transform dot notation to bracket notation\n var key = options.allowDots ? givenKey.replace(/\\.([^.[]+)/g, '[$1]') : givenKey;\n\n // The regex chunks\n\n var brackets = /(\\[[^[\\]]*])/;\n var child = /(\\[[^[\\]]*])/g;\n\n // Get the parent\n\n var segment = brackets.exec(key);\n var parent = segment ? key.slice(0, segment.index) : key;\n\n // Stash the parent if it exists\n\n var keys = [];\n if (parent) {\n // If we aren't using plain objects, optionally prefix keys\n // that would overwrite object prototype properties\n if (!options.plainObjects && has.call(Object.prototype, parent)) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n\n keys.push(parent);\n }\n\n // Loop through children appending to the array until we hit depth\n\n var i = 0;\n while ((segment = child.exec(key)) !== null && i < options.depth) {\n i += 1;\n if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n keys.push(segment[1]);\n }\n\n // If there's a remainder, just add whatever is left\n\n if (segment) {\n keys.push('[' + key.slice(segment.index) + ']');\n }\n\n return parseObject(keys, val, options);\n};\n\nmodule.exports = function (str, opts) {\n var options = opts ? utils.assign({}, opts) : {};\n\n if (options.decoder !== null && options.decoder !== undefined && typeof options.decoder !== 'function') {\n throw new TypeError('Decoder has to be a function.');\n }\n\n options.ignoreQueryPrefix = options.ignoreQueryPrefix === true;\n options.delimiter = typeof options.delimiter === 'string' || utils.isRegExp(options.delimiter) ? options.delimiter : defaults.delimiter;\n options.depth = typeof options.depth === 'number' ? options.depth : defaults.depth;\n options.arrayLimit = typeof options.arrayLimit === 'number' ? options.arrayLimit : defaults.arrayLimit;\n options.parseArrays = options.parseArrays !== false;\n options.decoder = typeof options.decoder === 'function' ? options.decoder : defaults.decoder;\n options.allowDots = typeof options.allowDots === 'boolean' ? options.allowDots : defaults.allowDots;\n options.plainObjects = typeof options.plainObjects === 'boolean' ? options.plainObjects : defaults.plainObjects;\n options.allowPrototypes = typeof options.allowPrototypes === 'boolean' ? options.allowPrototypes : defaults.allowPrototypes;\n options.parameterLimit = typeof options.parameterLimit === 'number' ? options.parameterLimit : defaults.parameterLimit;\n options.strictNullHandling = typeof options.strictNullHandling === 'boolean' ? options.strictNullHandling : defaults.strictNullHandling;\n\n if (str === '' || str === null || typeof str === 'undefined') {\n return options.plainObjects ? Object.create(null) : {};\n }\n\n var tempObj = typeof str === 'string' ? parseValues(str, options) : str;\n var obj = options.plainObjects ? Object.create(null) : {};\n\n // Iterate over the keys and setup the new object\n\n var keys = Object.keys(tempObj);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n var newObj = parseKeys(key, tempObj[key], options);\n obj = utils.merge(obj, newObj, options);\n }\n\n return utils.compact(obj);\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar formats = require('./formats');\n\nvar arrayPrefixGenerators = {\n brackets: function brackets(prefix) {\n return prefix + '[]';\n },\n indices: function indices(prefix, key) {\n return prefix + '[' + key + ']';\n },\n repeat: function repeat(prefix) {\n return prefix;\n }\n};\n\nvar isArray = Array.isArray;\nvar push = Array.prototype.push;\nvar pushToArray = function (arr, valueOrArray) {\n push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]);\n};\n\nvar toISO = Date.prototype.toISOString;\n\nvar defaults = {\n delimiter: '&',\n encode: true,\n encoder: utils.encode,\n encodeValuesOnly: false,\n serializeDate: function serializeDate(date) {\n return toISO.call(date);\n },\n skipNulls: false,\n strictNullHandling: false\n};\n\nvar stringify = function stringify(\n object,\n prefix,\n generateArrayPrefix,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n formatter,\n encodeValuesOnly\n) {\n var obj = object;\n if (typeof filter === 'function') {\n obj = filter(prefix, obj);\n } else if (obj instanceof Date) {\n obj = serializeDate(obj);\n }\n\n if (obj === null) {\n if (strictNullHandling) {\n return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder) : prefix;\n }\n\n obj = '';\n }\n\n if (typeof obj === 'string' || typeof obj === 'number' || typeof obj === 'boolean' || utils.isBuffer(obj)) {\n if (encoder) {\n var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder);\n return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder))];\n }\n return [formatter(prefix) + '=' + formatter(String(obj))];\n }\n\n var values = [];\n\n if (typeof obj === 'undefined') {\n return values;\n }\n\n var objKeys;\n if (isArray(filter)) {\n objKeys = filter;\n } else {\n var keys = Object.keys(obj);\n objKeys = sort ? keys.sort(sort) : keys;\n }\n\n for (var i = 0; i < objKeys.length; ++i) {\n var key = objKeys[i];\n\n if (skipNulls && obj[key] === null) {\n continue;\n }\n\n if (isArray(obj)) {\n pushToArray(values, stringify(\n obj[key],\n generateArrayPrefix(prefix, key),\n generateArrayPrefix,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n formatter,\n encodeValuesOnly\n ));\n } else {\n pushToArray(values, stringify(\n obj[key],\n prefix + (allowDots ? '.' + key : '[' + key + ']'),\n generateArrayPrefix,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n formatter,\n encodeValuesOnly\n ));\n }\n }\n\n return values;\n};\n\nmodule.exports = function (object, opts) {\n var obj = object;\n var options = opts ? utils.assign({}, opts) : {};\n\n if (options.encoder !== null && typeof options.encoder !== 'undefined' && typeof options.encoder !== 'function') {\n throw new TypeError('Encoder has to be a function.');\n }\n\n var delimiter = typeof options.delimiter === 'undefined' ? defaults.delimiter : options.delimiter;\n var strictNullHandling = typeof options.strictNullHandling === 'boolean' ? options.strictNullHandling : defaults.strictNullHandling;\n var skipNulls = typeof options.skipNulls === 'boolean' ? options.skipNulls : defaults.skipNulls;\n var encode = typeof options.encode === 'boolean' ? options.encode : defaults.encode;\n var encoder = typeof options.encoder === 'function' ? options.encoder : defaults.encoder;\n var sort = typeof options.sort === 'function' ? options.sort : null;\n var allowDots = typeof options.allowDots === 'undefined' ? false : options.allowDots;\n var serializeDate = typeof options.serializeDate === 'function' ? options.serializeDate : defaults.serializeDate;\n var encodeValuesOnly = typeof options.encodeValuesOnly === 'boolean' ? options.encodeValuesOnly : defaults.encodeValuesOnly;\n if (typeof options.format === 'undefined') {\n options.format = formats['default'];\n } else if (!Object.prototype.hasOwnProperty.call(formats.formatters, options.format)) {\n throw new TypeError('Unknown format option provided.');\n }\n var formatter = formats.formatters[options.format];\n var objKeys;\n var filter;\n\n if (typeof options.filter === 'function') {\n filter = options.filter;\n obj = filter('', obj);\n } else if (isArray(options.filter)) {\n filter = options.filter;\n objKeys = filter;\n }\n\n var keys = [];\n\n if (typeof obj !== 'object' || obj === null) {\n return '';\n }\n\n var arrayFormat;\n if (options.arrayFormat in arrayPrefixGenerators) {\n arrayFormat = options.arrayFormat;\n } else if ('indices' in options) {\n arrayFormat = options.indices ? 'indices' : 'repeat';\n } else {\n arrayFormat = 'indices';\n }\n\n var generateArrayPrefix = arrayPrefixGenerators[arrayFormat];\n\n if (!objKeys) {\n objKeys = Object.keys(obj);\n }\n\n if (sort) {\n objKeys.sort(sort);\n }\n\n for (var i = 0; i < objKeys.length; ++i) {\n var key = objKeys[i];\n\n if (skipNulls && obj[key] === null) {\n continue;\n }\n pushToArray(keys, stringify(\n obj[key],\n key,\n generateArrayPrefix,\n strictNullHandling,\n skipNulls,\n encode ? encoder : null,\n filter,\n sort,\n allowDots,\n serializeDate,\n formatter,\n encodeValuesOnly\n ));\n }\n\n var joined = keys.join(delimiter);\n var prefix = options.addQueryPrefix === true ? '?' : '';\n\n return joined.length > 0 ? prefix + joined : '';\n};\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty;\n\nvar hexTable = (function () {\n var array = [];\n for (var i = 0; i < 256; ++i) {\n array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());\n }\n\n return array;\n}());\n\nvar compactQueue = function compactQueue(queue) {\n var obj;\n\n while (queue.length) {\n var item = queue.pop();\n obj = item.obj[item.prop];\n\n if (Array.isArray(obj)) {\n var compacted = [];\n\n for (var j = 0; j < obj.length; ++j) {\n if (typeof obj[j] !== 'undefined') {\n compacted.push(obj[j]);\n }\n }\n\n item.obj[item.prop] = compacted;\n }\n }\n\n return obj;\n};\n\nvar arrayToObject = function arrayToObject(source, options) {\n var obj = options && options.plainObjects ? Object.create(null) : {};\n for (var i = 0; i < source.length; ++i) {\n if (typeof source[i] !== 'undefined') {\n obj[i] = source[i];\n }\n }\n\n return obj;\n};\n\nvar merge = function merge(target, source, options) {\n if (!source) {\n return target;\n }\n\n if (typeof source !== 'object') {\n if (Array.isArray(target)) {\n target.push(source);\n } else if (target && typeof target === 'object') {\n if ((options && (options.plainObjects || options.allowPrototypes)) || !has.call(Object.prototype, source)) {\n target[source] = true;\n }\n } else {\n return [target, source];\n }\n\n return target;\n }\n\n if (!target || typeof target !== 'object') {\n return [target].concat(source);\n }\n\n var mergeTarget = target;\n if (Array.isArray(target) && !Array.isArray(source)) {\n mergeTarget = arrayToObject(target, options);\n }\n\n if (Array.isArray(target) && Array.isArray(source)) {\n source.forEach(function (item, i) {\n if (has.call(target, i)) {\n var targetItem = target[i];\n if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {\n target[i] = merge(targetItem, item, options);\n } else {\n target.push(item);\n }\n } else {\n target[i] = item;\n }\n });\n return target;\n }\n\n return Object.keys(source).reduce(function (acc, key) {\n var value = source[key];\n\n if (has.call(acc, key)) {\n acc[key] = merge(acc[key], value, options);\n } else {\n acc[key] = value;\n }\n return acc;\n }, mergeTarget);\n};\n\nvar assign = function assignSingleSource(target, source) {\n return Object.keys(source).reduce(function (acc, key) {\n acc[key] = source[key];\n return acc;\n }, target);\n};\n\nvar decode = function (str) {\n try {\n return decodeURIComponent(str.replace(/\\+/g, ' '));\n } catch (e) {\n return str;\n }\n};\n\nvar encode = function encode(str) {\n // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n // It has been adapted here for stricter adherence to RFC 3986\n if (str.length === 0) {\n return str;\n }\n\n var string = typeof str === 'string' ? str : String(str);\n\n var out = '';\n for (var i = 0; i < string.length; ++i) {\n var c = string.charCodeAt(i);\n\n if (\n c === 0x2D // -\n || c === 0x2E // .\n || c === 0x5F // _\n || c === 0x7E // ~\n || (c >= 0x30 && c <= 0x39) // 0-9\n || (c >= 0x41 && c <= 0x5A) // a-z\n || (c >= 0x61 && c <= 0x7A) // A-Z\n ) {\n out += string.charAt(i);\n continue;\n }\n\n if (c < 0x80) {\n out = out + hexTable[c];\n continue;\n }\n\n if (c < 0x800) {\n out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n if (c < 0xD800 || c >= 0xE000) {\n out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n i += 1;\n c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF));\n /* eslint operator-linebreak: [2, \"before\"] */\n out += hexTable[0xF0 | (c >> 18)]\n + hexTable[0x80 | ((c >> 12) & 0x3F)]\n + hexTable[0x80 | ((c >> 6) & 0x3F)]\n + hexTable[0x80 | (c & 0x3F)];\n }\n\n return out;\n};\n\nvar compact = function compact(value) {\n var queue = [{ obj: { o: value }, prop: 'o' }];\n var refs = [];\n\n for (var i = 0; i < queue.length; ++i) {\n var item = queue[i];\n var obj = item.obj[item.prop];\n\n var keys = Object.keys(obj);\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n var val = obj[key];\n if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n queue.push({ obj: obj, prop: key });\n refs.push(val);\n }\n }\n }\n\n return compactQueue(queue);\n};\n\nvar isRegExp = function isRegExp(obj) {\n return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar isBuffer = function isBuffer(obj) {\n if (obj === null || typeof obj === 'undefined') {\n return false;\n }\n\n return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\n\nmodule.exports = {\n arrayToObject: arrayToObject,\n assign: assign,\n compact: compact,\n decode: decode,\n encode: encode,\n isBuffer: isBuffer,\n isRegExp: isRegExp,\n merge: merge\n};\n","// This currentContext variable will only be used if the makeSlotClass\r\n// function is called, which happens only if this is the first copy of the\r\n// @wry/context package to be imported.\r\nvar currentContext = null;\r\n// This unique internal object is used to denote the absence of a value\r\n// for a given Slot, and is never exposed to outside code.\r\nvar MISSING_VALUE = {};\r\nvar idCounter = 1;\r\n// Although we can't do anything about the cost of duplicated code from\r\n// accidentally bundling multiple copies of the @wry/context package, we can\r\n// avoid creating the Slot class more than once using makeSlotClass.\r\nvar makeSlotClass = function () { return /** @class */ (function () {\r\n function Slot() {\r\n // If you have a Slot object, you can find out its slot.id, but you cannot\r\n // guess the slot.id of a Slot you don't have access to, thanks to the\r\n // randomized suffix.\r\n this.id = [\r\n \"slot\",\r\n idCounter++,\r\n Date.now(),\r\n Math.random().toString(36).slice(2),\r\n ].join(\":\");\r\n }\r\n Slot.prototype.hasValue = function () {\r\n for (var context_1 = currentContext; context_1; context_1 = context_1.parent) {\r\n // We use the Slot object iself as a key to its value, which means the\r\n // value cannot be obtained without a reference to the Slot object.\r\n if (this.id in context_1.slots) {\r\n var value = context_1.slots[this.id];\r\n if (value === MISSING_VALUE)\r\n break;\r\n if (context_1 !== currentContext) {\r\n // Cache the value in currentContext.slots so the next lookup will\r\n // be faster. This caching is safe because the tree of contexts and\r\n // the values of the slots are logically immutable.\r\n currentContext.slots[this.id] = value;\r\n }\r\n return true;\r\n }\r\n }\r\n if (currentContext) {\r\n // If a value was not found for this Slot, it's never going to be found\r\n // no matter how many times we look it up, so we might as well cache\r\n // the absence of the value, too.\r\n currentContext.slots[this.id] = MISSING_VALUE;\r\n }\r\n return false;\r\n };\r\n Slot.prototype.getValue = function () {\r\n if (this.hasValue()) {\r\n return currentContext.slots[this.id];\r\n }\r\n };\r\n Slot.prototype.withValue = function (value, callback, \r\n // Given the prevalence of arrow functions, specifying arguments is likely\r\n // to be much more common than specifying `this`, hence this ordering:\r\n args, thisArg) {\r\n var _a;\r\n var slots = (_a = {\r\n __proto__: null\r\n },\r\n _a[this.id] = value,\r\n _a);\r\n var parent = currentContext;\r\n currentContext = { parent: parent, slots: slots };\r\n try {\r\n // Function.prototype.apply allows the arguments array argument to be\r\n // omitted or undefined, so args! is fine here.\r\n return callback.apply(thisArg, args);\r\n }\r\n finally {\r\n currentContext = parent;\r\n }\r\n };\r\n // Capture the current context and wrap a callback function so that it\r\n // reestablishes the captured context when called.\r\n Slot.bind = function (callback) {\r\n var context = currentContext;\r\n return function () {\r\n var saved = currentContext;\r\n try {\r\n currentContext = context;\r\n return callback.apply(this, arguments);\r\n }\r\n finally {\r\n currentContext = saved;\r\n }\r\n };\r\n };\r\n // Immediately run a callback function without any captured context.\r\n Slot.noContext = function (callback, \r\n // Given the prevalence of arrow functions, specifying arguments is likely\r\n // to be much more common than specifying `this`, hence this ordering:\r\n args, thisArg) {\r\n if (currentContext) {\r\n var saved = currentContext;\r\n try {\r\n currentContext = null;\r\n // Function.prototype.apply allows the arguments array argument to be\r\n // omitted or undefined, so args! is fine here.\r\n return callback.apply(thisArg, args);\r\n }\r\n finally {\r\n currentContext = saved;\r\n }\r\n }\r\n else {\r\n return callback.apply(thisArg, args);\r\n }\r\n };\r\n return Slot;\r\n}()); };\r\n// We store a single global implementation of the Slot class as a permanent\r\n// non-enumerable symbol property of the Array constructor. This obfuscation\r\n// does nothing to prevent access to the Slot class, but at least it ensures\r\n// the implementation (i.e. currentContext) cannot be tampered with, and all\r\n// copies of the @wry/context package (hopefully just one) will share the\r\n// same Slot implementation. Since the first copy of the @wry/context package\r\n// to be imported wins, this technique imposes a very high cost for any\r\n// future breaking changes to the Slot class.\r\nvar globalKey = \"@wry/context:Slot\";\r\nvar host = Array;\r\nvar Slot = host[globalKey] || function () {\r\n var Slot = makeSlotClass();\r\n try {\r\n Object.defineProperty(host, globalKey, {\r\n value: host[globalKey] = Slot,\r\n enumerable: false,\r\n writable: false,\r\n configurable: false,\r\n });\r\n }\r\n finally {\r\n return Slot;\r\n }\r\n}();\n\nvar bind = Slot.bind, noContext = Slot.noContext;\r\nfunction setTimeoutWithContext(callback, delay) {\r\n return setTimeout(bind(callback), delay);\r\n}\r\n// Turn any generator function into an async function (using yield instead\r\n// of await), with context automatically preserved across yields.\r\nfunction asyncFromGen(genFn) {\r\n return function () {\r\n var gen = genFn.apply(this, arguments);\r\n var boundNext = bind(gen.next);\r\n var boundThrow = bind(gen.throw);\r\n return new Promise(function (resolve, reject) {\r\n function invoke(method, argument) {\r\n try {\r\n var result = method.call(gen, argument);\r\n }\r\n catch (error) {\r\n return reject(error);\r\n }\r\n var next = result.done ? resolve : invokeNext;\r\n if (isPromiseLike(result.value)) {\r\n result.value.then(next, result.done ? reject : invokeThrow);\r\n }\r\n else {\r\n next(result.value);\r\n }\r\n }\r\n var invokeNext = function (value) { return invoke(boundNext, value); };\r\n var invokeThrow = function (error) { return invoke(boundThrow, error); };\r\n invokeNext();\r\n });\r\n };\r\n}\r\nfunction isPromiseLike(value) {\r\n return value && typeof value.then === \"function\";\r\n}\r\n// If you use the fibers npm package to implement coroutines in Node.js,\r\n// you should call this function at least once to ensure context management\r\n// remains coherent across any yields.\r\nvar wrappedFibers = [];\r\nfunction wrapYieldingFiberMethods(Fiber) {\r\n // There can be only one implementation of Fiber per process, so this array\r\n // should never grow longer than one element.\r\n if (wrappedFibers.indexOf(Fiber) < 0) {\r\n var wrap = function (obj, method) {\r\n var fn = obj[method];\r\n obj[method] = function () {\r\n return noContext(fn, arguments, this);\r\n };\r\n };\r\n // These methods can yield, according to\r\n // https://github.com/laverdet/node-fibers/blob/ddebed9b8ae3883e57f822e2108e6943e5c8d2a8/fibers.js#L97-L100\r\n wrap(Fiber, \"yield\");\r\n wrap(Fiber.prototype, \"run\");\r\n wrap(Fiber.prototype, \"throwInto\");\r\n wrappedFibers.push(Fiber);\r\n }\r\n return Fiber;\r\n}\n\nexport { Slot, asyncFromGen, bind, noContext, setTimeoutWithContext as setTimeout, wrapYieldingFiberMethods };\n//# sourceMappingURL=context.esm.js.map\n","import { Trie } from '@wry/trie';\nexport { Trie as KeyTrie } from '@wry/trie';\nimport { Slot } from '@wry/context';\nexport { asyncFromGen, bind as bindContext, noContext, setTimeout } from '@wry/context';\n\nfunction defaultDispose() { }\r\nvar Cache = /** @class */ (function () {\r\n function Cache(max, dispose) {\r\n if (max === void 0) { max = Infinity; }\r\n if (dispose === void 0) { dispose = defaultDispose; }\r\n this.max = max;\r\n this.dispose = dispose;\r\n this.map = new Map();\r\n this.newest = null;\r\n this.oldest = null;\r\n }\r\n Cache.prototype.has = function (key) {\r\n return this.map.has(key);\r\n };\r\n Cache.prototype.get = function (key) {\r\n var node = this.getNode(key);\r\n return node && node.value;\r\n };\r\n Cache.prototype.getNode = function (key) {\r\n var node = this.map.get(key);\r\n if (node && node !== this.newest) {\r\n var older = node.older, newer = node.newer;\r\n if (newer) {\r\n newer.older = older;\r\n }\r\n if (older) {\r\n older.newer = newer;\r\n }\r\n node.older = this.newest;\r\n node.older.newer = node;\r\n node.newer = null;\r\n this.newest = node;\r\n if (node === this.oldest) {\r\n this.oldest = newer;\r\n }\r\n }\r\n return node;\r\n };\r\n Cache.prototype.set = function (key, value) {\r\n var node = this.getNode(key);\r\n if (node) {\r\n return node.value = value;\r\n }\r\n node = {\r\n key: key,\r\n value: value,\r\n newer: null,\r\n older: this.newest\r\n };\r\n if (this.newest) {\r\n this.newest.newer = node;\r\n }\r\n this.newest = node;\r\n this.oldest = this.oldest || node;\r\n this.map.set(key, node);\r\n return node.value;\r\n };\r\n Cache.prototype.clean = function () {\r\n while (this.oldest && this.map.size > this.max) {\r\n this.delete(this.oldest.key);\r\n }\r\n };\r\n Cache.prototype.delete = function (key) {\r\n var node = this.map.get(key);\r\n if (node) {\r\n if (node === this.newest) {\r\n this.newest = node.older;\r\n }\r\n if (node === this.oldest) {\r\n this.oldest = node.newer;\r\n }\r\n if (node.newer) {\r\n node.newer.older = node.older;\r\n }\r\n if (node.older) {\r\n node.older.newer = node.newer;\r\n }\r\n this.map.delete(key);\r\n this.dispose(node.value, key);\r\n return true;\r\n }\r\n return false;\r\n };\r\n return Cache;\r\n}());\n\nvar parentEntrySlot = new Slot();\n\nvar _a;\r\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\r\nvar \r\n// This Array.from polyfill is restricted to working with Set for now,\r\n// but we can improve the polyfill and add other input types, as needed. Note\r\n// that this fallback implementation will only be used if the host environment\r\n// does not support a native Array.from function. In most modern JS runtimes,\r\n// the toArray function exported here will be === Array.from.\r\ntoArray = (_a = Array.from, _a === void 0 ? function (collection) {\r\n var array = [];\r\n collection.forEach(function (item) { return array.push(item); });\r\n return array;\r\n} : _a);\r\nfunction maybeUnsubscribe(entryOrDep) {\r\n var unsubscribe = entryOrDep.unsubscribe;\r\n if (typeof unsubscribe === \"function\") {\r\n entryOrDep.unsubscribe = void 0;\r\n unsubscribe();\r\n }\r\n}\n\nvar emptySetPool = [];\r\nvar POOL_TARGET_SIZE = 100;\r\n// Since this package might be used browsers, we should avoid using the\r\n// Node built-in assert module.\r\nfunction assert(condition, optionalMessage) {\r\n if (!condition) {\r\n throw new Error(optionalMessage || \"assertion failure\");\r\n }\r\n}\r\nfunction valueIs(a, b) {\r\n var len = a.length;\r\n return (\r\n // Unknown values are not equal to each other.\r\n len > 0 &&\r\n // Both values must be ordinary (or both exceptional) to be equal.\r\n len === b.length &&\r\n // The underlying value or exception must be the same.\r\n a[len - 1] === b[len - 1]);\r\n}\r\nfunction valueGet(value) {\r\n switch (value.length) {\r\n case 0: throw new Error(\"unknown value\");\r\n case 1: return value[0];\r\n case 2: throw value[1];\r\n }\r\n}\r\nfunction valueCopy(value) {\r\n return value.slice(0);\r\n}\r\nvar Entry = /** @class */ (function () {\r\n function Entry(fn) {\r\n this.fn = fn;\r\n this.parents = new Set();\r\n this.childValues = new Map();\r\n // When this Entry has children that are dirty, this property becomes\r\n // a Set containing other Entry objects, borrowed from emptySetPool.\r\n // When the set becomes empty, it gets recycled back to emptySetPool.\r\n this.dirtyChildren = null;\r\n this.dirty = true;\r\n this.recomputing = false;\r\n this.value = [];\r\n this.deps = null;\r\n ++Entry.count;\r\n }\r\n Entry.prototype.peek = function () {\r\n if (this.value.length === 1 && !mightBeDirty(this)) {\r\n rememberParent(this);\r\n return this.value[0];\r\n }\r\n };\r\n // This is the most important method of the Entry API, because it\r\n // determines whether the cached this.value can be returned immediately,\r\n // or must be recomputed. The overall performance of the caching system\r\n // depends on the truth of the following observations: (1) this.dirty is\r\n // usually false, (2) this.dirtyChildren is usually null/empty, and thus\r\n // (3) valueGet(this.value) is usually returned without recomputation.\r\n Entry.prototype.recompute = function (args) {\r\n assert(!this.recomputing, \"already recomputing\");\r\n rememberParent(this);\r\n return mightBeDirty(this)\r\n ? reallyRecompute(this, args)\r\n : valueGet(this.value);\r\n };\r\n Entry.prototype.setDirty = function () {\r\n if (this.dirty)\r\n return;\r\n this.dirty = true;\r\n this.value.length = 0;\r\n reportDirty(this);\r\n // We can go ahead and unsubscribe here, since any further dirty\r\n // notifications we receive will be redundant, and unsubscribing may\r\n // free up some resources, e.g. file watchers.\r\n maybeUnsubscribe(this);\r\n };\r\n Entry.prototype.dispose = function () {\r\n var _this = this;\r\n this.setDirty();\r\n // Sever any dependency relationships with our own children, so those\r\n // children don't retain this parent Entry in their child.parents sets,\r\n // thereby preventing it from being fully garbage collected.\r\n forgetChildren(this);\r\n // Because this entry has been kicked out of the cache (in index.js),\r\n // we've lost the ability to find out if/when this entry becomes dirty,\r\n // whether that happens through a subscription, because of a direct call\r\n // to entry.setDirty(), or because one of its children becomes dirty.\r\n // Because of this loss of future information, we have to assume the\r\n // worst (that this entry might have become dirty very soon), so we must\r\n // immediately mark this entry's parents as dirty. Normally we could\r\n // just call entry.setDirty() rather than calling parent.setDirty() for\r\n // each parent, but that would leave this entry in parent.childValues\r\n // and parent.dirtyChildren, which would prevent the child from being\r\n // truly forgotten.\r\n eachParent(this, function (parent, child) {\r\n parent.setDirty();\r\n forgetChild(parent, _this);\r\n });\r\n };\r\n Entry.prototype.forget = function () {\r\n // The code that creates Entry objects in index.ts will replace this method\r\n // with one that actually removes the Entry from the cache, which will also\r\n // trigger the entry.dispose method.\r\n this.dispose();\r\n };\r\n Entry.prototype.dependOn = function (dep) {\r\n dep.add(this);\r\n if (!this.deps) {\r\n this.deps = emptySetPool.pop() || new Set();\r\n }\r\n this.deps.add(dep);\r\n };\r\n Entry.prototype.forgetDeps = function () {\r\n var _this = this;\r\n if (this.deps) {\r\n toArray(this.deps).forEach(function (dep) { return dep.delete(_this); });\r\n this.deps.clear();\r\n emptySetPool.push(this.deps);\r\n this.deps = null;\r\n }\r\n };\r\n Entry.count = 0;\r\n return Entry;\r\n}());\r\nfunction rememberParent(child) {\r\n var parent = parentEntrySlot.getValue();\r\n if (parent) {\r\n child.parents.add(parent);\r\n if (!parent.childValues.has(child)) {\r\n parent.childValues.set(child, []);\r\n }\r\n if (mightBeDirty(child)) {\r\n reportDirtyChild(parent, child);\r\n }\r\n else {\r\n reportCleanChild(parent, child);\r\n }\r\n return parent;\r\n }\r\n}\r\nfunction reallyRecompute(entry, args) {\r\n forgetChildren(entry);\r\n // Set entry as the parent entry while calling recomputeNewValue(entry).\r\n parentEntrySlot.withValue(entry, recomputeNewValue, [entry, args]);\r\n if (maybeSubscribe(entry, args)) {\r\n // If we successfully recomputed entry.value and did not fail to\r\n // (re)subscribe, then this Entry is no longer explicitly dirty.\r\n setClean(entry);\r\n }\r\n return valueGet(entry.value);\r\n}\r\nfunction recomputeNewValue(entry, args) {\r\n entry.recomputing = true;\r\n // Set entry.value as unknown.\r\n entry.value.length = 0;\r\n try {\r\n // If entry.fn succeeds, entry.value will become a normal Value.\r\n entry.value[0] = entry.fn.apply(null, args);\r\n }\r\n catch (e) {\r\n // If entry.fn throws, entry.value will become exceptional.\r\n entry.value[1] = e;\r\n }\r\n // Either way, this line is always reached.\r\n entry.recomputing = false;\r\n}\r\nfunction mightBeDirty(entry) {\r\n return entry.dirty || !!(entry.dirtyChildren && entry.dirtyChildren.size);\r\n}\r\nfunction setClean(entry) {\r\n entry.dirty = false;\r\n if (mightBeDirty(entry)) {\r\n // This Entry may still have dirty children, in which case we can't\r\n // let our parents know we're clean just yet.\r\n return;\r\n }\r\n reportClean(entry);\r\n}\r\nfunction reportDirty(child) {\r\n eachParent(child, reportDirtyChild);\r\n}\r\nfunction reportClean(child) {\r\n eachParent(child, reportCleanChild);\r\n}\r\nfunction eachParent(child, callback) {\r\n var parentCount = child.parents.size;\r\n if (parentCount) {\r\n var parents = toArray(child.parents);\r\n for (var i = 0; i < parentCount; ++i) {\r\n callback(parents[i], child);\r\n }\r\n }\r\n}\r\n// Let a parent Entry know that one of its children may be dirty.\r\nfunction reportDirtyChild(parent, child) {\r\n // Must have called rememberParent(child) before calling\r\n // reportDirtyChild(parent, child).\r\n assert(parent.childValues.has(child));\r\n assert(mightBeDirty(child));\r\n var parentWasClean = !mightBeDirty(parent);\r\n if (!parent.dirtyChildren) {\r\n parent.dirtyChildren = emptySetPool.pop() || new Set;\r\n }\r\n else if (parent.dirtyChildren.has(child)) {\r\n // If we already know this child is dirty, then we must have already\r\n // informed our own parents that we are dirty, so we can terminate\r\n // the recursion early.\r\n return;\r\n }\r\n parent.dirtyChildren.add(child);\r\n // If parent was clean before, it just became (possibly) dirty (according to\r\n // mightBeDirty), since we just added child to parent.dirtyChildren.\r\n if (parentWasClean) {\r\n reportDirty(parent);\r\n }\r\n}\r\n// Let a parent Entry know that one of its children is no longer dirty.\r\nfunction reportCleanChild(parent, child) {\r\n // Must have called rememberChild(child) before calling\r\n // reportCleanChild(parent, child).\r\n assert(parent.childValues.has(child));\r\n assert(!mightBeDirty(child));\r\n var childValue = parent.childValues.get(child);\r\n if (childValue.length === 0) {\r\n parent.childValues.set(child, valueCopy(child.value));\r\n }\r\n else if (!valueIs(childValue, child.value)) {\r\n parent.setDirty();\r\n }\r\n removeDirtyChild(parent, child);\r\n if (mightBeDirty(parent)) {\r\n return;\r\n }\r\n reportClean(parent);\r\n}\r\nfunction removeDirtyChild(parent, child) {\r\n var dc = parent.dirtyChildren;\r\n if (dc) {\r\n dc.delete(child);\r\n if (dc.size === 0) {\r\n if (emptySetPool.length < POOL_TARGET_SIZE) {\r\n emptySetPool.push(dc);\r\n }\r\n parent.dirtyChildren = null;\r\n }\r\n }\r\n}\r\n// Removes all children from this entry and returns an array of the\r\n// removed children.\r\nfunction forgetChildren(parent) {\r\n if (parent.childValues.size > 0) {\r\n parent.childValues.forEach(function (_value, child) {\r\n forgetChild(parent, child);\r\n });\r\n }\r\n // Remove this parent Entry from any sets to which it was added by the\r\n // addToSet method.\r\n parent.forgetDeps();\r\n // After we forget all our children, this.dirtyChildren must be empty\r\n // and therefore must have been reset to null.\r\n assert(parent.dirtyChildren === null);\r\n}\r\nfunction forgetChild(parent, child) {\r\n child.parents.delete(parent);\r\n parent.childValues.delete(child);\r\n removeDirtyChild(parent, child);\r\n}\r\nfunction maybeSubscribe(entry, args) {\r\n if (typeof entry.subscribe === \"function\") {\r\n try {\r\n maybeUnsubscribe(entry); // Prevent double subscriptions.\r\n entry.unsubscribe = entry.subscribe.apply(null, args);\r\n }\r\n catch (e) {\r\n // If this Entry has a subscribe function and it threw an exception\r\n // (or an unsubscribe function it previously returned now throws),\r\n // return false to indicate that we were not able to subscribe (or\r\n // unsubscribe), and this Entry should remain dirty.\r\n entry.setDirty();\r\n return false;\r\n }\r\n }\r\n // Returning true indicates either that there was no entry.subscribe\r\n // function or that it succeeded.\r\n return true;\r\n}\n\nvar EntryMethods = {\r\n setDirty: true,\r\n dispose: true,\r\n forget: true,\r\n};\r\nfunction dep(options) {\r\n var depsByKey = new Map();\r\n var subscribe = options && options.subscribe;\r\n function depend(key) {\r\n var parent = parentEntrySlot.getValue();\r\n if (parent) {\r\n var dep_1 = depsByKey.get(key);\r\n if (!dep_1) {\r\n depsByKey.set(key, dep_1 = new Set);\r\n }\r\n parent.dependOn(dep_1);\r\n if (typeof subscribe === \"function\") {\r\n maybeUnsubscribe(dep_1);\r\n dep_1.unsubscribe = subscribe(key);\r\n }\r\n }\r\n }\r\n depend.dirty = function dirty(key, entryMethodName) {\r\n var dep = depsByKey.get(key);\r\n if (dep) {\r\n var m_1 = (entryMethodName &&\r\n hasOwnProperty.call(EntryMethods, entryMethodName)) ? entryMethodName : \"setDirty\";\r\n // We have to use toArray(dep).forEach instead of dep.forEach, because\r\n // modifying a Set while iterating over it can cause elements in the Set\r\n // to be removed from the Set before they've been iterated over.\r\n toArray(dep).forEach(function (entry) { return entry[m_1](); });\r\n depsByKey.delete(key);\r\n maybeUnsubscribe(dep);\r\n }\r\n };\r\n return depend;\r\n}\n\nfunction makeDefaultMakeCacheKeyFunction() {\r\n var keyTrie = new Trie(typeof WeakMap === \"function\");\r\n return function () {\r\n return keyTrie.lookupArray(arguments);\r\n };\r\n}\r\n// The defaultMakeCacheKey function is remarkably powerful, because it gives\r\n// a unique object for any shallow-identical list of arguments. If you need\r\n// to implement a custom makeCacheKey function, you may find it helpful to\r\n// delegate the final work to defaultMakeCacheKey, which is why we export it\r\n// here. However, you may want to avoid defaultMakeCacheKey if your runtime\r\n// does not support WeakMap, or you have the ability to return a string key.\r\n// In those cases, just write your own custom makeCacheKey functions.\r\nvar defaultMakeCacheKey = makeDefaultMakeCacheKeyFunction();\r\nvar caches = new Set();\r\nfunction wrap(originalFunction, options) {\r\n if (options === void 0) { options = Object.create(null); }\r\n var cache = new Cache(options.max || Math.pow(2, 16), function (entry) { return entry.dispose(); });\r\n var keyArgs = options.keyArgs;\r\n var makeCacheKey = options.makeCacheKey ||\r\n makeDefaultMakeCacheKeyFunction();\r\n var optimistic = function () {\r\n var key = makeCacheKey.apply(null, keyArgs ? keyArgs.apply(null, arguments) : arguments);\r\n if (key === void 0) {\r\n return originalFunction.apply(null, arguments);\r\n }\r\n var entry = cache.get(key);\r\n if (!entry) {\r\n cache.set(key, entry = new Entry(originalFunction));\r\n entry.subscribe = options.subscribe;\r\n // Give the Entry the ability to trigger cache.delete(key), even though\r\n // the Entry itself does not know about key or cache.\r\n entry.forget = function () { return cache.delete(key); };\r\n }\r\n var value = entry.recompute(Array.prototype.slice.call(arguments));\r\n // Move this entry to the front of the least-recently used queue,\r\n // since we just finished computing its value.\r\n cache.set(key, entry);\r\n caches.add(cache);\r\n // Clean up any excess entries in the cache, but only if there is no\r\n // active parent entry, meaning we're not in the middle of a larger\r\n // computation that might be flummoxed by the cleaning.\r\n if (!parentEntrySlot.hasValue()) {\r\n caches.forEach(function (cache) { return cache.clean(); });\r\n caches.clear();\r\n }\r\n return value;\r\n };\r\n Object.defineProperty(optimistic, \"size\", {\r\n get: function () {\r\n return cache[\"map\"].size;\r\n },\r\n configurable: false,\r\n enumerable: false,\r\n });\r\n function dirtyKey(key) {\r\n var entry = cache.get(key);\r\n if (entry) {\r\n entry.setDirty();\r\n }\r\n }\r\n optimistic.dirtyKey = dirtyKey;\r\n optimistic.dirty = function dirty() {\r\n dirtyKey(makeCacheKey.apply(null, arguments));\r\n };\r\n function peekKey(key) {\r\n var entry = cache.get(key);\r\n if (entry) {\r\n return entry.peek();\r\n }\r\n }\r\n optimistic.peekKey = peekKey;\r\n optimistic.peek = function peek() {\r\n return peekKey(makeCacheKey.apply(null, arguments));\r\n };\r\n function forgetKey(key) {\r\n return cache.delete(key);\r\n }\r\n optimistic.forgetKey = forgetKey;\r\n optimistic.forget = function forget() {\r\n return forgetKey(makeCacheKey.apply(null, arguments));\r\n };\r\n optimistic.makeCacheKey = makeCacheKey;\r\n optimistic.getKey = keyArgs ? function getKey() {\r\n return makeCacheKey.apply(null, keyArgs.apply(null, arguments));\r\n } : makeCacheKey;\r\n return Object.freeze(optimistic);\r\n}\n\nexport { defaultMakeCacheKey, dep, wrap };\n//# sourceMappingURL=bundle.esm.js.map\n","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","import defineProperty from \"./defineProperty.js\";\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nexport default function _objectSpread2(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {\n defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}","import _objectSpread from '@babel/runtime/helpers/esm/objectSpread2';\n\n/**\n * Adapted from React: https://github.com/facebook/react/blob/master/packages/shared/formatProdErrorMessage.js\n *\n * Do not require this module directly! Use normal throw error calls. These messages will be replaced with error codes\n * during build.\n * @param {number} code\n */\nfunction formatProdErrorMessage(code) {\n return \"Minified Redux error #\" + code + \"; visit https://redux.js.org/Errors?code=\" + code + \" for the full message or \" + 'use the non-minified dev environment for full errors. ';\n}\n\n// Inlined version of the `symbol-observable` polyfill\nvar $$observable = (function () {\n return typeof Symbol === 'function' && Symbol.observable || '@@observable';\n})();\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nvar randomString = function randomString() {\n return Math.random().toString(36).substring(7).split('').join('.');\n};\n\nvar ActionTypes = {\n INIT: \"@@redux/INIT\" + randomString(),\n REPLACE: \"@@redux/REPLACE\" + randomString(),\n PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() {\n return \"@@redux/PROBE_UNKNOWN_ACTION\" + randomString();\n }\n};\n\n/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\n */\nfunction isPlainObject(obj) {\n if (typeof obj !== 'object' || obj === null) return false;\n var proto = obj;\n\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n\n return Object.getPrototypeOf(obj) === proto;\n}\n\n// Inlined / shortened version of `kindOf` from https://github.com/jonschlinkert/kind-of\nfunction miniKindOf(val) {\n if (val === void 0) return 'undefined';\n if (val === null) return 'null';\n var type = typeof val;\n\n switch (type) {\n case 'boolean':\n case 'string':\n case 'number':\n case 'symbol':\n case 'function':\n {\n return type;\n }\n }\n\n if (Array.isArray(val)) return 'array';\n if (isDate(val)) return 'date';\n if (isError(val)) return 'error';\n var constructorName = ctorName(val);\n\n switch (constructorName) {\n case 'Symbol':\n case 'Promise':\n case 'WeakMap':\n case 'WeakSet':\n case 'Map':\n case 'Set':\n return constructorName;\n } // other\n\n\n return type.slice(8, -1).toLowerCase().replace(/\\s/g, '');\n}\n\nfunction ctorName(val) {\n return typeof val.constructor === 'function' ? val.constructor.name : null;\n}\n\nfunction isError(val) {\n return val instanceof Error || typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number';\n}\n\nfunction isDate(val) {\n if (val instanceof Date) return true;\n return typeof val.toDateString === 'function' && typeof val.getDate === 'function' && typeof val.setDate === 'function';\n}\n\nfunction kindOf(val) {\n var typeOfVal = typeof val;\n\n if (process.env.NODE_ENV !== 'production') {\n typeOfVal = miniKindOf(val);\n }\n\n return typeOfVal;\n}\n\n/**\n * @deprecated\n *\n * **We recommend using the `configureStore` method\n * of the `@reduxjs/toolkit` package**, which replaces `createStore`.\n *\n * Redux Toolkit is our recommended approach for writing Redux logic today,\n * including store setup, reducers, data fetching, and more.\n *\n * **For more details, please read this Redux docs page:**\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * `configureStore` from Redux Toolkit is an improved version of `createStore` that\n * simplifies setup and helps avoid common bugs.\n *\n * You should not be using the `redux` core package by itself today, except for learning purposes.\n * The `createStore` method from the core `redux` package will not be removed, but we encourage\n * all users to migrate to using Redux Toolkit for all Redux code.\n *\n * If you want to use `createStore` without this visual deprecation warning, use\n * the `legacy_createStore` import instead:\n *\n * `import { legacy_createStore as createStore} from 'redux'`\n *\n */\n\nfunction createStore(reducer, preloadedState, enhancer) {\n var _ref2;\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(0) : 'It looks like you are passing several store enhancers to ' + 'createStore(). This is not supported. Instead, compose them ' + 'together to a single function. See https://redux.js.org/tutorials/fundamentals/part-4-store#creating-a-store-with-enhancers for an example.');\n }\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n enhancer = preloadedState;\n preloadedState = undefined;\n }\n\n if (typeof enhancer !== 'undefined') {\n if (typeof enhancer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(1) : \"Expected the enhancer to be a function. Instead, received: '\" + kindOf(enhancer) + \"'\");\n }\n\n return enhancer(createStore)(reducer, preloadedState);\n }\n\n if (typeof reducer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(2) : \"Expected the root reducer to be a function. Instead, received: '\" + kindOf(reducer) + \"'\");\n }\n\n var currentReducer = reducer;\n var currentState = preloadedState;\n var currentListeners = [];\n var nextListeners = currentListeners;\n var isDispatching = false;\n /**\n * This makes a shallow copy of currentListeners so we can use\n * nextListeners as a temporary list while dispatching.\n *\n * This prevents any bugs around consumers calling\n * subscribe/unsubscribe in the middle of a dispatch.\n */\n\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\n }\n }\n /**\n * Reads the state tree managed by the store.\n *\n * @returns {any} The current state tree of your application.\n */\n\n\n function getState() {\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(3) : 'You may not call store.getState() while the reducer is executing. ' + 'The reducer has already received the state as an argument. ' + 'Pass it down from the top reducer instead of reading it from the store.');\n }\n\n return currentState;\n }\n /**\n * Adds a change listener. It will be called any time an action is dispatched,\n * and some part of the state tree may potentially have changed. You may then\n * call `getState()` to read the current state tree inside the callback.\n *\n * You may call `dispatch()` from a change listener, with the following\n * caveats:\n *\n * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n * If you subscribe or unsubscribe while the listeners are being invoked, this\n * will not have any effect on the `dispatch()` that is currently in progress.\n * However, the next `dispatch()` call, whether nested or not, will use a more\n * recent snapshot of the subscription list.\n *\n * 2. The listener should not expect to see all state changes, as the state\n * might have been updated multiple times during a nested `dispatch()` before\n * the listener is called. It is, however, guaranteed that all subscribers\n * registered before the `dispatch()` started will be called with the latest\n * state by the time it exits.\n *\n * @param {Function} listener A callback to be invoked on every dispatch.\n * @returns {Function} A function to remove this change listener.\n */\n\n\n function subscribe(listener) {\n if (typeof listener !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(4) : \"Expected the listener to be a function. Instead, received: '\" + kindOf(listener) + \"'\");\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(5) : 'You may not call store.subscribe() while the reducer is executing. ' + 'If you would like to be notified after the store has been updated, subscribe from a ' + 'component and invoke store.getState() in the callback to access the latest state. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n }\n\n var isSubscribed = true;\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(6) : 'You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n }\n\n isSubscribed = false;\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n currentListeners = null;\n };\n }\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changed”. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n\n\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(7) : \"Actions must be plain objects. Instead, the actual type was: '\" + kindOf(action) + \"'. You may need to add middleware to your store setup to handle dispatching other values, such as 'redux-thunk' to handle dispatching functions. See https://redux.js.org/tutorials/fundamentals/part-4-store#middleware and https://redux.js.org/tutorials/fundamentals/part-6-async-logic#using-the-redux-thunk-middleware for examples.\");\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(8) : 'Actions may not have an undefined \"type\" property. You may have misspelled an action type string constant.');\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(9) : 'Reducers may not dispatch actions.');\n }\n\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n\n var listeners = currentListeners = nextListeners;\n\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n listener();\n }\n\n return action;\n }\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n\n\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(10) : \"Expected the nextReducer to be a function. Instead, received: '\" + kindOf(nextReducer));\n }\n\n currentReducer = nextReducer; // This action has a similiar effect to ActionTypes.INIT.\n // Any reducers that existed in both the new and old rootReducer\n // will receive the previous state. This effectively populates\n // the new state tree with any relevant data from the old one.\n\n dispatch({\n type: ActionTypes.REPLACE\n });\n }\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns {observable} A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/tc39/proposal-observable\n */\n\n\n function observable() {\n var _ref;\n\n var outerSubscribe = subscribe;\n return _ref = {\n /**\n * The minimal observable subscription method.\n * @param {Object} observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns {subscription} An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe: function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(11) : \"Expected the observer to be an object. Instead, received: '\" + kindOf(observer) + \"'\");\n }\n\n function observeState() {\n if (observer.next) {\n observer.next(getState());\n }\n }\n\n observeState();\n var unsubscribe = outerSubscribe(observeState);\n return {\n unsubscribe: unsubscribe\n };\n }\n }, _ref[$$observable] = function () {\n return this;\n }, _ref;\n } // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n\n\n dispatch({\n type: ActionTypes.INIT\n });\n return _ref2 = {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n }, _ref2[$$observable] = observable, _ref2;\n}\n/**\n * Creates a Redux store that holds the state tree.\n *\n * **We recommend using `configureStore` from the\n * `@reduxjs/toolkit` package**, which replaces `createStore`:\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n\nvar legacy_createStore = createStore;\n\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n\n\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n } catch (e) {} // eslint-disable-line no-empty\n\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n var reducerKeys = Object.keys(reducers);\n var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n\n if (!isPlainObject(inputState)) {\n return \"The \" + argumentName + \" has unexpected type of \\\"\" + kindOf(inputState) + \"\\\". Expected argument to be an object with the following \" + (\"keys: \\\"\" + reducerKeys.join('\", \"') + \"\\\"\");\n }\n\n var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n });\n unexpectedKeys.forEach(function (key) {\n unexpectedKeyCache[key] = true;\n });\n if (action && action.type === ActionTypes.REPLACE) return;\n\n if (unexpectedKeys.length > 0) {\n return \"Unexpected \" + (unexpectedKeys.length > 1 ? 'keys' : 'key') + \" \" + (\"\\\"\" + unexpectedKeys.join('\", \"') + \"\\\" found in \" + argumentName + \". \") + \"Expected to find one of the known reducer keys instead: \" + (\"\\\"\" + reducerKeys.join('\", \"') + \"\\\". Unexpected keys will be ignored.\");\n }\n}\n\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, {\n type: ActionTypes.INIT\n });\n\n if (typeof initialState === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(12) : \"The slice reducer for key \\\"\" + key + \"\\\" returned undefined during initialization. \" + \"If the state passed to the reducer is undefined, you must \" + \"explicitly return the initial state. The initial state may \" + \"not be undefined. If you don't want to set a value for this reducer, \" + \"you can use null instead of undefined.\");\n }\n\n if (typeof reducer(undefined, {\n type: ActionTypes.PROBE_UNKNOWN_ACTION()\n }) === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(13) : \"The slice reducer for key \\\"\" + key + \"\\\" returned undefined when probed with a random type. \" + (\"Don't try to handle '\" + ActionTypes.INIT + \"' or other actions in \\\"redux/*\\\" \") + \"namespace. They are considered private. Instead, you must return the \" + \"current state for any unknown actions, unless it is undefined, \" + \"in which case you must return the initial state, regardless of the \" + \"action type. The initial state may not be undefined, but can be null.\");\n }\n });\n}\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\n\n\nfunction combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n\n for (var i = 0; i < reducerKeys.length; i++) {\n var key = reducerKeys[i];\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof reducers[key] === 'undefined') {\n warning(\"No reducer provided for key \\\"\" + key + \"\\\"\");\n }\n }\n\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n\n var finalReducerKeys = Object.keys(finalReducers); // This is used to make sure we don't warn about the same\n // keys multiple times.\n\n var unexpectedKeyCache;\n\n if (process.env.NODE_ENV !== 'production') {\n unexpectedKeyCache = {};\n }\n\n var shapeAssertionError;\n\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n\n return function combination(state, action) {\n if (state === void 0) {\n state = {};\n }\n\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n\n var hasChanged = false;\n var nextState = {};\n\n for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n var _key = finalReducerKeys[_i];\n var reducer = finalReducers[_key];\n var previousStateForKey = state[_key];\n var nextStateForKey = reducer(previousStateForKey, action);\n\n if (typeof nextStateForKey === 'undefined') {\n var actionType = action && action.type;\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(14) : \"When called with an action of type \" + (actionType ? \"\\\"\" + String(actionType) + \"\\\"\" : '(unknown type)') + \", the slice reducer for key \\\"\" + _key + \"\\\" returned undefined. \" + \"To ignore an action, you must explicitly return the previous state. \" + \"If you want this reducer to hold no value, you can return null instead of undefined.\");\n }\n\n nextState[_key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n\n hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length;\n return hasChanged ? nextState : state;\n };\n}\n\nfunction bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(this, arguments));\n };\n}\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass an action creator as the first argument,\n * and get a dispatch wrapped function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\n\n\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(16) : \"bindActionCreators expected an object or a function, but instead received: '\" + kindOf(actionCreators) + \"'. \" + \"Did you write \\\"import ActionCreators from\\\" instead of \\\"import * as ActionCreators from\\\"?\");\n }\n\n var boundActionCreators = {};\n\n for (var key in actionCreators) {\n var actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n\n return boundActionCreators;\n}\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\nfunction compose() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(void 0, arguments));\n };\n });\n}\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\n\nfunction applyMiddleware() {\n for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function () {\n var store = createStore.apply(void 0, arguments);\n\n var _dispatch = function dispatch() {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(15) : 'Dispatching while constructing your middleware is not allowed. ' + 'Other middleware would not be applied to this dispatch.');\n };\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch() {\n return _dispatch.apply(void 0, arguments);\n }\n };\n var chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = compose.apply(void 0, chain)(store.dispatch);\n return _objectSpread(_objectSpread({}, store), {}, {\n dispatch: _dispatch\n });\n };\n };\n}\n\n/*\n * This is a dummy function to check if the function name has been altered by minification.\n * If the function has been minified and NODE_ENV !== 'production', warn the user.\n */\n\nfunction isCrushed() {}\n\nif (process.env.NODE_ENV !== 'production' && typeof isCrushed.name === 'string' && isCrushed.name !== 'isCrushed') {\n warning('You are currently using minified code outside of NODE_ENV === \"production\". ' + 'This means that you are running a slower development build of Redux. ' + 'You can use loose-envify (https://github.com/zertosh/loose-envify) for browserify ' + 'or setting mode to production in webpack (https://webpack.js.org/concepts/mode/) ' + 'to ensure you have the correct code for your production build.');\n}\n\nexport { ActionTypes as __DO_NOT_USE__ActionTypes, applyMiddleware, bindActionCreators, combineReducers, compose, createStore, legacy_createStore };\n","import React from 'react';\nexport var ReactReduxContext = /*#__PURE__*/React.createContext(null);\n\nif (process.env.NODE_ENV !== 'production') {\n ReactReduxContext.displayName = 'ReactRedux';\n}\n\nexport default ReactReduxContext;","// Default to a dummy \"batch\" implementation that just runs the callback\nfunction defaultNoopBatch(callback) {\n callback();\n}\n\nvar batch = defaultNoopBatch; // Allow injecting another batching function later\n\nexport var setBatch = function setBatch(newBatch) {\n return batch = newBatch;\n}; // Supply a getter just to skip dealing with ESM bindings\n\nexport var getBatch = function getBatch() {\n return batch;\n};","import { getBatch } from './batch'; // encapsulates the subscription logic for connecting a component to the redux store, as\n// well as nesting subscriptions of descendant components, so that we can ensure the\n// ancestor components re-render before descendants\n\nfunction createListenerCollection() {\n var batch = getBatch();\n var first = null;\n var last = null;\n return {\n clear: function clear() {\n first = null;\n last = null;\n },\n notify: function notify() {\n batch(function () {\n var listener = first;\n\n while (listener) {\n listener.callback();\n listener = listener.next;\n }\n });\n },\n get: function get() {\n var listeners = [];\n var listener = first;\n\n while (listener) {\n listeners.push(listener);\n listener = listener.next;\n }\n\n return listeners;\n },\n subscribe: function subscribe(callback) {\n var isSubscribed = true;\n var listener = last = {\n callback: callback,\n next: null,\n prev: last\n };\n\n if (listener.prev) {\n listener.prev.next = listener;\n } else {\n first = listener;\n }\n\n return function unsubscribe() {\n if (!isSubscribed || first === null) return;\n isSubscribed = false;\n\n if (listener.next) {\n listener.next.prev = listener.prev;\n } else {\n last = listener.prev;\n }\n\n if (listener.prev) {\n listener.prev.next = listener.next;\n } else {\n first = listener.next;\n }\n };\n }\n };\n}\n\nvar nullListeners = {\n notify: function notify() {},\n get: function get() {\n return [];\n }\n};\nexport function createSubscription(store, parentSub) {\n var unsubscribe;\n var listeners = nullListeners;\n\n function addNestedSub(listener) {\n trySubscribe();\n return listeners.subscribe(listener);\n }\n\n function notifyNestedSubs() {\n listeners.notify();\n }\n\n function handleChangeWrapper() {\n if (subscription.onStateChange) {\n subscription.onStateChange();\n }\n }\n\n function isSubscribed() {\n return Boolean(unsubscribe);\n }\n\n function trySubscribe() {\n if (!unsubscribe) {\n unsubscribe = parentSub ? parentSub.addNestedSub(handleChangeWrapper) : store.subscribe(handleChangeWrapper);\n listeners = createListenerCollection();\n }\n }\n\n function tryUnsubscribe() {\n if (unsubscribe) {\n unsubscribe();\n unsubscribe = undefined;\n listeners.clear();\n listeners = nullListeners;\n }\n }\n\n var subscription = {\n addNestedSub: addNestedSub,\n notifyNestedSubs: notifyNestedSubs,\n handleChangeWrapper: handleChangeWrapper,\n isSubscribed: isSubscribed,\n trySubscribe: trySubscribe,\n tryUnsubscribe: tryUnsubscribe,\n getListeners: function getListeners() {\n return listeners;\n }\n };\n return subscription;\n}","import { useEffect, useLayoutEffect } from 'react'; // React currently throws a warning when using useLayoutEffect on the server.\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect in the browser. We need useLayoutEffect to ensure the store\n// subscription callback always has the selector from the latest render commit\n// available, otherwise a store update may happen between render and the effect,\n// which may cause missed updates; we also must ensure the store subscription\n// is created synchronously, otherwise a store update may occur before the\n// subscription is created and an inconsistent state may be observed\n\nexport var useIsomorphicLayoutEffect = typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined' ? useLayoutEffect : useEffect;","import React, { useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport { ReactReduxContext } from './Context';\nimport { createSubscription } from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\n\nfunction Provider(_ref) {\n var store = _ref.store,\n context = _ref.context,\n children = _ref.children;\n var contextValue = useMemo(function () {\n var subscription = createSubscription(store);\n return {\n store: store,\n subscription: subscription\n };\n }, [store]);\n var previousState = useMemo(function () {\n return store.getState();\n }, [store]);\n useIsomorphicLayoutEffect(function () {\n var subscription = contextValue.subscription;\n subscription.onStateChange = subscription.notifyNestedSubs;\n subscription.trySubscribe();\n\n if (previousState !== store.getState()) {\n subscription.notifyNestedSubs();\n }\n\n return function () {\n subscription.tryUnsubscribe();\n subscription.onStateChange = null;\n };\n }, [contextValue, previousState]);\n var Context = context || ReactReduxContext;\n return /*#__PURE__*/React.createElement(Context.Provider, {\n value: contextValue\n }, children);\n}\n\nif (process.env.NODE_ENV !== 'production') {\n Provider.propTypes = {\n store: PropTypes.shape({\n subscribe: PropTypes.func.isRequired,\n dispatch: PropTypes.func.isRequired,\n getState: PropTypes.func.isRequired\n }),\n context: PropTypes.object,\n children: PropTypes.any\n };\n}\n\nexport default Provider;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"getDisplayName\", \"methodName\", \"renderCountProp\", \"shouldHandleStateChanges\", \"storeKey\", \"withRef\", \"forwardRef\", \"context\"],\n _excluded2 = [\"reactReduxForwardedRef\"];\nimport hoistStatics from 'hoist-non-react-statics';\nimport React, { useContext, useMemo, useRef, useReducer } from 'react';\nimport { isValidElementType, isContextConsumer } from 'react-is';\nimport { createSubscription } from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\nimport { ReactReduxContext } from './Context'; // Define some constant arrays just to avoid re-creating these\n\nvar EMPTY_ARRAY = [];\nvar NO_SUBSCRIPTION_ARRAY = [null, null];\n\nvar stringifyComponent = function stringifyComponent(Comp) {\n try {\n return JSON.stringify(Comp);\n } catch (err) {\n return String(Comp);\n }\n};\n\nfunction storeStateUpdatesReducer(state, action) {\n var updateCount = state[1];\n return [action.payload, updateCount + 1];\n}\n\nfunction useIsomorphicLayoutEffectWithArgs(effectFunc, effectArgs, dependencies) {\n useIsomorphicLayoutEffect(function () {\n return effectFunc.apply(void 0, effectArgs);\n }, dependencies);\n}\n\nfunction captureWrapperProps(lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, actualChildProps, childPropsFromStoreUpdate, notifyNestedSubs) {\n // We want to capture the wrapper props and child props we used for later comparisons\n lastWrapperProps.current = wrapperProps;\n lastChildProps.current = actualChildProps;\n renderIsScheduled.current = false; // If the render was from a store update, clear out that reference and cascade the subscriber update\n\n if (childPropsFromStoreUpdate.current) {\n childPropsFromStoreUpdate.current = null;\n notifyNestedSubs();\n }\n}\n\nfunction subscribeUpdates(shouldHandleStateChanges, store, subscription, childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, childPropsFromStoreUpdate, notifyNestedSubs, forceComponentUpdateDispatch) {\n // If we're not subscribed to the store, nothing to do here\n if (!shouldHandleStateChanges) return; // Capture values for checking if and when this component unmounts\n\n var didUnsubscribe = false;\n var lastThrownError = null; // We'll run this callback every time a store subscription update propagates to this component\n\n var checkForUpdates = function checkForUpdates() {\n if (didUnsubscribe) {\n // Don't run stale listeners.\n // Redux doesn't guarantee unsubscriptions happen until next dispatch.\n return;\n }\n\n var latestStoreState = store.getState();\n var newChildProps, error;\n\n try {\n // Actually run the selector with the most recent store state and wrapper props\n // to determine what the child props should be\n newChildProps = childPropsSelector(latestStoreState, lastWrapperProps.current);\n } catch (e) {\n error = e;\n lastThrownError = e;\n }\n\n if (!error) {\n lastThrownError = null;\n } // If the child props haven't changed, nothing to do here - cascade the subscription update\n\n\n if (newChildProps === lastChildProps.current) {\n if (!renderIsScheduled.current) {\n notifyNestedSubs();\n }\n } else {\n // Save references to the new child props. Note that we track the \"child props from store update\"\n // as a ref instead of a useState/useReducer because we need a way to determine if that value has\n // been processed. If this went into useState/useReducer, we couldn't clear out the value without\n // forcing another re-render, which we don't want.\n lastChildProps.current = newChildProps;\n childPropsFromStoreUpdate.current = newChildProps;\n renderIsScheduled.current = true; // If the child props _did_ change (or we caught an error), this wrapper component needs to re-render\n\n forceComponentUpdateDispatch({\n type: 'STORE_UPDATED',\n payload: {\n error: error\n }\n });\n }\n }; // Actually subscribe to the nearest connected ancestor (or store)\n\n\n subscription.onStateChange = checkForUpdates;\n subscription.trySubscribe(); // Pull data from the store after first render in case the store has\n // changed since we began.\n\n checkForUpdates();\n\n var unsubscribeWrapper = function unsubscribeWrapper() {\n didUnsubscribe = true;\n subscription.tryUnsubscribe();\n subscription.onStateChange = null;\n\n if (lastThrownError) {\n // It's possible that we caught an error due to a bad mapState function, but the\n // parent re-rendered without this component and we're about to unmount.\n // This shouldn't happen as long as we do top-down subscriptions correctly, but\n // if we ever do those wrong, this throw will surface the error in our tests.\n // In that case, throw the error from here so it doesn't get lost.\n throw lastThrownError;\n }\n };\n\n return unsubscribeWrapper;\n}\n\nvar initStateUpdates = function initStateUpdates() {\n return [null, 0];\n};\n\nexport default function connectAdvanced(\n/*\r\n selectorFactory is a func that is responsible for returning the selector function used to\r\n compute new props from state, props, and dispatch. For example:\r\n export default connectAdvanced((dispatch, options) => (state, props) => ({\r\n thing: state.things[props.thingId],\r\n saveThing: fields => dispatch(actionCreators.saveThing(props.thingId, fields)),\r\n }))(YourComponent)\r\n Access to dispatch is provided to the factory so selectorFactories can bind actionCreators\r\n outside of their selector as an optimization. Options passed to connectAdvanced are passed to\r\n the selectorFactory, along with displayName and WrappedComponent, as the second argument.\r\n Note that selectorFactory is responsible for all caching/memoization of inbound and outbound\r\n props. Do not use connectAdvanced directly without memoizing results between calls to your\r\n selector, otherwise the Connect component will re-render on every state or props change.\r\n*/\nselectorFactory, // options object:\n_ref) {\n if (_ref === void 0) {\n _ref = {};\n }\n\n var _ref2 = _ref,\n _ref2$getDisplayName = _ref2.getDisplayName,\n getDisplayName = _ref2$getDisplayName === void 0 ? function (name) {\n return \"ConnectAdvanced(\" + name + \")\";\n } : _ref2$getDisplayName,\n _ref2$methodName = _ref2.methodName,\n methodName = _ref2$methodName === void 0 ? 'connectAdvanced' : _ref2$methodName,\n _ref2$renderCountProp = _ref2.renderCountProp,\n renderCountProp = _ref2$renderCountProp === void 0 ? undefined : _ref2$renderCountProp,\n _ref2$shouldHandleSta = _ref2.shouldHandleStateChanges,\n shouldHandleStateChanges = _ref2$shouldHandleSta === void 0 ? true : _ref2$shouldHandleSta,\n _ref2$storeKey = _ref2.storeKey,\n storeKey = _ref2$storeKey === void 0 ? 'store' : _ref2$storeKey,\n _ref2$withRef = _ref2.withRef,\n withRef = _ref2$withRef === void 0 ? false : _ref2$withRef,\n _ref2$forwardRef = _ref2.forwardRef,\n forwardRef = _ref2$forwardRef === void 0 ? false : _ref2$forwardRef,\n _ref2$context = _ref2.context,\n context = _ref2$context === void 0 ? ReactReduxContext : _ref2$context,\n connectOptions = _objectWithoutPropertiesLoose(_ref2, _excluded);\n\n if (process.env.NODE_ENV !== 'production') {\n if (renderCountProp !== undefined) {\n throw new Error(\"renderCountProp is removed. render counting is built into the latest React Dev Tools profiling extension\");\n }\n\n if (withRef) {\n throw new Error('withRef is removed. To access the wrapped instance, use a ref on the connected component');\n }\n\n var customStoreWarningMessage = 'To use a custom Redux store for specific components, create a custom React context with ' + \"React.createContext(), and pass the context object to React Redux's Provider and specific components\" + ' like: . ' + 'You may also pass a {context : MyContext} option to connect';\n\n if (storeKey !== 'store') {\n throw new Error('storeKey has been removed and does not do anything. ' + customStoreWarningMessage);\n }\n }\n\n var Context = context;\n return function wrapWithConnect(WrappedComponent) {\n if (process.env.NODE_ENV !== 'production' && !isValidElementType(WrappedComponent)) {\n throw new Error(\"You must pass a component to the function returned by \" + (methodName + \". Instead received \" + stringifyComponent(WrappedComponent)));\n }\n\n var wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\n var displayName = getDisplayName(wrappedComponentName);\n\n var selectorFactoryOptions = _extends({}, connectOptions, {\n getDisplayName: getDisplayName,\n methodName: methodName,\n renderCountProp: renderCountProp,\n shouldHandleStateChanges: shouldHandleStateChanges,\n storeKey: storeKey,\n displayName: displayName,\n wrappedComponentName: wrappedComponentName,\n WrappedComponent: WrappedComponent\n });\n\n var pure = connectOptions.pure;\n\n function createChildSelector(store) {\n return selectorFactory(store.dispatch, selectorFactoryOptions);\n } // If we aren't running in \"pure\" mode, we don't want to memoize values.\n // To avoid conditionally calling hooks, we fall back to a tiny wrapper\n // that just executes the given callback immediately.\n\n\n var usePureOnlyMemo = pure ? useMemo : function (callback) {\n return callback();\n };\n\n function ConnectFunction(props) {\n var _useMemo = useMemo(function () {\n // Distinguish between actual \"data\" props that were passed to the wrapper component,\n // and values needed to control behavior (forwarded refs, alternate context instances).\n // To maintain the wrapperProps object reference, memoize this destructuring.\n var reactReduxForwardedRef = props.reactReduxForwardedRef,\n wrapperProps = _objectWithoutPropertiesLoose(props, _excluded2);\n\n return [props.context, reactReduxForwardedRef, wrapperProps];\n }, [props]),\n propsContext = _useMemo[0],\n reactReduxForwardedRef = _useMemo[1],\n wrapperProps = _useMemo[2];\n\n var ContextToUse = useMemo(function () {\n // Users may optionally pass in a custom context instance to use instead of our ReactReduxContext.\n // Memoize the check that determines which context instance we should use.\n return propsContext && propsContext.Consumer && isContextConsumer( /*#__PURE__*/React.createElement(propsContext.Consumer, null)) ? propsContext : Context;\n }, [propsContext, Context]); // Retrieve the store and ancestor subscription via context, if available\n\n var contextValue = useContext(ContextToUse); // The store _must_ exist as either a prop or in context.\n // We'll check to see if it _looks_ like a Redux store first.\n // This allows us to pass through a `store` prop that is just a plain value.\n\n var didStoreComeFromProps = Boolean(props.store) && Boolean(props.store.getState) && Boolean(props.store.dispatch);\n var didStoreComeFromContext = Boolean(contextValue) && Boolean(contextValue.store);\n\n if (process.env.NODE_ENV !== 'production' && !didStoreComeFromProps && !didStoreComeFromContext) {\n throw new Error(\"Could not find \\\"store\\\" in the context of \" + (\"\\\"\" + displayName + \"\\\". Either wrap the root component in a , \") + \"or pass a custom React context provider to and the corresponding \" + (\"React context consumer to \" + displayName + \" in connect options.\"));\n } // Based on the previous check, one of these must be true\n\n\n var store = didStoreComeFromProps ? props.store : contextValue.store;\n var childPropsSelector = useMemo(function () {\n // The child props selector needs the store reference as an input.\n // Re-create this selector whenever the store changes.\n return createChildSelector(store);\n }, [store]);\n\n var _useMemo2 = useMemo(function () {\n if (!shouldHandleStateChanges) return NO_SUBSCRIPTION_ARRAY; // This Subscription's source should match where store came from: props vs. context. A component\n // connected to the store via props shouldn't use subscription from context, or vice versa.\n\n // This Subscription's source should match where store came from: props vs. context. A component\n // connected to the store via props shouldn't use subscription from context, or vice versa.\n var subscription = createSubscription(store, didStoreComeFromProps ? null : contextValue.subscription); // `notifyNestedSubs` is duplicated to handle the case where the component is unmounted in\n // the middle of the notification loop, where `subscription` will then be null. This can\n // probably be avoided if Subscription's listeners logic is changed to not call listeners\n // that have been unsubscribed in the middle of the notification loop.\n\n // `notifyNestedSubs` is duplicated to handle the case where the component is unmounted in\n // the middle of the notification loop, where `subscription` will then be null. This can\n // probably be avoided if Subscription's listeners logic is changed to not call listeners\n // that have been unsubscribed in the middle of the notification loop.\n var notifyNestedSubs = subscription.notifyNestedSubs.bind(subscription);\n return [subscription, notifyNestedSubs];\n }, [store, didStoreComeFromProps, contextValue]),\n subscription = _useMemo2[0],\n notifyNestedSubs = _useMemo2[1]; // Determine what {store, subscription} value should be put into nested context, if necessary,\n // and memoize that value to avoid unnecessary context updates.\n\n\n var overriddenContextValue = useMemo(function () {\n if (didStoreComeFromProps) {\n // This component is directly subscribed to a store from props.\n // We don't want descendants reading from this store - pass down whatever\n // the existing context value is from the nearest connected ancestor.\n return contextValue;\n } // Otherwise, put this component's subscription instance into context, so that\n // connected descendants won't update until after this component is done\n\n\n return _extends({}, contextValue, {\n subscription: subscription\n });\n }, [didStoreComeFromProps, contextValue, subscription]); // We need to force this wrapper component to re-render whenever a Redux store update\n // causes a change to the calculated child component props (or we caught an error in mapState)\n\n var _useReducer = useReducer(storeStateUpdatesReducer, EMPTY_ARRAY, initStateUpdates),\n _useReducer$ = _useReducer[0],\n previousStateUpdateResult = _useReducer$[0],\n forceComponentUpdateDispatch = _useReducer[1]; // Propagate any mapState/mapDispatch errors upwards\n\n\n if (previousStateUpdateResult && previousStateUpdateResult.error) {\n throw previousStateUpdateResult.error;\n } // Set up refs to coordinate values between the subscription effect and the render logic\n\n\n var lastChildProps = useRef();\n var lastWrapperProps = useRef(wrapperProps);\n var childPropsFromStoreUpdate = useRef();\n var renderIsScheduled = useRef(false);\n var actualChildProps = usePureOnlyMemo(function () {\n // Tricky logic here:\n // - This render may have been triggered by a Redux store update that produced new child props\n // - However, we may have gotten new wrapper props after that\n // If we have new child props, and the same wrapper props, we know we should use the new child props as-is.\n // But, if we have new wrapper props, those might change the child props, so we have to recalculate things.\n // So, we'll use the child props from store update only if the wrapper props are the same as last time.\n if (childPropsFromStoreUpdate.current && wrapperProps === lastWrapperProps.current) {\n return childPropsFromStoreUpdate.current;\n } // TODO We're reading the store directly in render() here. Bad idea?\n // This will likely cause Bad Things (TM) to happen in Concurrent Mode.\n // Note that we do this because on renders _not_ caused by store updates, we need the latest store state\n // to determine what the child props should be.\n\n\n return childPropsSelector(store.getState(), wrapperProps);\n }, [store, previousStateUpdateResult, wrapperProps]); // We need this to execute synchronously every time we re-render. However, React warns\n // about useLayoutEffect in SSR, so we try to detect environment and fall back to\n // just useEffect instead to avoid the warning, since neither will run anyway.\n\n useIsomorphicLayoutEffectWithArgs(captureWrapperProps, [lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, actualChildProps, childPropsFromStoreUpdate, notifyNestedSubs]); // Our re-subscribe logic only runs when the store/subscription setup changes\n\n useIsomorphicLayoutEffectWithArgs(subscribeUpdates, [shouldHandleStateChanges, store, subscription, childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, childPropsFromStoreUpdate, notifyNestedSubs, forceComponentUpdateDispatch], [store, subscription, childPropsSelector]); // Now that all that's done, we can finally try to actually render the child component.\n // We memoize the elements for the rendered child component as an optimization.\n\n var renderedWrappedComponent = useMemo(function () {\n return /*#__PURE__*/React.createElement(WrappedComponent, _extends({}, actualChildProps, {\n ref: reactReduxForwardedRef\n }));\n }, [reactReduxForwardedRef, WrappedComponent, actualChildProps]); // If React sees the exact same element reference as last time, it bails out of re-rendering\n // that child, same as if it was wrapped in React.memo() or returned false from shouldComponentUpdate.\n\n var renderedChild = useMemo(function () {\n if (shouldHandleStateChanges) {\n // If this component is subscribed to store updates, we need to pass its own\n // subscription instance down to our descendants. That means rendering the same\n // Context instance, and putting a different value into the context.\n return /*#__PURE__*/React.createElement(ContextToUse.Provider, {\n value: overriddenContextValue\n }, renderedWrappedComponent);\n }\n\n return renderedWrappedComponent;\n }, [ContextToUse, renderedWrappedComponent, overriddenContextValue]);\n return renderedChild;\n } // If we're in \"pure\" mode, ensure our wrapper component only re-renders when incoming props have changed.\n\n\n var Connect = pure ? React.memo(ConnectFunction) : ConnectFunction;\n Connect.WrappedComponent = WrappedComponent;\n Connect.displayName = ConnectFunction.displayName = displayName;\n\n if (forwardRef) {\n var forwarded = React.forwardRef(function forwardConnectRef(props, ref) {\n return /*#__PURE__*/React.createElement(Connect, _extends({}, props, {\n reactReduxForwardedRef: ref\n }));\n });\n forwarded.displayName = displayName;\n forwarded.WrappedComponent = WrappedComponent;\n return hoistStatics(forwarded, WrappedComponent);\n }\n\n return hoistStatics(Connect, WrappedComponent);\n };\n}","function is(x, y) {\n if (x === y) {\n return x !== 0 || y !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n\nexport default function shallowEqual(objA, objB) {\n if (is(objA, objB)) return true;\n\n if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n if (keysA.length !== keysB.length) return false;\n\n for (var i = 0; i < keysA.length; i++) {\n if (!Object.prototype.hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n\n return true;\n}","import verifyPlainObject from '../utils/verifyPlainObject';\nexport function wrapMapToPropsConstant(getConstant) {\n return function initConstantSelector(dispatch, options) {\n var constant = getConstant(dispatch, options);\n\n function constantSelector() {\n return constant;\n }\n\n constantSelector.dependsOnOwnProps = false;\n return constantSelector;\n };\n} // dependsOnOwnProps is used by createMapToPropsProxy to determine whether to pass props as args\n// to the mapToProps function being wrapped. It is also used by makePurePropsSelector to determine\n// whether mapToProps needs to be invoked when props have changed.\n//\n// A length of one signals that mapToProps does not depend on props from the parent component.\n// A length of zero is assumed to mean mapToProps is getting args via arguments or ...args and\n// therefore not reporting its length accurately..\n\nexport function getDependsOnOwnProps(mapToProps) {\n return mapToProps.dependsOnOwnProps !== null && mapToProps.dependsOnOwnProps !== undefined ? Boolean(mapToProps.dependsOnOwnProps) : mapToProps.length !== 1;\n} // Used by whenMapStateToPropsIsFunction and whenMapDispatchToPropsIsFunction,\n// this function wraps mapToProps in a proxy function which does several things:\n//\n// * Detects whether the mapToProps function being called depends on props, which\n// is used by selectorFactory to decide if it should reinvoke on props changes.\n//\n// * On first call, handles mapToProps if returns another function, and treats that\n// new function as the true mapToProps for subsequent calls.\n//\n// * On first call, verifies the first result is a plain object, in order to warn\n// the developer that their mapToProps function is not returning a valid result.\n//\n\nexport function wrapMapToPropsFunc(mapToProps, methodName) {\n return function initProxySelector(dispatch, _ref) {\n var displayName = _ref.displayName;\n\n var proxy = function mapToPropsProxy(stateOrDispatch, ownProps) {\n return proxy.dependsOnOwnProps ? proxy.mapToProps(stateOrDispatch, ownProps) : proxy.mapToProps(stateOrDispatch);\n }; // allow detectFactoryAndVerify to get ownProps\n\n\n proxy.dependsOnOwnProps = true;\n\n proxy.mapToProps = function detectFactoryAndVerify(stateOrDispatch, ownProps) {\n proxy.mapToProps = mapToProps;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(mapToProps);\n var props = proxy(stateOrDispatch, ownProps);\n\n if (typeof props === 'function') {\n proxy.mapToProps = props;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(props);\n props = proxy(stateOrDispatch, ownProps);\n }\n\n if (process.env.NODE_ENV !== 'production') verifyPlainObject(props, displayName, methodName);\n return props;\n };\n\n return proxy;\n };\n}","import bindActionCreators from '../utils/bindActionCreators';\nimport { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapDispatchToPropsIsFunction(mapDispatchToProps) {\n return typeof mapDispatchToProps === 'function' ? wrapMapToPropsFunc(mapDispatchToProps, 'mapDispatchToProps') : undefined;\n}\nexport function whenMapDispatchToPropsIsMissing(mapDispatchToProps) {\n return !mapDispatchToProps ? wrapMapToPropsConstant(function (dispatch) {\n return {\n dispatch: dispatch\n };\n }) : undefined;\n}\nexport function whenMapDispatchToPropsIsObject(mapDispatchToProps) {\n return mapDispatchToProps && typeof mapDispatchToProps === 'object' ? wrapMapToPropsConstant(function (dispatch) {\n return bindActionCreators(mapDispatchToProps, dispatch);\n }) : undefined;\n}\nexport default [whenMapDispatchToPropsIsFunction, whenMapDispatchToPropsIsMissing, whenMapDispatchToPropsIsObject];","export default function bindActionCreators(actionCreators, dispatch) {\n var boundActionCreators = {};\n\n var _loop = function _loop(key) {\n var actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = function () {\n return dispatch(actionCreator.apply(void 0, arguments));\n };\n }\n };\n\n for (var key in actionCreators) {\n _loop(key);\n }\n\n return boundActionCreators;\n}","import { wrapMapToPropsConstant, wrapMapToPropsFunc } from './wrapMapToProps';\nexport function whenMapStateToPropsIsFunction(mapStateToProps) {\n return typeof mapStateToProps === 'function' ? wrapMapToPropsFunc(mapStateToProps, 'mapStateToProps') : undefined;\n}\nexport function whenMapStateToPropsIsMissing(mapStateToProps) {\n return !mapStateToProps ? wrapMapToPropsConstant(function () {\n return {};\n }) : undefined;\n}\nexport default [whenMapStateToPropsIsFunction, whenMapStateToPropsIsMissing];","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport verifyPlainObject from '../utils/verifyPlainObject';\nexport function defaultMergeProps(stateProps, dispatchProps, ownProps) {\n return _extends({}, ownProps, stateProps, dispatchProps);\n}\nexport function wrapMergePropsFunc(mergeProps) {\n return function initMergePropsProxy(dispatch, _ref) {\n var displayName = _ref.displayName,\n pure = _ref.pure,\n areMergedPropsEqual = _ref.areMergedPropsEqual;\n var hasRunOnce = false;\n var mergedProps;\n return function mergePropsProxy(stateProps, dispatchProps, ownProps) {\n var nextMergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n\n if (hasRunOnce) {\n if (!pure || !areMergedPropsEqual(nextMergedProps, mergedProps)) mergedProps = nextMergedProps;\n } else {\n hasRunOnce = true;\n mergedProps = nextMergedProps;\n if (process.env.NODE_ENV !== 'production') verifyPlainObject(mergedProps, displayName, 'mergeProps');\n }\n\n return mergedProps;\n };\n };\n}\nexport function whenMergePropsIsFunction(mergeProps) {\n return typeof mergeProps === 'function' ? wrapMergePropsFunc(mergeProps) : undefined;\n}\nexport function whenMergePropsIsOmitted(mergeProps) {\n return !mergeProps ? function () {\n return defaultMergeProps;\n } : undefined;\n}\nexport default [whenMergePropsIsFunction, whenMergePropsIsOmitted];","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"initMapStateToProps\", \"initMapDispatchToProps\", \"initMergeProps\"];\nimport verifySubselectors from './verifySubselectors';\nexport function impureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch) {\n return function impureFinalPropsSelector(state, ownProps) {\n return mergeProps(mapStateToProps(state, ownProps), mapDispatchToProps(dispatch, ownProps), ownProps);\n };\n}\nexport function pureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, _ref) {\n var areStatesEqual = _ref.areStatesEqual,\n areOwnPropsEqual = _ref.areOwnPropsEqual,\n areStatePropsEqual = _ref.areStatePropsEqual;\n var hasRunAtLeastOnce = false;\n var state;\n var ownProps;\n var stateProps;\n var dispatchProps;\n var mergedProps;\n\n function handleFirstCall(firstState, firstOwnProps) {\n state = firstState;\n ownProps = firstOwnProps;\n stateProps = mapStateToProps(state, ownProps);\n dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n hasRunAtLeastOnce = true;\n return mergedProps;\n }\n\n function handleNewPropsAndNewState() {\n stateProps = mapStateToProps(state, ownProps);\n if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleNewProps() {\n if (mapStateToProps.dependsOnOwnProps) stateProps = mapStateToProps(state, ownProps);\n if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleNewState() {\n var nextStateProps = mapStateToProps(state, ownProps);\n var statePropsChanged = !areStatePropsEqual(nextStateProps, stateProps);\n stateProps = nextStateProps;\n if (statePropsChanged) mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n\n function handleSubsequentCalls(nextState, nextOwnProps) {\n var propsChanged = !areOwnPropsEqual(nextOwnProps, ownProps);\n var stateChanged = !areStatesEqual(nextState, state);\n state = nextState;\n ownProps = nextOwnProps;\n if (propsChanged && stateChanged) return handleNewPropsAndNewState();\n if (propsChanged) return handleNewProps();\n if (stateChanged) return handleNewState();\n return mergedProps;\n }\n\n return function pureFinalPropsSelector(nextState, nextOwnProps) {\n return hasRunAtLeastOnce ? handleSubsequentCalls(nextState, nextOwnProps) : handleFirstCall(nextState, nextOwnProps);\n };\n} // TODO: Add more comments\n// If pure is true, the selector returned by selectorFactory will memoize its results,\n// allowing connectAdvanced's shouldComponentUpdate to return false if final\n// props have not changed. If false, the selector will always return a new\n// object and shouldComponentUpdate will always return true.\n\nexport default function finalPropsSelectorFactory(dispatch, _ref2) {\n var initMapStateToProps = _ref2.initMapStateToProps,\n initMapDispatchToProps = _ref2.initMapDispatchToProps,\n initMergeProps = _ref2.initMergeProps,\n options = _objectWithoutPropertiesLoose(_ref2, _excluded);\n\n var mapStateToProps = initMapStateToProps(dispatch, options);\n var mapDispatchToProps = initMapDispatchToProps(dispatch, options);\n var mergeProps = initMergeProps(dispatch, options);\n\n if (process.env.NODE_ENV !== 'production') {\n verifySubselectors(mapStateToProps, mapDispatchToProps, mergeProps, options.displayName);\n }\n\n var selectorFactory = options.pure ? pureFinalPropsSelectorFactory : impureFinalPropsSelectorFactory;\n return selectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, options);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _excluded = [\"pure\", \"areStatesEqual\", \"areOwnPropsEqual\", \"areStatePropsEqual\", \"areMergedPropsEqual\"];\nimport connectAdvanced from '../components/connectAdvanced';\nimport shallowEqual from '../utils/shallowEqual';\nimport defaultMapDispatchToPropsFactories from './mapDispatchToProps';\nimport defaultMapStateToPropsFactories from './mapStateToProps';\nimport defaultMergePropsFactories from './mergeProps';\nimport defaultSelectorFactory from './selectorFactory';\n/*\r\n connect is a facade over connectAdvanced. It turns its args into a compatible\r\n selectorFactory, which has the signature:\r\n\r\n (dispatch, options) => (nextState, nextOwnProps) => nextFinalProps\r\n \r\n connect passes its args to connectAdvanced as options, which will in turn pass them to\r\n selectorFactory each time a Connect component instance is instantiated or hot reloaded.\r\n\r\n selectorFactory returns a final props selector from its mapStateToProps,\r\n mapStateToPropsFactories, mapDispatchToProps, mapDispatchToPropsFactories, mergeProps,\r\n mergePropsFactories, and pure args.\r\n\r\n The resulting final props selector is called by the Connect component instance whenever\r\n it receives new props or store state.\r\n */\n\nfunction match(arg, factories, name) {\n for (var i = factories.length - 1; i >= 0; i--) {\n var result = factories[i](arg);\n if (result) return result;\n }\n\n return function (dispatch, options) {\n throw new Error(\"Invalid value of type \" + typeof arg + \" for \" + name + \" argument when connecting component \" + options.wrappedComponentName + \".\");\n };\n}\n\nfunction strictEqual(a, b) {\n return a === b;\n} // createConnect with default args builds the 'official' connect behavior. Calling it with\n// different options opens up some testing and extensibility scenarios\n\n\nexport function createConnect(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$connectHOC = _ref.connectHOC,\n connectHOC = _ref$connectHOC === void 0 ? connectAdvanced : _ref$connectHOC,\n _ref$mapStateToPropsF = _ref.mapStateToPropsFactories,\n mapStateToPropsFactories = _ref$mapStateToPropsF === void 0 ? defaultMapStateToPropsFactories : _ref$mapStateToPropsF,\n _ref$mapDispatchToPro = _ref.mapDispatchToPropsFactories,\n mapDispatchToPropsFactories = _ref$mapDispatchToPro === void 0 ? defaultMapDispatchToPropsFactories : _ref$mapDispatchToPro,\n _ref$mergePropsFactor = _ref.mergePropsFactories,\n mergePropsFactories = _ref$mergePropsFactor === void 0 ? defaultMergePropsFactories : _ref$mergePropsFactor,\n _ref$selectorFactory = _ref.selectorFactory,\n selectorFactory = _ref$selectorFactory === void 0 ? defaultSelectorFactory : _ref$selectorFactory;\n\n return function connect(mapStateToProps, mapDispatchToProps, mergeProps, _ref2) {\n if (_ref2 === void 0) {\n _ref2 = {};\n }\n\n var _ref3 = _ref2,\n _ref3$pure = _ref3.pure,\n pure = _ref3$pure === void 0 ? true : _ref3$pure,\n _ref3$areStatesEqual = _ref3.areStatesEqual,\n areStatesEqual = _ref3$areStatesEqual === void 0 ? strictEqual : _ref3$areStatesEqual,\n _ref3$areOwnPropsEqua = _ref3.areOwnPropsEqual,\n areOwnPropsEqual = _ref3$areOwnPropsEqua === void 0 ? shallowEqual : _ref3$areOwnPropsEqua,\n _ref3$areStatePropsEq = _ref3.areStatePropsEqual,\n areStatePropsEqual = _ref3$areStatePropsEq === void 0 ? shallowEqual : _ref3$areStatePropsEq,\n _ref3$areMergedPropsE = _ref3.areMergedPropsEqual,\n areMergedPropsEqual = _ref3$areMergedPropsE === void 0 ? shallowEqual : _ref3$areMergedPropsE,\n extraOptions = _objectWithoutPropertiesLoose(_ref3, _excluded);\n\n var initMapStateToProps = match(mapStateToProps, mapStateToPropsFactories, 'mapStateToProps');\n var initMapDispatchToProps = match(mapDispatchToProps, mapDispatchToPropsFactories, 'mapDispatchToProps');\n var initMergeProps = match(mergeProps, mergePropsFactories, 'mergeProps');\n return connectHOC(selectorFactory, _extends({\n // used in error messages\n methodName: 'connect',\n // used to compute Connect's displayName from the wrapped component's displayName.\n getDisplayName: function getDisplayName(name) {\n return \"Connect(\" + name + \")\";\n },\n // if mapStateToProps is falsy, the Connect component doesn't subscribe to store state changes\n shouldHandleStateChanges: Boolean(mapStateToProps),\n // passed through to selectorFactory\n initMapStateToProps: initMapStateToProps,\n initMapDispatchToProps: initMapDispatchToProps,\n initMergeProps: initMergeProps,\n pure: pure,\n areStatesEqual: areStatesEqual,\n areOwnPropsEqual: areOwnPropsEqual,\n areStatePropsEqual: areStatePropsEqual,\n areMergedPropsEqual: areMergedPropsEqual\n }, extraOptions));\n };\n}\nexport default /*#__PURE__*/createConnect();","import { useReducer, useRef, useMemo, useContext, useDebugValue } from 'react';\nimport { useReduxContext as useDefaultReduxContext } from './useReduxContext';\nimport { createSubscription } from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\nimport { ReactReduxContext } from '../components/Context';\n\nvar refEquality = function refEquality(a, b) {\n return a === b;\n};\n\nfunction useSelectorWithStoreAndSubscription(selector, equalityFn, store, contextSub) {\n var _useReducer = useReducer(function (s) {\n return s + 1;\n }, 0),\n forceRender = _useReducer[1];\n\n var subscription = useMemo(function () {\n return createSubscription(store, contextSub);\n }, [store, contextSub]);\n var latestSubscriptionCallbackError = useRef();\n var latestSelector = useRef();\n var latestStoreState = useRef();\n var latestSelectedState = useRef();\n var storeState = store.getState();\n var selectedState;\n\n try {\n if (selector !== latestSelector.current || storeState !== latestStoreState.current || latestSubscriptionCallbackError.current) {\n var newSelectedState = selector(storeState); // ensure latest selected state is reused so that a custom equality function can result in identical references\n\n if (latestSelectedState.current === undefined || !equalityFn(newSelectedState, latestSelectedState.current)) {\n selectedState = newSelectedState;\n } else {\n selectedState = latestSelectedState.current;\n }\n } else {\n selectedState = latestSelectedState.current;\n }\n } catch (err) {\n if (latestSubscriptionCallbackError.current) {\n err.message += \"\\nThe error may be correlated with this previous error:\\n\" + latestSubscriptionCallbackError.current.stack + \"\\n\\n\";\n }\n\n throw err;\n }\n\n useIsomorphicLayoutEffect(function () {\n latestSelector.current = selector;\n latestStoreState.current = storeState;\n latestSelectedState.current = selectedState;\n latestSubscriptionCallbackError.current = undefined;\n });\n useIsomorphicLayoutEffect(function () {\n function checkForUpdates() {\n try {\n var newStoreState = store.getState(); // Avoid calling selector multiple times if the store's state has not changed\n\n if (newStoreState === latestStoreState.current) {\n return;\n }\n\n var _newSelectedState = latestSelector.current(newStoreState);\n\n if (equalityFn(_newSelectedState, latestSelectedState.current)) {\n return;\n }\n\n latestSelectedState.current = _newSelectedState;\n latestStoreState.current = newStoreState;\n } catch (err) {\n // we ignore all errors here, since when the component\n // is re-rendered, the selectors are called again, and\n // will throw again, if neither props nor store state\n // changed\n latestSubscriptionCallbackError.current = err;\n }\n\n forceRender();\n }\n\n subscription.onStateChange = checkForUpdates;\n subscription.trySubscribe();\n checkForUpdates();\n return function () {\n return subscription.tryUnsubscribe();\n };\n }, [store, subscription]);\n return selectedState;\n}\n/**\r\n * Hook factory, which creates a `useSelector` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your ``.\r\n * @returns {Function} A `useSelector` hook bound to the specified context.\r\n */\n\n\nexport function createSelectorHook(context) {\n if (context === void 0) {\n context = ReactReduxContext;\n }\n\n var useReduxContext = context === ReactReduxContext ? useDefaultReduxContext : function () {\n return useContext(context);\n };\n return function useSelector(selector, equalityFn) {\n if (equalityFn === void 0) {\n equalityFn = refEquality;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (!selector) {\n throw new Error(\"You must pass a selector to useSelector\");\n }\n\n if (typeof selector !== 'function') {\n throw new Error(\"You must pass a function as a selector to useSelector\");\n }\n\n if (typeof equalityFn !== 'function') {\n throw new Error(\"You must pass a function as an equality function to useSelector\");\n }\n }\n\n var _useReduxContext = useReduxContext(),\n store = _useReduxContext.store,\n contextSub = _useReduxContext.subscription;\n\n var selectedState = useSelectorWithStoreAndSubscription(selector, equalityFn, store, contextSub);\n useDebugValue(selectedState);\n return selectedState;\n };\n}\n/**\r\n * A hook to access the redux store's state. This hook takes a selector function\r\n * as an argument. The selector is called with the store state.\r\n *\r\n * This hook takes an optional equality comparison function as the second parameter\r\n * that allows you to customize the way the selected state is compared to determine\r\n * whether the component needs to be re-rendered.\r\n *\r\n * @param {Function} selector the selector function\r\n * @param {Function=} equalityFn the function that will be used to determine equality\r\n *\r\n * @returns {any} the selected state\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useSelector } from 'react-redux'\r\n *\r\n * export const CounterComponent = () => {\r\n * const counter = useSelector(state => state.counter)\r\n * return
{counter}
\r\n * }\r\n */\n\nexport var useSelector = /*#__PURE__*/createSelectorHook();","import { useState, useRef, useEffect } from 'react';\n\nfunction areInputsEqual(newInputs, lastInputs) {\n if (newInputs.length !== lastInputs.length) {\n return false;\n }\n\n for (var i = 0; i < newInputs.length; i++) {\n if (newInputs[i] !== lastInputs[i]) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction useMemoOne(getResult, inputs) {\n var initial = useState(function () {\n return {\n inputs: inputs,\n result: getResult()\n };\n })[0];\n var isFirstRun = useRef(true);\n var committed = useRef(initial);\n var useCache = isFirstRun.current || Boolean(inputs && committed.current.inputs && areInputsEqual(inputs, committed.current.inputs));\n var cache = useCache ? committed.current : {\n inputs: inputs,\n result: getResult()\n };\n useEffect(function () {\n isFirstRun.current = false;\n committed.current = cache;\n }, [cache]);\n return cache.result;\n}\nfunction useCallbackOne(callback, inputs) {\n return useMemoOne(function () {\n return callback;\n }, inputs);\n}\nvar useMemo = useMemoOne;\nvar useCallback = useCallbackOne;\n\nexport { useCallback, useCallbackOne, useMemo, useMemoOne };\n","export * from './exports';\nimport { unstable_batchedUpdates as batch } from './utils/reactBatchedUpdates';\nimport { setBatch } from './utils/batch'; // Enable batched updates in our subscriptions for use\n// with standard React renderers (ReactDOM, React Native)\n\nsetBatch(batch);\nexport { batch };","var isProduction = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\nfunction invariant(condition, message) {\n if (condition) {\n return;\n }\n if (isProduction) {\n throw new Error(prefix);\n }\n var provided = typeof message === 'function' ? message() : message;\n var value = provided ? prefix + \": \" + provided : prefix;\n throw new Error(value);\n}\n\nexport { invariant as default };\n","import invariant from 'tiny-invariant';\n\nvar getRect = function getRect(_ref) {\n var top = _ref.top,\n right = _ref.right,\n bottom = _ref.bottom,\n left = _ref.left;\n var width = right - left;\n var height = bottom - top;\n var rect = {\n top: top,\n right: right,\n bottom: bottom,\n left: left,\n width: width,\n height: height,\n x: left,\n y: top,\n center: {\n x: (right + left) / 2,\n y: (bottom + top) / 2\n }\n };\n return rect;\n};\nvar expand = function expand(target, expandBy) {\n return {\n top: target.top - expandBy.top,\n left: target.left - expandBy.left,\n bottom: target.bottom + expandBy.bottom,\n right: target.right + expandBy.right\n };\n};\nvar shrink = function shrink(target, shrinkBy) {\n return {\n top: target.top + shrinkBy.top,\n left: target.left + shrinkBy.left,\n bottom: target.bottom - shrinkBy.bottom,\n right: target.right - shrinkBy.right\n };\n};\n\nvar shift = function shift(target, shiftBy) {\n return {\n top: target.top + shiftBy.y,\n left: target.left + shiftBy.x,\n bottom: target.bottom + shiftBy.y,\n right: target.right + shiftBy.x\n };\n};\n\nvar noSpacing = {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n};\nvar createBox = function createBox(_ref2) {\n var borderBox = _ref2.borderBox,\n _ref2$margin = _ref2.margin,\n margin = _ref2$margin === void 0 ? noSpacing : _ref2$margin,\n _ref2$border = _ref2.border,\n border = _ref2$border === void 0 ? noSpacing : _ref2$border,\n _ref2$padding = _ref2.padding,\n padding = _ref2$padding === void 0 ? noSpacing : _ref2$padding;\n var marginBox = getRect(expand(borderBox, margin));\n var paddingBox = getRect(shrink(borderBox, border));\n var contentBox = getRect(shrink(paddingBox, padding));\n return {\n marginBox: marginBox,\n borderBox: getRect(borderBox),\n paddingBox: paddingBox,\n contentBox: contentBox,\n margin: margin,\n border: border,\n padding: padding\n };\n};\n\nvar parse = function parse(raw) {\n var value = raw.slice(0, -2);\n var suffix = raw.slice(-2);\n\n if (suffix !== 'px') {\n return 0;\n }\n\n var result = Number(value);\n !!isNaN(result) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Could not parse value [raw: \" + raw + \", without suffix: \" + value + \"]\") : invariant(false) : void 0;\n return result;\n};\n\nvar getWindowScroll = function getWindowScroll() {\n return {\n x: window.pageXOffset,\n y: window.pageYOffset\n };\n};\n\nvar offset = function offset(original, change) {\n var borderBox = original.borderBox,\n border = original.border,\n margin = original.margin,\n padding = original.padding;\n var shifted = shift(borderBox, change);\n return createBox({\n borderBox: shifted,\n border: border,\n margin: margin,\n padding: padding\n });\n};\nvar withScroll = function withScroll(original, scroll) {\n if (scroll === void 0) {\n scroll = getWindowScroll();\n }\n\n return offset(original, scroll);\n};\nvar calculateBox = function calculateBox(borderBox, styles) {\n var margin = {\n top: parse(styles.marginTop),\n right: parse(styles.marginRight),\n bottom: parse(styles.marginBottom),\n left: parse(styles.marginLeft)\n };\n var padding = {\n top: parse(styles.paddingTop),\n right: parse(styles.paddingRight),\n bottom: parse(styles.paddingBottom),\n left: parse(styles.paddingLeft)\n };\n var border = {\n top: parse(styles.borderTopWidth),\n right: parse(styles.borderRightWidth),\n bottom: parse(styles.borderBottomWidth),\n left: parse(styles.borderLeftWidth)\n };\n return createBox({\n borderBox: borderBox,\n margin: margin,\n padding: padding,\n border: border\n });\n};\nvar getBox = function getBox(el) {\n var borderBox = el.getBoundingClientRect();\n var styles = window.getComputedStyle(el);\n return calculateBox(borderBox, styles);\n};\n\nexport { calculateBox, createBox, expand, getBox, getRect, offset, shrink, withScroll };\n","var rafSchd = function rafSchd(fn) {\n var lastArgs = [];\n var frameId = null;\n\n var wrapperFn = function wrapperFn() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n lastArgs = args;\n\n if (frameId) {\n return;\n }\n\n frameId = requestAnimationFrame(function () {\n frameId = null;\n fn.apply(void 0, lastArgs);\n });\n };\n\n wrapperFn.cancel = function () {\n if (!frameId) {\n return;\n }\n\n cancelAnimationFrame(frameId);\n frameId = null;\n };\n\n return wrapperFn;\n};\n\nexport default rafSchd;\n","import React, { useLayoutEffect, useEffect, useRef, useState, useContext } from 'react';\nimport _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport { createStore as createStore$1, applyMiddleware, compose, bindActionCreators } from 'redux';\nimport { Provider, connect } from 'react-redux';\nimport { useMemo, useCallback } from 'use-memo-one';\nimport { getRect, expand, offset, withScroll, getBox, createBox, calculateBox } from 'css-box-model';\nimport memoizeOne from 'memoize-one';\nimport rafSchd from 'raf-schd';\nimport ReactDOM from 'react-dom';\n\nvar isProduction = process.env.NODE_ENV === 'production';\nvar spacesAndTabs = /[ \\t]{2,}/g;\nvar lineStartWithSpaces = /^[ \\t]*/gm;\n\nvar clean = function clean(value) {\n return value.replace(spacesAndTabs, ' ').replace(lineStartWithSpaces, '').trim();\n};\n\nvar getDevMessage = function getDevMessage(message) {\n return clean(\"\\n %creact-beautiful-dnd\\n\\n %c\" + clean(message) + \"\\n\\n %c\\uD83D\\uDC77\\u200D This is a development only message. It will be removed in production builds.\\n\");\n};\n\nvar getFormattedMessage = function getFormattedMessage(message) {\n return [getDevMessage(message), 'color: #00C584; font-size: 1.2em; font-weight: bold;', 'line-height: 1.5', 'color: #723874;'];\n};\nvar isDisabledFlag = '__react-beautiful-dnd-disable-dev-warnings';\nfunction log(type, message) {\n var _console;\n\n if (isProduction) {\n return;\n }\n\n if (typeof window !== 'undefined' && window[isDisabledFlag]) {\n return;\n }\n\n (_console = console)[type].apply(_console, getFormattedMessage(message));\n}\nvar warning = log.bind(null, 'warn');\nvar error = log.bind(null, 'error');\n\nfunction noop() {}\n\nfunction getOptions(shared, fromBinding) {\n return _extends({}, shared, {}, fromBinding);\n}\n\nfunction bindEvents(el, bindings, sharedOptions) {\n var unbindings = bindings.map(function (binding) {\n var options = getOptions(sharedOptions, binding.options);\n el.addEventListener(binding.eventName, binding.fn, options);\n return function unbind() {\n el.removeEventListener(binding.eventName, binding.fn, options);\n };\n });\n return function unbindAll() {\n unbindings.forEach(function (unbind) {\n unbind();\n });\n };\n}\n\nvar isProduction$1 = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\nfunction RbdInvariant(message) {\n this.message = message;\n}\n\nRbdInvariant.prototype.toString = function toString() {\n return this.message;\n};\n\nfunction invariant(condition, message) {\n if (condition) {\n return;\n }\n\n if (isProduction$1) {\n throw new RbdInvariant(prefix);\n } else {\n throw new RbdInvariant(prefix + \": \" + (message || ''));\n }\n}\n\nvar ErrorBoundary = function (_React$Component) {\n _inheritsLoose(ErrorBoundary, _React$Component);\n\n function ErrorBoundary() {\n var _this;\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 = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n _this.callbacks = null;\n _this.unbind = noop;\n\n _this.onWindowError = function (event) {\n var callbacks = _this.getCallbacks();\n\n if (callbacks.isDragging()) {\n callbacks.tryAbort();\n process.env.NODE_ENV !== \"production\" ? warning(\"\\n An error was caught by our window 'error' event listener while a drag was occurring.\\n The active drag has been aborted.\\n \") : void 0;\n }\n\n var err = event.error;\n\n if (err instanceof RbdInvariant) {\n event.preventDefault();\n\n if (process.env.NODE_ENV !== 'production') {\n error(err.message);\n }\n }\n };\n\n _this.getCallbacks = function () {\n if (!_this.callbacks) {\n throw new Error('Unable to find AppCallbacks in ');\n }\n\n return _this.callbacks;\n };\n\n _this.setCallbacks = function (callbacks) {\n _this.callbacks = callbacks;\n };\n\n return _this;\n }\n\n var _proto = ErrorBoundary.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.unbind = bindEvents(window, [{\n eventName: 'error',\n fn: this.onWindowError\n }]);\n };\n\n _proto.componentDidCatch = function componentDidCatch(err) {\n if (err instanceof RbdInvariant) {\n if (process.env.NODE_ENV !== 'production') {\n error(err.message);\n }\n\n this.setState({});\n return;\n }\n\n throw err;\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.unbind();\n };\n\n _proto.render = function render() {\n return this.props.children(this.setCallbacks);\n };\n\n return ErrorBoundary;\n}(React.Component);\n\nvar dragHandleUsageInstructions = \"\\n Press space bar to start a drag.\\n When dragging you can use the arrow keys to move the item around and escape to cancel.\\n Some screen readers may require you to be in focus mode or to use your pass through key\\n\";\n\nvar position = function position(index) {\n return index + 1;\n};\n\nvar onDragStart = function onDragStart(start) {\n return \"\\n You have lifted an item in position \" + position(start.source.index) + \"\\n\";\n};\n\nvar withLocation = function withLocation(source, destination) {\n var isInHomeList = source.droppableId === destination.droppableId;\n var startPosition = position(source.index);\n var endPosition = position(destination.index);\n\n if (isInHomeList) {\n return \"\\n You have moved the item from position \" + startPosition + \"\\n to position \" + endPosition + \"\\n \";\n }\n\n return \"\\n You have moved the item from position \" + startPosition + \"\\n in list \" + source.droppableId + \"\\n to list \" + destination.droppableId + \"\\n in position \" + endPosition + \"\\n \";\n};\n\nvar withCombine = function withCombine(id, source, combine) {\n var inHomeList = source.droppableId === combine.droppableId;\n\n if (inHomeList) {\n return \"\\n The item \" + id + \"\\n has been combined with \" + combine.draggableId;\n }\n\n return \"\\n The item \" + id + \"\\n in list \" + source.droppableId + \"\\n has been combined with \" + combine.draggableId + \"\\n in list \" + combine.droppableId + \"\\n \";\n};\n\nvar onDragUpdate = function onDragUpdate(update) {\n var location = update.destination;\n\n if (location) {\n return withLocation(update.source, location);\n }\n\n var combine = update.combine;\n\n if (combine) {\n return withCombine(update.draggableId, update.source, combine);\n }\n\n return 'You are over an area that cannot be dropped on';\n};\n\nvar returnedToStart = function returnedToStart(source) {\n return \"\\n The item has returned to its starting position\\n of \" + position(source.index) + \"\\n\";\n};\n\nvar onDragEnd = function onDragEnd(result) {\n if (result.reason === 'CANCEL') {\n return \"\\n Movement cancelled.\\n \" + returnedToStart(result.source) + \"\\n \";\n }\n\n var location = result.destination;\n var combine = result.combine;\n\n if (location) {\n return \"\\n You have dropped the item.\\n \" + withLocation(result.source, location) + \"\\n \";\n }\n\n if (combine) {\n return \"\\n You have dropped the item.\\n \" + withCombine(result.draggableId, result.source, combine) + \"\\n \";\n }\n\n return \"\\n The item has been dropped while not over a drop area.\\n \" + returnedToStart(result.source) + \"\\n \";\n};\n\nvar preset = {\n dragHandleUsageInstructions: dragHandleUsageInstructions,\n onDragStart: onDragStart,\n onDragUpdate: onDragUpdate,\n onDragEnd: onDragEnd\n};\n\nvar origin = {\n x: 0,\n y: 0\n};\nvar add = function add(point1, point2) {\n return {\n x: point1.x + point2.x,\n y: point1.y + point2.y\n };\n};\nvar subtract = function subtract(point1, point2) {\n return {\n x: point1.x - point2.x,\n y: point1.y - point2.y\n };\n};\nvar isEqual = function isEqual(point1, point2) {\n return point1.x === point2.x && point1.y === point2.y;\n};\nvar negate = function negate(point) {\n return {\n x: point.x !== 0 ? -point.x : 0,\n y: point.y !== 0 ? -point.y : 0\n };\n};\nvar patch = function patch(line, value, otherValue) {\n var _ref;\n\n if (otherValue === void 0) {\n otherValue = 0;\n }\n\n return _ref = {}, _ref[line] = value, _ref[line === 'x' ? 'y' : 'x'] = otherValue, _ref;\n};\nvar distance = function distance(point1, point2) {\n return Math.sqrt(Math.pow(point2.x - point1.x, 2) + Math.pow(point2.y - point1.y, 2));\n};\nvar closest = function closest(target, points) {\n return Math.min.apply(Math, points.map(function (point) {\n return distance(target, point);\n }));\n};\nvar apply = function apply(fn) {\n return function (point) {\n return {\n x: fn(point.x),\n y: fn(point.y)\n };\n };\n};\n\nvar executeClip = (function (frame, subject) {\n var result = getRect({\n top: Math.max(subject.top, frame.top),\n right: Math.min(subject.right, frame.right),\n bottom: Math.min(subject.bottom, frame.bottom),\n left: Math.max(subject.left, frame.left)\n });\n\n if (result.width <= 0 || result.height <= 0) {\n return null;\n }\n\n return result;\n});\n\nvar offsetByPosition = function offsetByPosition(spacing, point) {\n return {\n top: spacing.top + point.y,\n left: spacing.left + point.x,\n bottom: spacing.bottom + point.y,\n right: spacing.right + point.x\n };\n};\nvar getCorners = function getCorners(spacing) {\n return [{\n x: spacing.left,\n y: spacing.top\n }, {\n x: spacing.right,\n y: spacing.top\n }, {\n x: spacing.left,\n y: spacing.bottom\n }, {\n x: spacing.right,\n y: spacing.bottom\n }];\n};\nvar noSpacing = {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n};\n\nvar scroll = function scroll(target, frame) {\n if (!frame) {\n return target;\n }\n\n return offsetByPosition(target, frame.scroll.diff.displacement);\n};\n\nvar increase = function increase(target, axis, withPlaceholder) {\n if (withPlaceholder && withPlaceholder.increasedBy) {\n var _extends2;\n\n return _extends({}, target, (_extends2 = {}, _extends2[axis.end] = target[axis.end] + withPlaceholder.increasedBy[axis.line], _extends2));\n }\n\n return target;\n};\n\nvar clip = function clip(target, frame) {\n if (frame && frame.shouldClipSubject) {\n return executeClip(frame.pageMarginBox, target);\n }\n\n return getRect(target);\n};\n\nvar getSubject = (function (_ref) {\n var page = _ref.page,\n withPlaceholder = _ref.withPlaceholder,\n axis = _ref.axis,\n frame = _ref.frame;\n var scrolled = scroll(page.marginBox, frame);\n var increased = increase(scrolled, axis, withPlaceholder);\n var clipped = clip(increased, frame);\n return {\n page: page,\n withPlaceholder: withPlaceholder,\n active: clipped\n };\n});\n\nvar scrollDroppable = (function (droppable, newScroll) {\n !droppable.frame ? process.env.NODE_ENV !== \"production\" ? invariant(false) : invariant(false) : void 0;\n var scrollable = droppable.frame;\n var scrollDiff = subtract(newScroll, scrollable.scroll.initial);\n var scrollDisplacement = negate(scrollDiff);\n\n var frame = _extends({}, scrollable, {\n scroll: {\n initial: scrollable.scroll.initial,\n current: newScroll,\n diff: {\n value: scrollDiff,\n displacement: scrollDisplacement\n },\n max: scrollable.scroll.max\n }\n });\n\n var subject = getSubject({\n page: droppable.subject.page,\n withPlaceholder: droppable.subject.withPlaceholder,\n axis: droppable.axis,\n frame: frame\n });\n\n var result = _extends({}, droppable, {\n frame: frame,\n subject: subject\n });\n\n return result;\n});\n\nfunction isInteger(value) {\n if (Number.isInteger) {\n return Number.isInteger(value);\n }\n\n return typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\n}\nfunction values(map) {\n if (Object.values) {\n return Object.values(map);\n }\n\n return Object.keys(map).map(function (key) {\n return map[key];\n });\n}\nfunction findIndex(list, predicate) {\n if (list.findIndex) {\n return list.findIndex(predicate);\n }\n\n for (var i = 0; i < list.length; i++) {\n if (predicate(list[i])) {\n return i;\n }\n }\n\n return -1;\n}\nfunction find(list, predicate) {\n if (list.find) {\n return list.find(predicate);\n }\n\n var index = findIndex(list, predicate);\n\n if (index !== -1) {\n return list[index];\n }\n\n return undefined;\n}\nfunction toArray(list) {\n return Array.prototype.slice.call(list);\n}\n\nvar toDroppableMap = memoizeOne(function (droppables) {\n return droppables.reduce(function (previous, current) {\n previous[current.descriptor.id] = current;\n return previous;\n }, {});\n});\nvar toDraggableMap = memoizeOne(function (draggables) {\n return draggables.reduce(function (previous, current) {\n previous[current.descriptor.id] = current;\n return previous;\n }, {});\n});\nvar toDroppableList = memoizeOne(function (droppables) {\n return values(droppables);\n});\nvar toDraggableList = memoizeOne(function (draggables) {\n return values(draggables);\n});\n\nvar getDraggablesInsideDroppable = memoizeOne(function (droppableId, draggables) {\n var result = toDraggableList(draggables).filter(function (draggable) {\n return droppableId === draggable.descriptor.droppableId;\n }).sort(function (a, b) {\n return a.descriptor.index - b.descriptor.index;\n });\n return result;\n});\n\nfunction tryGetDestination(impact) {\n if (impact.at && impact.at.type === 'REORDER') {\n return impact.at.destination;\n }\n\n return null;\n}\nfunction tryGetCombine(impact) {\n if (impact.at && impact.at.type === 'COMBINE') {\n return impact.at.combine;\n }\n\n return null;\n}\n\nvar removeDraggableFromList = memoizeOne(function (remove, list) {\n return list.filter(function (item) {\n return item.descriptor.id !== remove.descriptor.id;\n });\n});\n\nvar moveToNextCombine = (function (_ref) {\n var isMovingForward = _ref.isMovingForward,\n draggable = _ref.draggable,\n destination = _ref.destination,\n insideDestination = _ref.insideDestination,\n previousImpact = _ref.previousImpact;\n\n if (!destination.isCombineEnabled) {\n return null;\n }\n\n var location = tryGetDestination(previousImpact);\n\n if (!location) {\n return null;\n }\n\n function getImpact(target) {\n var at = {\n type: 'COMBINE',\n combine: {\n draggableId: target,\n droppableId: destination.descriptor.id\n }\n };\n return _extends({}, previousImpact, {\n at: at\n });\n }\n\n var all = previousImpact.displaced.all;\n var closestId = all.length ? all[0] : null;\n\n if (isMovingForward) {\n return closestId ? getImpact(closestId) : null;\n }\n\n var withoutDraggable = removeDraggableFromList(draggable, insideDestination);\n\n if (!closestId) {\n if (!withoutDraggable.length) {\n return null;\n }\n\n var last = withoutDraggable[withoutDraggable.length - 1];\n return getImpact(last.descriptor.id);\n }\n\n var indexOfClosest = findIndex(withoutDraggable, function (d) {\n return d.descriptor.id === closestId;\n });\n !(indexOfClosest !== -1) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Could not find displaced item in set') : invariant(false) : void 0;\n var proposedIndex = indexOfClosest - 1;\n\n if (proposedIndex < 0) {\n return null;\n }\n\n var before = withoutDraggable[proposedIndex];\n return getImpact(before.descriptor.id);\n});\n\nvar isHomeOf = (function (draggable, destination) {\n return draggable.descriptor.droppableId === destination.descriptor.id;\n});\n\nvar noDisplacedBy = {\n point: origin,\n value: 0\n};\nvar emptyGroups = {\n invisible: {},\n visible: {},\n all: []\n};\nvar noImpact = {\n displaced: emptyGroups,\n displacedBy: noDisplacedBy,\n at: null\n};\n\nvar isWithin = (function (lowerBound, upperBound) {\n return function (value) {\n return lowerBound <= value && value <= upperBound;\n };\n});\n\nvar isPartiallyVisibleThroughFrame = (function (frame) {\n var isWithinVertical = isWithin(frame.top, frame.bottom);\n var isWithinHorizontal = isWithin(frame.left, frame.right);\n return function (subject) {\n var isContained = isWithinVertical(subject.top) && isWithinVertical(subject.bottom) && isWithinHorizontal(subject.left) && isWithinHorizontal(subject.right);\n\n if (isContained) {\n return true;\n }\n\n var isPartiallyVisibleVertically = isWithinVertical(subject.top) || isWithinVertical(subject.bottom);\n var isPartiallyVisibleHorizontally = isWithinHorizontal(subject.left) || isWithinHorizontal(subject.right);\n var isPartiallyContained = isPartiallyVisibleVertically && isPartiallyVisibleHorizontally;\n\n if (isPartiallyContained) {\n return true;\n }\n\n var isBiggerVertically = subject.top < frame.top && subject.bottom > frame.bottom;\n var isBiggerHorizontally = subject.left < frame.left && subject.right > frame.right;\n var isTargetBiggerThanFrame = isBiggerVertically && isBiggerHorizontally;\n\n if (isTargetBiggerThanFrame) {\n return true;\n }\n\n var isTargetBiggerOnOneAxis = isBiggerVertically && isPartiallyVisibleHorizontally || isBiggerHorizontally && isPartiallyVisibleVertically;\n return isTargetBiggerOnOneAxis;\n };\n});\n\nvar isTotallyVisibleThroughFrame = (function (frame) {\n var isWithinVertical = isWithin(frame.top, frame.bottom);\n var isWithinHorizontal = isWithin(frame.left, frame.right);\n return function (subject) {\n var isContained = isWithinVertical(subject.top) && isWithinVertical(subject.bottom) && isWithinHorizontal(subject.left) && isWithinHorizontal(subject.right);\n return isContained;\n };\n});\n\nvar vertical = {\n direction: 'vertical',\n line: 'y',\n crossAxisLine: 'x',\n start: 'top',\n end: 'bottom',\n size: 'height',\n crossAxisStart: 'left',\n crossAxisEnd: 'right',\n crossAxisSize: 'width'\n};\nvar horizontal = {\n direction: 'horizontal',\n line: 'x',\n crossAxisLine: 'y',\n start: 'left',\n end: 'right',\n size: 'width',\n crossAxisStart: 'top',\n crossAxisEnd: 'bottom',\n crossAxisSize: 'height'\n};\n\nvar isTotallyVisibleThroughFrameOnAxis = (function (axis) {\n return function (frame) {\n var isWithinVertical = isWithin(frame.top, frame.bottom);\n var isWithinHorizontal = isWithin(frame.left, frame.right);\n return function (subject) {\n if (axis === vertical) {\n return isWithinVertical(subject.top) && isWithinVertical(subject.bottom);\n }\n\n return isWithinHorizontal(subject.left) && isWithinHorizontal(subject.right);\n };\n };\n});\n\nvar getDroppableDisplaced = function getDroppableDisplaced(target, destination) {\n var displacement = destination.frame ? destination.frame.scroll.diff.displacement : origin;\n return offsetByPosition(target, displacement);\n};\n\nvar isVisibleInDroppable = function isVisibleInDroppable(target, destination, isVisibleThroughFrameFn) {\n if (!destination.subject.active) {\n return false;\n }\n\n return isVisibleThroughFrameFn(destination.subject.active)(target);\n};\n\nvar isVisibleInViewport = function isVisibleInViewport(target, viewport, isVisibleThroughFrameFn) {\n return isVisibleThroughFrameFn(viewport)(target);\n};\n\nvar isVisible = function isVisible(_ref) {\n var toBeDisplaced = _ref.target,\n destination = _ref.destination,\n viewport = _ref.viewport,\n withDroppableDisplacement = _ref.withDroppableDisplacement,\n isVisibleThroughFrameFn = _ref.isVisibleThroughFrameFn;\n var displacedTarget = withDroppableDisplacement ? getDroppableDisplaced(toBeDisplaced, destination) : toBeDisplaced;\n return isVisibleInDroppable(displacedTarget, destination, isVisibleThroughFrameFn) && isVisibleInViewport(displacedTarget, viewport, isVisibleThroughFrameFn);\n};\n\nvar isPartiallyVisible = function isPartiallyVisible(args) {\n return isVisible(_extends({}, args, {\n isVisibleThroughFrameFn: isPartiallyVisibleThroughFrame\n }));\n};\nvar isTotallyVisible = function isTotallyVisible(args) {\n return isVisible(_extends({}, args, {\n isVisibleThroughFrameFn: isTotallyVisibleThroughFrame\n }));\n};\nvar isTotallyVisibleOnAxis = function isTotallyVisibleOnAxis(args) {\n return isVisible(_extends({}, args, {\n isVisibleThroughFrameFn: isTotallyVisibleThroughFrameOnAxis(args.destination.axis)\n }));\n};\n\nvar getShouldAnimate = function getShouldAnimate(id, last, forceShouldAnimate) {\n if (typeof forceShouldAnimate === 'boolean') {\n return forceShouldAnimate;\n }\n\n if (!last) {\n return true;\n }\n\n var invisible = last.invisible,\n visible = last.visible;\n\n if (invisible[id]) {\n return false;\n }\n\n var previous = visible[id];\n return previous ? previous.shouldAnimate : true;\n};\n\nfunction getTarget(draggable, displacedBy) {\n var marginBox = draggable.page.marginBox;\n var expandBy = {\n top: displacedBy.point.y,\n right: 0,\n bottom: 0,\n left: displacedBy.point.x\n };\n return getRect(expand(marginBox, expandBy));\n}\n\nfunction getDisplacementGroups(_ref) {\n var afterDragging = _ref.afterDragging,\n destination = _ref.destination,\n displacedBy = _ref.displacedBy,\n viewport = _ref.viewport,\n forceShouldAnimate = _ref.forceShouldAnimate,\n last = _ref.last;\n return afterDragging.reduce(function process(groups, draggable) {\n var target = getTarget(draggable, displacedBy);\n var id = draggable.descriptor.id;\n groups.all.push(id);\n var isVisible = isPartiallyVisible({\n target: target,\n destination: destination,\n viewport: viewport,\n withDroppableDisplacement: true\n });\n\n if (!isVisible) {\n groups.invisible[draggable.descriptor.id] = true;\n return groups;\n }\n\n var shouldAnimate = getShouldAnimate(id, last, forceShouldAnimate);\n var displacement = {\n draggableId: id,\n shouldAnimate: shouldAnimate\n };\n groups.visible[id] = displacement;\n return groups;\n }, {\n all: [],\n visible: {},\n invisible: {}\n });\n}\n\nfunction getIndexOfLastItem(draggables, options) {\n if (!draggables.length) {\n return 0;\n }\n\n var indexOfLastItem = draggables[draggables.length - 1].descriptor.index;\n return options.inHomeList ? indexOfLastItem : indexOfLastItem + 1;\n}\n\nfunction goAtEnd(_ref) {\n var insideDestination = _ref.insideDestination,\n inHomeList = _ref.inHomeList,\n displacedBy = _ref.displacedBy,\n destination = _ref.destination;\n var newIndex = getIndexOfLastItem(insideDestination, {\n inHomeList: inHomeList\n });\n return {\n displaced: emptyGroups,\n displacedBy: displacedBy,\n at: {\n type: 'REORDER',\n destination: {\n droppableId: destination.descriptor.id,\n index: newIndex\n }\n }\n };\n}\n\nfunction calculateReorderImpact(_ref2) {\n var draggable = _ref2.draggable,\n insideDestination = _ref2.insideDestination,\n destination = _ref2.destination,\n viewport = _ref2.viewport,\n displacedBy = _ref2.displacedBy,\n last = _ref2.last,\n index = _ref2.index,\n forceShouldAnimate = _ref2.forceShouldAnimate;\n var inHomeList = isHomeOf(draggable, destination);\n\n if (index == null) {\n return goAtEnd({\n insideDestination: insideDestination,\n inHomeList: inHomeList,\n displacedBy: displacedBy,\n destination: destination\n });\n }\n\n var match = find(insideDestination, function (item) {\n return item.descriptor.index === index;\n });\n\n if (!match) {\n return goAtEnd({\n insideDestination: insideDestination,\n inHomeList: inHomeList,\n displacedBy: displacedBy,\n destination: destination\n });\n }\n\n var withoutDragging = removeDraggableFromList(draggable, insideDestination);\n var sliceFrom = insideDestination.indexOf(match);\n var impacted = withoutDragging.slice(sliceFrom);\n var displaced = getDisplacementGroups({\n afterDragging: impacted,\n destination: destination,\n displacedBy: displacedBy,\n last: last,\n viewport: viewport.frame,\n forceShouldAnimate: forceShouldAnimate\n });\n return {\n displaced: displaced,\n displacedBy: displacedBy,\n at: {\n type: 'REORDER',\n destination: {\n droppableId: destination.descriptor.id,\n index: index\n }\n }\n };\n}\n\nfunction didStartAfterCritical(draggableId, afterCritical) {\n return Boolean(afterCritical.effected[draggableId]);\n}\n\nvar fromCombine = (function (_ref) {\n var isMovingForward = _ref.isMovingForward,\n destination = _ref.destination,\n draggables = _ref.draggables,\n combine = _ref.combine,\n afterCritical = _ref.afterCritical;\n\n if (!destination.isCombineEnabled) {\n return null;\n }\n\n var combineId = combine.draggableId;\n var combineWith = draggables[combineId];\n var combineWithIndex = combineWith.descriptor.index;\n var didCombineWithStartAfterCritical = didStartAfterCritical(combineId, afterCritical);\n\n if (didCombineWithStartAfterCritical) {\n if (isMovingForward) {\n return combineWithIndex;\n }\n\n return combineWithIndex - 1;\n }\n\n if (isMovingForward) {\n return combineWithIndex + 1;\n }\n\n return combineWithIndex;\n});\n\nvar fromReorder = (function (_ref) {\n var isMovingForward = _ref.isMovingForward,\n isInHomeList = _ref.isInHomeList,\n insideDestination = _ref.insideDestination,\n location = _ref.location;\n\n if (!insideDestination.length) {\n return null;\n }\n\n var currentIndex = location.index;\n var proposedIndex = isMovingForward ? currentIndex + 1 : currentIndex - 1;\n var firstIndex = insideDestination[0].descriptor.index;\n var lastIndex = insideDestination[insideDestination.length - 1].descriptor.index;\n var upperBound = isInHomeList ? lastIndex : lastIndex + 1;\n\n if (proposedIndex < firstIndex) {\n return null;\n }\n\n if (proposedIndex > upperBound) {\n return null;\n }\n\n return proposedIndex;\n});\n\nvar moveToNextIndex = (function (_ref) {\n var isMovingForward = _ref.isMovingForward,\n isInHomeList = _ref.isInHomeList,\n draggable = _ref.draggable,\n draggables = _ref.draggables,\n destination = _ref.destination,\n insideDestination = _ref.insideDestination,\n previousImpact = _ref.previousImpact,\n viewport = _ref.viewport,\n afterCritical = _ref.afterCritical;\n var wasAt = previousImpact.at;\n !wasAt ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot move in direction without previous impact location') : invariant(false) : void 0;\n\n if (wasAt.type === 'REORDER') {\n var _newIndex = fromReorder({\n isMovingForward: isMovingForward,\n isInHomeList: isInHomeList,\n location: wasAt.destination,\n insideDestination: insideDestination\n });\n\n if (_newIndex == null) {\n return null;\n }\n\n return calculateReorderImpact({\n draggable: draggable,\n insideDestination: insideDestination,\n destination: destination,\n viewport: viewport,\n last: previousImpact.displaced,\n displacedBy: previousImpact.displacedBy,\n index: _newIndex\n });\n }\n\n var newIndex = fromCombine({\n isMovingForward: isMovingForward,\n destination: destination,\n displaced: previousImpact.displaced,\n draggables: draggables,\n combine: wasAt.combine,\n afterCritical: afterCritical\n });\n\n if (newIndex == null) {\n return null;\n }\n\n return calculateReorderImpact({\n draggable: draggable,\n insideDestination: insideDestination,\n destination: destination,\n viewport: viewport,\n last: previousImpact.displaced,\n displacedBy: previousImpact.displacedBy,\n index: newIndex\n });\n});\n\nvar getCombinedItemDisplacement = (function (_ref) {\n var displaced = _ref.displaced,\n afterCritical = _ref.afterCritical,\n combineWith = _ref.combineWith,\n displacedBy = _ref.displacedBy;\n var isDisplaced = Boolean(displaced.visible[combineWith] || displaced.invisible[combineWith]);\n\n if (didStartAfterCritical(combineWith, afterCritical)) {\n return isDisplaced ? origin : negate(displacedBy.point);\n }\n\n return isDisplaced ? displacedBy.point : origin;\n});\n\nvar whenCombining = (function (_ref) {\n var afterCritical = _ref.afterCritical,\n impact = _ref.impact,\n draggables = _ref.draggables;\n var combine = tryGetCombine(impact);\n !combine ? process.env.NODE_ENV !== \"production\" ? invariant(false) : invariant(false) : void 0;\n var combineWith = combine.draggableId;\n var center = draggables[combineWith].page.borderBox.center;\n var displaceBy = getCombinedItemDisplacement({\n displaced: impact.displaced,\n afterCritical: afterCritical,\n combineWith: combineWith,\n displacedBy: impact.displacedBy\n });\n return add(center, displaceBy);\n});\n\nvar distanceFromStartToBorderBoxCenter = function distanceFromStartToBorderBoxCenter(axis, box) {\n return box.margin[axis.start] + box.borderBox[axis.size] / 2;\n};\n\nvar distanceFromEndToBorderBoxCenter = function distanceFromEndToBorderBoxCenter(axis, box) {\n return box.margin[axis.end] + box.borderBox[axis.size] / 2;\n};\n\nvar getCrossAxisBorderBoxCenter = function getCrossAxisBorderBoxCenter(axis, target, isMoving) {\n return target[axis.crossAxisStart] + isMoving.margin[axis.crossAxisStart] + isMoving.borderBox[axis.crossAxisSize] / 2;\n};\n\nvar goAfter = function goAfter(_ref) {\n var axis = _ref.axis,\n moveRelativeTo = _ref.moveRelativeTo,\n isMoving = _ref.isMoving;\n return patch(axis.line, moveRelativeTo.marginBox[axis.end] + distanceFromStartToBorderBoxCenter(axis, isMoving), getCrossAxisBorderBoxCenter(axis, moveRelativeTo.marginBox, isMoving));\n};\nvar goBefore = function goBefore(_ref2) {\n var axis = _ref2.axis,\n moveRelativeTo = _ref2.moveRelativeTo,\n isMoving = _ref2.isMoving;\n return patch(axis.line, moveRelativeTo.marginBox[axis.start] - distanceFromEndToBorderBoxCenter(axis, isMoving), getCrossAxisBorderBoxCenter(axis, moveRelativeTo.marginBox, isMoving));\n};\nvar goIntoStart = function goIntoStart(_ref3) {\n var axis = _ref3.axis,\n moveInto = _ref3.moveInto,\n isMoving = _ref3.isMoving;\n return patch(axis.line, moveInto.contentBox[axis.start] + distanceFromStartToBorderBoxCenter(axis, isMoving), getCrossAxisBorderBoxCenter(axis, moveInto.contentBox, isMoving));\n};\n\nvar whenReordering = (function (_ref) {\n var impact = _ref.impact,\n draggable = _ref.draggable,\n draggables = _ref.draggables,\n droppable = _ref.droppable,\n afterCritical = _ref.afterCritical;\n var insideDestination = getDraggablesInsideDroppable(droppable.descriptor.id, draggables);\n var draggablePage = draggable.page;\n var axis = droppable.axis;\n\n if (!insideDestination.length) {\n return goIntoStart({\n axis: axis,\n moveInto: droppable.page,\n isMoving: draggablePage\n });\n }\n\n var displaced = impact.displaced,\n displacedBy = impact.displacedBy;\n var closestAfter = displaced.all[0];\n\n if (closestAfter) {\n var closest = draggables[closestAfter];\n\n if (didStartAfterCritical(closestAfter, afterCritical)) {\n return goBefore({\n axis: axis,\n moveRelativeTo: closest.page,\n isMoving: draggablePage\n });\n }\n\n var withDisplacement = offset(closest.page, displacedBy.point);\n return goBefore({\n axis: axis,\n moveRelativeTo: withDisplacement,\n isMoving: draggablePage\n });\n }\n\n var last = insideDestination[insideDestination.length - 1];\n\n if (last.descriptor.id === draggable.descriptor.id) {\n return draggablePage.borderBox.center;\n }\n\n if (didStartAfterCritical(last.descriptor.id, afterCritical)) {\n var page = offset(last.page, negate(afterCritical.displacedBy.point));\n return goAfter({\n axis: axis,\n moveRelativeTo: page,\n isMoving: draggablePage\n });\n }\n\n return goAfter({\n axis: axis,\n moveRelativeTo: last.page,\n isMoving: draggablePage\n });\n});\n\nvar withDroppableDisplacement = (function (droppable, point) {\n var frame = droppable.frame;\n\n if (!frame) {\n return point;\n }\n\n return add(point, frame.scroll.diff.displacement);\n});\n\nvar getResultWithoutDroppableDisplacement = function getResultWithoutDroppableDisplacement(_ref) {\n var impact = _ref.impact,\n draggable = _ref.draggable,\n droppable = _ref.droppable,\n draggables = _ref.draggables,\n afterCritical = _ref.afterCritical;\n var original = draggable.page.borderBox.center;\n var at = impact.at;\n\n if (!droppable) {\n return original;\n }\n\n if (!at) {\n return original;\n }\n\n if (at.type === 'REORDER') {\n return whenReordering({\n impact: impact,\n draggable: draggable,\n draggables: draggables,\n droppable: droppable,\n afterCritical: afterCritical\n });\n }\n\n return whenCombining({\n impact: impact,\n draggables: draggables,\n afterCritical: afterCritical\n });\n};\n\nvar getPageBorderBoxCenterFromImpact = (function (args) {\n var withoutDisplacement = getResultWithoutDroppableDisplacement(args);\n var droppable = args.droppable;\n var withDisplacement = droppable ? withDroppableDisplacement(droppable, withoutDisplacement) : withoutDisplacement;\n return withDisplacement;\n});\n\nvar scrollViewport = (function (viewport, newScroll) {\n var diff = subtract(newScroll, viewport.scroll.initial);\n var displacement = negate(diff);\n var frame = getRect({\n top: newScroll.y,\n bottom: newScroll.y + viewport.frame.height,\n left: newScroll.x,\n right: newScroll.x + viewport.frame.width\n });\n var updated = {\n frame: frame,\n scroll: {\n initial: viewport.scroll.initial,\n max: viewport.scroll.max,\n current: newScroll,\n diff: {\n value: diff,\n displacement: displacement\n }\n }\n };\n return updated;\n});\n\nfunction getDraggables(ids, draggables) {\n return ids.map(function (id) {\n return draggables[id];\n });\n}\n\nfunction tryGetVisible(id, groups) {\n for (var i = 0; i < groups.length; i++) {\n var displacement = groups[i].visible[id];\n\n if (displacement) {\n return displacement;\n }\n }\n\n return null;\n}\n\nvar speculativelyIncrease = (function (_ref) {\n var impact = _ref.impact,\n viewport = _ref.viewport,\n destination = _ref.destination,\n draggables = _ref.draggables,\n maxScrollChange = _ref.maxScrollChange;\n var scrolledViewport = scrollViewport(viewport, add(viewport.scroll.current, maxScrollChange));\n var scrolledDroppable = destination.frame ? scrollDroppable(destination, add(destination.frame.scroll.current, maxScrollChange)) : destination;\n var last = impact.displaced;\n var withViewportScroll = getDisplacementGroups({\n afterDragging: getDraggables(last.all, draggables),\n destination: destination,\n displacedBy: impact.displacedBy,\n viewport: scrolledViewport.frame,\n last: last,\n forceShouldAnimate: false\n });\n var withDroppableScroll = getDisplacementGroups({\n afterDragging: getDraggables(last.all, draggables),\n destination: scrolledDroppable,\n displacedBy: impact.displacedBy,\n viewport: viewport.frame,\n last: last,\n forceShouldAnimate: false\n });\n var invisible = {};\n var visible = {};\n var groups = [last, withViewportScroll, withDroppableScroll];\n last.all.forEach(function (id) {\n var displacement = tryGetVisible(id, groups);\n\n if (displacement) {\n visible[id] = displacement;\n return;\n }\n\n invisible[id] = true;\n });\n\n var newImpact = _extends({}, impact, {\n displaced: {\n all: last.all,\n invisible: invisible,\n visible: visible\n }\n });\n\n return newImpact;\n});\n\nvar withViewportDisplacement = (function (viewport, point) {\n return add(viewport.scroll.diff.displacement, point);\n});\n\nvar getClientFromPageBorderBoxCenter = (function (_ref) {\n var pageBorderBoxCenter = _ref.pageBorderBoxCenter,\n draggable = _ref.draggable,\n viewport = _ref.viewport;\n var withoutPageScrollChange = withViewportDisplacement(viewport, pageBorderBoxCenter);\n var offset = subtract(withoutPageScrollChange, draggable.page.borderBox.center);\n return add(draggable.client.borderBox.center, offset);\n});\n\nvar isTotallyVisibleInNewLocation = (function (_ref) {\n var draggable = _ref.draggable,\n destination = _ref.destination,\n newPageBorderBoxCenter = _ref.newPageBorderBoxCenter,\n viewport = _ref.viewport,\n withDroppableDisplacement = _ref.withDroppableDisplacement,\n _ref$onlyOnMainAxis = _ref.onlyOnMainAxis,\n onlyOnMainAxis = _ref$onlyOnMainAxis === void 0 ? false : _ref$onlyOnMainAxis;\n var changeNeeded = subtract(newPageBorderBoxCenter, draggable.page.borderBox.center);\n var shifted = offsetByPosition(draggable.page.borderBox, changeNeeded);\n var args = {\n target: shifted,\n destination: destination,\n withDroppableDisplacement: withDroppableDisplacement,\n viewport: viewport\n };\n return onlyOnMainAxis ? isTotallyVisibleOnAxis(args) : isTotallyVisible(args);\n});\n\nvar moveToNextPlace = (function (_ref) {\n var isMovingForward = _ref.isMovingForward,\n draggable = _ref.draggable,\n destination = _ref.destination,\n draggables = _ref.draggables,\n previousImpact = _ref.previousImpact,\n viewport = _ref.viewport,\n previousPageBorderBoxCenter = _ref.previousPageBorderBoxCenter,\n previousClientSelection = _ref.previousClientSelection,\n afterCritical = _ref.afterCritical;\n\n if (!destination.isEnabled) {\n return null;\n }\n\n var insideDestination = getDraggablesInsideDroppable(destination.descriptor.id, draggables);\n var isInHomeList = isHomeOf(draggable, destination);\n var impact = moveToNextCombine({\n isMovingForward: isMovingForward,\n draggable: draggable,\n destination: destination,\n insideDestination: insideDestination,\n previousImpact: previousImpact\n }) || moveToNextIndex({\n isMovingForward: isMovingForward,\n isInHomeList: isInHomeList,\n draggable: draggable,\n draggables: draggables,\n destination: destination,\n insideDestination: insideDestination,\n previousImpact: previousImpact,\n viewport: viewport,\n afterCritical: afterCritical\n });\n\n if (!impact) {\n return null;\n }\n\n var pageBorderBoxCenter = getPageBorderBoxCenterFromImpact({\n impact: impact,\n draggable: draggable,\n droppable: destination,\n draggables: draggables,\n afterCritical: afterCritical\n });\n var isVisibleInNewLocation = isTotallyVisibleInNewLocation({\n draggable: draggable,\n destination: destination,\n newPageBorderBoxCenter: pageBorderBoxCenter,\n viewport: viewport.frame,\n withDroppableDisplacement: false,\n onlyOnMainAxis: true\n });\n\n if (isVisibleInNewLocation) {\n var clientSelection = getClientFromPageBorderBoxCenter({\n pageBorderBoxCenter: pageBorderBoxCenter,\n draggable: draggable,\n viewport: viewport\n });\n return {\n clientSelection: clientSelection,\n impact: impact,\n scrollJumpRequest: null\n };\n }\n\n var distance = subtract(pageBorderBoxCenter, previousPageBorderBoxCenter);\n var cautious = speculativelyIncrease({\n impact: impact,\n viewport: viewport,\n destination: destination,\n draggables: draggables,\n maxScrollChange: distance\n });\n return {\n clientSelection: previousClientSelection,\n impact: cautious,\n scrollJumpRequest: distance\n };\n});\n\nvar getKnownActive = function getKnownActive(droppable) {\n var rect = droppable.subject.active;\n !rect ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot get clipped area from droppable') : invariant(false) : void 0;\n return rect;\n};\n\nvar getBestCrossAxisDroppable = (function (_ref) {\n var isMovingForward = _ref.isMovingForward,\n pageBorderBoxCenter = _ref.pageBorderBoxCenter,\n source = _ref.source,\n droppables = _ref.droppables,\n viewport = _ref.viewport;\n var active = source.subject.active;\n\n if (!active) {\n return null;\n }\n\n var axis = source.axis;\n var isBetweenSourceClipped = isWithin(active[axis.start], active[axis.end]);\n var candidates = toDroppableList(droppables).filter(function (droppable) {\n return droppable !== source;\n }).filter(function (droppable) {\n return droppable.isEnabled;\n }).filter(function (droppable) {\n return Boolean(droppable.subject.active);\n }).filter(function (droppable) {\n return isPartiallyVisibleThroughFrame(viewport.frame)(getKnownActive(droppable));\n }).filter(function (droppable) {\n var activeOfTarget = getKnownActive(droppable);\n\n if (isMovingForward) {\n return active[axis.crossAxisEnd] < activeOfTarget[axis.crossAxisEnd];\n }\n\n return activeOfTarget[axis.crossAxisStart] < active[axis.crossAxisStart];\n }).filter(function (droppable) {\n var activeOfTarget = getKnownActive(droppable);\n var isBetweenDestinationClipped = isWithin(activeOfTarget[axis.start], activeOfTarget[axis.end]);\n return isBetweenSourceClipped(activeOfTarget[axis.start]) || isBetweenSourceClipped(activeOfTarget[axis.end]) || isBetweenDestinationClipped(active[axis.start]) || isBetweenDestinationClipped(active[axis.end]);\n }).sort(function (a, b) {\n var first = getKnownActive(a)[axis.crossAxisStart];\n var second = getKnownActive(b)[axis.crossAxisStart];\n\n if (isMovingForward) {\n return first - second;\n }\n\n return second - first;\n }).filter(function (droppable, index, array) {\n return getKnownActive(droppable)[axis.crossAxisStart] === getKnownActive(array[0])[axis.crossAxisStart];\n });\n\n if (!candidates.length) {\n return null;\n }\n\n if (candidates.length === 1) {\n return candidates[0];\n }\n\n var contains = candidates.filter(function (droppable) {\n var isWithinDroppable = isWithin(getKnownActive(droppable)[axis.start], getKnownActive(droppable)[axis.end]);\n return isWithinDroppable(pageBorderBoxCenter[axis.line]);\n });\n\n if (contains.length === 1) {\n return contains[0];\n }\n\n if (contains.length > 1) {\n return contains.sort(function (a, b) {\n return getKnownActive(a)[axis.start] - getKnownActive(b)[axis.start];\n })[0];\n }\n\n return candidates.sort(function (a, b) {\n var first = closest(pageBorderBoxCenter, getCorners(getKnownActive(a)));\n var second = closest(pageBorderBoxCenter, getCorners(getKnownActive(b)));\n\n if (first !== second) {\n return first - second;\n }\n\n return getKnownActive(a)[axis.start] - getKnownActive(b)[axis.start];\n })[0];\n});\n\nvar getCurrentPageBorderBoxCenter = function getCurrentPageBorderBoxCenter(draggable, afterCritical) {\n var original = draggable.page.borderBox.center;\n return didStartAfterCritical(draggable.descriptor.id, afterCritical) ? subtract(original, afterCritical.displacedBy.point) : original;\n};\nvar getCurrentPageBorderBox = function getCurrentPageBorderBox(draggable, afterCritical) {\n var original = draggable.page.borderBox;\n return didStartAfterCritical(draggable.descriptor.id, afterCritical) ? offsetByPosition(original, negate(afterCritical.displacedBy.point)) : original;\n};\n\nvar getClosestDraggable = (function (_ref) {\n var pageBorderBoxCenter = _ref.pageBorderBoxCenter,\n viewport = _ref.viewport,\n destination = _ref.destination,\n insideDestination = _ref.insideDestination,\n afterCritical = _ref.afterCritical;\n var sorted = insideDestination.filter(function (draggable) {\n return isTotallyVisible({\n target: getCurrentPageBorderBox(draggable, afterCritical),\n destination: destination,\n viewport: viewport.frame,\n withDroppableDisplacement: true\n });\n }).sort(function (a, b) {\n var distanceToA = distance(pageBorderBoxCenter, withDroppableDisplacement(destination, getCurrentPageBorderBoxCenter(a, afterCritical)));\n var distanceToB = distance(pageBorderBoxCenter, withDroppableDisplacement(destination, getCurrentPageBorderBoxCenter(b, afterCritical)));\n\n if (distanceToA < distanceToB) {\n return -1;\n }\n\n if (distanceToB < distanceToA) {\n return 1;\n }\n\n return a.descriptor.index - b.descriptor.index;\n });\n return sorted[0] || null;\n});\n\nvar getDisplacedBy = memoizeOne(function getDisplacedBy(axis, displaceBy) {\n var displacement = displaceBy[axis.line];\n return {\n value: displacement,\n point: patch(axis.line, displacement)\n };\n});\n\nvar getRequiredGrowthForPlaceholder = function getRequiredGrowthForPlaceholder(droppable, placeholderSize, draggables) {\n var axis = droppable.axis;\n\n if (droppable.descriptor.mode === 'virtual') {\n return patch(axis.line, placeholderSize[axis.line]);\n }\n\n var availableSpace = droppable.subject.page.contentBox[axis.size];\n var insideDroppable = getDraggablesInsideDroppable(droppable.descriptor.id, draggables);\n var spaceUsed = insideDroppable.reduce(function (sum, dimension) {\n return sum + dimension.client.marginBox[axis.size];\n }, 0);\n var requiredSpace = spaceUsed + placeholderSize[axis.line];\n var needsToGrowBy = requiredSpace - availableSpace;\n\n if (needsToGrowBy <= 0) {\n return null;\n }\n\n return patch(axis.line, needsToGrowBy);\n};\n\nvar withMaxScroll = function withMaxScroll(frame, max) {\n return _extends({}, frame, {\n scroll: _extends({}, frame.scroll, {\n max: max\n })\n });\n};\n\nvar addPlaceholder = function addPlaceholder(droppable, draggable, draggables) {\n var frame = droppable.frame;\n !!isHomeOf(draggable, droppable) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Should not add placeholder space to home list') : invariant(false) : void 0;\n !!droppable.subject.withPlaceholder ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot add placeholder size to a subject when it already has one') : invariant(false) : void 0;\n var placeholderSize = getDisplacedBy(droppable.axis, draggable.displaceBy).point;\n var requiredGrowth = getRequiredGrowthForPlaceholder(droppable, placeholderSize, draggables);\n var added = {\n placeholderSize: placeholderSize,\n increasedBy: requiredGrowth,\n oldFrameMaxScroll: droppable.frame ? droppable.frame.scroll.max : null\n };\n\n if (!frame) {\n var _subject = getSubject({\n page: droppable.subject.page,\n withPlaceholder: added,\n axis: droppable.axis,\n frame: droppable.frame\n });\n\n return _extends({}, droppable, {\n subject: _subject\n });\n }\n\n var maxScroll = requiredGrowth ? add(frame.scroll.max, requiredGrowth) : frame.scroll.max;\n var newFrame = withMaxScroll(frame, maxScroll);\n var subject = getSubject({\n page: droppable.subject.page,\n withPlaceholder: added,\n axis: droppable.axis,\n frame: newFrame\n });\n return _extends({}, droppable, {\n subject: subject,\n frame: newFrame\n });\n};\nvar removePlaceholder = function removePlaceholder(droppable) {\n var added = droppable.subject.withPlaceholder;\n !added ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot remove placeholder form subject when there was none') : invariant(false) : void 0;\n var frame = droppable.frame;\n\n if (!frame) {\n var _subject2 = getSubject({\n page: droppable.subject.page,\n axis: droppable.axis,\n frame: null,\n withPlaceholder: null\n });\n\n return _extends({}, droppable, {\n subject: _subject2\n });\n }\n\n var oldMaxScroll = added.oldFrameMaxScroll;\n !oldMaxScroll ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Expected droppable with frame to have old max frame scroll when removing placeholder') : invariant(false) : void 0;\n var newFrame = withMaxScroll(frame, oldMaxScroll);\n var subject = getSubject({\n page: droppable.subject.page,\n axis: droppable.axis,\n frame: newFrame,\n withPlaceholder: null\n });\n return _extends({}, droppable, {\n subject: subject,\n frame: newFrame\n });\n};\n\nvar moveToNewDroppable = (function (_ref) {\n var previousPageBorderBoxCenter = _ref.previousPageBorderBoxCenter,\n moveRelativeTo = _ref.moveRelativeTo,\n insideDestination = _ref.insideDestination,\n draggable = _ref.draggable,\n draggables = _ref.draggables,\n destination = _ref.destination,\n viewport = _ref.viewport,\n afterCritical = _ref.afterCritical;\n\n if (!moveRelativeTo) {\n if (insideDestination.length) {\n return null;\n }\n\n var proposed = {\n displaced: emptyGroups,\n displacedBy: noDisplacedBy,\n at: {\n type: 'REORDER',\n destination: {\n droppableId: destination.descriptor.id,\n index: 0\n }\n }\n };\n var proposedPageBorderBoxCenter = getPageBorderBoxCenterFromImpact({\n impact: proposed,\n draggable: draggable,\n droppable: destination,\n draggables: draggables,\n afterCritical: afterCritical\n });\n var withPlaceholder = isHomeOf(draggable, destination) ? destination : addPlaceholder(destination, draggable, draggables);\n var isVisibleInNewLocation = isTotallyVisibleInNewLocation({\n draggable: draggable,\n destination: withPlaceholder,\n newPageBorderBoxCenter: proposedPageBorderBoxCenter,\n viewport: viewport.frame,\n withDroppableDisplacement: false,\n onlyOnMainAxis: true\n });\n return isVisibleInNewLocation ? proposed : null;\n }\n\n var isGoingBeforeTarget = Boolean(previousPageBorderBoxCenter[destination.axis.line] <= moveRelativeTo.page.borderBox.center[destination.axis.line]);\n\n var proposedIndex = function () {\n var relativeTo = moveRelativeTo.descriptor.index;\n\n if (moveRelativeTo.descriptor.id === draggable.descriptor.id) {\n return relativeTo;\n }\n\n if (isGoingBeforeTarget) {\n return relativeTo;\n }\n\n return relativeTo + 1;\n }();\n\n var displacedBy = getDisplacedBy(destination.axis, draggable.displaceBy);\n return calculateReorderImpact({\n draggable: draggable,\n insideDestination: insideDestination,\n destination: destination,\n viewport: viewport,\n displacedBy: displacedBy,\n last: emptyGroups,\n index: proposedIndex\n });\n});\n\nvar moveCrossAxis = (function (_ref) {\n var isMovingForward = _ref.isMovingForward,\n previousPageBorderBoxCenter = _ref.previousPageBorderBoxCenter,\n draggable = _ref.draggable,\n isOver = _ref.isOver,\n draggables = _ref.draggables,\n droppables = _ref.droppables,\n viewport = _ref.viewport,\n afterCritical = _ref.afterCritical;\n var destination = getBestCrossAxisDroppable({\n isMovingForward: isMovingForward,\n pageBorderBoxCenter: previousPageBorderBoxCenter,\n source: isOver,\n droppables: droppables,\n viewport: viewport\n });\n\n if (!destination) {\n return null;\n }\n\n var insideDestination = getDraggablesInsideDroppable(destination.descriptor.id, draggables);\n var moveRelativeTo = getClosestDraggable({\n pageBorderBoxCenter: previousPageBorderBoxCenter,\n viewport: viewport,\n destination: destination,\n insideDestination: insideDestination,\n afterCritical: afterCritical\n });\n var impact = moveToNewDroppable({\n previousPageBorderBoxCenter: previousPageBorderBoxCenter,\n destination: destination,\n draggable: draggable,\n draggables: draggables,\n moveRelativeTo: moveRelativeTo,\n insideDestination: insideDestination,\n viewport: viewport,\n afterCritical: afterCritical\n });\n\n if (!impact) {\n return null;\n }\n\n var pageBorderBoxCenter = getPageBorderBoxCenterFromImpact({\n impact: impact,\n draggable: draggable,\n droppable: destination,\n draggables: draggables,\n afterCritical: afterCritical\n });\n var clientSelection = getClientFromPageBorderBoxCenter({\n pageBorderBoxCenter: pageBorderBoxCenter,\n draggable: draggable,\n viewport: viewport\n });\n return {\n clientSelection: clientSelection,\n impact: impact,\n scrollJumpRequest: null\n };\n});\n\nvar whatIsDraggedOver = (function (impact) {\n var at = impact.at;\n\n if (!at) {\n return null;\n }\n\n if (at.type === 'REORDER') {\n return at.destination.droppableId;\n }\n\n return at.combine.droppableId;\n});\n\nvar getDroppableOver = function getDroppableOver(impact, droppables) {\n var id = whatIsDraggedOver(impact);\n return id ? droppables[id] : null;\n};\n\nvar moveInDirection = (function (_ref) {\n var state = _ref.state,\n type = _ref.type;\n var isActuallyOver = getDroppableOver(state.impact, state.dimensions.droppables);\n var isMainAxisMovementAllowed = Boolean(isActuallyOver);\n var home = state.dimensions.droppables[state.critical.droppable.id];\n var isOver = isActuallyOver || home;\n var direction = isOver.axis.direction;\n var isMovingOnMainAxis = direction === 'vertical' && (type === 'MOVE_UP' || type === 'MOVE_DOWN') || direction === 'horizontal' && (type === 'MOVE_LEFT' || type === 'MOVE_RIGHT');\n\n if (isMovingOnMainAxis && !isMainAxisMovementAllowed) {\n return null;\n }\n\n var isMovingForward = type === 'MOVE_DOWN' || type === 'MOVE_RIGHT';\n var draggable = state.dimensions.draggables[state.critical.draggable.id];\n var previousPageBorderBoxCenter = state.current.page.borderBoxCenter;\n var _state$dimensions = state.dimensions,\n draggables = _state$dimensions.draggables,\n droppables = _state$dimensions.droppables;\n return isMovingOnMainAxis ? moveToNextPlace({\n isMovingForward: isMovingForward,\n previousPageBorderBoxCenter: previousPageBorderBoxCenter,\n draggable: draggable,\n destination: isOver,\n draggables: draggables,\n viewport: state.viewport,\n previousClientSelection: state.current.client.selection,\n previousImpact: state.impact,\n afterCritical: state.afterCritical\n }) : moveCrossAxis({\n isMovingForward: isMovingForward,\n previousPageBorderBoxCenter: previousPageBorderBoxCenter,\n draggable: draggable,\n isOver: isOver,\n draggables: draggables,\n droppables: droppables,\n viewport: state.viewport,\n afterCritical: state.afterCritical\n });\n});\n\nfunction isMovementAllowed(state) {\n return state.phase === 'DRAGGING' || state.phase === 'COLLECTING';\n}\n\nfunction isPositionInFrame(frame) {\n var isWithinVertical = isWithin(frame.top, frame.bottom);\n var isWithinHorizontal = isWithin(frame.left, frame.right);\n return function run(point) {\n return isWithinVertical(point.y) && isWithinHorizontal(point.x);\n };\n}\n\nfunction getHasOverlap(first, second) {\n return first.left < second.right && first.right > second.left && first.top < second.bottom && first.bottom > second.top;\n}\n\nfunction getFurthestAway(_ref) {\n var pageBorderBox = _ref.pageBorderBox,\n draggable = _ref.draggable,\n candidates = _ref.candidates;\n var startCenter = draggable.page.borderBox.center;\n var sorted = candidates.map(function (candidate) {\n var axis = candidate.axis;\n var target = patch(candidate.axis.line, pageBorderBox.center[axis.line], candidate.page.borderBox.center[axis.crossAxisLine]);\n return {\n id: candidate.descriptor.id,\n distance: distance(startCenter, target)\n };\n }).sort(function (a, b) {\n return b.distance - a.distance;\n });\n return sorted[0] ? sorted[0].id : null;\n}\n\nfunction getDroppableOver$1(_ref2) {\n var pageBorderBox = _ref2.pageBorderBox,\n draggable = _ref2.draggable,\n droppables = _ref2.droppables;\n var candidates = toDroppableList(droppables).filter(function (item) {\n if (!item.isEnabled) {\n return false;\n }\n\n var active = item.subject.active;\n\n if (!active) {\n return false;\n }\n\n if (!getHasOverlap(pageBorderBox, active)) {\n return false;\n }\n\n if (isPositionInFrame(active)(pageBorderBox.center)) {\n return true;\n }\n\n var axis = item.axis;\n var childCenter = active.center[axis.crossAxisLine];\n var crossAxisStart = pageBorderBox[axis.crossAxisStart];\n var crossAxisEnd = pageBorderBox[axis.crossAxisEnd];\n var isContained = isWithin(active[axis.crossAxisStart], active[axis.crossAxisEnd]);\n var isStartContained = isContained(crossAxisStart);\n var isEndContained = isContained(crossAxisEnd);\n\n if (!isStartContained && !isEndContained) {\n return true;\n }\n\n if (isStartContained) {\n return crossAxisStart < childCenter;\n }\n\n return crossAxisEnd > childCenter;\n });\n\n if (!candidates.length) {\n return null;\n }\n\n if (candidates.length === 1) {\n return candidates[0].descriptor.id;\n }\n\n return getFurthestAway({\n pageBorderBox: pageBorderBox,\n draggable: draggable,\n candidates: candidates\n });\n}\n\nvar offsetRectByPosition = function offsetRectByPosition(rect, point) {\n return getRect(offsetByPosition(rect, point));\n};\n\nvar withDroppableScroll = (function (droppable, area) {\n var frame = droppable.frame;\n\n if (!frame) {\n return area;\n }\n\n return offsetRectByPosition(area, frame.scroll.diff.value);\n});\n\nfunction getIsDisplaced(_ref) {\n var displaced = _ref.displaced,\n id = _ref.id;\n return Boolean(displaced.visible[id] || displaced.invisible[id]);\n}\n\nfunction atIndex(_ref) {\n var draggable = _ref.draggable,\n closest = _ref.closest,\n inHomeList = _ref.inHomeList;\n\n if (!closest) {\n return null;\n }\n\n if (!inHomeList) {\n return closest.descriptor.index;\n }\n\n if (closest.descriptor.index > draggable.descriptor.index) {\n return closest.descriptor.index - 1;\n }\n\n return closest.descriptor.index;\n}\n\nvar getReorderImpact = (function (_ref2) {\n var targetRect = _ref2.pageBorderBoxWithDroppableScroll,\n draggable = _ref2.draggable,\n destination = _ref2.destination,\n insideDestination = _ref2.insideDestination,\n last = _ref2.last,\n viewport = _ref2.viewport,\n afterCritical = _ref2.afterCritical;\n var axis = destination.axis;\n var displacedBy = getDisplacedBy(destination.axis, draggable.displaceBy);\n var displacement = displacedBy.value;\n var targetStart = targetRect[axis.start];\n var targetEnd = targetRect[axis.end];\n var withoutDragging = removeDraggableFromList(draggable, insideDestination);\n var closest = find(withoutDragging, function (child) {\n var id = child.descriptor.id;\n var childCenter = child.page.borderBox.center[axis.line];\n var didStartAfterCritical$1 = didStartAfterCritical(id, afterCritical);\n var isDisplaced = getIsDisplaced({\n displaced: last,\n id: id\n });\n\n if (didStartAfterCritical$1) {\n if (isDisplaced) {\n return targetEnd <= childCenter;\n }\n\n return targetStart < childCenter - displacement;\n }\n\n if (isDisplaced) {\n return targetEnd <= childCenter + displacement;\n }\n\n return targetStart < childCenter;\n });\n var newIndex = atIndex({\n draggable: draggable,\n closest: closest,\n inHomeList: isHomeOf(draggable, destination)\n });\n return calculateReorderImpact({\n draggable: draggable,\n insideDestination: insideDestination,\n destination: destination,\n viewport: viewport,\n last: last,\n displacedBy: displacedBy,\n index: newIndex\n });\n});\n\nvar combineThresholdDivisor = 4;\nvar getCombineImpact = (function (_ref) {\n var draggable = _ref.draggable,\n targetRect = _ref.pageBorderBoxWithDroppableScroll,\n previousImpact = _ref.previousImpact,\n destination = _ref.destination,\n insideDestination = _ref.insideDestination,\n afterCritical = _ref.afterCritical;\n\n if (!destination.isCombineEnabled) {\n return null;\n }\n\n var axis = destination.axis;\n var displacedBy = getDisplacedBy(destination.axis, draggable.displaceBy);\n var displacement = displacedBy.value;\n var targetStart = targetRect[axis.start];\n var targetEnd = targetRect[axis.end];\n var withoutDragging = removeDraggableFromList(draggable, insideDestination);\n var combineWith = find(withoutDragging, function (child) {\n var id = child.descriptor.id;\n var childRect = child.page.borderBox;\n var childSize = childRect[axis.size];\n var threshold = childSize / combineThresholdDivisor;\n var didStartAfterCritical$1 = didStartAfterCritical(id, afterCritical);\n var isDisplaced = getIsDisplaced({\n displaced: previousImpact.displaced,\n id: id\n });\n\n if (didStartAfterCritical$1) {\n if (isDisplaced) {\n return targetEnd > childRect[axis.start] + threshold && targetEnd < childRect[axis.end] - threshold;\n }\n\n return targetStart > childRect[axis.start] - displacement + threshold && targetStart < childRect[axis.end] - displacement - threshold;\n }\n\n if (isDisplaced) {\n return targetEnd > childRect[axis.start] + displacement + threshold && targetEnd < childRect[axis.end] + displacement - threshold;\n }\n\n return targetStart > childRect[axis.start] + threshold && targetStart < childRect[axis.end] - threshold;\n });\n\n if (!combineWith) {\n return null;\n }\n\n var impact = {\n displacedBy: displacedBy,\n displaced: previousImpact.displaced,\n at: {\n type: 'COMBINE',\n combine: {\n draggableId: combineWith.descriptor.id,\n droppableId: destination.descriptor.id\n }\n }\n };\n return impact;\n});\n\nvar getDragImpact = (function (_ref) {\n var pageOffset = _ref.pageOffset,\n draggable = _ref.draggable,\n draggables = _ref.draggables,\n droppables = _ref.droppables,\n previousImpact = _ref.previousImpact,\n viewport = _ref.viewport,\n afterCritical = _ref.afterCritical;\n var pageBorderBox = offsetRectByPosition(draggable.page.borderBox, pageOffset);\n var destinationId = getDroppableOver$1({\n pageBorderBox: pageBorderBox,\n draggable: draggable,\n droppables: droppables\n });\n\n if (!destinationId) {\n return noImpact;\n }\n\n var destination = droppables[destinationId];\n var insideDestination = getDraggablesInsideDroppable(destination.descriptor.id, draggables);\n var pageBorderBoxWithDroppableScroll = withDroppableScroll(destination, pageBorderBox);\n return getCombineImpact({\n pageBorderBoxWithDroppableScroll: pageBorderBoxWithDroppableScroll,\n draggable: draggable,\n previousImpact: previousImpact,\n destination: destination,\n insideDestination: insideDestination,\n afterCritical: afterCritical\n }) || getReorderImpact({\n pageBorderBoxWithDroppableScroll: pageBorderBoxWithDroppableScroll,\n draggable: draggable,\n destination: destination,\n insideDestination: insideDestination,\n last: previousImpact.displaced,\n viewport: viewport,\n afterCritical: afterCritical\n });\n});\n\nvar patchDroppableMap = (function (droppables, updated) {\n var _extends2;\n\n return _extends({}, droppables, (_extends2 = {}, _extends2[updated.descriptor.id] = updated, _extends2));\n});\n\nvar clearUnusedPlaceholder = function clearUnusedPlaceholder(_ref) {\n var previousImpact = _ref.previousImpact,\n impact = _ref.impact,\n droppables = _ref.droppables;\n var last = whatIsDraggedOver(previousImpact);\n var now = whatIsDraggedOver(impact);\n\n if (!last) {\n return droppables;\n }\n\n if (last === now) {\n return droppables;\n }\n\n var lastDroppable = droppables[last];\n\n if (!lastDroppable.subject.withPlaceholder) {\n return droppables;\n }\n\n var updated = removePlaceholder(lastDroppable);\n return patchDroppableMap(droppables, updated);\n};\n\nvar recomputePlaceholders = (function (_ref2) {\n var draggable = _ref2.draggable,\n draggables = _ref2.draggables,\n droppables = _ref2.droppables,\n previousImpact = _ref2.previousImpact,\n impact = _ref2.impact;\n var cleaned = clearUnusedPlaceholder({\n previousImpact: previousImpact,\n impact: impact,\n droppables: droppables\n });\n var isOver = whatIsDraggedOver(impact);\n\n if (!isOver) {\n return cleaned;\n }\n\n var droppable = droppables[isOver];\n\n if (isHomeOf(draggable, droppable)) {\n return cleaned;\n }\n\n if (droppable.subject.withPlaceholder) {\n return cleaned;\n }\n\n var patched = addPlaceholder(droppable, draggable, draggables);\n return patchDroppableMap(cleaned, patched);\n});\n\nvar update = (function (_ref) {\n var state = _ref.state,\n forcedClientSelection = _ref.clientSelection,\n forcedDimensions = _ref.dimensions,\n forcedViewport = _ref.viewport,\n forcedImpact = _ref.impact,\n scrollJumpRequest = _ref.scrollJumpRequest;\n var viewport = forcedViewport || state.viewport;\n var dimensions = forcedDimensions || state.dimensions;\n var clientSelection = forcedClientSelection || state.current.client.selection;\n var offset = subtract(clientSelection, state.initial.client.selection);\n var client = {\n offset: offset,\n selection: clientSelection,\n borderBoxCenter: add(state.initial.client.borderBoxCenter, offset)\n };\n var page = {\n selection: add(client.selection, viewport.scroll.current),\n borderBoxCenter: add(client.borderBoxCenter, viewport.scroll.current),\n offset: add(client.offset, viewport.scroll.diff.value)\n };\n var current = {\n client: client,\n page: page\n };\n\n if (state.phase === 'COLLECTING') {\n return _extends({\n phase: 'COLLECTING'\n }, state, {\n dimensions: dimensions,\n viewport: viewport,\n current: current\n });\n }\n\n var draggable = dimensions.draggables[state.critical.draggable.id];\n var newImpact = forcedImpact || getDragImpact({\n pageOffset: page.offset,\n draggable: draggable,\n draggables: dimensions.draggables,\n droppables: dimensions.droppables,\n previousImpact: state.impact,\n viewport: viewport,\n afterCritical: state.afterCritical\n });\n var withUpdatedPlaceholders = recomputePlaceholders({\n draggable: draggable,\n impact: newImpact,\n previousImpact: state.impact,\n draggables: dimensions.draggables,\n droppables: dimensions.droppables\n });\n\n var result = _extends({}, state, {\n current: current,\n dimensions: {\n draggables: dimensions.draggables,\n droppables: withUpdatedPlaceholders\n },\n impact: newImpact,\n viewport: viewport,\n scrollJumpRequest: scrollJumpRequest || null,\n forceShouldAnimate: scrollJumpRequest ? false : null\n });\n\n return result;\n});\n\nfunction getDraggables$1(ids, draggables) {\n return ids.map(function (id) {\n return draggables[id];\n });\n}\n\nvar recompute = (function (_ref) {\n var impact = _ref.impact,\n viewport = _ref.viewport,\n draggables = _ref.draggables,\n destination = _ref.destination,\n forceShouldAnimate = _ref.forceShouldAnimate;\n var last = impact.displaced;\n var afterDragging = getDraggables$1(last.all, draggables);\n var displaced = getDisplacementGroups({\n afterDragging: afterDragging,\n destination: destination,\n displacedBy: impact.displacedBy,\n viewport: viewport.frame,\n forceShouldAnimate: forceShouldAnimate,\n last: last\n });\n return _extends({}, impact, {\n displaced: displaced\n });\n});\n\nvar getClientBorderBoxCenter = (function (_ref) {\n var impact = _ref.impact,\n draggable = _ref.draggable,\n droppable = _ref.droppable,\n draggables = _ref.draggables,\n viewport = _ref.viewport,\n afterCritical = _ref.afterCritical;\n var pageBorderBoxCenter = getPageBorderBoxCenterFromImpact({\n impact: impact,\n draggable: draggable,\n draggables: draggables,\n droppable: droppable,\n afterCritical: afterCritical\n });\n return getClientFromPageBorderBoxCenter({\n pageBorderBoxCenter: pageBorderBoxCenter,\n draggable: draggable,\n viewport: viewport\n });\n});\n\nvar refreshSnap = (function (_ref) {\n var state = _ref.state,\n forcedDimensions = _ref.dimensions,\n forcedViewport = _ref.viewport;\n !(state.movementMode === 'SNAP') ? process.env.NODE_ENV !== \"production\" ? invariant(false) : invariant(false) : void 0;\n var needsVisibilityCheck = state.impact;\n var viewport = forcedViewport || state.viewport;\n var dimensions = forcedDimensions || state.dimensions;\n var draggables = dimensions.draggables,\n droppables = dimensions.droppables;\n var draggable = draggables[state.critical.draggable.id];\n var isOver = whatIsDraggedOver(needsVisibilityCheck);\n !isOver ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Must be over a destination in SNAP movement mode') : invariant(false) : void 0;\n var destination = droppables[isOver];\n var impact = recompute({\n impact: needsVisibilityCheck,\n viewport: viewport,\n destination: destination,\n draggables: draggables\n });\n var clientSelection = getClientBorderBoxCenter({\n impact: impact,\n draggable: draggable,\n droppable: destination,\n draggables: draggables,\n viewport: viewport,\n afterCritical: state.afterCritical\n });\n return update({\n impact: impact,\n clientSelection: clientSelection,\n state: state,\n dimensions: dimensions,\n viewport: viewport\n });\n});\n\nvar getHomeLocation = (function (descriptor) {\n return {\n index: descriptor.index,\n droppableId: descriptor.droppableId\n };\n});\n\nvar getLiftEffect = (function (_ref) {\n var draggable = _ref.draggable,\n home = _ref.home,\n draggables = _ref.draggables,\n viewport = _ref.viewport;\n var displacedBy = getDisplacedBy(home.axis, draggable.displaceBy);\n var insideHome = getDraggablesInsideDroppable(home.descriptor.id, draggables);\n var rawIndex = insideHome.indexOf(draggable);\n !(rawIndex !== -1) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Expected draggable to be inside home list') : invariant(false) : void 0;\n var afterDragging = insideHome.slice(rawIndex + 1);\n var effected = afterDragging.reduce(function (previous, item) {\n previous[item.descriptor.id] = true;\n return previous;\n }, {});\n var afterCritical = {\n inVirtualList: home.descriptor.mode === 'virtual',\n displacedBy: displacedBy,\n effected: effected\n };\n var displaced = getDisplacementGroups({\n afterDragging: afterDragging,\n destination: home,\n displacedBy: displacedBy,\n last: null,\n viewport: viewport.frame,\n forceShouldAnimate: false\n });\n var impact = {\n displaced: displaced,\n displacedBy: displacedBy,\n at: {\n type: 'REORDER',\n destination: getHomeLocation(draggable.descriptor)\n }\n };\n return {\n impact: impact,\n afterCritical: afterCritical\n };\n});\n\nvar patchDimensionMap = (function (dimensions, updated) {\n return {\n draggables: dimensions.draggables,\n droppables: patchDroppableMap(dimensions.droppables, updated)\n };\n});\n\nvar start = function start(key) {\n if (process.env.NODE_ENV !== 'production') {\n {\n return;\n }\n }\n};\nvar finish = function finish(key) {\n if (process.env.NODE_ENV !== 'production') {\n {\n return;\n }\n }\n};\n\nvar offsetDraggable = (function (_ref) {\n var draggable = _ref.draggable,\n offset$1 = _ref.offset,\n initialWindowScroll = _ref.initialWindowScroll;\n var client = offset(draggable.client, offset$1);\n var page = withScroll(client, initialWindowScroll);\n\n var moved = _extends({}, draggable, {\n placeholder: _extends({}, draggable.placeholder, {\n client: client\n }),\n client: client,\n page: page\n });\n\n return moved;\n});\n\nvar getFrame = (function (droppable) {\n var frame = droppable.frame;\n !frame ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Expected Droppable to have a frame') : invariant(false) : void 0;\n return frame;\n});\n\nvar adjustAdditionsForScrollChanges = (function (_ref) {\n var additions = _ref.additions,\n updatedDroppables = _ref.updatedDroppables,\n viewport = _ref.viewport;\n var windowScrollChange = viewport.scroll.diff.value;\n return additions.map(function (draggable) {\n var droppableId = draggable.descriptor.droppableId;\n var modified = updatedDroppables[droppableId];\n var frame = getFrame(modified);\n var droppableScrollChange = frame.scroll.diff.value;\n var totalChange = add(windowScrollChange, droppableScrollChange);\n var moved = offsetDraggable({\n draggable: draggable,\n offset: totalChange,\n initialWindowScroll: viewport.scroll.initial\n });\n return moved;\n });\n});\n\nvar publishWhileDraggingInVirtual = (function (_ref) {\n var state = _ref.state,\n published = _ref.published;\n start();\n var withScrollChange = published.modified.map(function (update) {\n var existing = state.dimensions.droppables[update.droppableId];\n var scrolled = scrollDroppable(existing, update.scroll);\n return scrolled;\n });\n\n var droppables = _extends({}, state.dimensions.droppables, {}, toDroppableMap(withScrollChange));\n\n var updatedAdditions = toDraggableMap(adjustAdditionsForScrollChanges({\n additions: published.additions,\n updatedDroppables: droppables,\n viewport: state.viewport\n }));\n\n var draggables = _extends({}, state.dimensions.draggables, {}, updatedAdditions);\n\n published.removals.forEach(function (id) {\n delete draggables[id];\n });\n var dimensions = {\n droppables: droppables,\n draggables: draggables\n };\n var wasOverId = whatIsDraggedOver(state.impact);\n var wasOver = wasOverId ? dimensions.droppables[wasOverId] : null;\n var draggable = dimensions.draggables[state.critical.draggable.id];\n var home = dimensions.droppables[state.critical.droppable.id];\n\n var _getLiftEffect = getLiftEffect({\n draggable: draggable,\n home: home,\n draggables: draggables,\n viewport: state.viewport\n }),\n onLiftImpact = _getLiftEffect.impact,\n afterCritical = _getLiftEffect.afterCritical;\n\n var previousImpact = wasOver && wasOver.isCombineEnabled ? state.impact : onLiftImpact;\n var impact = getDragImpact({\n pageOffset: state.current.page.offset,\n draggable: dimensions.draggables[state.critical.draggable.id],\n draggables: dimensions.draggables,\n droppables: dimensions.droppables,\n previousImpact: previousImpact,\n viewport: state.viewport,\n afterCritical: afterCritical\n });\n finish();\n\n var draggingState = _extends({\n phase: 'DRAGGING'\n }, state, {\n phase: 'DRAGGING',\n impact: impact,\n onLiftImpact: onLiftImpact,\n dimensions: dimensions,\n afterCritical: afterCritical,\n forceShouldAnimate: false\n });\n\n if (state.phase === 'COLLECTING') {\n return draggingState;\n }\n\n var dropPending = _extends({\n phase: 'DROP_PENDING'\n }, draggingState, {\n phase: 'DROP_PENDING',\n reason: state.reason,\n isWaiting: false\n });\n\n return dropPending;\n});\n\nvar isSnapping = function isSnapping(state) {\n return state.movementMode === 'SNAP';\n};\n\nvar postDroppableChange = function postDroppableChange(state, updated, isEnabledChanging) {\n var dimensions = patchDimensionMap(state.dimensions, updated);\n\n if (!isSnapping(state) || isEnabledChanging) {\n return update({\n state: state,\n dimensions: dimensions\n });\n }\n\n return refreshSnap({\n state: state,\n dimensions: dimensions\n });\n};\n\nfunction removeScrollJumpRequest(state) {\n if (state.isDragging && state.movementMode === 'SNAP') {\n return _extends({\n phase: 'DRAGGING'\n }, state, {\n scrollJumpRequest: null\n });\n }\n\n return state;\n}\n\nvar idle = {\n phase: 'IDLE',\n completed: null,\n shouldFlush: false\n};\nvar reducer = (function (state, action) {\n if (state === void 0) {\n state = idle;\n }\n\n if (action.type === 'FLUSH') {\n return _extends({}, idle, {\n shouldFlush: true\n });\n }\n\n if (action.type === 'INITIAL_PUBLISH') {\n !(state.phase === 'IDLE') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'INITIAL_PUBLISH must come after a IDLE phase') : invariant(false) : void 0;\n var _action$payload = action.payload,\n critical = _action$payload.critical,\n clientSelection = _action$payload.clientSelection,\n viewport = _action$payload.viewport,\n dimensions = _action$payload.dimensions,\n movementMode = _action$payload.movementMode;\n var draggable = dimensions.draggables[critical.draggable.id];\n var home = dimensions.droppables[critical.droppable.id];\n var client = {\n selection: clientSelection,\n borderBoxCenter: draggable.client.borderBox.center,\n offset: origin\n };\n var initial = {\n client: client,\n page: {\n selection: add(client.selection, viewport.scroll.initial),\n borderBoxCenter: add(client.selection, viewport.scroll.initial),\n offset: add(client.selection, viewport.scroll.diff.value)\n }\n };\n var isWindowScrollAllowed = toDroppableList(dimensions.droppables).every(function (item) {\n return !item.isFixedOnPage;\n });\n\n var _getLiftEffect = getLiftEffect({\n draggable: draggable,\n home: home,\n draggables: dimensions.draggables,\n viewport: viewport\n }),\n impact = _getLiftEffect.impact,\n afterCritical = _getLiftEffect.afterCritical;\n\n var result = {\n phase: 'DRAGGING',\n isDragging: true,\n critical: critical,\n movementMode: movementMode,\n dimensions: dimensions,\n initial: initial,\n current: initial,\n isWindowScrollAllowed: isWindowScrollAllowed,\n impact: impact,\n afterCritical: afterCritical,\n onLiftImpact: impact,\n viewport: viewport,\n scrollJumpRequest: null,\n forceShouldAnimate: null\n };\n return result;\n }\n\n if (action.type === 'COLLECTION_STARTING') {\n if (state.phase === 'COLLECTING' || state.phase === 'DROP_PENDING') {\n return state;\n }\n\n !(state.phase === 'DRAGGING') ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Collection cannot start from phase \" + state.phase) : invariant(false) : void 0;\n\n var _result = _extends({\n phase: 'COLLECTING'\n }, state, {\n phase: 'COLLECTING'\n });\n\n return _result;\n }\n\n if (action.type === 'PUBLISH_WHILE_DRAGGING') {\n !(state.phase === 'COLLECTING' || state.phase === 'DROP_PENDING') ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Unexpected \" + action.type + \" received in phase \" + state.phase) : invariant(false) : void 0;\n return publishWhileDraggingInVirtual({\n state: state,\n published: action.payload\n });\n }\n\n if (action.type === 'MOVE') {\n if (state.phase === 'DROP_PENDING') {\n return state;\n }\n\n !isMovementAllowed(state) ? process.env.NODE_ENV !== \"production\" ? invariant(false, action.type + \" not permitted in phase \" + state.phase) : invariant(false) : void 0;\n var _clientSelection = action.payload.client;\n\n if (isEqual(_clientSelection, state.current.client.selection)) {\n return state;\n }\n\n return update({\n state: state,\n clientSelection: _clientSelection,\n impact: isSnapping(state) ? state.impact : null\n });\n }\n\n if (action.type === 'UPDATE_DROPPABLE_SCROLL') {\n if (state.phase === 'DROP_PENDING') {\n return removeScrollJumpRequest(state);\n }\n\n if (state.phase === 'COLLECTING') {\n return removeScrollJumpRequest(state);\n }\n\n !isMovementAllowed(state) ? process.env.NODE_ENV !== \"production\" ? invariant(false, action.type + \" not permitted in phase \" + state.phase) : invariant(false) : void 0;\n var _action$payload2 = action.payload,\n id = _action$payload2.id,\n newScroll = _action$payload2.newScroll;\n var target = state.dimensions.droppables[id];\n\n if (!target) {\n return state;\n }\n\n var scrolled = scrollDroppable(target, newScroll);\n return postDroppableChange(state, scrolled, false);\n }\n\n if (action.type === 'UPDATE_DROPPABLE_IS_ENABLED') {\n if (state.phase === 'DROP_PENDING') {\n return state;\n }\n\n !isMovementAllowed(state) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Attempting to move in an unsupported phase \" + state.phase) : invariant(false) : void 0;\n var _action$payload3 = action.payload,\n _id = _action$payload3.id,\n isEnabled = _action$payload3.isEnabled;\n var _target = state.dimensions.droppables[_id];\n !_target ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot find Droppable[id: \" + _id + \"] to toggle its enabled state\") : invariant(false) : void 0;\n !(_target.isEnabled !== isEnabled) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Trying to set droppable isEnabled to \" + String(isEnabled) + \"\\n but it is already \" + String(_target.isEnabled)) : invariant(false) : void 0;\n\n var updated = _extends({}, _target, {\n isEnabled: isEnabled\n });\n\n return postDroppableChange(state, updated, true);\n }\n\n if (action.type === 'UPDATE_DROPPABLE_IS_COMBINE_ENABLED') {\n if (state.phase === 'DROP_PENDING') {\n return state;\n }\n\n !isMovementAllowed(state) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Attempting to move in an unsupported phase \" + state.phase) : invariant(false) : void 0;\n var _action$payload4 = action.payload,\n _id2 = _action$payload4.id,\n isCombineEnabled = _action$payload4.isCombineEnabled;\n var _target2 = state.dimensions.droppables[_id2];\n !_target2 ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot find Droppable[id: \" + _id2 + \"] to toggle its isCombineEnabled state\") : invariant(false) : void 0;\n !(_target2.isCombineEnabled !== isCombineEnabled) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Trying to set droppable isCombineEnabled to \" + String(isCombineEnabled) + \"\\n but it is already \" + String(_target2.isCombineEnabled)) : invariant(false) : void 0;\n\n var _updated = _extends({}, _target2, {\n isCombineEnabled: isCombineEnabled\n });\n\n return postDroppableChange(state, _updated, true);\n }\n\n if (action.type === 'MOVE_BY_WINDOW_SCROLL') {\n if (state.phase === 'DROP_PENDING' || state.phase === 'DROP_ANIMATING') {\n return state;\n }\n\n !isMovementAllowed(state) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot move by window in phase \" + state.phase) : invariant(false) : void 0;\n !state.isWindowScrollAllowed ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Window scrolling is currently not supported for fixed lists') : invariant(false) : void 0;\n var _newScroll = action.payload.newScroll;\n\n if (isEqual(state.viewport.scroll.current, _newScroll)) {\n return removeScrollJumpRequest(state);\n }\n\n var _viewport = scrollViewport(state.viewport, _newScroll);\n\n if (isSnapping(state)) {\n return refreshSnap({\n state: state,\n viewport: _viewport\n });\n }\n\n return update({\n state: state,\n viewport: _viewport\n });\n }\n\n if (action.type === 'UPDATE_VIEWPORT_MAX_SCROLL') {\n if (!isMovementAllowed(state)) {\n return state;\n }\n\n var maxScroll = action.payload.maxScroll;\n\n if (isEqual(maxScroll, state.viewport.scroll.max)) {\n return state;\n }\n\n var withMaxScroll = _extends({}, state.viewport, {\n scroll: _extends({}, state.viewport.scroll, {\n max: maxScroll\n })\n });\n\n return _extends({\n phase: 'DRAGGING'\n }, state, {\n viewport: withMaxScroll\n });\n }\n\n if (action.type === 'MOVE_UP' || action.type === 'MOVE_DOWN' || action.type === 'MOVE_LEFT' || action.type === 'MOVE_RIGHT') {\n if (state.phase === 'COLLECTING' || state.phase === 'DROP_PENDING') {\n return state;\n }\n\n !(state.phase === 'DRAGGING') ? process.env.NODE_ENV !== \"production\" ? invariant(false, action.type + \" received while not in DRAGGING phase\") : invariant(false) : void 0;\n\n var _result2 = moveInDirection({\n state: state,\n type: action.type\n });\n\n if (!_result2) {\n return state;\n }\n\n return update({\n state: state,\n impact: _result2.impact,\n clientSelection: _result2.clientSelection,\n scrollJumpRequest: _result2.scrollJumpRequest\n });\n }\n\n if (action.type === 'DROP_PENDING') {\n var reason = action.payload.reason;\n !(state.phase === 'COLLECTING') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Can only move into the DROP_PENDING phase from the COLLECTING phase') : invariant(false) : void 0;\n\n var newState = _extends({\n phase: 'DROP_PENDING'\n }, state, {\n phase: 'DROP_PENDING',\n isWaiting: true,\n reason: reason\n });\n\n return newState;\n }\n\n if (action.type === 'DROP_ANIMATE') {\n var _action$payload5 = action.payload,\n completed = _action$payload5.completed,\n dropDuration = _action$payload5.dropDuration,\n newHomeClientOffset = _action$payload5.newHomeClientOffset;\n !(state.phase === 'DRAGGING' || state.phase === 'DROP_PENDING') ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot animate drop from phase \" + state.phase) : invariant(false) : void 0;\n var _result3 = {\n phase: 'DROP_ANIMATING',\n completed: completed,\n dropDuration: dropDuration,\n newHomeClientOffset: newHomeClientOffset,\n dimensions: state.dimensions\n };\n return _result3;\n }\n\n if (action.type === 'DROP_COMPLETE') {\n var _completed = action.payload.completed;\n return {\n phase: 'IDLE',\n completed: _completed,\n shouldFlush: false\n };\n }\n\n return state;\n});\n\nvar beforeInitialCapture = function beforeInitialCapture(args) {\n return {\n type: 'BEFORE_INITIAL_CAPTURE',\n payload: args\n };\n};\nvar lift = function lift(args) {\n return {\n type: 'LIFT',\n payload: args\n };\n};\nvar initialPublish = function initialPublish(args) {\n return {\n type: 'INITIAL_PUBLISH',\n payload: args\n };\n};\nvar publishWhileDragging = function publishWhileDragging(args) {\n return {\n type: 'PUBLISH_WHILE_DRAGGING',\n payload: args\n };\n};\nvar collectionStarting = function collectionStarting() {\n return {\n type: 'COLLECTION_STARTING',\n payload: null\n };\n};\nvar updateDroppableScroll = function updateDroppableScroll(args) {\n return {\n type: 'UPDATE_DROPPABLE_SCROLL',\n payload: args\n };\n};\nvar updateDroppableIsEnabled = function updateDroppableIsEnabled(args) {\n return {\n type: 'UPDATE_DROPPABLE_IS_ENABLED',\n payload: args\n };\n};\nvar updateDroppableIsCombineEnabled = function updateDroppableIsCombineEnabled(args) {\n return {\n type: 'UPDATE_DROPPABLE_IS_COMBINE_ENABLED',\n payload: args\n };\n};\nvar move = function move(args) {\n return {\n type: 'MOVE',\n payload: args\n };\n};\nvar moveByWindowScroll = function moveByWindowScroll(args) {\n return {\n type: 'MOVE_BY_WINDOW_SCROLL',\n payload: args\n };\n};\nvar updateViewportMaxScroll = function updateViewportMaxScroll(args) {\n return {\n type: 'UPDATE_VIEWPORT_MAX_SCROLL',\n payload: args\n };\n};\nvar moveUp = function moveUp() {\n return {\n type: 'MOVE_UP',\n payload: null\n };\n};\nvar moveDown = function moveDown() {\n return {\n type: 'MOVE_DOWN',\n payload: null\n };\n};\nvar moveRight = function moveRight() {\n return {\n type: 'MOVE_RIGHT',\n payload: null\n };\n};\nvar moveLeft = function moveLeft() {\n return {\n type: 'MOVE_LEFT',\n payload: null\n };\n};\nvar flush = function flush() {\n return {\n type: 'FLUSH',\n payload: null\n };\n};\nvar animateDrop = function animateDrop(args) {\n return {\n type: 'DROP_ANIMATE',\n payload: args\n };\n};\nvar completeDrop = function completeDrop(args) {\n return {\n type: 'DROP_COMPLETE',\n payload: args\n };\n};\nvar drop = function drop(args) {\n return {\n type: 'DROP',\n payload: args\n };\n};\nvar dropPending = function dropPending(args) {\n return {\n type: 'DROP_PENDING',\n payload: args\n };\n};\nvar dropAnimationFinished = function dropAnimationFinished() {\n return {\n type: 'DROP_ANIMATION_FINISHED',\n payload: null\n };\n};\n\nfunction checkIndexes(insideDestination) {\n if (insideDestination.length <= 1) {\n return;\n }\n\n var indexes = insideDestination.map(function (d) {\n return d.descriptor.index;\n });\n var errors = {};\n\n for (var i = 1; i < indexes.length; i++) {\n var current = indexes[i];\n var previous = indexes[i - 1];\n\n if (current !== previous + 1) {\n errors[current] = true;\n }\n }\n\n if (!Object.keys(errors).length) {\n return;\n }\n\n var formatted = indexes.map(function (index) {\n var hasError = Boolean(errors[index]);\n return hasError ? \"[\\uD83D\\uDD25\" + index + \"]\" : \"\" + index;\n }).join(', ');\n process.env.NODE_ENV !== \"production\" ? warning(\"\\n Detected non-consecutive indexes.\\n\\n (This can cause unexpected bugs)\\n\\n \" + formatted + \"\\n \") : void 0;\n}\n\nfunction validateDimensions(critical, dimensions) {\n if (process.env.NODE_ENV !== 'production') {\n var insideDestination = getDraggablesInsideDroppable(critical.droppable.id, dimensions.draggables);\n checkIndexes(insideDestination);\n }\n}\n\nvar lift$1 = (function (marshal) {\n return function (_ref) {\n var getState = _ref.getState,\n dispatch = _ref.dispatch;\n return function (next) {\n return function (action) {\n if (action.type !== 'LIFT') {\n next(action);\n return;\n }\n\n var _action$payload = action.payload,\n id = _action$payload.id,\n clientSelection = _action$payload.clientSelection,\n movementMode = _action$payload.movementMode;\n var initial = getState();\n\n if (initial.phase === 'DROP_ANIMATING') {\n dispatch(completeDrop({\n completed: initial.completed\n }));\n }\n\n !(getState().phase === 'IDLE') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Unexpected phase to start a drag') : invariant(false) : void 0;\n dispatch(flush());\n dispatch(beforeInitialCapture({\n draggableId: id,\n movementMode: movementMode\n }));\n var scrollOptions = {\n shouldPublishImmediately: movementMode === 'SNAP'\n };\n var request = {\n draggableId: id,\n scrollOptions: scrollOptions\n };\n\n var _marshal$startPublish = marshal.startPublishing(request),\n critical = _marshal$startPublish.critical,\n dimensions = _marshal$startPublish.dimensions,\n viewport = _marshal$startPublish.viewport;\n\n validateDimensions(critical, dimensions);\n dispatch(initialPublish({\n critical: critical,\n dimensions: dimensions,\n clientSelection: clientSelection,\n movementMode: movementMode,\n viewport: viewport\n }));\n };\n };\n };\n});\n\nvar style = (function (marshal) {\n return function () {\n return function (next) {\n return function (action) {\n if (action.type === 'INITIAL_PUBLISH') {\n marshal.dragging();\n }\n\n if (action.type === 'DROP_ANIMATE') {\n marshal.dropping(action.payload.completed.result.reason);\n }\n\n if (action.type === 'FLUSH' || action.type === 'DROP_COMPLETE') {\n marshal.resting();\n }\n\n next(action);\n };\n };\n };\n});\n\nvar curves = {\n outOfTheWay: 'cubic-bezier(0.2, 0, 0, 1)',\n drop: 'cubic-bezier(.2,1,.1,1)'\n};\nvar combine = {\n opacity: {\n drop: 0,\n combining: 0.7\n },\n scale: {\n drop: 0.75\n }\n};\nvar timings = {\n outOfTheWay: 0.2,\n minDropTime: 0.33,\n maxDropTime: 0.55\n};\nvar outOfTheWayTiming = timings.outOfTheWay + \"s \" + curves.outOfTheWay;\nvar transitions = {\n fluid: \"opacity \" + outOfTheWayTiming,\n snap: \"transform \" + outOfTheWayTiming + \", opacity \" + outOfTheWayTiming,\n drop: function drop(duration) {\n var timing = duration + \"s \" + curves.drop;\n return \"transform \" + timing + \", opacity \" + timing;\n },\n outOfTheWay: \"transform \" + outOfTheWayTiming,\n placeholder: \"height \" + outOfTheWayTiming + \", width \" + outOfTheWayTiming + \", margin \" + outOfTheWayTiming\n};\n\nvar moveTo = function moveTo(offset) {\n return isEqual(offset, origin) ? null : \"translate(\" + offset.x + \"px, \" + offset.y + \"px)\";\n};\n\nvar transforms = {\n moveTo: moveTo,\n drop: function drop(offset, isCombining) {\n var translate = moveTo(offset);\n\n if (!translate) {\n return null;\n }\n\n if (!isCombining) {\n return translate;\n }\n\n return translate + \" scale(\" + combine.scale.drop + \")\";\n }\n};\n\nvar minDropTime = timings.minDropTime,\n maxDropTime = timings.maxDropTime;\nvar dropTimeRange = maxDropTime - minDropTime;\nvar maxDropTimeAtDistance = 1500;\nvar cancelDropModifier = 0.6;\nvar getDropDuration = (function (_ref) {\n var current = _ref.current,\n destination = _ref.destination,\n reason = _ref.reason;\n var distance$1 = distance(current, destination);\n\n if (distance$1 <= 0) {\n return minDropTime;\n }\n\n if (distance$1 >= maxDropTimeAtDistance) {\n return maxDropTime;\n }\n\n var percentage = distance$1 / maxDropTimeAtDistance;\n var duration = minDropTime + dropTimeRange * percentage;\n var withDuration = reason === 'CANCEL' ? duration * cancelDropModifier : duration;\n return Number(withDuration.toFixed(2));\n});\n\nvar getNewHomeClientOffset = (function (_ref) {\n var impact = _ref.impact,\n draggable = _ref.draggable,\n dimensions = _ref.dimensions,\n viewport = _ref.viewport,\n afterCritical = _ref.afterCritical;\n var draggables = dimensions.draggables,\n droppables = dimensions.droppables;\n var droppableId = whatIsDraggedOver(impact);\n var destination = droppableId ? droppables[droppableId] : null;\n var home = droppables[draggable.descriptor.droppableId];\n var newClientCenter = getClientBorderBoxCenter({\n impact: impact,\n draggable: draggable,\n draggables: draggables,\n afterCritical: afterCritical,\n droppable: destination || home,\n viewport: viewport\n });\n var offset = subtract(newClientCenter, draggable.client.borderBox.center);\n return offset;\n});\n\nvar getDropImpact = (function (_ref) {\n var draggables = _ref.draggables,\n reason = _ref.reason,\n lastImpact = _ref.lastImpact,\n home = _ref.home,\n viewport = _ref.viewport,\n onLiftImpact = _ref.onLiftImpact;\n\n if (!lastImpact.at || reason !== 'DROP') {\n var recomputedHomeImpact = recompute({\n draggables: draggables,\n impact: onLiftImpact,\n destination: home,\n viewport: viewport,\n forceShouldAnimate: true\n });\n return {\n impact: recomputedHomeImpact,\n didDropInsideDroppable: false\n };\n }\n\n if (lastImpact.at.type === 'REORDER') {\n return {\n impact: lastImpact,\n didDropInsideDroppable: true\n };\n }\n\n var withoutMovement = _extends({}, lastImpact, {\n displaced: emptyGroups\n });\n\n return {\n impact: withoutMovement,\n didDropInsideDroppable: true\n };\n});\n\nvar drop$1 = (function (_ref) {\n var getState = _ref.getState,\n dispatch = _ref.dispatch;\n return function (next) {\n return function (action) {\n if (action.type !== 'DROP') {\n next(action);\n return;\n }\n\n var state = getState();\n var reason = action.payload.reason;\n\n if (state.phase === 'COLLECTING') {\n dispatch(dropPending({\n reason: reason\n }));\n return;\n }\n\n if (state.phase === 'IDLE') {\n return;\n }\n\n var isWaitingForDrop = state.phase === 'DROP_PENDING' && state.isWaiting;\n !!isWaitingForDrop ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'A DROP action occurred while DROP_PENDING and still waiting') : invariant(false) : void 0;\n !(state.phase === 'DRAGGING' || state.phase === 'DROP_PENDING') ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot drop in phase: \" + state.phase) : invariant(false) : void 0;\n var critical = state.critical;\n var dimensions = state.dimensions;\n var draggable = dimensions.draggables[state.critical.draggable.id];\n\n var _getDropImpact = getDropImpact({\n reason: reason,\n lastImpact: state.impact,\n afterCritical: state.afterCritical,\n onLiftImpact: state.onLiftImpact,\n home: state.dimensions.droppables[state.critical.droppable.id],\n viewport: state.viewport,\n draggables: state.dimensions.draggables\n }),\n impact = _getDropImpact.impact,\n didDropInsideDroppable = _getDropImpact.didDropInsideDroppable;\n\n var destination = didDropInsideDroppable ? tryGetDestination(impact) : null;\n var combine = didDropInsideDroppable ? tryGetCombine(impact) : null;\n var source = {\n index: critical.draggable.index,\n droppableId: critical.droppable.id\n };\n var result = {\n draggableId: draggable.descriptor.id,\n type: draggable.descriptor.type,\n source: source,\n reason: reason,\n mode: state.movementMode,\n destination: destination,\n combine: combine\n };\n var newHomeClientOffset = getNewHomeClientOffset({\n impact: impact,\n draggable: draggable,\n dimensions: dimensions,\n viewport: state.viewport,\n afterCritical: state.afterCritical\n });\n var completed = {\n critical: state.critical,\n afterCritical: state.afterCritical,\n result: result,\n impact: impact\n };\n var isAnimationRequired = !isEqual(state.current.client.offset, newHomeClientOffset) || Boolean(result.combine);\n\n if (!isAnimationRequired) {\n dispatch(completeDrop({\n completed: completed\n }));\n return;\n }\n\n var dropDuration = getDropDuration({\n current: state.current.client.offset,\n destination: newHomeClientOffset,\n reason: reason\n });\n var args = {\n newHomeClientOffset: newHomeClientOffset,\n dropDuration: dropDuration,\n completed: completed\n };\n dispatch(animateDrop(args));\n };\n };\n});\n\nvar getWindowScroll = (function () {\n return {\n x: window.pageXOffset,\n y: window.pageYOffset\n };\n});\n\nfunction getWindowScrollBinding(update) {\n return {\n eventName: 'scroll',\n options: {\n passive: true,\n capture: false\n },\n fn: function fn(event) {\n if (event.target !== window && event.target !== window.document) {\n return;\n }\n\n update();\n }\n };\n}\n\nfunction getScrollListener(_ref) {\n var onWindowScroll = _ref.onWindowScroll;\n\n function updateScroll() {\n onWindowScroll(getWindowScroll());\n }\n\n var scheduled = rafSchd(updateScroll);\n var binding = getWindowScrollBinding(scheduled);\n var unbind = noop;\n\n function isActive() {\n return unbind !== noop;\n }\n\n function start() {\n !!isActive() ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot start scroll listener when already active') : invariant(false) : void 0;\n unbind = bindEvents(window, [binding]);\n }\n\n function stop() {\n !isActive() ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot stop scroll listener when not active') : invariant(false) : void 0;\n scheduled.cancel();\n unbind();\n unbind = noop;\n }\n\n return {\n start: start,\n stop: stop,\n isActive: isActive\n };\n}\n\nvar shouldEnd = function shouldEnd(action) {\n return action.type === 'DROP_COMPLETE' || action.type === 'DROP_ANIMATE' || action.type === 'FLUSH';\n};\n\nvar scrollListener = (function (store) {\n var listener = getScrollListener({\n onWindowScroll: function onWindowScroll(newScroll) {\n store.dispatch(moveByWindowScroll({\n newScroll: newScroll\n }));\n }\n });\n return function (next) {\n return function (action) {\n if (!listener.isActive() && action.type === 'INITIAL_PUBLISH') {\n listener.start();\n }\n\n if (listener.isActive() && shouldEnd(action)) {\n listener.stop();\n }\n\n next(action);\n };\n };\n});\n\nvar getExpiringAnnounce = (function (announce) {\n var wasCalled = false;\n var isExpired = false;\n var timeoutId = setTimeout(function () {\n isExpired = true;\n });\n\n var result = function result(message) {\n if (wasCalled) {\n process.env.NODE_ENV !== \"production\" ? warning('Announcement already made. Not making a second announcement') : void 0;\n return;\n }\n\n if (isExpired) {\n process.env.NODE_ENV !== \"production\" ? warning(\"\\n Announcements cannot be made asynchronously.\\n Default message has already been announced.\\n \") : void 0;\n return;\n }\n\n wasCalled = true;\n announce(message);\n clearTimeout(timeoutId);\n };\n\n result.wasCalled = function () {\n return wasCalled;\n };\n\n return result;\n});\n\nvar getAsyncMarshal = (function () {\n var entries = [];\n\n var execute = function execute(timerId) {\n var index = findIndex(entries, function (item) {\n return item.timerId === timerId;\n });\n !(index !== -1) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Could not find timer') : invariant(false) : void 0;\n\n var _entries$splice = entries.splice(index, 1),\n entry = _entries$splice[0];\n\n entry.callback();\n };\n\n var add = function add(fn) {\n var timerId = setTimeout(function () {\n return execute(timerId);\n });\n var entry = {\n timerId: timerId,\n callback: fn\n };\n entries.push(entry);\n };\n\n var flush = function flush() {\n if (!entries.length) {\n return;\n }\n\n var shallow = [].concat(entries);\n entries.length = 0;\n shallow.forEach(function (entry) {\n clearTimeout(entry.timerId);\n entry.callback();\n });\n };\n\n return {\n add: add,\n flush: flush\n };\n});\n\nvar areLocationsEqual = function areLocationsEqual(first, second) {\n if (first == null && second == null) {\n return true;\n }\n\n if (first == null || second == null) {\n return false;\n }\n\n return first.droppableId === second.droppableId && first.index === second.index;\n};\nvar isCombineEqual = function isCombineEqual(first, second) {\n if (first == null && second == null) {\n return true;\n }\n\n if (first == null || second == null) {\n return false;\n }\n\n return first.draggableId === second.draggableId && first.droppableId === second.droppableId;\n};\nvar isCriticalEqual = function isCriticalEqual(first, second) {\n if (first === second) {\n return true;\n }\n\n var isDraggableEqual = first.draggable.id === second.draggable.id && first.draggable.droppableId === second.draggable.droppableId && first.draggable.type === second.draggable.type && first.draggable.index === second.draggable.index;\n var isDroppableEqual = first.droppable.id === second.droppable.id && first.droppable.type === second.droppable.type;\n return isDraggableEqual && isDroppableEqual;\n};\n\nvar withTimings = function withTimings(key, fn) {\n start();\n fn();\n finish();\n};\n\nvar getDragStart = function getDragStart(critical, mode) {\n return {\n draggableId: critical.draggable.id,\n type: critical.droppable.type,\n source: {\n droppableId: critical.droppable.id,\n index: critical.draggable.index\n },\n mode: mode\n };\n};\n\nvar execute = function execute(responder, data, announce, getDefaultMessage) {\n if (!responder) {\n announce(getDefaultMessage(data));\n return;\n }\n\n var willExpire = getExpiringAnnounce(announce);\n var provided = {\n announce: willExpire\n };\n responder(data, provided);\n\n if (!willExpire.wasCalled()) {\n announce(getDefaultMessage(data));\n }\n};\n\nvar getPublisher = (function (getResponders, announce) {\n var asyncMarshal = getAsyncMarshal();\n var dragging = null;\n\n var beforeCapture = function beforeCapture(draggableId, mode) {\n !!dragging ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot fire onBeforeCapture as a drag start has already been published') : invariant(false) : void 0;\n withTimings('onBeforeCapture', function () {\n var fn = getResponders().onBeforeCapture;\n\n if (fn) {\n var before = {\n draggableId: draggableId,\n mode: mode\n };\n fn(before);\n }\n });\n };\n\n var beforeStart = function beforeStart(critical, mode) {\n !!dragging ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot fire onBeforeDragStart as a drag start has already been published') : invariant(false) : void 0;\n withTimings('onBeforeDragStart', function () {\n var fn = getResponders().onBeforeDragStart;\n\n if (fn) {\n fn(getDragStart(critical, mode));\n }\n });\n };\n\n var start = function start(critical, mode) {\n !!dragging ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot fire onBeforeDragStart as a drag start has already been published') : invariant(false) : void 0;\n var data = getDragStart(critical, mode);\n dragging = {\n mode: mode,\n lastCritical: critical,\n lastLocation: data.source,\n lastCombine: null\n };\n asyncMarshal.add(function () {\n withTimings('onDragStart', function () {\n return execute(getResponders().onDragStart, data, announce, preset.onDragStart);\n });\n });\n };\n\n var update = function update(critical, impact) {\n var location = tryGetDestination(impact);\n var combine = tryGetCombine(impact);\n !dragging ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot fire onDragMove when onDragStart has not been called') : invariant(false) : void 0;\n var hasCriticalChanged = !isCriticalEqual(critical, dragging.lastCritical);\n\n if (hasCriticalChanged) {\n dragging.lastCritical = critical;\n }\n\n var hasLocationChanged = !areLocationsEqual(dragging.lastLocation, location);\n\n if (hasLocationChanged) {\n dragging.lastLocation = location;\n }\n\n var hasGroupingChanged = !isCombineEqual(dragging.lastCombine, combine);\n\n if (hasGroupingChanged) {\n dragging.lastCombine = combine;\n }\n\n if (!hasCriticalChanged && !hasLocationChanged && !hasGroupingChanged) {\n return;\n }\n\n var data = _extends({}, getDragStart(critical, dragging.mode), {\n combine: combine,\n destination: location\n });\n\n asyncMarshal.add(function () {\n withTimings('onDragUpdate', function () {\n return execute(getResponders().onDragUpdate, data, announce, preset.onDragUpdate);\n });\n });\n };\n\n var flush = function flush() {\n !dragging ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Can only flush responders while dragging') : invariant(false) : void 0;\n asyncMarshal.flush();\n };\n\n var drop = function drop(result) {\n !dragging ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot fire onDragEnd when there is no matching onDragStart') : invariant(false) : void 0;\n dragging = null;\n withTimings('onDragEnd', function () {\n return execute(getResponders().onDragEnd, result, announce, preset.onDragEnd);\n });\n };\n\n var abort = function abort() {\n if (!dragging) {\n return;\n }\n\n var result = _extends({}, getDragStart(dragging.lastCritical, dragging.mode), {\n combine: null,\n destination: null,\n reason: 'CANCEL'\n });\n\n drop(result);\n };\n\n return {\n beforeCapture: beforeCapture,\n beforeStart: beforeStart,\n start: start,\n update: update,\n flush: flush,\n drop: drop,\n abort: abort\n };\n});\n\nvar responders = (function (getResponders, announce) {\n var publisher = getPublisher(getResponders, announce);\n return function (store) {\n return function (next) {\n return function (action) {\n if (action.type === 'BEFORE_INITIAL_CAPTURE') {\n publisher.beforeCapture(action.payload.draggableId, action.payload.movementMode);\n return;\n }\n\n if (action.type === 'INITIAL_PUBLISH') {\n var critical = action.payload.critical;\n publisher.beforeStart(critical, action.payload.movementMode);\n next(action);\n publisher.start(critical, action.payload.movementMode);\n return;\n }\n\n if (action.type === 'DROP_COMPLETE') {\n var result = action.payload.completed.result;\n publisher.flush();\n next(action);\n publisher.drop(result);\n return;\n }\n\n next(action);\n\n if (action.type === 'FLUSH') {\n publisher.abort();\n return;\n }\n\n var state = store.getState();\n\n if (state.phase === 'DRAGGING') {\n publisher.update(state.critical, state.impact);\n }\n };\n };\n };\n});\n\nvar dropAnimationFinish = (function (store) {\n return function (next) {\n return function (action) {\n if (action.type !== 'DROP_ANIMATION_FINISHED') {\n next(action);\n return;\n }\n\n var state = store.getState();\n !(state.phase === 'DROP_ANIMATING') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot finish a drop animating when no drop is occurring') : invariant(false) : void 0;\n store.dispatch(completeDrop({\n completed: state.completed\n }));\n };\n };\n});\n\nvar dropAnimationFlushOnScroll = (function (store) {\n var unbind = null;\n var frameId = null;\n\n function clear() {\n if (frameId) {\n cancelAnimationFrame(frameId);\n frameId = null;\n }\n\n if (unbind) {\n unbind();\n unbind = null;\n }\n }\n\n return function (next) {\n return function (action) {\n if (action.type === 'FLUSH' || action.type === 'DROP_COMPLETE' || action.type === 'DROP_ANIMATION_FINISHED') {\n clear();\n }\n\n next(action);\n\n if (action.type !== 'DROP_ANIMATE') {\n return;\n }\n\n var binding = {\n eventName: 'scroll',\n options: {\n capture: true,\n passive: false,\n once: true\n },\n fn: function flushDropAnimation() {\n var state = store.getState();\n\n if (state.phase === 'DROP_ANIMATING') {\n store.dispatch(dropAnimationFinished());\n }\n }\n };\n frameId = requestAnimationFrame(function () {\n frameId = null;\n unbind = bindEvents(window, [binding]);\n });\n };\n };\n});\n\nvar dimensionMarshalStopper = (function (marshal) {\n return function () {\n return function (next) {\n return function (action) {\n if (action.type === 'DROP_COMPLETE' || action.type === 'FLUSH' || action.type === 'DROP_ANIMATE') {\n marshal.stopPublishing();\n }\n\n next(action);\n };\n };\n };\n});\n\nvar focus = (function (marshal) {\n var isWatching = false;\n return function () {\n return function (next) {\n return function (action) {\n if (action.type === 'INITIAL_PUBLISH') {\n isWatching = true;\n marshal.tryRecordFocus(action.payload.critical.draggable.id);\n next(action);\n marshal.tryRestoreFocusRecorded();\n return;\n }\n\n next(action);\n\n if (!isWatching) {\n return;\n }\n\n if (action.type === 'FLUSH') {\n isWatching = false;\n marshal.tryRestoreFocusRecorded();\n return;\n }\n\n if (action.type === 'DROP_COMPLETE') {\n isWatching = false;\n var result = action.payload.completed.result;\n\n if (result.combine) {\n marshal.tryShiftRecord(result.draggableId, result.combine.draggableId);\n }\n\n marshal.tryRestoreFocusRecorded();\n }\n };\n };\n };\n});\n\nvar shouldStop = function shouldStop(action) {\n return action.type === 'DROP_COMPLETE' || action.type === 'DROP_ANIMATE' || action.type === 'FLUSH';\n};\n\nvar autoScroll = (function (autoScroller) {\n return function (store) {\n return function (next) {\n return function (action) {\n if (shouldStop(action)) {\n autoScroller.stop();\n next(action);\n return;\n }\n\n if (action.type === 'INITIAL_PUBLISH') {\n next(action);\n var state = store.getState();\n !(state.phase === 'DRAGGING') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Expected phase to be DRAGGING after INITIAL_PUBLISH') : invariant(false) : void 0;\n autoScroller.start(state);\n return;\n }\n\n next(action);\n autoScroller.scroll(store.getState());\n };\n };\n };\n});\n\nvar pendingDrop = (function (store) {\n return function (next) {\n return function (action) {\n next(action);\n\n if (action.type !== 'PUBLISH_WHILE_DRAGGING') {\n return;\n }\n\n var postActionState = store.getState();\n\n if (postActionState.phase !== 'DROP_PENDING') {\n return;\n }\n\n if (postActionState.isWaiting) {\n return;\n }\n\n store.dispatch(drop({\n reason: postActionState.reason\n }));\n };\n };\n});\n\nvar composeEnhancers = process.env.NODE_ENV !== 'production' && typeof window !== 'undefined' && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({\n name: 'react-beautiful-dnd'\n}) : compose;\nvar createStore = (function (_ref) {\n var dimensionMarshal = _ref.dimensionMarshal,\n focusMarshal = _ref.focusMarshal,\n styleMarshal = _ref.styleMarshal,\n getResponders = _ref.getResponders,\n announce = _ref.announce,\n autoScroller = _ref.autoScroller;\n return createStore$1(reducer, composeEnhancers(applyMiddleware(style(styleMarshal), dimensionMarshalStopper(dimensionMarshal), lift$1(dimensionMarshal), drop$1, dropAnimationFinish, dropAnimationFlushOnScroll, pendingDrop, autoScroll(autoScroller), scrollListener, focus(focusMarshal), responders(getResponders, announce))));\n});\n\nvar clean$1 = function clean() {\n return {\n additions: {},\n removals: {},\n modified: {}\n };\n};\nfunction createPublisher(_ref) {\n var registry = _ref.registry,\n callbacks = _ref.callbacks;\n var staging = clean$1();\n var frameId = null;\n\n var collect = function collect() {\n if (frameId) {\n return;\n }\n\n callbacks.collectionStarting();\n frameId = requestAnimationFrame(function () {\n frameId = null;\n start();\n var _staging = staging,\n additions = _staging.additions,\n removals = _staging.removals,\n modified = _staging.modified;\n var added = Object.keys(additions).map(function (id) {\n return registry.draggable.getById(id).getDimension(origin);\n }).sort(function (a, b) {\n return a.descriptor.index - b.descriptor.index;\n });\n var updated = Object.keys(modified).map(function (id) {\n var entry = registry.droppable.getById(id);\n var scroll = entry.callbacks.getScrollWhileDragging();\n return {\n droppableId: id,\n scroll: scroll\n };\n });\n var result = {\n additions: added,\n removals: Object.keys(removals),\n modified: updated\n };\n staging = clean$1();\n finish();\n callbacks.publish(result);\n });\n };\n\n var add = function add(entry) {\n var id = entry.descriptor.id;\n staging.additions[id] = entry;\n staging.modified[entry.descriptor.droppableId] = true;\n\n if (staging.removals[id]) {\n delete staging.removals[id];\n }\n\n collect();\n };\n\n var remove = function remove(entry) {\n var descriptor = entry.descriptor;\n staging.removals[descriptor.id] = true;\n staging.modified[descriptor.droppableId] = true;\n\n if (staging.additions[descriptor.id]) {\n delete staging.additions[descriptor.id];\n }\n\n collect();\n };\n\n var stop = function stop() {\n if (!frameId) {\n return;\n }\n\n cancelAnimationFrame(frameId);\n frameId = null;\n staging = clean$1();\n };\n\n return {\n add: add,\n remove: remove,\n stop: stop\n };\n}\n\nvar getMaxScroll = (function (_ref) {\n var scrollHeight = _ref.scrollHeight,\n scrollWidth = _ref.scrollWidth,\n height = _ref.height,\n width = _ref.width;\n var maxScroll = subtract({\n x: scrollWidth,\n y: scrollHeight\n }, {\n x: width,\n y: height\n });\n var adjustedMaxScroll = {\n x: Math.max(0, maxScroll.x),\n y: Math.max(0, maxScroll.y)\n };\n return adjustedMaxScroll;\n});\n\nvar getDocumentElement = (function () {\n var doc = document.documentElement;\n !doc ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot find document.documentElement') : invariant(false) : void 0;\n return doc;\n});\n\nvar getMaxWindowScroll = (function () {\n var doc = getDocumentElement();\n var maxScroll = getMaxScroll({\n scrollHeight: doc.scrollHeight,\n scrollWidth: doc.scrollWidth,\n width: doc.clientWidth,\n height: doc.clientHeight\n });\n return maxScroll;\n});\n\nvar getViewport = (function () {\n var scroll = getWindowScroll();\n var maxScroll = getMaxWindowScroll();\n var top = scroll.y;\n var left = scroll.x;\n var doc = getDocumentElement();\n var width = doc.clientWidth;\n var height = doc.clientHeight;\n var right = left + width;\n var bottom = top + height;\n var frame = getRect({\n top: top,\n left: left,\n right: right,\n bottom: bottom\n });\n var viewport = {\n frame: frame,\n scroll: {\n initial: scroll,\n current: scroll,\n max: maxScroll,\n diff: {\n value: origin,\n displacement: origin\n }\n }\n };\n return viewport;\n});\n\nvar getInitialPublish = (function (_ref) {\n var critical = _ref.critical,\n scrollOptions = _ref.scrollOptions,\n registry = _ref.registry;\n start();\n var viewport = getViewport();\n var windowScroll = viewport.scroll.current;\n var home = critical.droppable;\n var droppables = registry.droppable.getAllByType(home.type).map(function (entry) {\n return entry.callbacks.getDimensionAndWatchScroll(windowScroll, scrollOptions);\n });\n var draggables = registry.draggable.getAllByType(critical.draggable.type).map(function (entry) {\n return entry.getDimension(windowScroll);\n });\n var dimensions = {\n draggables: toDraggableMap(draggables),\n droppables: toDroppableMap(droppables)\n };\n finish();\n var result = {\n dimensions: dimensions,\n critical: critical,\n viewport: viewport\n };\n return result;\n});\n\nfunction shouldPublishUpdate(registry, dragging, entry) {\n if (entry.descriptor.id === dragging.id) {\n return false;\n }\n\n if (entry.descriptor.type !== dragging.type) {\n return false;\n }\n\n var home = registry.droppable.getById(entry.descriptor.droppableId);\n\n if (home.descriptor.mode !== 'virtual') {\n process.env.NODE_ENV !== \"production\" ? warning(\"\\n You are attempting to add or remove a Draggable [id: \" + entry.descriptor.id + \"]\\n while a drag is occurring. This is only supported for virtual lists.\\n\\n See https://github.com/atlassian/react-beautiful-dnd/blob/master/docs/patterns/virtual-lists.md\\n \") : void 0;\n return false;\n }\n\n return true;\n}\n\nvar createDimensionMarshal = (function (registry, callbacks) {\n var collection = null;\n var publisher = createPublisher({\n callbacks: {\n publish: callbacks.publishWhileDragging,\n collectionStarting: callbacks.collectionStarting\n },\n registry: registry\n });\n\n var updateDroppableIsEnabled = function updateDroppableIsEnabled(id, isEnabled) {\n !registry.droppable.exists(id) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot update is enabled flag of Droppable \" + id + \" as it is not registered\") : invariant(false) : void 0;\n\n if (!collection) {\n return;\n }\n\n callbacks.updateDroppableIsEnabled({\n id: id,\n isEnabled: isEnabled\n });\n };\n\n var updateDroppableIsCombineEnabled = function updateDroppableIsCombineEnabled(id, isCombineEnabled) {\n if (!collection) {\n return;\n }\n\n !registry.droppable.exists(id) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot update isCombineEnabled flag of Droppable \" + id + \" as it is not registered\") : invariant(false) : void 0;\n callbacks.updateDroppableIsCombineEnabled({\n id: id,\n isCombineEnabled: isCombineEnabled\n });\n };\n\n var updateDroppableScroll = function updateDroppableScroll(id, newScroll) {\n if (!collection) {\n return;\n }\n\n !registry.droppable.exists(id) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot update the scroll on Droppable \" + id + \" as it is not registered\") : invariant(false) : void 0;\n callbacks.updateDroppableScroll({\n id: id,\n newScroll: newScroll\n });\n };\n\n var scrollDroppable = function scrollDroppable(id, change) {\n if (!collection) {\n return;\n }\n\n registry.droppable.getById(id).callbacks.scroll(change);\n };\n\n var stopPublishing = function stopPublishing() {\n if (!collection) {\n return;\n }\n\n publisher.stop();\n var home = collection.critical.droppable;\n registry.droppable.getAllByType(home.type).forEach(function (entry) {\n return entry.callbacks.dragStopped();\n });\n collection.unsubscribe();\n collection = null;\n };\n\n var subscriber = function subscriber(event) {\n !collection ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Should only be subscribed when a collection is occurring') : invariant(false) : void 0;\n var dragging = collection.critical.draggable;\n\n if (event.type === 'ADDITION') {\n if (shouldPublishUpdate(registry, dragging, event.value)) {\n publisher.add(event.value);\n }\n }\n\n if (event.type === 'REMOVAL') {\n if (shouldPublishUpdate(registry, dragging, event.value)) {\n publisher.remove(event.value);\n }\n }\n };\n\n var startPublishing = function startPublishing(request) {\n !!collection ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot start capturing critical dimensions as there is already a collection') : invariant(false) : void 0;\n var entry = registry.draggable.getById(request.draggableId);\n var home = registry.droppable.getById(entry.descriptor.droppableId);\n var critical = {\n draggable: entry.descriptor,\n droppable: home.descriptor\n };\n var unsubscribe = registry.subscribe(subscriber);\n collection = {\n critical: critical,\n unsubscribe: unsubscribe\n };\n return getInitialPublish({\n critical: critical,\n registry: registry,\n scrollOptions: request.scrollOptions\n });\n };\n\n var marshal = {\n updateDroppableIsEnabled: updateDroppableIsEnabled,\n updateDroppableIsCombineEnabled: updateDroppableIsCombineEnabled,\n scrollDroppable: scrollDroppable,\n updateDroppableScroll: updateDroppableScroll,\n startPublishing: startPublishing,\n stopPublishing: stopPublishing\n };\n return marshal;\n});\n\nvar canStartDrag = (function (state, id) {\n if (state.phase === 'IDLE') {\n return true;\n }\n\n if (state.phase !== 'DROP_ANIMATING') {\n return false;\n }\n\n if (state.completed.result.draggableId === id) {\n return false;\n }\n\n return state.completed.result.reason === 'DROP';\n});\n\nvar scrollWindow = (function (change) {\n window.scrollBy(change.x, change.y);\n});\n\nvar getScrollableDroppables = memoizeOne(function (droppables) {\n return toDroppableList(droppables).filter(function (droppable) {\n if (!droppable.isEnabled) {\n return false;\n }\n\n if (!droppable.frame) {\n return false;\n }\n\n return true;\n });\n});\n\nvar getScrollableDroppableOver = function getScrollableDroppableOver(target, droppables) {\n var maybe = find(getScrollableDroppables(droppables), function (droppable) {\n !droppable.frame ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Invalid result') : invariant(false) : void 0;\n return isPositionInFrame(droppable.frame.pageMarginBox)(target);\n });\n return maybe;\n};\n\nvar getBestScrollableDroppable = (function (_ref) {\n var center = _ref.center,\n destination = _ref.destination,\n droppables = _ref.droppables;\n\n if (destination) {\n var _dimension = droppables[destination];\n\n if (!_dimension.frame) {\n return null;\n }\n\n return _dimension;\n }\n\n var dimension = getScrollableDroppableOver(center, droppables);\n return dimension;\n});\n\nvar config = {\n startFromPercentage: 0.25,\n maxScrollAtPercentage: 0.05,\n maxPixelScroll: 28,\n ease: function ease(percentage) {\n return Math.pow(percentage, 2);\n },\n durationDampening: {\n stopDampeningAt: 1200,\n accelerateAt: 360\n }\n};\n\nvar getDistanceThresholds = (function (container, axis) {\n var startScrollingFrom = container[axis.size] * config.startFromPercentage;\n var maxScrollValueAt = container[axis.size] * config.maxScrollAtPercentage;\n var thresholds = {\n startScrollingFrom: startScrollingFrom,\n maxScrollValueAt: maxScrollValueAt\n };\n return thresholds;\n});\n\nvar getPercentage = (function (_ref) {\n var startOfRange = _ref.startOfRange,\n endOfRange = _ref.endOfRange,\n current = _ref.current;\n var range = endOfRange - startOfRange;\n\n if (range === 0) {\n process.env.NODE_ENV !== \"production\" ? warning(\"\\n Detected distance range of 0 in the fluid auto scroller\\n This is unexpected and would cause a divide by 0 issue.\\n Not allowing an auto scroll\\n \") : void 0;\n return 0;\n }\n\n var currentInRange = current - startOfRange;\n var percentage = currentInRange / range;\n return percentage;\n});\n\nvar minScroll = 1;\n\nvar getValueFromDistance = (function (distanceToEdge, thresholds) {\n if (distanceToEdge > thresholds.startScrollingFrom) {\n return 0;\n }\n\n if (distanceToEdge <= thresholds.maxScrollValueAt) {\n return config.maxPixelScroll;\n }\n\n if (distanceToEdge === thresholds.startScrollingFrom) {\n return minScroll;\n }\n\n var percentageFromMaxScrollValueAt = getPercentage({\n startOfRange: thresholds.maxScrollValueAt,\n endOfRange: thresholds.startScrollingFrom,\n current: distanceToEdge\n });\n var percentageFromStartScrollingFrom = 1 - percentageFromMaxScrollValueAt;\n var scroll = config.maxPixelScroll * config.ease(percentageFromStartScrollingFrom);\n return Math.ceil(scroll);\n});\n\nvar accelerateAt = config.durationDampening.accelerateAt;\nvar stopAt = config.durationDampening.stopDampeningAt;\nvar dampenValueByTime = (function (proposedScroll, dragStartTime) {\n var startOfRange = dragStartTime;\n var endOfRange = stopAt;\n var now = Date.now();\n var runTime = now - startOfRange;\n\n if (runTime >= stopAt) {\n return proposedScroll;\n }\n\n if (runTime < accelerateAt) {\n return minScroll;\n }\n\n var betweenAccelerateAtAndStopAtPercentage = getPercentage({\n startOfRange: accelerateAt,\n endOfRange: endOfRange,\n current: runTime\n });\n var scroll = proposedScroll * config.ease(betweenAccelerateAtAndStopAtPercentage);\n return Math.ceil(scroll);\n});\n\nvar getValue = (function (_ref) {\n var distanceToEdge = _ref.distanceToEdge,\n thresholds = _ref.thresholds,\n dragStartTime = _ref.dragStartTime,\n shouldUseTimeDampening = _ref.shouldUseTimeDampening;\n var scroll = getValueFromDistance(distanceToEdge, thresholds);\n\n if (scroll === 0) {\n return 0;\n }\n\n if (!shouldUseTimeDampening) {\n return scroll;\n }\n\n return Math.max(dampenValueByTime(scroll, dragStartTime), minScroll);\n});\n\nvar getScrollOnAxis = (function (_ref) {\n var container = _ref.container,\n distanceToEdges = _ref.distanceToEdges,\n dragStartTime = _ref.dragStartTime,\n axis = _ref.axis,\n shouldUseTimeDampening = _ref.shouldUseTimeDampening;\n var thresholds = getDistanceThresholds(container, axis);\n var isCloserToEnd = distanceToEdges[axis.end] < distanceToEdges[axis.start];\n\n if (isCloserToEnd) {\n return getValue({\n distanceToEdge: distanceToEdges[axis.end],\n thresholds: thresholds,\n dragStartTime: dragStartTime,\n shouldUseTimeDampening: shouldUseTimeDampening\n });\n }\n\n return -1 * getValue({\n distanceToEdge: distanceToEdges[axis.start],\n thresholds: thresholds,\n dragStartTime: dragStartTime,\n shouldUseTimeDampening: shouldUseTimeDampening\n });\n});\n\nvar adjustForSizeLimits = (function (_ref) {\n var container = _ref.container,\n subject = _ref.subject,\n proposedScroll = _ref.proposedScroll;\n var isTooBigVertically = subject.height > container.height;\n var isTooBigHorizontally = subject.width > container.width;\n\n if (!isTooBigHorizontally && !isTooBigVertically) {\n return proposedScroll;\n }\n\n if (isTooBigHorizontally && isTooBigVertically) {\n return null;\n }\n\n return {\n x: isTooBigHorizontally ? 0 : proposedScroll.x,\n y: isTooBigVertically ? 0 : proposedScroll.y\n };\n});\n\nvar clean$2 = apply(function (value) {\n return value === 0 ? 0 : value;\n});\nvar getScroll = (function (_ref) {\n var dragStartTime = _ref.dragStartTime,\n container = _ref.container,\n subject = _ref.subject,\n center = _ref.center,\n shouldUseTimeDampening = _ref.shouldUseTimeDampening;\n var distanceToEdges = {\n top: center.y - container.top,\n right: container.right - center.x,\n bottom: container.bottom - center.y,\n left: center.x - container.left\n };\n var y = getScrollOnAxis({\n container: container,\n distanceToEdges: distanceToEdges,\n dragStartTime: dragStartTime,\n axis: vertical,\n shouldUseTimeDampening: shouldUseTimeDampening\n });\n var x = getScrollOnAxis({\n container: container,\n distanceToEdges: distanceToEdges,\n dragStartTime: dragStartTime,\n axis: horizontal,\n shouldUseTimeDampening: shouldUseTimeDampening\n });\n var required = clean$2({\n x: x,\n y: y\n });\n\n if (isEqual(required, origin)) {\n return null;\n }\n\n var limited = adjustForSizeLimits({\n container: container,\n subject: subject,\n proposedScroll: required\n });\n\n if (!limited) {\n return null;\n }\n\n return isEqual(limited, origin) ? null : limited;\n});\n\nvar smallestSigned = apply(function (value) {\n if (value === 0) {\n return 0;\n }\n\n return value > 0 ? 1 : -1;\n});\nvar getOverlap = function () {\n var getRemainder = function getRemainder(target, max) {\n if (target < 0) {\n return target;\n }\n\n if (target > max) {\n return target - max;\n }\n\n return 0;\n };\n\n return function (_ref) {\n var current = _ref.current,\n max = _ref.max,\n change = _ref.change;\n var targetScroll = add(current, change);\n var overlap = {\n x: getRemainder(targetScroll.x, max.x),\n y: getRemainder(targetScroll.y, max.y)\n };\n\n if (isEqual(overlap, origin)) {\n return null;\n }\n\n return overlap;\n };\n}();\nvar canPartiallyScroll = function canPartiallyScroll(_ref2) {\n var rawMax = _ref2.max,\n current = _ref2.current,\n change = _ref2.change;\n var max = {\n x: Math.max(current.x, rawMax.x),\n y: Math.max(current.y, rawMax.y)\n };\n var smallestChange = smallestSigned(change);\n var overlap = getOverlap({\n max: max,\n current: current,\n change: smallestChange\n });\n\n if (!overlap) {\n return true;\n }\n\n if (smallestChange.x !== 0 && overlap.x === 0) {\n return true;\n }\n\n if (smallestChange.y !== 0 && overlap.y === 0) {\n return true;\n }\n\n return false;\n};\nvar canScrollWindow = function canScrollWindow(viewport, change) {\n return canPartiallyScroll({\n current: viewport.scroll.current,\n max: viewport.scroll.max,\n change: change\n });\n};\nvar getWindowOverlap = function getWindowOverlap(viewport, change) {\n if (!canScrollWindow(viewport, change)) {\n return null;\n }\n\n var max = viewport.scroll.max;\n var current = viewport.scroll.current;\n return getOverlap({\n current: current,\n max: max,\n change: change\n });\n};\nvar canScrollDroppable = function canScrollDroppable(droppable, change) {\n var frame = droppable.frame;\n\n if (!frame) {\n return false;\n }\n\n return canPartiallyScroll({\n current: frame.scroll.current,\n max: frame.scroll.max,\n change: change\n });\n};\nvar getDroppableOverlap = function getDroppableOverlap(droppable, change) {\n var frame = droppable.frame;\n\n if (!frame) {\n return null;\n }\n\n if (!canScrollDroppable(droppable, change)) {\n return null;\n }\n\n return getOverlap({\n current: frame.scroll.current,\n max: frame.scroll.max,\n change: change\n });\n};\n\nvar getWindowScrollChange = (function (_ref) {\n var viewport = _ref.viewport,\n subject = _ref.subject,\n center = _ref.center,\n dragStartTime = _ref.dragStartTime,\n shouldUseTimeDampening = _ref.shouldUseTimeDampening;\n var scroll = getScroll({\n dragStartTime: dragStartTime,\n container: viewport.frame,\n subject: subject,\n center: center,\n shouldUseTimeDampening: shouldUseTimeDampening\n });\n return scroll && canScrollWindow(viewport, scroll) ? scroll : null;\n});\n\nvar getDroppableScrollChange = (function (_ref) {\n var droppable = _ref.droppable,\n subject = _ref.subject,\n center = _ref.center,\n dragStartTime = _ref.dragStartTime,\n shouldUseTimeDampening = _ref.shouldUseTimeDampening;\n var frame = droppable.frame;\n\n if (!frame) {\n return null;\n }\n\n var scroll = getScroll({\n dragStartTime: dragStartTime,\n container: frame.pageMarginBox,\n subject: subject,\n center: center,\n shouldUseTimeDampening: shouldUseTimeDampening\n });\n return scroll && canScrollDroppable(droppable, scroll) ? scroll : null;\n});\n\nvar scroll$1 = (function (_ref) {\n var state = _ref.state,\n dragStartTime = _ref.dragStartTime,\n shouldUseTimeDampening = _ref.shouldUseTimeDampening,\n scrollWindow = _ref.scrollWindow,\n scrollDroppable = _ref.scrollDroppable;\n var center = state.current.page.borderBoxCenter;\n var draggable = state.dimensions.draggables[state.critical.draggable.id];\n var subject = draggable.page.marginBox;\n\n if (state.isWindowScrollAllowed) {\n var viewport = state.viewport;\n\n var _change = getWindowScrollChange({\n dragStartTime: dragStartTime,\n viewport: viewport,\n subject: subject,\n center: center,\n shouldUseTimeDampening: shouldUseTimeDampening\n });\n\n if (_change) {\n scrollWindow(_change);\n return;\n }\n }\n\n var droppable = getBestScrollableDroppable({\n center: center,\n destination: whatIsDraggedOver(state.impact),\n droppables: state.dimensions.droppables\n });\n\n if (!droppable) {\n return;\n }\n\n var change = getDroppableScrollChange({\n dragStartTime: dragStartTime,\n droppable: droppable,\n subject: subject,\n center: center,\n shouldUseTimeDampening: shouldUseTimeDampening\n });\n\n if (change) {\n scrollDroppable(droppable.descriptor.id, change);\n }\n});\n\nvar createFluidScroller = (function (_ref) {\n var scrollWindow = _ref.scrollWindow,\n scrollDroppable = _ref.scrollDroppable;\n var scheduleWindowScroll = rafSchd(scrollWindow);\n var scheduleDroppableScroll = rafSchd(scrollDroppable);\n var dragging = null;\n\n var tryScroll = function tryScroll(state) {\n !dragging ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot fluid scroll if not dragging') : invariant(false) : void 0;\n var _dragging = dragging,\n shouldUseTimeDampening = _dragging.shouldUseTimeDampening,\n dragStartTime = _dragging.dragStartTime;\n scroll$1({\n state: state,\n scrollWindow: scheduleWindowScroll,\n scrollDroppable: scheduleDroppableScroll,\n dragStartTime: dragStartTime,\n shouldUseTimeDampening: shouldUseTimeDampening\n });\n };\n\n var start$1 = function start$1(state) {\n start();\n !!dragging ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot start auto scrolling when already started') : invariant(false) : void 0;\n var dragStartTime = Date.now();\n var wasScrollNeeded = false;\n\n var fakeScrollCallback = function fakeScrollCallback() {\n wasScrollNeeded = true;\n };\n\n scroll$1({\n state: state,\n dragStartTime: 0,\n shouldUseTimeDampening: false,\n scrollWindow: fakeScrollCallback,\n scrollDroppable: fakeScrollCallback\n });\n dragging = {\n dragStartTime: dragStartTime,\n shouldUseTimeDampening: wasScrollNeeded\n };\n finish();\n\n if (wasScrollNeeded) {\n tryScroll(state);\n }\n };\n\n var stop = function stop() {\n if (!dragging) {\n return;\n }\n\n scheduleWindowScroll.cancel();\n scheduleDroppableScroll.cancel();\n dragging = null;\n };\n\n return {\n start: start$1,\n stop: stop,\n scroll: tryScroll\n };\n});\n\nvar createJumpScroller = (function (_ref) {\n var move = _ref.move,\n scrollDroppable = _ref.scrollDroppable,\n scrollWindow = _ref.scrollWindow;\n\n var moveByOffset = function moveByOffset(state, offset) {\n var client = add(state.current.client.selection, offset);\n move({\n client: client\n });\n };\n\n var scrollDroppableAsMuchAsItCan = function scrollDroppableAsMuchAsItCan(droppable, change) {\n if (!canScrollDroppable(droppable, change)) {\n return change;\n }\n\n var overlap = getDroppableOverlap(droppable, change);\n\n if (!overlap) {\n scrollDroppable(droppable.descriptor.id, change);\n return null;\n }\n\n var whatTheDroppableCanScroll = subtract(change, overlap);\n scrollDroppable(droppable.descriptor.id, whatTheDroppableCanScroll);\n var remainder = subtract(change, whatTheDroppableCanScroll);\n return remainder;\n };\n\n var scrollWindowAsMuchAsItCan = function scrollWindowAsMuchAsItCan(isWindowScrollAllowed, viewport, change) {\n if (!isWindowScrollAllowed) {\n return change;\n }\n\n if (!canScrollWindow(viewport, change)) {\n return change;\n }\n\n var overlap = getWindowOverlap(viewport, change);\n\n if (!overlap) {\n scrollWindow(change);\n return null;\n }\n\n var whatTheWindowCanScroll = subtract(change, overlap);\n scrollWindow(whatTheWindowCanScroll);\n var remainder = subtract(change, whatTheWindowCanScroll);\n return remainder;\n };\n\n var jumpScroller = function jumpScroller(state) {\n var request = state.scrollJumpRequest;\n\n if (!request) {\n return;\n }\n\n var destination = whatIsDraggedOver(state.impact);\n !destination ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot perform a jump scroll when there is no destination') : invariant(false) : void 0;\n var droppableRemainder = scrollDroppableAsMuchAsItCan(state.dimensions.droppables[destination], request);\n\n if (!droppableRemainder) {\n return;\n }\n\n var viewport = state.viewport;\n var windowRemainder = scrollWindowAsMuchAsItCan(state.isWindowScrollAllowed, viewport, droppableRemainder);\n\n if (!windowRemainder) {\n return;\n }\n\n moveByOffset(state, windowRemainder);\n };\n\n return jumpScroller;\n});\n\nvar createAutoScroller = (function (_ref) {\n var scrollDroppable = _ref.scrollDroppable,\n scrollWindow = _ref.scrollWindow,\n move = _ref.move;\n var fluidScroller = createFluidScroller({\n scrollWindow: scrollWindow,\n scrollDroppable: scrollDroppable\n });\n var jumpScroll = createJumpScroller({\n move: move,\n scrollWindow: scrollWindow,\n scrollDroppable: scrollDroppable\n });\n\n var scroll = function scroll(state) {\n if (state.phase !== 'DRAGGING') {\n return;\n }\n\n if (state.movementMode === 'FLUID') {\n fluidScroller.scroll(state);\n return;\n }\n\n if (!state.scrollJumpRequest) {\n return;\n }\n\n jumpScroll(state);\n };\n\n var scroller = {\n scroll: scroll,\n start: fluidScroller.start,\n stop: fluidScroller.stop\n };\n return scroller;\n});\n\nvar prefix$1 = 'data-rbd';\nvar dragHandle = function () {\n var base = prefix$1 + \"-drag-handle\";\n return {\n base: base,\n draggableId: base + \"-draggable-id\",\n contextId: base + \"-context-id\"\n };\n}();\nvar draggable = function () {\n var base = prefix$1 + \"-draggable\";\n return {\n base: base,\n contextId: base + \"-context-id\",\n id: base + \"-id\"\n };\n}();\nvar droppable = function () {\n var base = prefix$1 + \"-droppable\";\n return {\n base: base,\n contextId: base + \"-context-id\",\n id: base + \"-id\"\n };\n}();\nvar scrollContainer = {\n contextId: prefix$1 + \"-scroll-container-context-id\"\n};\n\nvar makeGetSelector = function makeGetSelector(context) {\n return function (attribute) {\n return \"[\" + attribute + \"=\\\"\" + context + \"\\\"]\";\n };\n};\n\nvar getStyles = function getStyles(rules, property) {\n return rules.map(function (rule) {\n var value = rule.styles[property];\n\n if (!value) {\n return '';\n }\n\n return rule.selector + \" { \" + value + \" }\";\n }).join(' ');\n};\n\nvar noPointerEvents = 'pointer-events: none;';\nvar getStyles$1 = (function (contextId) {\n var getSelector = makeGetSelector(contextId);\n\n var dragHandle$1 = function () {\n var grabCursor = \"\\n cursor: -webkit-grab;\\n cursor: grab;\\n \";\n return {\n selector: getSelector(dragHandle.contextId),\n styles: {\n always: \"\\n -webkit-touch-callout: none;\\n -webkit-tap-highlight-color: rgba(0,0,0,0);\\n touch-action: manipulation;\\n \",\n resting: grabCursor,\n dragging: noPointerEvents,\n dropAnimating: grabCursor\n }\n };\n }();\n\n var draggable$1 = function () {\n var transition = \"\\n transition: \" + transitions.outOfTheWay + \";\\n \";\n return {\n selector: getSelector(draggable.contextId),\n styles: {\n dragging: transition,\n dropAnimating: transition,\n userCancel: transition\n }\n };\n }();\n\n var droppable$1 = {\n selector: getSelector(droppable.contextId),\n styles: {\n always: \"overflow-anchor: none;\"\n }\n };\n var body = {\n selector: 'body',\n styles: {\n dragging: \"\\n cursor: grabbing;\\n cursor: -webkit-grabbing;\\n user-select: none;\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n overflow-anchor: none;\\n \"\n }\n };\n var rules = [draggable$1, dragHandle$1, droppable$1, body];\n return {\n always: getStyles(rules, 'always'),\n resting: getStyles(rules, 'resting'),\n dragging: getStyles(rules, 'dragging'),\n dropAnimating: getStyles(rules, 'dropAnimating'),\n userCancel: getStyles(rules, 'userCancel')\n };\n});\n\nvar useIsomorphicLayoutEffect = typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined' ? useLayoutEffect : useEffect;\n\nvar getHead = function getHead() {\n var head = document.querySelector('head');\n !head ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot find the head to append a style to') : invariant(false) : void 0;\n return head;\n};\n\nvar createStyleEl = function createStyleEl(nonce) {\n var el = document.createElement('style');\n\n if (nonce) {\n el.setAttribute('nonce', nonce);\n }\n\n el.type = 'text/css';\n return el;\n};\n\nfunction useStyleMarshal(contextId, nonce) {\n var styles = useMemo(function () {\n return getStyles$1(contextId);\n }, [contextId]);\n var alwaysRef = useRef(null);\n var dynamicRef = useRef(null);\n var setDynamicStyle = useCallback(memoizeOne(function (proposed) {\n var el = dynamicRef.current;\n !el ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot set dynamic style element if it is not set') : invariant(false) : void 0;\n el.textContent = proposed;\n }), []);\n var setAlwaysStyle = useCallback(function (proposed) {\n var el = alwaysRef.current;\n !el ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot set dynamic style element if it is not set') : invariant(false) : void 0;\n el.textContent = proposed;\n }, []);\n useIsomorphicLayoutEffect(function () {\n !(!alwaysRef.current && !dynamicRef.current) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'style elements already mounted') : invariant(false) : void 0;\n var always = createStyleEl(nonce);\n var dynamic = createStyleEl(nonce);\n alwaysRef.current = always;\n dynamicRef.current = dynamic;\n always.setAttribute(prefix$1 + \"-always\", contextId);\n dynamic.setAttribute(prefix$1 + \"-dynamic\", contextId);\n getHead().appendChild(always);\n getHead().appendChild(dynamic);\n setAlwaysStyle(styles.always);\n setDynamicStyle(styles.resting);\n return function () {\n var remove = function remove(ref) {\n var current = ref.current;\n !current ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot unmount ref as it is not set') : invariant(false) : void 0;\n getHead().removeChild(current);\n ref.current = null;\n };\n\n remove(alwaysRef);\n remove(dynamicRef);\n };\n }, [nonce, setAlwaysStyle, setDynamicStyle, styles.always, styles.resting, contextId]);\n var dragging = useCallback(function () {\n return setDynamicStyle(styles.dragging);\n }, [setDynamicStyle, styles.dragging]);\n var dropping = useCallback(function (reason) {\n if (reason === 'DROP') {\n setDynamicStyle(styles.dropAnimating);\n return;\n }\n\n setDynamicStyle(styles.userCancel);\n }, [setDynamicStyle, styles.dropAnimating, styles.userCancel]);\n var resting = useCallback(function () {\n if (!dynamicRef.current) {\n return;\n }\n\n setDynamicStyle(styles.resting);\n }, [setDynamicStyle, styles.resting]);\n var marshal = useMemo(function () {\n return {\n dragging: dragging,\n dropping: dropping,\n resting: resting\n };\n }, [dragging, dropping, resting]);\n return marshal;\n}\n\nvar getWindowFromEl = (function (el) {\n return el && el.ownerDocument ? el.ownerDocument.defaultView : window;\n});\n\nfunction isHtmlElement(el) {\n return el instanceof getWindowFromEl(el).HTMLElement;\n}\n\nfunction findDragHandle(contextId, draggableId) {\n var selector = \"[\" + dragHandle.contextId + \"=\\\"\" + contextId + \"\\\"]\";\n var possible = toArray(document.querySelectorAll(selector));\n\n if (!possible.length) {\n process.env.NODE_ENV !== \"production\" ? warning(\"Unable to find any drag handles in the context \\\"\" + contextId + \"\\\"\") : void 0;\n return null;\n }\n\n var handle = find(possible, function (el) {\n return el.getAttribute(dragHandle.draggableId) === draggableId;\n });\n\n if (!handle) {\n process.env.NODE_ENV !== \"production\" ? warning(\"Unable to find drag handle with id \\\"\" + draggableId + \"\\\" as no handle with a matching id was found\") : void 0;\n return null;\n }\n\n if (!isHtmlElement(handle)) {\n process.env.NODE_ENV !== \"production\" ? warning('drag handle needs to be a HTMLElement') : void 0;\n return null;\n }\n\n return handle;\n}\n\nfunction useFocusMarshal(contextId) {\n var entriesRef = useRef({});\n var recordRef = useRef(null);\n var restoreFocusFrameRef = useRef(null);\n var isMountedRef = useRef(false);\n var register = useCallback(function register(id, focus) {\n var entry = {\n id: id,\n focus: focus\n };\n entriesRef.current[id] = entry;\n return function unregister() {\n var entries = entriesRef.current;\n var current = entries[id];\n\n if (current !== entry) {\n delete entries[id];\n }\n };\n }, []);\n var tryGiveFocus = useCallback(function tryGiveFocus(tryGiveFocusTo) {\n var handle = findDragHandle(contextId, tryGiveFocusTo);\n\n if (handle && handle !== document.activeElement) {\n handle.focus();\n }\n }, [contextId]);\n var tryShiftRecord = useCallback(function tryShiftRecord(previous, redirectTo) {\n if (recordRef.current === previous) {\n recordRef.current = redirectTo;\n }\n }, []);\n var tryRestoreFocusRecorded = useCallback(function tryRestoreFocusRecorded() {\n if (restoreFocusFrameRef.current) {\n return;\n }\n\n if (!isMountedRef.current) {\n return;\n }\n\n restoreFocusFrameRef.current = requestAnimationFrame(function () {\n restoreFocusFrameRef.current = null;\n var record = recordRef.current;\n\n if (record) {\n tryGiveFocus(record);\n }\n });\n }, [tryGiveFocus]);\n var tryRecordFocus = useCallback(function tryRecordFocus(id) {\n recordRef.current = null;\n var focused = document.activeElement;\n\n if (!focused) {\n return;\n }\n\n if (focused.getAttribute(dragHandle.draggableId) !== id) {\n return;\n }\n\n recordRef.current = id;\n }, []);\n useIsomorphicLayoutEffect(function () {\n isMountedRef.current = true;\n return function clearFrameOnUnmount() {\n isMountedRef.current = false;\n var frameId = restoreFocusFrameRef.current;\n\n if (frameId) {\n cancelAnimationFrame(frameId);\n }\n };\n }, []);\n var marshal = useMemo(function () {\n return {\n register: register,\n tryRecordFocus: tryRecordFocus,\n tryRestoreFocusRecorded: tryRestoreFocusRecorded,\n tryShiftRecord: tryShiftRecord\n };\n }, [register, tryRecordFocus, tryRestoreFocusRecorded, tryShiftRecord]);\n return marshal;\n}\n\nfunction createRegistry() {\n var entries = {\n draggables: {},\n droppables: {}\n };\n var subscribers = [];\n\n function subscribe(cb) {\n subscribers.push(cb);\n return function unsubscribe() {\n var index = subscribers.indexOf(cb);\n\n if (index === -1) {\n return;\n }\n\n subscribers.splice(index, 1);\n };\n }\n\n function notify(event) {\n if (subscribers.length) {\n subscribers.forEach(function (cb) {\n return cb(event);\n });\n }\n }\n\n function findDraggableById(id) {\n return entries.draggables[id] || null;\n }\n\n function getDraggableById(id) {\n var entry = findDraggableById(id);\n !entry ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot find draggable entry with id [\" + id + \"]\") : invariant(false) : void 0;\n return entry;\n }\n\n var draggableAPI = {\n register: function register(entry) {\n entries.draggables[entry.descriptor.id] = entry;\n notify({\n type: 'ADDITION',\n value: entry\n });\n },\n update: function update(entry, last) {\n var current = entries.draggables[last.descriptor.id];\n\n if (!current) {\n return;\n }\n\n if (current.uniqueId !== entry.uniqueId) {\n return;\n }\n\n delete entries.draggables[last.descriptor.id];\n entries.draggables[entry.descriptor.id] = entry;\n },\n unregister: function unregister(entry) {\n var draggableId = entry.descriptor.id;\n var current = findDraggableById(draggableId);\n\n if (!current) {\n return;\n }\n\n if (entry.uniqueId !== current.uniqueId) {\n return;\n }\n\n delete entries.draggables[draggableId];\n notify({\n type: 'REMOVAL',\n value: entry\n });\n },\n getById: getDraggableById,\n findById: findDraggableById,\n exists: function exists(id) {\n return Boolean(findDraggableById(id));\n },\n getAllByType: function getAllByType(type) {\n return values(entries.draggables).filter(function (entry) {\n return entry.descriptor.type === type;\n });\n }\n };\n\n function findDroppableById(id) {\n return entries.droppables[id] || null;\n }\n\n function getDroppableById(id) {\n var entry = findDroppableById(id);\n !entry ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot find droppable entry with id [\" + id + \"]\") : invariant(false) : void 0;\n return entry;\n }\n\n var droppableAPI = {\n register: function register(entry) {\n entries.droppables[entry.descriptor.id] = entry;\n },\n unregister: function unregister(entry) {\n var current = findDroppableById(entry.descriptor.id);\n\n if (!current) {\n return;\n }\n\n if (entry.uniqueId !== current.uniqueId) {\n return;\n }\n\n delete entries.droppables[entry.descriptor.id];\n },\n getById: getDroppableById,\n findById: findDroppableById,\n exists: function exists(id) {\n return Boolean(findDroppableById(id));\n },\n getAllByType: function getAllByType(type) {\n return values(entries.droppables).filter(function (entry) {\n return entry.descriptor.type === type;\n });\n }\n };\n\n function clean() {\n entries.draggables = {};\n entries.droppables = {};\n subscribers.length = 0;\n }\n\n return {\n draggable: draggableAPI,\n droppable: droppableAPI,\n subscribe: subscribe,\n clean: clean\n };\n}\n\nfunction useRegistry() {\n var registry = useMemo(createRegistry, []);\n useEffect(function () {\n return function unmount() {\n requestAnimationFrame(registry.clean);\n };\n }, [registry]);\n return registry;\n}\n\nvar StoreContext = React.createContext(null);\n\nvar getBodyElement = (function () {\n var body = document.body;\n !body ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot find document.body') : invariant(false) : void 0;\n return body;\n});\n\nvar visuallyHidden = {\n position: 'absolute',\n width: '1px',\n height: '1px',\n margin: '-1px',\n border: '0',\n padding: '0',\n overflow: 'hidden',\n clip: 'rect(0 0 0 0)',\n 'clip-path': 'inset(100%)'\n};\n\nvar getId = function getId(contextId) {\n return \"rbd-announcement-\" + contextId;\n};\nfunction useAnnouncer(contextId) {\n var id = useMemo(function () {\n return getId(contextId);\n }, [contextId]);\n var ref = useRef(null);\n useEffect(function setup() {\n var el = document.createElement('div');\n ref.current = el;\n el.id = id;\n el.setAttribute('aria-live', 'assertive');\n el.setAttribute('aria-atomic', 'true');\n\n _extends(el.style, visuallyHidden);\n\n getBodyElement().appendChild(el);\n return function cleanup() {\n setTimeout(function remove() {\n var body = getBodyElement();\n\n if (body.contains(el)) {\n body.removeChild(el);\n }\n\n if (el === ref.current) {\n ref.current = null;\n }\n });\n };\n }, [id]);\n var announce = useCallback(function (message) {\n var el = ref.current;\n\n if (el) {\n el.textContent = message;\n return;\n }\n\n process.env.NODE_ENV !== \"production\" ? warning(\"\\n A screen reader message was trying to be announced but it was unable to do so.\\n This can occur if you unmount your in your onDragEnd.\\n Consider calling provided.announce() before the unmount so that the instruction will\\n not be lost for users relying on a screen reader.\\n\\n Message not passed to screen reader:\\n\\n \\\"\" + message + \"\\\"\\n \") : void 0;\n }, []);\n return announce;\n}\n\nvar count = 0;\nvar defaults = {\n separator: '::'\n};\nfunction reset() {\n count = 0;\n}\nfunction useUniqueId(prefix, options) {\n if (options === void 0) {\n options = defaults;\n }\n\n return useMemo(function () {\n return \"\" + prefix + options.separator + count++;\n }, [options.separator, prefix]);\n}\n\nfunction getElementId(_ref) {\n var contextId = _ref.contextId,\n uniqueId = _ref.uniqueId;\n return \"rbd-hidden-text-\" + contextId + \"-\" + uniqueId;\n}\nfunction useHiddenTextElement(_ref2) {\n var contextId = _ref2.contextId,\n text = _ref2.text;\n var uniqueId = useUniqueId('hidden-text', {\n separator: '-'\n });\n var id = useMemo(function () {\n return getElementId({\n contextId: contextId,\n uniqueId: uniqueId\n });\n }, [uniqueId, contextId]);\n useEffect(function mount() {\n var el = document.createElement('div');\n el.id = id;\n el.textContent = text;\n el.style.display = 'none';\n getBodyElement().appendChild(el);\n return function unmount() {\n var body = getBodyElement();\n\n if (body.contains(el)) {\n body.removeChild(el);\n }\n };\n }, [id, text]);\n return id;\n}\n\nvar AppContext = React.createContext(null);\n\nvar peerDependencies = {\n\treact: \"^16.8.5 || ^17.0.0\",\n\t\"react-dom\": \"^16.8.5 || ^17.0.0\"\n};\n\nvar semver = /(\\d+)\\.(\\d+)\\.(\\d+)/;\n\nvar getVersion = function getVersion(value) {\n var result = semver.exec(value);\n !(result != null) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Unable to parse React version \" + value) : invariant(false) : void 0;\n var major = Number(result[1]);\n var minor = Number(result[2]);\n var patch = Number(result[3]);\n return {\n major: major,\n minor: minor,\n patch: patch,\n raw: value\n };\n};\n\nvar isSatisfied = function isSatisfied(expected, actual) {\n if (actual.major > expected.major) {\n return true;\n }\n\n if (actual.major < expected.major) {\n return false;\n }\n\n if (actual.minor > expected.minor) {\n return true;\n }\n\n if (actual.minor < expected.minor) {\n return false;\n }\n\n return actual.patch >= expected.patch;\n};\n\nvar checkReactVersion = (function (peerDepValue, actualValue) {\n var peerDep = getVersion(peerDepValue);\n var actual = getVersion(actualValue);\n\n if (isSatisfied(peerDep, actual)) {\n return;\n }\n\n process.env.NODE_ENV !== \"production\" ? warning(\"\\n React version: [\" + actual.raw + \"]\\n does not satisfy expected peer dependency version: [\" + peerDep.raw + \"]\\n\\n This can result in run time bugs, and even fatal crashes\\n \") : void 0;\n});\n\nvar suffix = \"\\n We expect a html5 doctype: \\n This is to ensure consistent browser layout and measurement\\n\\n More information: https://github.com/atlassian/react-beautiful-dnd/blob/master/docs/guides/doctype.md\\n\";\nvar checkDoctype = (function (doc) {\n var doctype = doc.doctype;\n\n if (!doctype) {\n process.env.NODE_ENV !== \"production\" ? warning(\"\\n No found.\\n\\n \" + suffix + \"\\n \") : void 0;\n return;\n }\n\n if (doctype.name.toLowerCase() !== 'html') {\n process.env.NODE_ENV !== \"production\" ? warning(\"\\n Unexpected found: (\" + doctype.name + \")\\n\\n \" + suffix + \"\\n \") : void 0;\n }\n\n if (doctype.publicId !== '') {\n process.env.NODE_ENV !== \"production\" ? warning(\"\\n Unexpected publicId found: (\" + doctype.publicId + \")\\n A html5 doctype does not have a publicId\\n\\n \" + suffix + \"\\n \") : void 0;\n }\n});\n\nfunction useDev(useHook) {\n if (process.env.NODE_ENV !== 'production') {\n useHook();\n }\n}\n\nfunction useDevSetupWarning(fn, inputs) {\n useDev(function () {\n useEffect(function () {\n try {\n fn();\n } catch (e) {\n error(\"\\n A setup problem was encountered.\\n\\n > \" + e.message + \"\\n \");\n }\n }, inputs);\n });\n}\n\nfunction useStartupValidation() {\n useDevSetupWarning(function () {\n checkReactVersion(peerDependencies.react, React.version);\n checkDoctype(document);\n }, []);\n}\n\nfunction usePrevious(current) {\n var ref = useRef(current);\n useEffect(function () {\n ref.current = current;\n });\n return ref;\n}\n\nfunction create() {\n var lock = null;\n\n function isClaimed() {\n return Boolean(lock);\n }\n\n function isActive(value) {\n return value === lock;\n }\n\n function claim(abandon) {\n !!lock ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot claim lock as it is already claimed') : invariant(false) : void 0;\n var newLock = {\n abandon: abandon\n };\n lock = newLock;\n return newLock;\n }\n\n function release() {\n !lock ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot release lock when there is no lock') : invariant(false) : void 0;\n lock = null;\n }\n\n function tryAbandon() {\n if (lock) {\n lock.abandon();\n release();\n }\n }\n\n return {\n isClaimed: isClaimed,\n isActive: isActive,\n claim: claim,\n release: release,\n tryAbandon: tryAbandon\n };\n}\n\nvar tab = 9;\nvar enter = 13;\nvar escape = 27;\nvar space = 32;\nvar pageUp = 33;\nvar pageDown = 34;\nvar end = 35;\nvar home = 36;\nvar arrowLeft = 37;\nvar arrowUp = 38;\nvar arrowRight = 39;\nvar arrowDown = 40;\n\nvar _preventedKeys;\nvar preventedKeys = (_preventedKeys = {}, _preventedKeys[enter] = true, _preventedKeys[tab] = true, _preventedKeys);\nvar preventStandardKeyEvents = (function (event) {\n if (preventedKeys[event.keyCode]) {\n event.preventDefault();\n }\n});\n\nvar supportedEventName = function () {\n var base = 'visibilitychange';\n\n if (typeof document === 'undefined') {\n return base;\n }\n\n var candidates = [base, \"ms\" + base, \"webkit\" + base, \"moz\" + base, \"o\" + base];\n var supported = find(candidates, function (eventName) {\n return \"on\" + eventName in document;\n });\n return supported || base;\n}();\n\nvar primaryButton = 0;\nvar sloppyClickThreshold = 5;\n\nfunction isSloppyClickThresholdExceeded(original, current) {\n return Math.abs(current.x - original.x) >= sloppyClickThreshold || Math.abs(current.y - original.y) >= sloppyClickThreshold;\n}\n\nvar idle$1 = {\n type: 'IDLE'\n};\n\nfunction getCaptureBindings(_ref) {\n var cancel = _ref.cancel,\n completed = _ref.completed,\n getPhase = _ref.getPhase,\n setPhase = _ref.setPhase;\n return [{\n eventName: 'mousemove',\n fn: function fn(event) {\n var button = event.button,\n clientX = event.clientX,\n clientY = event.clientY;\n\n if (button !== primaryButton) {\n return;\n }\n\n var point = {\n x: clientX,\n y: clientY\n };\n var phase = getPhase();\n\n if (phase.type === 'DRAGGING') {\n event.preventDefault();\n phase.actions.move(point);\n return;\n }\n\n !(phase.type === 'PENDING') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot be IDLE') : invariant(false) : void 0;\n var pending = phase.point;\n\n if (!isSloppyClickThresholdExceeded(pending, point)) {\n return;\n }\n\n event.preventDefault();\n var actions = phase.actions.fluidLift(point);\n setPhase({\n type: 'DRAGGING',\n actions: actions\n });\n }\n }, {\n eventName: 'mouseup',\n fn: function fn(event) {\n var phase = getPhase();\n\n if (phase.type !== 'DRAGGING') {\n cancel();\n return;\n }\n\n event.preventDefault();\n phase.actions.drop({\n shouldBlockNextClick: true\n });\n completed();\n }\n }, {\n eventName: 'mousedown',\n fn: function fn(event) {\n if (getPhase().type === 'DRAGGING') {\n event.preventDefault();\n }\n\n cancel();\n }\n }, {\n eventName: 'keydown',\n fn: function fn(event) {\n var phase = getPhase();\n\n if (phase.type === 'PENDING') {\n cancel();\n return;\n }\n\n if (event.keyCode === escape) {\n event.preventDefault();\n cancel();\n return;\n }\n\n preventStandardKeyEvents(event);\n }\n }, {\n eventName: 'resize',\n fn: cancel\n }, {\n eventName: 'scroll',\n options: {\n passive: true,\n capture: false\n },\n fn: function fn() {\n if (getPhase().type === 'PENDING') {\n cancel();\n }\n }\n }, {\n eventName: 'webkitmouseforcedown',\n fn: function fn(event) {\n var phase = getPhase();\n !(phase.type !== 'IDLE') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Unexpected phase') : invariant(false) : void 0;\n\n if (phase.actions.shouldRespectForcePress()) {\n cancel();\n return;\n }\n\n event.preventDefault();\n }\n }, {\n eventName: supportedEventName,\n fn: cancel\n }];\n}\n\nfunction useMouseSensor(api) {\n var phaseRef = useRef(idle$1);\n var unbindEventsRef = useRef(noop);\n var startCaptureBinding = useMemo(function () {\n return {\n eventName: 'mousedown',\n fn: function onMouseDown(event) {\n if (event.defaultPrevented) {\n return;\n }\n\n if (event.button !== primaryButton) {\n return;\n }\n\n if (event.ctrlKey || event.metaKey || event.shiftKey || event.altKey) {\n return;\n }\n\n var draggableId = api.findClosestDraggableId(event);\n\n if (!draggableId) {\n return;\n }\n\n var actions = api.tryGetLock(draggableId, stop, {\n sourceEvent: event\n });\n\n if (!actions) {\n return;\n }\n\n event.preventDefault();\n var point = {\n x: event.clientX,\n y: event.clientY\n };\n unbindEventsRef.current();\n startPendingDrag(actions, point);\n }\n };\n }, [api]);\n var preventForcePressBinding = useMemo(function () {\n return {\n eventName: 'webkitmouseforcewillbegin',\n fn: function fn(event) {\n if (event.defaultPrevented) {\n return;\n }\n\n var id = api.findClosestDraggableId(event);\n\n if (!id) {\n return;\n }\n\n var options = api.findOptionsForDraggable(id);\n\n if (!options) {\n return;\n }\n\n if (options.shouldRespectForcePress) {\n return;\n }\n\n if (!api.canGetLock(id)) {\n return;\n }\n\n event.preventDefault();\n }\n };\n }, [api]);\n var listenForCapture = useCallback(function listenForCapture() {\n var options = {\n passive: false,\n capture: true\n };\n unbindEventsRef.current = bindEvents(window, [preventForcePressBinding, startCaptureBinding], options);\n }, [preventForcePressBinding, startCaptureBinding]);\n var stop = useCallback(function () {\n var current = phaseRef.current;\n\n if (current.type === 'IDLE') {\n return;\n }\n\n phaseRef.current = idle$1;\n unbindEventsRef.current();\n listenForCapture();\n }, [listenForCapture]);\n var cancel = useCallback(function () {\n var phase = phaseRef.current;\n stop();\n\n if (phase.type === 'DRAGGING') {\n phase.actions.cancel({\n shouldBlockNextClick: true\n });\n }\n\n if (phase.type === 'PENDING') {\n phase.actions.abort();\n }\n }, [stop]);\n var bindCapturingEvents = useCallback(function bindCapturingEvents() {\n var options = {\n capture: true,\n passive: false\n };\n var bindings = getCaptureBindings({\n cancel: cancel,\n completed: stop,\n getPhase: function getPhase() {\n return phaseRef.current;\n },\n setPhase: function setPhase(phase) {\n phaseRef.current = phase;\n }\n });\n unbindEventsRef.current = bindEvents(window, bindings, options);\n }, [cancel, stop]);\n var startPendingDrag = useCallback(function startPendingDrag(actions, point) {\n !(phaseRef.current.type === 'IDLE') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Expected to move from IDLE to PENDING drag') : invariant(false) : void 0;\n phaseRef.current = {\n type: 'PENDING',\n point: point,\n actions: actions\n };\n bindCapturingEvents();\n }, [bindCapturingEvents]);\n useIsomorphicLayoutEffect(function mount() {\n listenForCapture();\n return function unmount() {\n unbindEventsRef.current();\n };\n }, [listenForCapture]);\n}\n\nvar _scrollJumpKeys;\n\nfunction noop$1() {}\n\nvar scrollJumpKeys = (_scrollJumpKeys = {}, _scrollJumpKeys[pageDown] = true, _scrollJumpKeys[pageUp] = true, _scrollJumpKeys[home] = true, _scrollJumpKeys[end] = true, _scrollJumpKeys);\n\nfunction getDraggingBindings(actions, stop) {\n function cancel() {\n stop();\n actions.cancel();\n }\n\n function drop() {\n stop();\n actions.drop();\n }\n\n return [{\n eventName: 'keydown',\n fn: function fn(event) {\n if (event.keyCode === escape) {\n event.preventDefault();\n cancel();\n return;\n }\n\n if (event.keyCode === space) {\n event.preventDefault();\n drop();\n return;\n }\n\n if (event.keyCode === arrowDown) {\n event.preventDefault();\n actions.moveDown();\n return;\n }\n\n if (event.keyCode === arrowUp) {\n event.preventDefault();\n actions.moveUp();\n return;\n }\n\n if (event.keyCode === arrowRight) {\n event.preventDefault();\n actions.moveRight();\n return;\n }\n\n if (event.keyCode === arrowLeft) {\n event.preventDefault();\n actions.moveLeft();\n return;\n }\n\n if (scrollJumpKeys[event.keyCode]) {\n event.preventDefault();\n return;\n }\n\n preventStandardKeyEvents(event);\n }\n }, {\n eventName: 'mousedown',\n fn: cancel\n }, {\n eventName: 'mouseup',\n fn: cancel\n }, {\n eventName: 'click',\n fn: cancel\n }, {\n eventName: 'touchstart',\n fn: cancel\n }, {\n eventName: 'resize',\n fn: cancel\n }, {\n eventName: 'wheel',\n fn: cancel,\n options: {\n passive: true\n }\n }, {\n eventName: supportedEventName,\n fn: cancel\n }];\n}\n\nfunction useKeyboardSensor(api) {\n var unbindEventsRef = useRef(noop$1);\n var startCaptureBinding = useMemo(function () {\n return {\n eventName: 'keydown',\n fn: function onKeyDown(event) {\n if (event.defaultPrevented) {\n return;\n }\n\n if (event.keyCode !== space) {\n return;\n }\n\n var draggableId = api.findClosestDraggableId(event);\n\n if (!draggableId) {\n return;\n }\n\n var preDrag = api.tryGetLock(draggableId, stop, {\n sourceEvent: event\n });\n\n if (!preDrag) {\n return;\n }\n\n event.preventDefault();\n var isCapturing = true;\n var actions = preDrag.snapLift();\n unbindEventsRef.current();\n\n function stop() {\n !isCapturing ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot stop capturing a keyboard drag when not capturing') : invariant(false) : void 0;\n isCapturing = false;\n unbindEventsRef.current();\n listenForCapture();\n }\n\n unbindEventsRef.current = bindEvents(window, getDraggingBindings(actions, stop), {\n capture: true,\n passive: false\n });\n }\n };\n }, [api]);\n var listenForCapture = useCallback(function tryStartCapture() {\n var options = {\n passive: false,\n capture: true\n };\n unbindEventsRef.current = bindEvents(window, [startCaptureBinding], options);\n }, [startCaptureBinding]);\n useIsomorphicLayoutEffect(function mount() {\n listenForCapture();\n return function unmount() {\n unbindEventsRef.current();\n };\n }, [listenForCapture]);\n}\n\nvar idle$2 = {\n type: 'IDLE'\n};\nvar timeForLongPress = 120;\nvar forcePressThreshold = 0.15;\n\nfunction getWindowBindings(_ref) {\n var cancel = _ref.cancel,\n getPhase = _ref.getPhase;\n return [{\n eventName: 'orientationchange',\n fn: cancel\n }, {\n eventName: 'resize',\n fn: cancel\n }, {\n eventName: 'contextmenu',\n fn: function fn(event) {\n event.preventDefault();\n }\n }, {\n eventName: 'keydown',\n fn: function fn(event) {\n if (getPhase().type !== 'DRAGGING') {\n cancel();\n return;\n }\n\n if (event.keyCode === escape) {\n event.preventDefault();\n }\n\n cancel();\n }\n }, {\n eventName: supportedEventName,\n fn: cancel\n }];\n}\n\nfunction getHandleBindings(_ref2) {\n var cancel = _ref2.cancel,\n completed = _ref2.completed,\n getPhase = _ref2.getPhase;\n return [{\n eventName: 'touchmove',\n options: {\n capture: false\n },\n fn: function fn(event) {\n var phase = getPhase();\n\n if (phase.type !== 'DRAGGING') {\n cancel();\n return;\n }\n\n phase.hasMoved = true;\n var _event$touches$ = event.touches[0],\n clientX = _event$touches$.clientX,\n clientY = _event$touches$.clientY;\n var point = {\n x: clientX,\n y: clientY\n };\n event.preventDefault();\n phase.actions.move(point);\n }\n }, {\n eventName: 'touchend',\n fn: function fn(event) {\n var phase = getPhase();\n\n if (phase.type !== 'DRAGGING') {\n cancel();\n return;\n }\n\n event.preventDefault();\n phase.actions.drop({\n shouldBlockNextClick: true\n });\n completed();\n }\n }, {\n eventName: 'touchcancel',\n fn: function fn(event) {\n if (getPhase().type !== 'DRAGGING') {\n cancel();\n return;\n }\n\n event.preventDefault();\n cancel();\n }\n }, {\n eventName: 'touchforcechange',\n fn: function fn(event) {\n var phase = getPhase();\n !(phase.type !== 'IDLE') ? process.env.NODE_ENV !== \"production\" ? invariant(false) : invariant(false) : void 0;\n var touch = event.touches[0];\n\n if (!touch) {\n return;\n }\n\n var isForcePress = touch.force >= forcePressThreshold;\n\n if (!isForcePress) {\n return;\n }\n\n var shouldRespect = phase.actions.shouldRespectForcePress();\n\n if (phase.type === 'PENDING') {\n if (shouldRespect) {\n cancel();\n }\n\n return;\n }\n\n if (shouldRespect) {\n if (phase.hasMoved) {\n event.preventDefault();\n return;\n }\n\n cancel();\n return;\n }\n\n event.preventDefault();\n }\n }, {\n eventName: supportedEventName,\n fn: cancel\n }];\n}\n\nfunction useTouchSensor(api) {\n var phaseRef = useRef(idle$2);\n var unbindEventsRef = useRef(noop);\n var getPhase = useCallback(function getPhase() {\n return phaseRef.current;\n }, []);\n var setPhase = useCallback(function setPhase(phase) {\n phaseRef.current = phase;\n }, []);\n var startCaptureBinding = useMemo(function () {\n return {\n eventName: 'touchstart',\n fn: function onTouchStart(event) {\n if (event.defaultPrevented) {\n return;\n }\n\n var draggableId = api.findClosestDraggableId(event);\n\n if (!draggableId) {\n return;\n }\n\n var actions = api.tryGetLock(draggableId, stop, {\n sourceEvent: event\n });\n\n if (!actions) {\n return;\n }\n\n var touch = event.touches[0];\n var clientX = touch.clientX,\n clientY = touch.clientY;\n var point = {\n x: clientX,\n y: clientY\n };\n unbindEventsRef.current();\n startPendingDrag(actions, point);\n }\n };\n }, [api]);\n var listenForCapture = useCallback(function listenForCapture() {\n var options = {\n capture: true,\n passive: false\n };\n unbindEventsRef.current = bindEvents(window, [startCaptureBinding], options);\n }, [startCaptureBinding]);\n var stop = useCallback(function () {\n var current = phaseRef.current;\n\n if (current.type === 'IDLE') {\n return;\n }\n\n if (current.type === 'PENDING') {\n clearTimeout(current.longPressTimerId);\n }\n\n setPhase(idle$2);\n unbindEventsRef.current();\n listenForCapture();\n }, [listenForCapture, setPhase]);\n var cancel = useCallback(function () {\n var phase = phaseRef.current;\n stop();\n\n if (phase.type === 'DRAGGING') {\n phase.actions.cancel({\n shouldBlockNextClick: true\n });\n }\n\n if (phase.type === 'PENDING') {\n phase.actions.abort();\n }\n }, [stop]);\n var bindCapturingEvents = useCallback(function bindCapturingEvents() {\n var options = {\n capture: true,\n passive: false\n };\n var args = {\n cancel: cancel,\n completed: stop,\n getPhase: getPhase\n };\n var unbindTarget = bindEvents(window, getHandleBindings(args), options);\n var unbindWindow = bindEvents(window, getWindowBindings(args), options);\n\n unbindEventsRef.current = function unbindAll() {\n unbindTarget();\n unbindWindow();\n };\n }, [cancel, getPhase, stop]);\n var startDragging = useCallback(function startDragging() {\n var phase = getPhase();\n !(phase.type === 'PENDING') ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot start dragging from phase \" + phase.type) : invariant(false) : void 0;\n var actions = phase.actions.fluidLift(phase.point);\n setPhase({\n type: 'DRAGGING',\n actions: actions,\n hasMoved: false\n });\n }, [getPhase, setPhase]);\n var startPendingDrag = useCallback(function startPendingDrag(actions, point) {\n !(getPhase().type === 'IDLE') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Expected to move from IDLE to PENDING drag') : invariant(false) : void 0;\n var longPressTimerId = setTimeout(startDragging, timeForLongPress);\n setPhase({\n type: 'PENDING',\n point: point,\n actions: actions,\n longPressTimerId: longPressTimerId\n });\n bindCapturingEvents();\n }, [bindCapturingEvents, getPhase, setPhase, startDragging]);\n useIsomorphicLayoutEffect(function mount() {\n listenForCapture();\n return function unmount() {\n unbindEventsRef.current();\n var phase = getPhase();\n\n if (phase.type === 'PENDING') {\n clearTimeout(phase.longPressTimerId);\n setPhase(idle$2);\n }\n };\n }, [getPhase, listenForCapture, setPhase]);\n useIsomorphicLayoutEffect(function webkitHack() {\n var unbind = bindEvents(window, [{\n eventName: 'touchmove',\n fn: function fn() {},\n options: {\n capture: false,\n passive: false\n }\n }]);\n return unbind;\n }, []);\n}\n\nfunction useValidateSensorHooks(sensorHooks) {\n useDev(function () {\n var previousRef = usePrevious(sensorHooks);\n useDevSetupWarning(function () {\n !(previousRef.current.length === sensorHooks.length) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot change the amount of sensor hooks after mounting') : invariant(false) : void 0;\n });\n });\n}\n\nvar interactiveTagNames = {\n input: true,\n button: true,\n textarea: true,\n select: true,\n option: true,\n optgroup: true,\n video: true,\n audio: true\n};\n\nfunction isAnInteractiveElement(parent, current) {\n if (current == null) {\n return false;\n }\n\n var hasAnInteractiveTag = Boolean(interactiveTagNames[current.tagName.toLowerCase()]);\n\n if (hasAnInteractiveTag) {\n return true;\n }\n\n var attribute = current.getAttribute('contenteditable');\n\n if (attribute === 'true' || attribute === '') {\n return true;\n }\n\n if (current === parent) {\n return false;\n }\n\n return isAnInteractiveElement(parent, current.parentElement);\n}\n\nfunction isEventInInteractiveElement(draggable, event) {\n var target = event.target;\n\n if (!isHtmlElement(target)) {\n return false;\n }\n\n return isAnInteractiveElement(draggable, target);\n}\n\nvar getBorderBoxCenterPosition = (function (el) {\n return getRect(el.getBoundingClientRect()).center;\n});\n\nfunction isElement(el) {\n return el instanceof getWindowFromEl(el).Element;\n}\n\nvar supportedMatchesName = function () {\n var base = 'matches';\n\n if (typeof document === 'undefined') {\n return base;\n }\n\n var candidates = [base, 'msMatchesSelector', 'webkitMatchesSelector'];\n var value = find(candidates, function (name) {\n return name in Element.prototype;\n });\n return value || base;\n}();\n\nfunction closestPonyfill(el, selector) {\n if (el == null) {\n return null;\n }\n\n if (el[supportedMatchesName](selector)) {\n return el;\n }\n\n return closestPonyfill(el.parentElement, selector);\n}\n\nfunction closest$1(el, selector) {\n if (el.closest) {\n return el.closest(selector);\n }\n\n return closestPonyfill(el, selector);\n}\n\nfunction getSelector(contextId) {\n return \"[\" + dragHandle.contextId + \"=\\\"\" + contextId + \"\\\"]\";\n}\n\nfunction findClosestDragHandleFromEvent(contextId, event) {\n var target = event.target;\n\n if (!isElement(target)) {\n process.env.NODE_ENV !== \"production\" ? warning('event.target must be a Element') : void 0;\n return null;\n }\n\n var selector = getSelector(contextId);\n var handle = closest$1(target, selector);\n\n if (!handle) {\n return null;\n }\n\n if (!isHtmlElement(handle)) {\n process.env.NODE_ENV !== \"production\" ? warning('drag handle must be a HTMLElement') : void 0;\n return null;\n }\n\n return handle;\n}\n\nfunction tryGetClosestDraggableIdFromEvent(contextId, event) {\n var handle = findClosestDragHandleFromEvent(contextId, event);\n\n if (!handle) {\n return null;\n }\n\n return handle.getAttribute(dragHandle.draggableId);\n}\n\nfunction findDraggable(contextId, draggableId) {\n var selector = \"[\" + draggable.contextId + \"=\\\"\" + contextId + \"\\\"]\";\n var possible = toArray(document.querySelectorAll(selector));\n var draggable$1 = find(possible, function (el) {\n return el.getAttribute(draggable.id) === draggableId;\n });\n\n if (!draggable$1) {\n return null;\n }\n\n if (!isHtmlElement(draggable$1)) {\n process.env.NODE_ENV !== \"production\" ? warning('Draggable element is not a HTMLElement') : void 0;\n return null;\n }\n\n return draggable$1;\n}\n\nfunction preventDefault(event) {\n event.preventDefault();\n}\n\nfunction _isActive(_ref) {\n var expected = _ref.expected,\n phase = _ref.phase,\n isLockActive = _ref.isLockActive,\n shouldWarn = _ref.shouldWarn;\n\n if (!isLockActive()) {\n if (shouldWarn) {\n process.env.NODE_ENV !== \"production\" ? warning(\"\\n Cannot perform action.\\n The sensor no longer has an action lock.\\n\\n Tips:\\n\\n - Throw away your action handlers when forceStop() is called\\n - Check actions.isActive() if you really need to\\n \") : void 0;\n }\n\n return false;\n }\n\n if (expected !== phase) {\n if (shouldWarn) {\n process.env.NODE_ENV !== \"production\" ? warning(\"\\n Cannot perform action.\\n The actions you used belong to an outdated phase\\n\\n Current phase: \" + expected + \"\\n You called an action from outdated phase: \" + phase + \"\\n\\n Tips:\\n\\n - Do not use preDragActions actions after calling preDragActions.lift()\\n \") : void 0;\n }\n\n return false;\n }\n\n return true;\n}\n\nfunction canStart(_ref2) {\n var lockAPI = _ref2.lockAPI,\n store = _ref2.store,\n registry = _ref2.registry,\n draggableId = _ref2.draggableId;\n\n if (lockAPI.isClaimed()) {\n return false;\n }\n\n var entry = registry.draggable.findById(draggableId);\n\n if (!entry) {\n process.env.NODE_ENV !== \"production\" ? warning(\"Unable to find draggable with id: \" + draggableId) : void 0;\n return false;\n }\n\n if (!entry.options.isEnabled) {\n return false;\n }\n\n if (!canStartDrag(store.getState(), draggableId)) {\n return false;\n }\n\n return true;\n}\n\nfunction tryStart(_ref3) {\n var lockAPI = _ref3.lockAPI,\n contextId = _ref3.contextId,\n store = _ref3.store,\n registry = _ref3.registry,\n draggableId = _ref3.draggableId,\n forceSensorStop = _ref3.forceSensorStop,\n sourceEvent = _ref3.sourceEvent;\n var shouldStart = canStart({\n lockAPI: lockAPI,\n store: store,\n registry: registry,\n draggableId: draggableId\n });\n\n if (!shouldStart) {\n return null;\n }\n\n var entry = registry.draggable.getById(draggableId);\n var el = findDraggable(contextId, entry.descriptor.id);\n\n if (!el) {\n process.env.NODE_ENV !== \"production\" ? warning(\"Unable to find draggable element with id: \" + draggableId) : void 0;\n return null;\n }\n\n if (sourceEvent && !entry.options.canDragInteractiveElements && isEventInInteractiveElement(el, sourceEvent)) {\n return null;\n }\n\n var lock = lockAPI.claim(forceSensorStop || noop);\n var phase = 'PRE_DRAG';\n\n function getShouldRespectForcePress() {\n return entry.options.shouldRespectForcePress;\n }\n\n function isLockActive() {\n return lockAPI.isActive(lock);\n }\n\n function tryDispatch(expected, getAction) {\n if (_isActive({\n expected: expected,\n phase: phase,\n isLockActive: isLockActive,\n shouldWarn: true\n })) {\n store.dispatch(getAction());\n }\n }\n\n var tryDispatchWhenDragging = tryDispatch.bind(null, 'DRAGGING');\n\n function lift$1(args) {\n function completed() {\n lockAPI.release();\n phase = 'COMPLETED';\n }\n\n if (phase !== 'PRE_DRAG') {\n completed();\n !(phase === 'PRE_DRAG') ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Cannot lift in phase \" + phase) : invariant(false) : void 0;\n }\n\n store.dispatch(lift(args.liftActionArgs));\n phase = 'DRAGGING';\n\n function finish(reason, options) {\n if (options === void 0) {\n options = {\n shouldBlockNextClick: false\n };\n }\n\n args.cleanup();\n\n if (options.shouldBlockNextClick) {\n var unbind = bindEvents(window, [{\n eventName: 'click',\n fn: preventDefault,\n options: {\n once: true,\n passive: false,\n capture: true\n }\n }]);\n setTimeout(unbind);\n }\n\n completed();\n store.dispatch(drop({\n reason: reason\n }));\n }\n\n return _extends({\n isActive: function isActive() {\n return _isActive({\n expected: 'DRAGGING',\n phase: phase,\n isLockActive: isLockActive,\n shouldWarn: false\n });\n },\n shouldRespectForcePress: getShouldRespectForcePress,\n drop: function drop(options) {\n return finish('DROP', options);\n },\n cancel: function cancel(options) {\n return finish('CANCEL', options);\n }\n }, args.actions);\n }\n\n function fluidLift(clientSelection) {\n var move$1 = rafSchd(function (client) {\n tryDispatchWhenDragging(function () {\n return move({\n client: client\n });\n });\n });\n var api = lift$1({\n liftActionArgs: {\n id: draggableId,\n clientSelection: clientSelection,\n movementMode: 'FLUID'\n },\n cleanup: function cleanup() {\n return move$1.cancel();\n },\n actions: {\n move: move$1\n }\n });\n return _extends({}, api, {\n move: move$1\n });\n }\n\n function snapLift() {\n var actions = {\n moveUp: function moveUp$1() {\n return tryDispatchWhenDragging(moveUp);\n },\n moveRight: function moveRight$1() {\n return tryDispatchWhenDragging(moveRight);\n },\n moveDown: function moveDown$1() {\n return tryDispatchWhenDragging(moveDown);\n },\n moveLeft: function moveLeft$1() {\n return tryDispatchWhenDragging(moveLeft);\n }\n };\n return lift$1({\n liftActionArgs: {\n id: draggableId,\n clientSelection: getBorderBoxCenterPosition(el),\n movementMode: 'SNAP'\n },\n cleanup: noop,\n actions: actions\n });\n }\n\n function abortPreDrag() {\n var shouldRelease = _isActive({\n expected: 'PRE_DRAG',\n phase: phase,\n isLockActive: isLockActive,\n shouldWarn: true\n });\n\n if (shouldRelease) {\n lockAPI.release();\n }\n }\n\n var preDrag = {\n isActive: function isActive() {\n return _isActive({\n expected: 'PRE_DRAG',\n phase: phase,\n isLockActive: isLockActive,\n shouldWarn: false\n });\n },\n shouldRespectForcePress: getShouldRespectForcePress,\n fluidLift: fluidLift,\n snapLift: snapLift,\n abort: abortPreDrag\n };\n return preDrag;\n}\n\nvar defaultSensors = [useMouseSensor, useKeyboardSensor, useTouchSensor];\nfunction useSensorMarshal(_ref4) {\n var contextId = _ref4.contextId,\n store = _ref4.store,\n registry = _ref4.registry,\n customSensors = _ref4.customSensors,\n enableDefaultSensors = _ref4.enableDefaultSensors;\n var useSensors = [].concat(enableDefaultSensors ? defaultSensors : [], customSensors || []);\n var lockAPI = useState(function () {\n return create();\n })[0];\n var tryAbandonLock = useCallback(function tryAbandonLock(previous, current) {\n if (previous.isDragging && !current.isDragging) {\n lockAPI.tryAbandon();\n }\n }, [lockAPI]);\n useIsomorphicLayoutEffect(function listenToStore() {\n var previous = store.getState();\n var unsubscribe = store.subscribe(function () {\n var current = store.getState();\n tryAbandonLock(previous, current);\n previous = current;\n });\n return unsubscribe;\n }, [lockAPI, store, tryAbandonLock]);\n useIsomorphicLayoutEffect(function () {\n return lockAPI.tryAbandon;\n }, [lockAPI.tryAbandon]);\n var canGetLock = useCallback(function (draggableId) {\n return canStart({\n lockAPI: lockAPI,\n registry: registry,\n store: store,\n draggableId: draggableId\n });\n }, [lockAPI, registry, store]);\n var tryGetLock = useCallback(function (draggableId, forceStop, options) {\n return tryStart({\n lockAPI: lockAPI,\n registry: registry,\n contextId: contextId,\n store: store,\n draggableId: draggableId,\n forceSensorStop: forceStop,\n sourceEvent: options && options.sourceEvent ? options.sourceEvent : null\n });\n }, [contextId, lockAPI, registry, store]);\n var findClosestDraggableId = useCallback(function (event) {\n return tryGetClosestDraggableIdFromEvent(contextId, event);\n }, [contextId]);\n var findOptionsForDraggable = useCallback(function (id) {\n var entry = registry.draggable.findById(id);\n return entry ? entry.options : null;\n }, [registry.draggable]);\n var tryReleaseLock = useCallback(function tryReleaseLock() {\n if (!lockAPI.isClaimed()) {\n return;\n }\n\n lockAPI.tryAbandon();\n\n if (store.getState().phase !== 'IDLE') {\n store.dispatch(flush());\n }\n }, [lockAPI, store]);\n var isLockClaimed = useCallback(lockAPI.isClaimed, [lockAPI]);\n var api = useMemo(function () {\n return {\n canGetLock: canGetLock,\n tryGetLock: tryGetLock,\n findClosestDraggableId: findClosestDraggableId,\n findOptionsForDraggable: findOptionsForDraggable,\n tryReleaseLock: tryReleaseLock,\n isLockClaimed: isLockClaimed\n };\n }, [canGetLock, tryGetLock, findClosestDraggableId, findOptionsForDraggable, tryReleaseLock, isLockClaimed]);\n useValidateSensorHooks(useSensors);\n\n for (var i = 0; i < useSensors.length; i++) {\n useSensors[i](api);\n }\n}\n\nvar createResponders = function createResponders(props) {\n return {\n onBeforeCapture: props.onBeforeCapture,\n onBeforeDragStart: props.onBeforeDragStart,\n onDragStart: props.onDragStart,\n onDragEnd: props.onDragEnd,\n onDragUpdate: props.onDragUpdate\n };\n};\n\nfunction getStore(lazyRef) {\n !lazyRef.current ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Could not find store from lazy ref') : invariant(false) : void 0;\n return lazyRef.current;\n}\n\nfunction App(props) {\n var contextId = props.contextId,\n setCallbacks = props.setCallbacks,\n sensors = props.sensors,\n nonce = props.nonce,\n dragHandleUsageInstructions = props.dragHandleUsageInstructions;\n var lazyStoreRef = useRef(null);\n useStartupValidation();\n var lastPropsRef = usePrevious(props);\n var getResponders = useCallback(function () {\n return createResponders(lastPropsRef.current);\n }, [lastPropsRef]);\n var announce = useAnnouncer(contextId);\n var dragHandleUsageInstructionsId = useHiddenTextElement({\n contextId: contextId,\n text: dragHandleUsageInstructions\n });\n var styleMarshal = useStyleMarshal(contextId, nonce);\n var lazyDispatch = useCallback(function (action) {\n getStore(lazyStoreRef).dispatch(action);\n }, []);\n var marshalCallbacks = useMemo(function () {\n return bindActionCreators({\n publishWhileDragging: publishWhileDragging,\n updateDroppableScroll: updateDroppableScroll,\n updateDroppableIsEnabled: updateDroppableIsEnabled,\n updateDroppableIsCombineEnabled: updateDroppableIsCombineEnabled,\n collectionStarting: collectionStarting\n }, lazyDispatch);\n }, [lazyDispatch]);\n var registry = useRegistry();\n var dimensionMarshal = useMemo(function () {\n return createDimensionMarshal(registry, marshalCallbacks);\n }, [registry, marshalCallbacks]);\n var autoScroller = useMemo(function () {\n return createAutoScroller(_extends({\n scrollWindow: scrollWindow,\n scrollDroppable: dimensionMarshal.scrollDroppable\n }, bindActionCreators({\n move: move\n }, lazyDispatch)));\n }, [dimensionMarshal.scrollDroppable, lazyDispatch]);\n var focusMarshal = useFocusMarshal(contextId);\n var store = useMemo(function () {\n return createStore({\n announce: announce,\n autoScroller: autoScroller,\n dimensionMarshal: dimensionMarshal,\n focusMarshal: focusMarshal,\n getResponders: getResponders,\n styleMarshal: styleMarshal\n });\n }, [announce, autoScroller, dimensionMarshal, focusMarshal, getResponders, styleMarshal]);\n\n if (process.env.NODE_ENV !== 'production') {\n if (lazyStoreRef.current && lazyStoreRef.current !== store) {\n process.env.NODE_ENV !== \"production\" ? warning('unexpected store change') : void 0;\n }\n }\n\n lazyStoreRef.current = store;\n var tryResetStore = useCallback(function () {\n var current = getStore(lazyStoreRef);\n var state = current.getState();\n\n if (state.phase !== 'IDLE') {\n current.dispatch(flush());\n }\n }, []);\n var isDragging = useCallback(function () {\n var state = getStore(lazyStoreRef).getState();\n return state.isDragging || state.phase === 'DROP_ANIMATING';\n }, []);\n var appCallbacks = useMemo(function () {\n return {\n isDragging: isDragging,\n tryAbort: tryResetStore\n };\n }, [isDragging, tryResetStore]);\n setCallbacks(appCallbacks);\n var getCanLift = useCallback(function (id) {\n return canStartDrag(getStore(lazyStoreRef).getState(), id);\n }, []);\n var getIsMovementAllowed = useCallback(function () {\n return isMovementAllowed(getStore(lazyStoreRef).getState());\n }, []);\n var appContext = useMemo(function () {\n return {\n marshal: dimensionMarshal,\n focus: focusMarshal,\n contextId: contextId,\n canLift: getCanLift,\n isMovementAllowed: getIsMovementAllowed,\n dragHandleUsageInstructionsId: dragHandleUsageInstructionsId,\n registry: registry\n };\n }, [contextId, dimensionMarshal, dragHandleUsageInstructionsId, focusMarshal, getCanLift, getIsMovementAllowed, registry]);\n useSensorMarshal({\n contextId: contextId,\n store: store,\n registry: registry,\n customSensors: sensors,\n enableDefaultSensors: props.enableDefaultSensors !== false\n });\n useEffect(function () {\n return tryResetStore;\n }, [tryResetStore]);\n return React.createElement(AppContext.Provider, {\n value: appContext\n }, React.createElement(Provider, {\n context: StoreContext,\n store: store\n }, props.children));\n}\n\nvar count$1 = 0;\nfunction reset$1() {\n count$1 = 0;\n}\nfunction useInstanceCount() {\n return useMemo(function () {\n return \"\" + count$1++;\n }, []);\n}\n\nfunction resetServerContext() {\n reset$1();\n reset();\n}\nfunction DragDropContext(props) {\n var contextId = useInstanceCount();\n var dragHandleUsageInstructions = props.dragHandleUsageInstructions || preset.dragHandleUsageInstructions;\n return React.createElement(ErrorBoundary, null, function (setCallbacks) {\n return React.createElement(App, {\n nonce: props.nonce,\n contextId: contextId,\n setCallbacks: setCallbacks,\n dragHandleUsageInstructions: dragHandleUsageInstructions,\n enableDefaultSensors: props.enableDefaultSensors,\n sensors: props.sensors,\n onBeforeCapture: props.onBeforeCapture,\n onBeforeDragStart: props.onBeforeDragStart,\n onDragStart: props.onDragStart,\n onDragUpdate: props.onDragUpdate,\n onDragEnd: props.onDragEnd\n }, props.children);\n });\n}\n\nvar isEqual$1 = function isEqual(base) {\n return function (value) {\n return base === value;\n };\n};\n\nvar isScroll = isEqual$1('scroll');\nvar isAuto = isEqual$1('auto');\nvar isVisible$1 = isEqual$1('visible');\n\nvar isEither = function isEither(overflow, fn) {\n return fn(overflow.overflowX) || fn(overflow.overflowY);\n};\n\nvar isBoth = function isBoth(overflow, fn) {\n return fn(overflow.overflowX) && fn(overflow.overflowY);\n};\n\nvar isElementScrollable = function isElementScrollable(el) {\n var style = window.getComputedStyle(el);\n var overflow = {\n overflowX: style.overflowX,\n overflowY: style.overflowY\n };\n return isEither(overflow, isScroll) || isEither(overflow, isAuto);\n};\n\nvar isBodyScrollable = function isBodyScrollable() {\n if (process.env.NODE_ENV === 'production') {\n return false;\n }\n\n var body = getBodyElement();\n var html = document.documentElement;\n !html ? process.env.NODE_ENV !== \"production\" ? invariant(false) : invariant(false) : void 0;\n\n if (!isElementScrollable(body)) {\n return false;\n }\n\n var htmlStyle = window.getComputedStyle(html);\n var htmlOverflow = {\n overflowX: htmlStyle.overflowX,\n overflowY: htmlStyle.overflowY\n };\n\n if (isBoth(htmlOverflow, isVisible$1)) {\n return false;\n }\n\n process.env.NODE_ENV !== \"production\" ? warning(\"\\n We have detected that your element might be a scroll container.\\n We have found no reliable way of detecting whether the element is a scroll container.\\n Under most circumstances a scroll bar will be on the element (document.documentElement)\\n\\n Because we cannot determine if the is a scroll container, and generally it is not one,\\n we will be treating the as *not* a scroll container\\n\\n More information: https://github.com/atlassian/react-beautiful-dnd/blob/master/docs/guides/how-we-detect-scroll-containers.md\\n \") : void 0;\n return false;\n};\n\nvar getClosestScrollable = function getClosestScrollable(el) {\n if (el == null) {\n return null;\n }\n\n if (el === document.body) {\n return isBodyScrollable() ? el : null;\n }\n\n if (el === document.documentElement) {\n return null;\n }\n\n if (!isElementScrollable(el)) {\n return getClosestScrollable(el.parentElement);\n }\n\n return el;\n};\n\nvar checkForNestedScrollContainers = (function (scrollable) {\n if (!scrollable) {\n return;\n }\n\n var anotherScrollParent = getClosestScrollable(scrollable.parentElement);\n\n if (!anotherScrollParent) {\n return;\n }\n\n process.env.NODE_ENV !== \"production\" ? warning(\"\\n Droppable: unsupported nested scroll container detected.\\n A Droppable can only have one scroll parent (which can be itself)\\n Nested scroll containers are currently not supported.\\n\\n We hope to support nested scroll containers soon: https://github.com/atlassian/react-beautiful-dnd/issues/131\\n \") : void 0;\n});\n\nvar getScroll$1 = (function (el) {\n return {\n x: el.scrollLeft,\n y: el.scrollTop\n };\n});\n\nvar getIsFixed = function getIsFixed(el) {\n if (!el) {\n return false;\n }\n\n var style = window.getComputedStyle(el);\n\n if (style.position === 'fixed') {\n return true;\n }\n\n return getIsFixed(el.parentElement);\n};\n\nvar getEnv = (function (start) {\n var closestScrollable = getClosestScrollable(start);\n var isFixedOnPage = getIsFixed(start);\n return {\n closestScrollable: closestScrollable,\n isFixedOnPage: isFixedOnPage\n };\n});\n\nvar getDroppableDimension = (function (_ref) {\n var descriptor = _ref.descriptor,\n isEnabled = _ref.isEnabled,\n isCombineEnabled = _ref.isCombineEnabled,\n isFixedOnPage = _ref.isFixedOnPage,\n direction = _ref.direction,\n client = _ref.client,\n page = _ref.page,\n closest = _ref.closest;\n\n var frame = function () {\n if (!closest) {\n return null;\n }\n\n var scrollSize = closest.scrollSize,\n frameClient = closest.client;\n var maxScroll = getMaxScroll({\n scrollHeight: scrollSize.scrollHeight,\n scrollWidth: scrollSize.scrollWidth,\n height: frameClient.paddingBox.height,\n width: frameClient.paddingBox.width\n });\n return {\n pageMarginBox: closest.page.marginBox,\n frameClient: frameClient,\n scrollSize: scrollSize,\n shouldClipSubject: closest.shouldClipSubject,\n scroll: {\n initial: closest.scroll,\n current: closest.scroll,\n max: maxScroll,\n diff: {\n value: origin,\n displacement: origin\n }\n }\n };\n }();\n\n var axis = direction === 'vertical' ? vertical : horizontal;\n var subject = getSubject({\n page: page,\n withPlaceholder: null,\n axis: axis,\n frame: frame\n });\n var dimension = {\n descriptor: descriptor,\n isCombineEnabled: isCombineEnabled,\n isFixedOnPage: isFixedOnPage,\n axis: axis,\n isEnabled: isEnabled,\n client: client,\n page: page,\n frame: frame,\n subject: subject\n };\n return dimension;\n});\n\nvar getClient = function getClient(targetRef, closestScrollable) {\n var base = getBox(targetRef);\n\n if (!closestScrollable) {\n return base;\n }\n\n if (targetRef !== closestScrollable) {\n return base;\n }\n\n var top = base.paddingBox.top - closestScrollable.scrollTop;\n var left = base.paddingBox.left - closestScrollable.scrollLeft;\n var bottom = top + closestScrollable.scrollHeight;\n var right = left + closestScrollable.scrollWidth;\n var paddingBox = {\n top: top,\n right: right,\n bottom: bottom,\n left: left\n };\n var borderBox = expand(paddingBox, base.border);\n var client = createBox({\n borderBox: borderBox,\n margin: base.margin,\n border: base.border,\n padding: base.padding\n });\n return client;\n};\n\nvar getDimension = (function (_ref) {\n var ref = _ref.ref,\n descriptor = _ref.descriptor,\n env = _ref.env,\n windowScroll = _ref.windowScroll,\n direction = _ref.direction,\n isDropDisabled = _ref.isDropDisabled,\n isCombineEnabled = _ref.isCombineEnabled,\n shouldClipSubject = _ref.shouldClipSubject;\n var closestScrollable = env.closestScrollable;\n var client = getClient(ref, closestScrollable);\n var page = withScroll(client, windowScroll);\n\n var closest = function () {\n if (!closestScrollable) {\n return null;\n }\n\n var frameClient = getBox(closestScrollable);\n var scrollSize = {\n scrollHeight: closestScrollable.scrollHeight,\n scrollWidth: closestScrollable.scrollWidth\n };\n return {\n client: frameClient,\n page: withScroll(frameClient, windowScroll),\n scroll: getScroll$1(closestScrollable),\n scrollSize: scrollSize,\n shouldClipSubject: shouldClipSubject\n };\n }();\n\n var dimension = getDroppableDimension({\n descriptor: descriptor,\n isEnabled: !isDropDisabled,\n isCombineEnabled: isCombineEnabled,\n isFixedOnPage: env.isFixedOnPage,\n direction: direction,\n client: client,\n page: page,\n closest: closest\n });\n return dimension;\n});\n\nvar immediate = {\n passive: false\n};\nvar delayed = {\n passive: true\n};\nvar getListenerOptions = (function (options) {\n return options.shouldPublishImmediately ? immediate : delayed;\n});\n\nfunction useRequiredContext(Context) {\n var result = useContext(Context);\n !result ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Could not find required context') : invariant(false) : void 0;\n return result;\n}\n\nvar getClosestScrollableFromDrag = function getClosestScrollableFromDrag(dragging) {\n return dragging && dragging.env.closestScrollable || null;\n};\n\nfunction useDroppablePublisher(args) {\n var whileDraggingRef = useRef(null);\n var appContext = useRequiredContext(AppContext);\n var uniqueId = useUniqueId('droppable');\n var registry = appContext.registry,\n marshal = appContext.marshal;\n var previousRef = usePrevious(args);\n var descriptor = useMemo(function () {\n return {\n id: args.droppableId,\n type: args.type,\n mode: args.mode\n };\n }, [args.droppableId, args.mode, args.type]);\n var publishedDescriptorRef = useRef(descriptor);\n var memoizedUpdateScroll = useMemo(function () {\n return memoizeOne(function (x, y) {\n !whileDraggingRef.current ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Can only update scroll when dragging') : invariant(false) : void 0;\n var scroll = {\n x: x,\n y: y\n };\n marshal.updateDroppableScroll(descriptor.id, scroll);\n });\n }, [descriptor.id, marshal]);\n var getClosestScroll = useCallback(function () {\n var dragging = whileDraggingRef.current;\n\n if (!dragging || !dragging.env.closestScrollable) {\n return origin;\n }\n\n return getScroll$1(dragging.env.closestScrollable);\n }, []);\n var updateScroll = useCallback(function () {\n var scroll = getClosestScroll();\n memoizedUpdateScroll(scroll.x, scroll.y);\n }, [getClosestScroll, memoizedUpdateScroll]);\n var scheduleScrollUpdate = useMemo(function () {\n return rafSchd(updateScroll);\n }, [updateScroll]);\n var onClosestScroll = useCallback(function () {\n var dragging = whileDraggingRef.current;\n var closest = getClosestScrollableFromDrag(dragging);\n !(dragging && closest) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Could not find scroll options while scrolling') : invariant(false) : void 0;\n var options = dragging.scrollOptions;\n\n if (options.shouldPublishImmediately) {\n updateScroll();\n return;\n }\n\n scheduleScrollUpdate();\n }, [scheduleScrollUpdate, updateScroll]);\n var getDimensionAndWatchScroll = useCallback(function (windowScroll, options) {\n !!whileDraggingRef.current ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot collect a droppable while a drag is occurring') : invariant(false) : void 0;\n var previous = previousRef.current;\n var ref = previous.getDroppableRef();\n !ref ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot collect without a droppable ref') : invariant(false) : void 0;\n var env = getEnv(ref);\n var dragging = {\n ref: ref,\n descriptor: descriptor,\n env: env,\n scrollOptions: options\n };\n whileDraggingRef.current = dragging;\n var dimension = getDimension({\n ref: ref,\n descriptor: descriptor,\n env: env,\n windowScroll: windowScroll,\n direction: previous.direction,\n isDropDisabled: previous.isDropDisabled,\n isCombineEnabled: previous.isCombineEnabled,\n shouldClipSubject: !previous.ignoreContainerClipping\n });\n var scrollable = env.closestScrollable;\n\n if (scrollable) {\n scrollable.setAttribute(scrollContainer.contextId, appContext.contextId);\n scrollable.addEventListener('scroll', onClosestScroll, getListenerOptions(dragging.scrollOptions));\n\n if (process.env.NODE_ENV !== 'production') {\n checkForNestedScrollContainers(scrollable);\n }\n }\n\n return dimension;\n }, [appContext.contextId, descriptor, onClosestScroll, previousRef]);\n var getScrollWhileDragging = useCallback(function () {\n var dragging = whileDraggingRef.current;\n var closest = getClosestScrollableFromDrag(dragging);\n !(dragging && closest) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Can only recollect Droppable client for Droppables that have a scroll container') : invariant(false) : void 0;\n return getScroll$1(closest);\n }, []);\n var dragStopped = useCallback(function () {\n var dragging = whileDraggingRef.current;\n !dragging ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot stop drag when no active drag') : invariant(false) : void 0;\n var closest = getClosestScrollableFromDrag(dragging);\n whileDraggingRef.current = null;\n\n if (!closest) {\n return;\n }\n\n scheduleScrollUpdate.cancel();\n closest.removeAttribute(scrollContainer.contextId);\n closest.removeEventListener('scroll', onClosestScroll, getListenerOptions(dragging.scrollOptions));\n }, [onClosestScroll, scheduleScrollUpdate]);\n var scroll = useCallback(function (change) {\n var dragging = whileDraggingRef.current;\n !dragging ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot scroll when there is no drag') : invariant(false) : void 0;\n var closest = getClosestScrollableFromDrag(dragging);\n !closest ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot scroll a droppable with no closest scrollable') : invariant(false) : void 0;\n closest.scrollTop += change.y;\n closest.scrollLeft += change.x;\n }, []);\n var callbacks = useMemo(function () {\n return {\n getDimensionAndWatchScroll: getDimensionAndWatchScroll,\n getScrollWhileDragging: getScrollWhileDragging,\n dragStopped: dragStopped,\n scroll: scroll\n };\n }, [dragStopped, getDimensionAndWatchScroll, getScrollWhileDragging, scroll]);\n var entry = useMemo(function () {\n return {\n uniqueId: uniqueId,\n descriptor: descriptor,\n callbacks: callbacks\n };\n }, [callbacks, descriptor, uniqueId]);\n useIsomorphicLayoutEffect(function () {\n publishedDescriptorRef.current = entry.descriptor;\n registry.droppable.register(entry);\n return function () {\n if (whileDraggingRef.current) {\n process.env.NODE_ENV !== \"production\" ? warning('Unsupported: changing the droppableId or type of a Droppable during a drag') : void 0;\n dragStopped();\n }\n\n registry.droppable.unregister(entry);\n };\n }, [callbacks, descriptor, dragStopped, entry, marshal, registry.droppable]);\n useIsomorphicLayoutEffect(function () {\n if (!whileDraggingRef.current) {\n return;\n }\n\n marshal.updateDroppableIsEnabled(publishedDescriptorRef.current.id, !args.isDropDisabled);\n }, [args.isDropDisabled, marshal]);\n useIsomorphicLayoutEffect(function () {\n if (!whileDraggingRef.current) {\n return;\n }\n\n marshal.updateDroppableIsCombineEnabled(publishedDescriptorRef.current.id, args.isCombineEnabled);\n }, [args.isCombineEnabled, marshal]);\n}\n\nfunction noop$2() {}\n\nvar empty = {\n width: 0,\n height: 0,\n margin: noSpacing\n};\n\nvar getSize = function getSize(_ref) {\n var isAnimatingOpenOnMount = _ref.isAnimatingOpenOnMount,\n placeholder = _ref.placeholder,\n animate = _ref.animate;\n\n if (isAnimatingOpenOnMount) {\n return empty;\n }\n\n if (animate === 'close') {\n return empty;\n }\n\n return {\n height: placeholder.client.borderBox.height,\n width: placeholder.client.borderBox.width,\n margin: placeholder.client.margin\n };\n};\n\nvar getStyle = function getStyle(_ref2) {\n var isAnimatingOpenOnMount = _ref2.isAnimatingOpenOnMount,\n placeholder = _ref2.placeholder,\n animate = _ref2.animate;\n var size = getSize({\n isAnimatingOpenOnMount: isAnimatingOpenOnMount,\n placeholder: placeholder,\n animate: animate\n });\n return {\n display: placeholder.display,\n boxSizing: 'border-box',\n width: size.width,\n height: size.height,\n marginTop: size.margin.top,\n marginRight: size.margin.right,\n marginBottom: size.margin.bottom,\n marginLeft: size.margin.left,\n flexShrink: '0',\n flexGrow: '0',\n pointerEvents: 'none',\n transition: animate !== 'none' ? transitions.placeholder : null\n };\n};\n\nfunction Placeholder(props) {\n var animateOpenTimerRef = useRef(null);\n var tryClearAnimateOpenTimer = useCallback(function () {\n if (!animateOpenTimerRef.current) {\n return;\n }\n\n clearTimeout(animateOpenTimerRef.current);\n animateOpenTimerRef.current = null;\n }, []);\n var animate = props.animate,\n onTransitionEnd = props.onTransitionEnd,\n onClose = props.onClose,\n contextId = props.contextId;\n\n var _useState = useState(props.animate === 'open'),\n isAnimatingOpenOnMount = _useState[0],\n setIsAnimatingOpenOnMount = _useState[1];\n\n useEffect(function () {\n if (!isAnimatingOpenOnMount) {\n return noop$2;\n }\n\n if (animate !== 'open') {\n tryClearAnimateOpenTimer();\n setIsAnimatingOpenOnMount(false);\n return noop$2;\n }\n\n if (animateOpenTimerRef.current) {\n return noop$2;\n }\n\n animateOpenTimerRef.current = setTimeout(function () {\n animateOpenTimerRef.current = null;\n setIsAnimatingOpenOnMount(false);\n });\n return tryClearAnimateOpenTimer;\n }, [animate, isAnimatingOpenOnMount, tryClearAnimateOpenTimer]);\n var onSizeChangeEnd = useCallback(function (event) {\n if (event.propertyName !== 'height') {\n return;\n }\n\n onTransitionEnd();\n\n if (animate === 'close') {\n onClose();\n }\n }, [animate, onClose, onTransitionEnd]);\n var style = getStyle({\n isAnimatingOpenOnMount: isAnimatingOpenOnMount,\n animate: props.animate,\n placeholder: props.placeholder\n });\n return React.createElement(props.placeholder.tagName, {\n style: style,\n 'data-rbd-placeholder-context-id': contextId,\n onTransitionEnd: onSizeChangeEnd,\n ref: props.innerRef\n });\n}\n\nvar Placeholder$1 = React.memo(Placeholder);\n\nvar DroppableContext = React.createContext(null);\n\nfunction checkIsValidInnerRef(el) {\n !(el && isHtmlElement(el)) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"\\n provided.innerRef has not been provided with a HTMLElement.\\n\\n You can find a guide on using the innerRef callback functions at:\\n https://github.com/atlassian/react-beautiful-dnd/blob/master/docs/guides/using-inner-ref.md\\n \") : invariant(false) : void 0;\n}\n\nfunction isBoolean(value) {\n return typeof value === 'boolean';\n}\n\nfunction runChecks(args, checks) {\n checks.forEach(function (check) {\n return check(args);\n });\n}\n\nvar shared = [function required(_ref) {\n var props = _ref.props;\n !props.droppableId ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'A Droppable requires a droppableId prop') : invariant(false) : void 0;\n !(typeof props.droppableId === 'string') ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"A Droppable requires a [string] droppableId. Provided: [\" + typeof props.droppableId + \"]\") : invariant(false) : void 0;\n}, function _boolean(_ref2) {\n var props = _ref2.props;\n !isBoolean(props.isDropDisabled) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'isDropDisabled must be a boolean') : invariant(false) : void 0;\n !isBoolean(props.isCombineEnabled) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'isCombineEnabled must be a boolean') : invariant(false) : void 0;\n !isBoolean(props.ignoreContainerClipping) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'ignoreContainerClipping must be a boolean') : invariant(false) : void 0;\n}, function ref(_ref3) {\n var getDroppableRef = _ref3.getDroppableRef;\n checkIsValidInnerRef(getDroppableRef());\n}];\nvar standard = [function placeholder(_ref4) {\n var props = _ref4.props,\n getPlaceholderRef = _ref4.getPlaceholderRef;\n\n if (!props.placeholder) {\n return;\n }\n\n var ref = getPlaceholderRef();\n\n if (ref) {\n return;\n }\n\n process.env.NODE_ENV !== \"production\" ? warning(\"\\n Droppable setup issue [droppableId: \\\"\" + props.droppableId + \"\\\"]:\\n DroppableProvided > placeholder could not be found.\\n\\n Please be sure to add the {provided.placeholder} React Node as a child of your Droppable.\\n More information: https://github.com/atlassian/react-beautiful-dnd/blob/master/docs/api/droppable.md\\n \") : void 0;\n}];\nvar virtual = [function hasClone(_ref5) {\n var props = _ref5.props;\n !props.renderClone ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Must provide a clone render function (renderClone) for virtual lists') : invariant(false) : void 0;\n}, function hasNoPlaceholder(_ref6) {\n var getPlaceholderRef = _ref6.getPlaceholderRef;\n !!getPlaceholderRef() ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Expected virtual list to not have a placeholder') : invariant(false) : void 0;\n}];\nfunction useValidation(args) {\n useDevSetupWarning(function () {\n runChecks(args, shared);\n\n if (args.props.mode === 'standard') {\n runChecks(args, standard);\n }\n\n if (args.props.mode === 'virtual') {\n runChecks(args, virtual);\n }\n });\n}\n\nvar AnimateInOut = function (_React$PureComponent) {\n _inheritsLoose(AnimateInOut, _React$PureComponent);\n\n function AnimateInOut() {\n var _this;\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 = _React$PureComponent.call.apply(_React$PureComponent, [this].concat(args)) || this;\n _this.state = {\n isVisible: Boolean(_this.props.on),\n data: _this.props.on,\n animate: _this.props.shouldAnimate && _this.props.on ? 'open' : 'none'\n };\n\n _this.onClose = function () {\n if (_this.state.animate !== 'close') {\n return;\n }\n\n _this.setState({\n isVisible: false\n });\n };\n\n return _this;\n }\n\n AnimateInOut.getDerivedStateFromProps = function getDerivedStateFromProps(props, state) {\n if (!props.shouldAnimate) {\n return {\n isVisible: Boolean(props.on),\n data: props.on,\n animate: 'none'\n };\n }\n\n if (props.on) {\n return {\n isVisible: true,\n data: props.on,\n animate: 'open'\n };\n }\n\n if (state.isVisible) {\n return {\n isVisible: true,\n data: state.data,\n animate: 'close'\n };\n }\n\n return {\n isVisible: false,\n animate: 'close',\n data: null\n };\n };\n\n var _proto = AnimateInOut.prototype;\n\n _proto.render = function render() {\n if (!this.state.isVisible) {\n return null;\n }\n\n var provided = {\n onClose: this.onClose,\n data: this.state.data,\n animate: this.state.animate\n };\n return this.props.children(provided);\n };\n\n return AnimateInOut;\n}(React.PureComponent);\n\nvar zIndexOptions = {\n dragging: 5000,\n dropAnimating: 4500\n};\n\nvar getDraggingTransition = function getDraggingTransition(shouldAnimateDragMovement, dropping) {\n if (dropping) {\n return transitions.drop(dropping.duration);\n }\n\n if (shouldAnimateDragMovement) {\n return transitions.snap;\n }\n\n return transitions.fluid;\n};\n\nvar getDraggingOpacity = function getDraggingOpacity(isCombining, isDropAnimating) {\n if (!isCombining) {\n return null;\n }\n\n return isDropAnimating ? combine.opacity.drop : combine.opacity.combining;\n};\n\nvar getShouldDraggingAnimate = function getShouldDraggingAnimate(dragging) {\n if (dragging.forceShouldAnimate != null) {\n return dragging.forceShouldAnimate;\n }\n\n return dragging.mode === 'SNAP';\n};\n\nfunction getDraggingStyle(dragging) {\n var dimension = dragging.dimension;\n var box = dimension.client;\n var offset = dragging.offset,\n combineWith = dragging.combineWith,\n dropping = dragging.dropping;\n var isCombining = Boolean(combineWith);\n var shouldAnimate = getShouldDraggingAnimate(dragging);\n var isDropAnimating = Boolean(dropping);\n var transform = isDropAnimating ? transforms.drop(offset, isCombining) : transforms.moveTo(offset);\n var style = {\n position: 'fixed',\n top: box.marginBox.top,\n left: box.marginBox.left,\n boxSizing: 'border-box',\n width: box.borderBox.width,\n height: box.borderBox.height,\n transition: getDraggingTransition(shouldAnimate, dropping),\n transform: transform,\n opacity: getDraggingOpacity(isCombining, isDropAnimating),\n zIndex: isDropAnimating ? zIndexOptions.dropAnimating : zIndexOptions.dragging,\n pointerEvents: 'none'\n };\n return style;\n}\n\nfunction getSecondaryStyle(secondary) {\n return {\n transform: transforms.moveTo(secondary.offset),\n transition: secondary.shouldAnimateDisplacement ? null : 'none'\n };\n}\n\nfunction getStyle$1(mapped) {\n return mapped.type === 'DRAGGING' ? getDraggingStyle(mapped) : getSecondaryStyle(mapped);\n}\n\nfunction getDimension$1(descriptor, el, windowScroll) {\n if (windowScroll === void 0) {\n windowScroll = origin;\n }\n\n var computedStyles = window.getComputedStyle(el);\n var borderBox = el.getBoundingClientRect();\n var client = calculateBox(borderBox, computedStyles);\n var page = withScroll(client, windowScroll);\n var placeholder = {\n client: client,\n tagName: el.tagName.toLowerCase(),\n display: computedStyles.display\n };\n var displaceBy = {\n x: client.marginBox.width,\n y: client.marginBox.height\n };\n var dimension = {\n descriptor: descriptor,\n placeholder: placeholder,\n displaceBy: displaceBy,\n client: client,\n page: page\n };\n return dimension;\n}\n\nfunction useDraggablePublisher(args) {\n var uniqueId = useUniqueId('draggable');\n var descriptor = args.descriptor,\n registry = args.registry,\n getDraggableRef = args.getDraggableRef,\n canDragInteractiveElements = args.canDragInteractiveElements,\n shouldRespectForcePress = args.shouldRespectForcePress,\n isEnabled = args.isEnabled;\n var options = useMemo(function () {\n return {\n canDragInteractiveElements: canDragInteractiveElements,\n shouldRespectForcePress: shouldRespectForcePress,\n isEnabled: isEnabled\n };\n }, [canDragInteractiveElements, isEnabled, shouldRespectForcePress]);\n var getDimension = useCallback(function (windowScroll) {\n var el = getDraggableRef();\n !el ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot get dimension when no ref is set') : invariant(false) : void 0;\n return getDimension$1(descriptor, el, windowScroll);\n }, [descriptor, getDraggableRef]);\n var entry = useMemo(function () {\n return {\n uniqueId: uniqueId,\n descriptor: descriptor,\n options: options,\n getDimension: getDimension\n };\n }, [descriptor, getDimension, options, uniqueId]);\n var publishedRef = useRef(entry);\n var isFirstPublishRef = useRef(true);\n useIsomorphicLayoutEffect(function () {\n registry.draggable.register(publishedRef.current);\n return function () {\n return registry.draggable.unregister(publishedRef.current);\n };\n }, [registry.draggable]);\n useIsomorphicLayoutEffect(function () {\n if (isFirstPublishRef.current) {\n isFirstPublishRef.current = false;\n return;\n }\n\n var last = publishedRef.current;\n publishedRef.current = entry;\n registry.draggable.update(entry, last);\n }, [entry, registry.draggable]);\n}\n\nfunction useValidation$1(props, contextId, getRef) {\n useDevSetupWarning(function () {\n function prefix(id) {\n return \"Draggable[id: \" + id + \"]: \";\n }\n\n var id = props.draggableId;\n !id ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Draggable requires a draggableId') : invariant(false) : void 0;\n !(typeof id === 'string') ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Draggable requires a [string] draggableId.\\n Provided: [type: \" + typeof id + \"] (value: \" + id + \")\") : invariant(false) : void 0;\n !isInteger(props.index) ? process.env.NODE_ENV !== \"production\" ? invariant(false, prefix(id) + \" requires an integer index prop\") : invariant(false) : void 0;\n\n if (props.mapped.type === 'DRAGGING') {\n return;\n }\n\n checkIsValidInnerRef(getRef());\n\n if (props.isEnabled) {\n !findDragHandle(contextId, id) ? process.env.NODE_ENV !== \"production\" ? invariant(false, prefix(id) + \" Unable to find drag handle\") : invariant(false) : void 0;\n }\n });\n}\nfunction useClonePropValidation(isClone) {\n useDev(function () {\n var initialRef = useRef(isClone);\n useDevSetupWarning(function () {\n !(isClone === initialRef.current) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Draggable isClone prop value changed during component life') : invariant(false) : void 0;\n }, [isClone]);\n });\n}\n\nfunction preventHtml5Dnd(event) {\n event.preventDefault();\n}\n\nfunction Draggable(props) {\n var ref = useRef(null);\n var setRef = useCallback(function (el) {\n ref.current = el;\n }, []);\n var getRef = useCallback(function () {\n return ref.current;\n }, []);\n\n var _useRequiredContext = useRequiredContext(AppContext),\n contextId = _useRequiredContext.contextId,\n dragHandleUsageInstructionsId = _useRequiredContext.dragHandleUsageInstructionsId,\n registry = _useRequiredContext.registry;\n\n var _useRequiredContext2 = useRequiredContext(DroppableContext),\n type = _useRequiredContext2.type,\n droppableId = _useRequiredContext2.droppableId;\n\n var descriptor = useMemo(function () {\n return {\n id: props.draggableId,\n index: props.index,\n type: type,\n droppableId: droppableId\n };\n }, [props.draggableId, props.index, type, droppableId]);\n var children = props.children,\n draggableId = props.draggableId,\n isEnabled = props.isEnabled,\n shouldRespectForcePress = props.shouldRespectForcePress,\n canDragInteractiveElements = props.canDragInteractiveElements,\n isClone = props.isClone,\n mapped = props.mapped,\n dropAnimationFinishedAction = props.dropAnimationFinished;\n useValidation$1(props, contextId, getRef);\n useClonePropValidation(isClone);\n\n if (!isClone) {\n var forPublisher = useMemo(function () {\n return {\n descriptor: descriptor,\n registry: registry,\n getDraggableRef: getRef,\n canDragInteractiveElements: canDragInteractiveElements,\n shouldRespectForcePress: shouldRespectForcePress,\n isEnabled: isEnabled\n };\n }, [descriptor, registry, getRef, canDragInteractiveElements, shouldRespectForcePress, isEnabled]);\n useDraggablePublisher(forPublisher);\n }\n\n var dragHandleProps = useMemo(function () {\n return isEnabled ? {\n tabIndex: 0,\n role: 'button',\n 'aria-describedby': dragHandleUsageInstructionsId,\n 'data-rbd-drag-handle-draggable-id': draggableId,\n 'data-rbd-drag-handle-context-id': contextId,\n draggable: false,\n onDragStart: preventHtml5Dnd\n } : null;\n }, [contextId, dragHandleUsageInstructionsId, draggableId, isEnabled]);\n var onMoveEnd = useCallback(function (event) {\n if (mapped.type !== 'DRAGGING') {\n return;\n }\n\n if (!mapped.dropping) {\n return;\n }\n\n if (event.propertyName !== 'transform') {\n return;\n }\n\n dropAnimationFinishedAction();\n }, [dropAnimationFinishedAction, mapped]);\n var provided = useMemo(function () {\n var style = getStyle$1(mapped);\n var onTransitionEnd = mapped.type === 'DRAGGING' && mapped.dropping ? onMoveEnd : null;\n var result = {\n innerRef: setRef,\n draggableProps: {\n 'data-rbd-draggable-context-id': contextId,\n 'data-rbd-draggable-id': draggableId,\n style: style,\n onTransitionEnd: onTransitionEnd\n },\n dragHandleProps: dragHandleProps\n };\n return result;\n }, [contextId, dragHandleProps, draggableId, mapped, onMoveEnd, setRef]);\n var rubric = useMemo(function () {\n return {\n draggableId: descriptor.id,\n type: descriptor.type,\n source: {\n index: descriptor.index,\n droppableId: descriptor.droppableId\n }\n };\n }, [descriptor.droppableId, descriptor.id, descriptor.index, descriptor.type]);\n return children(provided, mapped.snapshot, rubric);\n}\n\nvar isStrictEqual = (function (a, b) {\n return a === b;\n});\n\nvar whatIsDraggedOverFromResult = (function (result) {\n var combine = result.combine,\n destination = result.destination;\n\n if (destination) {\n return destination.droppableId;\n }\n\n if (combine) {\n return combine.droppableId;\n }\n\n return null;\n});\n\nvar getCombineWithFromResult = function getCombineWithFromResult(result) {\n return result.combine ? result.combine.draggableId : null;\n};\n\nvar getCombineWithFromImpact = function getCombineWithFromImpact(impact) {\n return impact.at && impact.at.type === 'COMBINE' ? impact.at.combine.draggableId : null;\n};\n\nfunction getDraggableSelector() {\n var memoizedOffset = memoizeOne(function (x, y) {\n return {\n x: x,\n y: y\n };\n });\n var getMemoizedSnapshot = memoizeOne(function (mode, isClone, draggingOver, combineWith, dropping) {\n return {\n isDragging: true,\n isClone: isClone,\n isDropAnimating: Boolean(dropping),\n dropAnimation: dropping,\n mode: mode,\n draggingOver: draggingOver,\n combineWith: combineWith,\n combineTargetFor: null\n };\n });\n var getMemoizedProps = memoizeOne(function (offset, mode, dimension, isClone, draggingOver, combineWith, forceShouldAnimate) {\n return {\n mapped: {\n type: 'DRAGGING',\n dropping: null,\n draggingOver: draggingOver,\n combineWith: combineWith,\n mode: mode,\n offset: offset,\n dimension: dimension,\n forceShouldAnimate: forceShouldAnimate,\n snapshot: getMemoizedSnapshot(mode, isClone, draggingOver, combineWith, null)\n }\n };\n });\n\n var selector = function selector(state, ownProps) {\n if (state.isDragging) {\n if (state.critical.draggable.id !== ownProps.draggableId) {\n return null;\n }\n\n var offset = state.current.client.offset;\n var dimension = state.dimensions.draggables[ownProps.draggableId];\n var draggingOver = whatIsDraggedOver(state.impact);\n var combineWith = getCombineWithFromImpact(state.impact);\n var forceShouldAnimate = state.forceShouldAnimate;\n return getMemoizedProps(memoizedOffset(offset.x, offset.y), state.movementMode, dimension, ownProps.isClone, draggingOver, combineWith, forceShouldAnimate);\n }\n\n if (state.phase === 'DROP_ANIMATING') {\n var completed = state.completed;\n\n if (completed.result.draggableId !== ownProps.draggableId) {\n return null;\n }\n\n var isClone = ownProps.isClone;\n var _dimension = state.dimensions.draggables[ownProps.draggableId];\n var result = completed.result;\n var mode = result.mode;\n\n var _draggingOver = whatIsDraggedOverFromResult(result);\n\n var _combineWith = getCombineWithFromResult(result);\n\n var duration = state.dropDuration;\n var dropping = {\n duration: duration,\n curve: curves.drop,\n moveTo: state.newHomeClientOffset,\n opacity: _combineWith ? combine.opacity.drop : null,\n scale: _combineWith ? combine.scale.drop : null\n };\n return {\n mapped: {\n type: 'DRAGGING',\n offset: state.newHomeClientOffset,\n dimension: _dimension,\n dropping: dropping,\n draggingOver: _draggingOver,\n combineWith: _combineWith,\n mode: mode,\n forceShouldAnimate: null,\n snapshot: getMemoizedSnapshot(mode, isClone, _draggingOver, _combineWith, dropping)\n }\n };\n }\n\n return null;\n };\n\n return selector;\n}\n\nfunction getSecondarySnapshot(combineTargetFor) {\n return {\n isDragging: false,\n isDropAnimating: false,\n isClone: false,\n dropAnimation: null,\n mode: null,\n draggingOver: null,\n combineTargetFor: combineTargetFor,\n combineWith: null\n };\n}\n\nvar atRest = {\n mapped: {\n type: 'SECONDARY',\n offset: origin,\n combineTargetFor: null,\n shouldAnimateDisplacement: true,\n snapshot: getSecondarySnapshot(null)\n }\n};\n\nfunction getSecondarySelector() {\n var memoizedOffset = memoizeOne(function (x, y) {\n return {\n x: x,\n y: y\n };\n });\n var getMemoizedSnapshot = memoizeOne(getSecondarySnapshot);\n var getMemoizedProps = memoizeOne(function (offset, combineTargetFor, shouldAnimateDisplacement) {\n if (combineTargetFor === void 0) {\n combineTargetFor = null;\n }\n\n return {\n mapped: {\n type: 'SECONDARY',\n offset: offset,\n combineTargetFor: combineTargetFor,\n shouldAnimateDisplacement: shouldAnimateDisplacement,\n snapshot: getMemoizedSnapshot(combineTargetFor)\n }\n };\n });\n\n var getFallback = function getFallback(combineTargetFor) {\n return combineTargetFor ? getMemoizedProps(origin, combineTargetFor, true) : null;\n };\n\n var getProps = function getProps(ownId, draggingId, impact, afterCritical) {\n var visualDisplacement = impact.displaced.visible[ownId];\n var isAfterCriticalInVirtualList = Boolean(afterCritical.inVirtualList && afterCritical.effected[ownId]);\n var combine = tryGetCombine(impact);\n var combineTargetFor = combine && combine.draggableId === ownId ? draggingId : null;\n\n if (!visualDisplacement) {\n if (!isAfterCriticalInVirtualList) {\n return getFallback(combineTargetFor);\n }\n\n if (impact.displaced.invisible[ownId]) {\n return null;\n }\n\n var change = negate(afterCritical.displacedBy.point);\n\n var _offset = memoizedOffset(change.x, change.y);\n\n return getMemoizedProps(_offset, combineTargetFor, true);\n }\n\n if (isAfterCriticalInVirtualList) {\n return getFallback(combineTargetFor);\n }\n\n var displaceBy = impact.displacedBy.point;\n var offset = memoizedOffset(displaceBy.x, displaceBy.y);\n return getMemoizedProps(offset, combineTargetFor, visualDisplacement.shouldAnimate);\n };\n\n var selector = function selector(state, ownProps) {\n if (state.isDragging) {\n if (state.critical.draggable.id === ownProps.draggableId) {\n return null;\n }\n\n return getProps(ownProps.draggableId, state.critical.draggable.id, state.impact, state.afterCritical);\n }\n\n if (state.phase === 'DROP_ANIMATING') {\n var completed = state.completed;\n\n if (completed.result.draggableId === ownProps.draggableId) {\n return null;\n }\n\n return getProps(ownProps.draggableId, completed.result.draggableId, completed.impact, completed.afterCritical);\n }\n\n return null;\n };\n\n return selector;\n}\n\nvar makeMapStateToProps = function makeMapStateToProps() {\n var draggingSelector = getDraggableSelector();\n var secondarySelector = getSecondarySelector();\n\n var selector = function selector(state, ownProps) {\n return draggingSelector(state, ownProps) || secondarySelector(state, ownProps) || atRest;\n };\n\n return selector;\n};\nvar mapDispatchToProps = {\n dropAnimationFinished: dropAnimationFinished\n};\nvar ConnectedDraggable = connect(makeMapStateToProps, mapDispatchToProps, null, {\n context: StoreContext,\n pure: true,\n areStatePropsEqual: isStrictEqual\n})(Draggable);\n\nfunction PrivateDraggable(props) {\n var droppableContext = useRequiredContext(DroppableContext);\n var isUsingCloneFor = droppableContext.isUsingCloneFor;\n\n if (isUsingCloneFor === props.draggableId && !props.isClone) {\n return null;\n }\n\n return React.createElement(ConnectedDraggable, props);\n}\nfunction PublicDraggable(props) {\n var isEnabled = typeof props.isDragDisabled === 'boolean' ? !props.isDragDisabled : true;\n var canDragInteractiveElements = Boolean(props.disableInteractiveElementBlocking);\n var shouldRespectForcePress = Boolean(props.shouldRespectForcePress);\n return React.createElement(PrivateDraggable, _extends({}, props, {\n isClone: false,\n isEnabled: isEnabled,\n canDragInteractiveElements: canDragInteractiveElements,\n shouldRespectForcePress: shouldRespectForcePress\n }));\n}\n\nfunction Droppable(props) {\n var appContext = useContext(AppContext);\n !appContext ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Could not find app context') : invariant(false) : void 0;\n var contextId = appContext.contextId,\n isMovementAllowed = appContext.isMovementAllowed;\n var droppableRef = useRef(null);\n var placeholderRef = useRef(null);\n var children = props.children,\n droppableId = props.droppableId,\n type = props.type,\n mode = props.mode,\n direction = props.direction,\n ignoreContainerClipping = props.ignoreContainerClipping,\n isDropDisabled = props.isDropDisabled,\n isCombineEnabled = props.isCombineEnabled,\n snapshot = props.snapshot,\n useClone = props.useClone,\n updateViewportMaxScroll = props.updateViewportMaxScroll,\n getContainerForClone = props.getContainerForClone;\n var getDroppableRef = useCallback(function () {\n return droppableRef.current;\n }, []);\n var setDroppableRef = useCallback(function (value) {\n droppableRef.current = value;\n }, []);\n var getPlaceholderRef = useCallback(function () {\n return placeholderRef.current;\n }, []);\n var setPlaceholderRef = useCallback(function (value) {\n placeholderRef.current = value;\n }, []);\n useValidation({\n props: props,\n getDroppableRef: getDroppableRef,\n getPlaceholderRef: getPlaceholderRef\n });\n var onPlaceholderTransitionEnd = useCallback(function () {\n if (isMovementAllowed()) {\n updateViewportMaxScroll({\n maxScroll: getMaxWindowScroll()\n });\n }\n }, [isMovementAllowed, updateViewportMaxScroll]);\n useDroppablePublisher({\n droppableId: droppableId,\n type: type,\n mode: mode,\n direction: direction,\n isDropDisabled: isDropDisabled,\n isCombineEnabled: isCombineEnabled,\n ignoreContainerClipping: ignoreContainerClipping,\n getDroppableRef: getDroppableRef\n });\n var placeholder = React.createElement(AnimateInOut, {\n on: props.placeholder,\n shouldAnimate: props.shouldAnimatePlaceholder\n }, function (_ref) {\n var onClose = _ref.onClose,\n data = _ref.data,\n animate = _ref.animate;\n return React.createElement(Placeholder$1, {\n placeholder: data,\n onClose: onClose,\n innerRef: setPlaceholderRef,\n animate: animate,\n contextId: contextId,\n onTransitionEnd: onPlaceholderTransitionEnd\n });\n });\n var provided = useMemo(function () {\n return {\n innerRef: setDroppableRef,\n placeholder: placeholder,\n droppableProps: {\n 'data-rbd-droppable-id': droppableId,\n 'data-rbd-droppable-context-id': contextId\n }\n };\n }, [contextId, droppableId, placeholder, setDroppableRef]);\n var isUsingCloneFor = useClone ? useClone.dragging.draggableId : null;\n var droppableContext = useMemo(function () {\n return {\n droppableId: droppableId,\n type: type,\n isUsingCloneFor: isUsingCloneFor\n };\n }, [droppableId, isUsingCloneFor, type]);\n\n function getClone() {\n if (!useClone) {\n return null;\n }\n\n var dragging = useClone.dragging,\n render = useClone.render;\n var node = React.createElement(PrivateDraggable, {\n draggableId: dragging.draggableId,\n index: dragging.source.index,\n isClone: true,\n isEnabled: true,\n shouldRespectForcePress: false,\n canDragInteractiveElements: true\n }, function (draggableProvided, draggableSnapshot) {\n return render(draggableProvided, draggableSnapshot, dragging);\n });\n return ReactDOM.createPortal(node, getContainerForClone());\n }\n\n return React.createElement(DroppableContext.Provider, {\n value: droppableContext\n }, children(provided, snapshot), getClone());\n}\n\nvar isMatchingType = function isMatchingType(type, critical) {\n return type === critical.droppable.type;\n};\n\nvar getDraggable = function getDraggable(critical, dimensions) {\n return dimensions.draggables[critical.draggable.id];\n};\n\nvar makeMapStateToProps$1 = function makeMapStateToProps() {\n var idleWithAnimation = {\n placeholder: null,\n shouldAnimatePlaceholder: true,\n snapshot: {\n isDraggingOver: false,\n draggingOverWith: null,\n draggingFromThisWith: null,\n isUsingPlaceholder: false\n },\n useClone: null\n };\n\n var idleWithoutAnimation = _extends({}, idleWithAnimation, {\n shouldAnimatePlaceholder: false\n });\n\n var getDraggableRubric = memoizeOne(function (descriptor) {\n return {\n draggableId: descriptor.id,\n type: descriptor.type,\n source: {\n index: descriptor.index,\n droppableId: descriptor.droppableId\n }\n };\n });\n var getMapProps = memoizeOne(function (id, isEnabled, isDraggingOverForConsumer, isDraggingOverForImpact, dragging, renderClone) {\n var draggableId = dragging.descriptor.id;\n var isHome = dragging.descriptor.droppableId === id;\n\n if (isHome) {\n var useClone = renderClone ? {\n render: renderClone,\n dragging: getDraggableRubric(dragging.descriptor)\n } : null;\n var _snapshot = {\n isDraggingOver: isDraggingOverForConsumer,\n draggingOverWith: isDraggingOverForConsumer ? draggableId : null,\n draggingFromThisWith: draggableId,\n isUsingPlaceholder: true\n };\n return {\n placeholder: dragging.placeholder,\n shouldAnimatePlaceholder: false,\n snapshot: _snapshot,\n useClone: useClone\n };\n }\n\n if (!isEnabled) {\n return idleWithoutAnimation;\n }\n\n if (!isDraggingOverForImpact) {\n return idleWithAnimation;\n }\n\n var snapshot = {\n isDraggingOver: isDraggingOverForConsumer,\n draggingOverWith: draggableId,\n draggingFromThisWith: null,\n isUsingPlaceholder: true\n };\n return {\n placeholder: dragging.placeholder,\n shouldAnimatePlaceholder: true,\n snapshot: snapshot,\n useClone: null\n };\n });\n\n var selector = function selector(state, ownProps) {\n var id = ownProps.droppableId;\n var type = ownProps.type;\n var isEnabled = !ownProps.isDropDisabled;\n var renderClone = ownProps.renderClone;\n\n if (state.isDragging) {\n var critical = state.critical;\n\n if (!isMatchingType(type, critical)) {\n return idleWithoutAnimation;\n }\n\n var dragging = getDraggable(critical, state.dimensions);\n var isDraggingOver = whatIsDraggedOver(state.impact) === id;\n return getMapProps(id, isEnabled, isDraggingOver, isDraggingOver, dragging, renderClone);\n }\n\n if (state.phase === 'DROP_ANIMATING') {\n var completed = state.completed;\n\n if (!isMatchingType(type, completed.critical)) {\n return idleWithoutAnimation;\n }\n\n var _dragging = getDraggable(completed.critical, state.dimensions);\n\n return getMapProps(id, isEnabled, whatIsDraggedOverFromResult(completed.result) === id, whatIsDraggedOver(completed.impact) === id, _dragging, renderClone);\n }\n\n if (state.phase === 'IDLE' && state.completed && !state.shouldFlush) {\n var _completed = state.completed;\n\n if (!isMatchingType(type, _completed.critical)) {\n return idleWithoutAnimation;\n }\n\n var wasOver = whatIsDraggedOver(_completed.impact) === id;\n var wasCombining = Boolean(_completed.impact.at && _completed.impact.at.type === 'COMBINE');\n var isHome = _completed.critical.droppable.id === id;\n\n if (wasOver) {\n return wasCombining ? idleWithAnimation : idleWithoutAnimation;\n }\n\n if (isHome) {\n return idleWithAnimation;\n }\n\n return idleWithoutAnimation;\n }\n\n return idleWithoutAnimation;\n };\n\n return selector;\n};\nvar mapDispatchToProps$1 = {\n updateViewportMaxScroll: updateViewportMaxScroll\n};\n\nfunction getBody() {\n !document.body ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'document.body is not ready') : invariant(false) : void 0;\n return document.body;\n}\n\nvar defaultProps = {\n mode: 'standard',\n type: 'DEFAULT',\n direction: 'vertical',\n isDropDisabled: false,\n isCombineEnabled: false,\n ignoreContainerClipping: false,\n renderClone: null,\n getContainerForClone: getBody\n};\nvar ConnectedDroppable = connect(makeMapStateToProps$1, mapDispatchToProps$1, null, {\n context: StoreContext,\n pure: true,\n areStatePropsEqual: isStrictEqual\n})(Droppable);\nConnectedDroppable.defaultProps = defaultProps;\n\nexport { DragDropContext, PublicDraggable as Draggable, ConnectedDroppable as Droppable, resetServerContext, useKeyboardSensor, useMouseSensor, useTouchSensor };\n","/** @license React v17.0.2\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var b=60103,c=60106,d=60107,e=60108,f=60114,g=60109,h=60110,k=60112,l=60113,m=60120,n=60115,p=60116,q=60121,r=60122,u=60117,v=60129,w=60131;\nif(\"function\"===typeof Symbol&&Symbol.for){var x=Symbol.for;b=x(\"react.element\");c=x(\"react.portal\");d=x(\"react.fragment\");e=x(\"react.strict_mode\");f=x(\"react.profiler\");g=x(\"react.provider\");h=x(\"react.context\");k=x(\"react.forward_ref\");l=x(\"react.suspense\");m=x(\"react.suspense_list\");n=x(\"react.memo\");p=x(\"react.lazy\");q=x(\"react.block\");r=x(\"react.server.block\");u=x(\"react.fundamental\");v=x(\"react.debug_trace_mode\");w=x(\"react.legacy_hidden\")}\nfunction y(a){if(\"object\"===typeof a&&null!==a){var t=a.$$typeof;switch(t){case b:switch(a=a.type,a){case d:case f:case e:case l:case m:return a;default:switch(a=a&&a.$$typeof,a){case h:case k:case p:case n:case g:return a;default:return t}}case c:return t}}}var z=g,A=b,B=k,C=d,D=p,E=n,F=c,G=f,H=e,I=l;exports.ContextConsumer=h;exports.ContextProvider=z;exports.Element=A;exports.ForwardRef=B;exports.Fragment=C;exports.Lazy=D;exports.Memo=E;exports.Portal=F;exports.Profiler=G;exports.StrictMode=H;\nexports.Suspense=I;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return y(a)===h};exports.isContextProvider=function(a){return y(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return y(a)===k};exports.isFragment=function(a){return y(a)===d};exports.isLazy=function(a){return y(a)===p};exports.isMemo=function(a){return y(a)===n};\nexports.isPortal=function(a){return y(a)===c};exports.isProfiler=function(a){return y(a)===f};exports.isStrictMode=function(a){return y(a)===e};exports.isSuspense=function(a){return y(a)===l};exports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===v||a===e||a===l||a===m||a===w||\"object\"===typeof a&&null!==a&&(a.$$typeof===p||a.$$typeof===n||a.$$typeof===g||a.$$typeof===h||a.$$typeof===k||a.$$typeof===u||a.$$typeof===q||a[0]===r)?!0:!1};\nexports.typeOf=y;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","module.exports=function(e){var t={};function n(l){if(t[l])return t[l].exports;var r=t[l]={i:l,l:!1,exports:{}};return e[l].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=e,n.c=t,n.d=function(e,t,l){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:l})},n.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var l=Object.create(null);if(n.r(l),Object.defineProperty(l,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var r in e)n.d(l,r,function(t){return e[t]}.bind(null,r));return l},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,\"a\",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=\"\",n(n.s=50)}([function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});t.INITIALISE=\"INITIALISE\",t.UPDATE_VIA_PROPS=\"UPDATE_VIA_PROPS\",t.SET_IS_DRAGGING=\"SET_IS_DRAGGING\",t.SET_OPTIONS_PANEL_OPEN=\"SET_OPTIONS_PANEL_OPEN\",t.SET_OPTIONS_PANEL_CLOSED=\"SET_OPTIONS_PANEL_CLOSED\",t.SET_SINGLESELECT_OPTIONS=\"SET_SINGLESELECT_OPTIONS\",t.SET_MULTISELECT_OPTIONS=\"SET_MULTISELECT_OPTIONS\",t.SET_OPTIONS_PANEL_CLOSED_NO_SELECTION=\"SET_OPTIONS_PANEL_CLOSED_NO_SELECTION\",t.SET_OPTIONS_PANEL_CLOSED_ONBLUR=\"SET_OPTIONS_PANEL_CLOSED_ONBLUR\",t.SET_NEXT_SELECTED_INDEX=\"SET_NEXT_SELECTED_INDEX\",t.SET_NEXT_SELECTED_INDEX_ALPHA_NUMERIC=\"SET_NEXT_SELECTED_INDEX_ALPHA_NUMERIC\"},function(e,t,n){e.exports=n(37)()},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var l=n(38);Object.defineProperty(t,\"ReactResponsiveSelectProps\",{enumerable:!0,get:function(){return l.ReactResponsiveSelectProps}});var r=n(35);Object.defineProperty(t,\"MultiSelectProps\",{enumerable:!0,get:function(){return r.MultiSelectProps}});var o=n(34);Object.defineProperty(t,\"MultiSelectOptionProps\",{enumerable:!0,get:function(){return o.MultiSelectOptionProps}});var a=n(33);Object.defineProperty(t,\"SingleSelectProps\",{enumerable:!0,get:function(){return a.SingleSelectProps}});var i=n(32);Object.defineProperty(t,\"SingleSelectOptionProps\",{enumerable:!0,get:function(){return i.SingleSelectOptionProps}})},function(e,t){e.exports=require(\"singleline\")},function(e,t){e.exports=require(\"lodash.isequal\")},function(e,t){e.exports=require(\"react\")},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.nextValidIndex=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:\"INCREMENT\",l=e.options,r=l.reduce(function(e,t,n){return t.optHeader||e.push(n),e},[]),o=-1===r.indexOf(t);if(o&&\"INCREMENT\"===n){var a=l[t+1]&&!l[t+1].optHeader;return a?t+1:r[0]}if(o&&\"DECREMENT\"===n){var i=l[t-1]&&!l[t-1].optHeader;return i?t-1:r[r.length-1]}return t}},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default={multiselect:!1,name:void 0,options:[],isDragging:!1,isOptionsPanelOpen:!1,altered:!1,singleSelectInitialIndex:0,singleSelectSelectedIndex:0,singleSelectSelectedOption:{},nextPotentialSelectionIndex:0,multiSelectInitialSelectedIndexes:[0],multiSelectSelectedOptions:{options:[]},multiSelectSelectedIndexes:[]}},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e){var t=e.state,n=e.ReactResponsiveSelectClassRef,o=e.type,a=t.isOptionsPanelOpen,i=t.disabled;t.hasOptHeaders;if(i)return;n.updateState({type:r.SET_NEXT_SELECTED_INDEX,optionIndex:(0,l.default)(o,t)}),!1===a&&n.updateState({type:r.SET_OPTIONS_PANEL_OPEN})};var l=function(e){return e&&e.__esModule?e:{default:e}}(n(41)),r=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(0))},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var l=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(0));t.default=function(e){var t=e.event,n=e.state,r=e.props,o=e.ReactResponsiveSelectClassRef,a=n.multiselect,i=n.isOptionsPanelOpen,u=n.nextPotentialSelectionIndex,s=n.disabled,c=n.options;if(!s){var d=parseFloat(t.target.getAttribute(\"data-key\"));c[d]&&!0===c[d].disabled||c[d]&&!0===c[d].optHeader||(a?o.updateState({type:l.SET_MULTISELECT_OPTIONS,optionIndex:u}):o.updateState({type:l.SET_SINGLESELECT_OPTIONS,optionIndex:u}),i?t.stopPropagation():r.onSubmit())}}},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e){var t=e.event,n=e.state,o=e.ReactResponsiveSelectClassRef,a=n.multiselect,i=n.isOptionsPanelOpen,u=n.isDragging,s=n.disabled,c=n.options;if(s)return;if(!1===u){if(t.preventDefault(),t&&(0,l.default)(t.target,\"rrs__options\"))return;var d=parseFloat(t.target.getAttribute(\"data-key\"));if(c[d]&&!0===c[d].disabled||c[d]&&!0===c[d].optHeader)return;if((0,l.default)(t.target,\"rrs__option\"))return void o.updateState({type:a?r.SET_MULTISELECT_OPTIONS:r.SET_SINGLESELECT_OPTIONS,optionIndex:d});if(i&&((0,l.default)(t.target,\"rrs__label\")||(0,l.default)(t.target,\"rrs\")))return void o.updateState({type:r.SET_OPTIONS_PANEL_CLOSED_NO_SELECTION},function(){return o.focusButton()});o.updateState({type:i?r.SET_OPTIONS_PANEL_CLOSED:r.SET_OPTIONS_PANEL_OPEN},function(e){!1===e.isOptionsPanelOpen&&o.focusButton()})}};var l=function(e){return e&&e.__esModule?e:{default:e}}(n(45)),r=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(0))},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.singleSelectBroadcastChange=t.multiSelectBroadcastChange=void 0;var l=o(n(47)),r=o(n(46));function o(e){return e&&e.__esModule?e:{default:e}}t.multiSelectBroadcastChange=l.default,t.singleSelectBroadcastChange=r.default},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var l=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(0));t.default=function(e){var t=e.event,n=e.state,r=e.ReactResponsiveSelectClassRef,o=n.options;if(!n.disabled){var a=o.map(function(e){return e.text.toLowerCase().charAt(0)}).indexOf(t.key);a>-1&&r.updateState({type:l.SET_NEXT_SELECTED_INDEX_ALPHA_NUMERIC,optionIndex:a})}}},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var l=function(){function e(e,t){for(var n=0;n0&&d.map(function(t,n){return t.optHeader&&(S=t.text||t.markup.textContent),o.default.createElement(u.default,{key:n,optHeaderLabel:S,optionsContainerRef:e.optionsContainer,index:n,isDragging:i,isOptionsPanelOpen:r,option:t,singleSelectSelectedIndex:f,nextPotentialSelectionIndex:c})})))}}]),t}();t.default=c,c.propTypes=i.SingleSelectProps},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var l=function(){function e(e,t){for(var n=0;n0?d.options[0].text:\"\")),d.options.length>1&&o.default.createElement(\"span\",{className:\"rrs__multiselect-label__badge\"},\"+ \"+(d.options.length-1)))),n&&n),f&&o.default.createElement(\"input\",{type:\"hidden\",name:f,value:[d.options.map(function(e){return e.value})].join(\",\")})),o.default.createElement(\"ul\",{id:\"rrs-\"+f+\"-menu\",\"aria-labelledby\":\"rrs-\"+f+\"-label\",role:\"menu\",className:\"rrs__options\",ref:this.optionsContainer},p.length>0&&p.map(function(t,n){return t.optHeader&&(O=t.text||t.markup.textContent),o.default.createElement(u.default,{key:n,optHeaderLabel:O,optionsContainerRef:e.optionsContainer,index:n,option:t,isDragging:i,isOptionsPanelOpen:s,multiSelectSelectedIndexes:c,nextPotentialSelectionIndex:S})})))}}]),t}();t.default=c,c.propTypes=i.MultiSelectProps},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var l=Object.assign||function(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=-1===t?0:t;if(e.options[n]&&e.options[n].optHeader){var r=function(e){if(e.singleSelectSelectedOption)return e.singleSelectSelectedOption;return e.options.reduce(function(e,t){return t.optHeader||e.push(t),e},[])[0]}(e);return l({name:e.name},r)}if(!e.noSelectionLabel)return l({name:e.name},e.options[n]);return t>-1?l({name:e.name},e.options[t]):{name:e.name,text:e.noSelectionLabel,value:\"null\"}}},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var l=Object.assign||function(e){for(var t=1;t0?e.options.filter(function(t){return e.selectedValues.some(function(e){return e===t.value})}).map(function(t){return l({name:e.name},t)}):[{name:e.name,text:e.noSelectionLabel,value:\"null\"}]}},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=arguments[2],r=e.options.map(function(e,n){return t.some(function(t){return e.value===t})?n:void 0}).filter(function(e){return void 0!==e}),o=n?[]:[(0,l.nextValidIndex)(e,0)];return r.length?r:o};var l=n(6)},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e){var t=e.options,n=e.selectedValue,l=e.noSelectionLabel,r=n?t.map(function(e){return e.value}).indexOf(n):-1;return r>-1||l?r:0}},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.resetMultiSelectState=t.getSingleSelectSelectedOption=t.getInitialMultiSelectOption=t.mergeIsAlteredState=t.removeMultiSelectOption=t.addMultiSelectOption=t.removeMultiSelectIndex=t.addMultiSelectIndex=t.getMultiSelectInitialSelectedOptions=t.getMultiSelectSelectedValueIndexes=t.getSelectedValueIndex=void 0;var l=S(n(27)),r=S(n(26)),o=S(n(25)),a=S(n(24)),i=S(n(23)),u=S(n(22)),s=S(n(21)),c=S(n(20)),d=S(n(19)),f=S(n(18)),p=S(n(17));function S(e){return e&&e.__esModule?e:{default:e}}t.getSelectedValueIndex=l.default,t.getMultiSelectSelectedValueIndexes=r.default,t.getMultiSelectInitialSelectedOptions=o.default,t.addMultiSelectIndex=a.default,t.removeMultiSelectIndex=i.default,t.addMultiSelectOption=u.default,t.removeMultiSelectOption=s.default,t.mergeIsAlteredState=c.default,t.getInitialMultiSelectOption=d.default,t.getSingleSelectSelectedOption=f.default,t.resetMultiSelectState=p.default},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var l=Object.assign||function(e){for(var t=1;t0&&!d&&0===t.optionIndex,p=d&&0!==t.optionIndex;if(f){var S=(0,a.getInitialMultiSelectOption)(e);return(0,a.mergeIsAlteredState)(S)}p&&(e=(0,a.resetMultiSelectState)(e))}e.noSelectionLabel&&e.multiSelectSelectedOptions.options[0].text===e.noSelectionLabel&&(e.multiSelectSelectedOptions.options=[]);var _=(0,o.nextValidIndex)(e,t.optionIndex),O=e.multiSelectSelectedIndexes.indexOf(_),v=l({},e,{nextPotentialSelectionIndex:_,multiSelectSelectedIndexes:-1===O?(0,a.addMultiSelectIndex)(e,_):(0,a.removeMultiSelectIndex)(e,O),multiSelectSelectedOptions:-1===O?(0,a.addMultiSelectOption)(e,_):(0,a.removeMultiSelectOption)(e,O)});if(0===v.multiSelectSelectedOptions.options.length)if(e.noSelectionLabel){var b=(0,a.getMultiSelectSelectedValueIndexes)(e,e.selectedValues);v=l({},v,{nextPotentialSelectionIndex:e.hasOptHeaders?(0,o.nextValidIndex)(e,-1):-1,multiSelectSelectedOptions:{options:(0,a.getMultiSelectInitialSelectedOptions)(e,b)}})}else v=(0,a.getInitialMultiSelectOption)(e);return(0,a.mergeIsAlteredState)(v);default:return e}};var r=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(0)),o=n(6),a=n(28)},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e){var t=e.state,n=e.props,l=n.multiselect,r=n.customLabelRenderer,o=t.multiSelectSelectedOptions,a=t.singleSelectSelectedOption;return!!r&&r(l?o:a)}},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});\"function\"==typeof Symbol&&Symbol.iterator;t.default=function(e,t,n){0}},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.SingleSelectOptionProps=void 0;var l=function(e){return e&&e.__esModule?e:{default:e}}(n(1));t.SingleSelectOptionProps={index:l.default.number.isRequired,isOptionsPanelOpen:l.default.bool.isRequired,nextPotentialSelectionIndex:l.default.number,option:l.default.shape({text:l.default.string.isRequired,value:l.default.string,optHeader:l.default.bool,markup:l.default.element,disabled:l.default.bool}).isRequired,singleSelectSelectedIndex:l.default.number}},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.SingleSelectProps=void 0;var l=function(e){return e&&e.__esModule?e:{default:e}}(n(1));t.SingleSelectProps={altered:l.default.bool,caretIcon:l.default.oneOfType([l.default.string,l.default.element]),customLabelText:l.default.oneOfType([l.default.string,l.default.bool,l.default.element]),disabled:l.default.bool,singleSelectInitialIndex:l.default.number,singleSelectSelectedIndex:l.default.number,singleSelectSelectedOption:l.default.shape({text:l.default.string,value:l.default.string}),isDragging:l.default.bool,isOptionsPanelOpen:l.default.bool,name:l.default.string,nextPotentialSelectionIndex:l.default.number,onSubmit:l.default.func,options:l.default.arrayOf(l.default.shape({text:l.default.string.isRequired,value:l.default.string,optHeader:l.default.bool})).isRequired,prefix:l.default.string,noSelectionLabel:l.default.string,selectedValue:l.default.string}},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.MultiSelectOptionProps=void 0;var l=function(e){return e&&e.__esModule?e:{default:e}}(n(1));t.MultiSelectOptionProps={index:l.default.number.isRequired,isOptionsPanelOpen:l.default.bool.isRequired,multiSelectSelectedIndexes:l.default.arrayOf(l.default.number),nextPotentialSelectionIndex:l.default.number,option:l.default.shape({text:l.default.string,value:l.default.string,optHeader:l.default.bool,markup:l.default.element,disabled:l.default.bool}).isRequired}},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.MultiSelectProps=void 0;var l=function(e){return e&&e.__esModule?e:{default:e}}(n(1));t.MultiSelectProps={altered:l.default.bool,caretIcon:l.default.oneOfType([l.default.string,l.default.element]),customLabelText:l.default.oneOfType([l.default.string,l.default.bool,l.default.element]),disabled:l.default.bool,multiSelectInitialSelectedIndexes:l.default.arrayOf(l.default.number),multiSelectSelectedIndexes:l.default.arrayOf(l.default.number),multiSelectSelectedOptions:l.default.shape({altered:l.default.bool,options:l.default.arrayOf(l.default.shape({name:l.default.string,text:l.default.string,value:l.default.string,markup:l.default.object}))}),isDragging:l.default.bool,isOptionsPanelOpen:l.default.bool,name:l.default.string,nextPotentialSelectionIndex:l.default.number,onSubmit:l.default.func,options:l.default.arrayOf(l.default.shape({text:l.default.string,value:l.default.string,optHeader:l.default.bool})).isRequired,prefix:l.default.string}},function(e,t,n){\"use strict\";e.exports=\"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED\"},function(e,t,n){\"use strict\";var l=n(36);function r(){}e.exports=function(){function e(e,t,n,r,o,a){if(a!==l){var i=new Error(\"Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types\");throw i.name=\"Invariant Violation\",i}}function t(){return e}e.isRequired=e;var n={array:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t};return n.checkPropTypes=r,n.PropTypes=n,n}},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.ReactResponsiveSelectProps=void 0;var l=function(e){return e&&e.__esModule?e:{default:e}}(n(1));t.ReactResponsiveSelectProps={caretIcon:l.default.oneOfType([l.default.string,l.default.element]),customLabelRenderer:l.default.func,disabled:l.default.bool,multiselect:l.default.bool,name:l.default.string.isRequired,onChange:l.default.func,options:l.default.arrayOf(l.default.shape({text:l.default.string,value:l.default.string,optHeader:l.default.bool})).isRequired,onSubmit:l.default.func,prefix:l.default.string,selectedValue:l.default.string,noSelectionLabel:l.default.string,selectedValues:l.default.arrayOf(l.default.string.isRequired)}},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e){var t=e.state,n=e.ReactResponsiveSelectClassRef;if(t.disabled)return;n.updateState({type:l.SET_IS_DRAGGING,value:!1})};var l=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(0))},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e){var t=e.state,n=e.ReactResponsiveSelectClassRef,r=t.isDragging;if(t.disabled)return;r||n.updateState({type:l.SET_IS_DRAGGING,value:!0})};var l=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(0))},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e,t){var n=t.isOptionsPanelOpen,r=t.nextPotentialSelectionIndex,o=t.options;switch(e){case\"INCREMENT\":return!1===n?(0,l.nextValidIndex)(t,r,\"INCREMENT\"):r===o.length-1?(0,l.nextValidIndex)(t,0,\"INCREMENT\"):(0,l.nextValidIndex)(t,r+1,\"INCREMENT\");case\"DECREMENT\":return!1===n?(0,l.nextValidIndex)(t,r,\"DECREMENT\"):0===r?(0,l.nextValidIndex)(t,o.length-1,\"DECREMENT\"):(0,l.nextValidIndex)(t,r-1,\"DECREMENT\");default:return(0,l.nextValidIndex)(t,0,\"DECREMENT\")}};var l=n(6)},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e,t){e.forEach(function(e){e===t.keyCode&&t.preventDefault()})}},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default={TAB:9,ENTER:13,SPACE:32,ESCAPE:27,UP:38,DOWN:40}},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e){var t=e.event,n=e.state,c=e.props,d=e.ReactResponsiveSelectClassRef,f=n.multiselect,p=n.isOptionsPanelOpen;if(n.disabled)return;(0,o.default)([l.default.ENTER,l.default.SPACE,l.default.ESCAPE,l.default.UP,l.default.DOWN],t),/^[a-z0-9]+$/.test(t.key)&&(0,a.default)({event:t,ReactResponsiveSelectClassRef:d,state:n});switch(t.keyCode){case l.default.TAB:p&&(t.preventDefault(),f&&d.updateState({type:r.SET_OPTIONS_PANEL_CLOSED},function(){return d.focusButton()}));break;case l.default.ENTER:(0,i.default)({event:t,state:n,props:c,ReactResponsiveSelectClassRef:d});break;case l.default.SPACE:p?(0,u.default)({event:t,state:n,ReactResponsiveSelectClassRef:d}):d.updateState({type:r.SET_OPTIONS_PANEL_OPEN});break;case l.default.ESCAPE:d.updateState({type:r.SET_OPTIONS_PANEL_CLOSED_NO_SELECTION},function(){return d.focusButton()});break;case l.default.UP:(0,s.default)({state:n,ReactResponsiveSelectClassRef:d,type:\"DECREMENT\"});break;case l.default.DOWN:(0,s.default)({state:n,ReactResponsiveSelectClassRef:d,type:\"INCREMENT\"})}};var l=c(n(43)),r=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(0)),o=c(n(42)),a=c(n(12)),i=c(n(9)),u=c(n(10)),s=c(n(8));function c(e){return e&&e.__esModule?e:{default:e}}},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e,t){return String(e.className).split(\" \").indexOf(t)>-1}},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var l=function(e){return e&&e.__esModule?e:{default:e}}(n(4));t.default=function(e,t,n,r){r&&(!(0,l.default)(e,t)&&r({name:t.name,text:t.text,value:t.value,altered:n}))}},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var l=function(e){return e&&e.__esModule?e:{default:e}}(n(4));t.default=function(e,t,n,r){r&&(!(0,l.default)(e,t)&&r({options:t.map(function(e){return{name:e.name,text:e.text,value:e.value}}),altered:n}))}},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.default=function(e){var t=e.state,n=e.ReactResponsiveSelectClassRef,o=e.props,a=t.isOptionsPanelOpen,i=t.disabled,u=t.altered,s=t.singleSelectSelectedOption,c=t.multiSelectSelectedOptions,d=o.onBlur,f=o.multiselect;if(i)return;var p=n.selectBox&&!n.selectBox.contains(document.activeElement);a&&p&&n.updateState({type:l.SET_OPTIONS_PANEL_CLOSED_ONBLUR});p&&d&&(f?(0,r.multiSelectBroadcastChange)(void 0,c.options,u,d):(0,r.singleSelectBroadcastChange)(void 0,s,u,d))};var l=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(n(0)),r=n(11)},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0}),t.handleTouchStart=t.handleTouchMove=t.handleKeyUpOrDownPressed=t.handleKeyEvent=t.handleEnterPressed=t.handleClick=t.handleBlur=t.handleAlphaNumerical=void 0;var l=d(n(12)),r=d(n(48)),o=d(n(10)),a=d(n(9)),i=d(n(44)),u=d(n(8)),s=d(n(40)),c=d(n(39));function d(e){return e&&e.__esModule?e:{default:e}}t.handleAlphaNumerical=l.default,t.handleBlur=r.default,t.handleClick=o.default,t.handleEnterPressed=a.default,t.handleKeyEvent=i.default,t.handleKeyUpOrDownPressed=u.default,t.handleTouchMove=s.default,t.handleTouchStart=c.default},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var l=Object.assign||function(e){for(var t=1;t= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","/**\n * @license React\n * use-sync-external-store-shim.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var e=require(\"react\");function h(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var k=\"function\"===typeof Object.is?Object.is:h,l=e.useState,m=e.useEffect,n=e.useLayoutEffect,p=e.useDebugValue;function q(a,b){var d=b(),f=l({inst:{value:d,getSnapshot:b}}),c=f[0].inst,g=f[1];n(function(){c.value=d;c.getSnapshot=b;r(c)&&g({inst:c})},[a,d,b]);m(function(){r(c)&&g({inst:c});return a(function(){r(c)&&g({inst:c})})},[a]);p(d);return d}\nfunction r(a){var b=a.getSnapshot;a=a.value;try{var d=b();return!k(a,d)}catch(f){return!0}}function t(a,b){return b()}var u=\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement?t:q;exports.useSyncExternalStore=void 0!==e.useSyncExternalStore?e.useSyncExternalStore:u;\n","/**\n * @license React\n * use-sync-external-store-shim/with-selector.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var h=require(\"react\"),n=require(\"use-sync-external-store/shim\");function p(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var q=\"function\"===typeof Object.is?Object.is:p,r=n.useSyncExternalStore,t=h.useRef,u=h.useEffect,v=h.useMemo,w=h.useDebugValue;\nexports.useSyncExternalStoreWithSelector=function(a,b,e,l,g){var c=t(null);if(null===c.current){var f={hasValue:!1,value:null};c.current=f}else f=c.current;c=v(function(){function a(a){if(!c){c=!0;d=a;a=l(a);if(void 0!==g&&f.hasValue){var b=f.value;if(g(b,a))return k=b}return k=a}b=k;if(q(d,a))return b;var e=l(a);if(void 0!==g&&g(b,e))return b;d=a;return k=e}var c=!1,d,k,m=void 0===e?null:e;return[function(){return a(b())},null===m?void 0:function(){return a(m())}]},[b,e,l,g]);var d=r(a,c[0],c[1]);\nu(function(){f.hasValue=!0;f.value=d},[d]);w(d);return d};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim.production.min.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim.development.js');\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.production.min.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.development.js');\n}\n","'use strict';\nvar makeBuiltIn = require('../internals/make-built-in');\nvar defineProperty = require('../internals/object-define-property');\n\nmodule.exports = function (target, name, descriptor) {\n if (descriptor.get) makeBuiltIn(descriptor.get, name, { getter: true });\n if (descriptor.set) makeBuiltIn(descriptor.set, name, { setter: true });\n return defineProperty.f(target, name, descriptor);\n};\n","'use strict';\nvar anObject = require('../internals/an-object');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.hasIndices) result += 'd';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.dotAll) result += 's';\n if (that.unicode) result += 'u';\n if (that.unicodeSets) result += 'v';\n if (that.sticky) result += 'y';\n return result;\n};\n","'use strict';\nvar global = require('../internals/global');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar regExpFlags = require('../internals/regexp-flags');\nvar fails = require('../internals/fails');\n\n// babel-minify and Closure Compiler transpiles RegExp('.', 'd') -> /./d and it causes SyntaxError\nvar RegExp = global.RegExp;\nvar RegExpPrototype = RegExp.prototype;\n\nvar FORCED = DESCRIPTORS && fails(function () {\n var INDICES_SUPPORT = true;\n try {\n RegExp('.', 'd');\n } catch (error) {\n INDICES_SUPPORT = false;\n }\n\n var O = {};\n // modern V8 bug\n var calls = '';\n var expected = INDICES_SUPPORT ? 'dgimsy' : 'gimsy';\n\n var addGetter = function (key, chr) {\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty(O, key, { get: function () {\n calls += chr;\n return true;\n } });\n };\n\n var pairs = {\n dotAll: 's',\n global: 'g',\n ignoreCase: 'i',\n multiline: 'm',\n sticky: 'y'\n };\n\n if (INDICES_SUPPORT) pairs.hasIndices = 'd';\n\n for (var key in pairs) addGetter(key, pairs[key]);\n\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n var result = Object.getOwnPropertyDescriptor(RegExpPrototype, 'flags').get.call(O);\n\n return result !== expected || calls !== expected;\n});\n\n// `RegExp.prototype.flags` getter\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nif (FORCED) defineBuiltInAccessor(RegExpPrototype, 'flags', {\n configurable: true,\n get: regExpFlags\n});\n","import { isReference, isField, DeepMerger, resultKeyNameFromField, shouldInclude, isNonNullObject, compact, createFragmentMap, getFragmentDefinitions, } from \"../../utilities/index.js\";\nexport var hasOwn = Object.prototype.hasOwnProperty;\nexport function isNullish(value) {\n return value === null || value === void 0;\n}\nexport var isArray = Array.isArray;\nexport function defaultDataIdFromObject(_a, context) {\n var __typename = _a.__typename, id = _a.id, _id = _a._id;\n if (typeof __typename === \"string\") {\n if (context) {\n context.keyObject =\n !isNullish(id) ? { id: id } :\n !isNullish(_id) ? { _id: _id } :\n void 0;\n }\n if (isNullish(id) && !isNullish(_id)) {\n id = _id;\n }\n if (!isNullish(id)) {\n return \"\".concat(__typename, \":\").concat((typeof id === \"number\" ||\n typeof id === \"string\") ? id : JSON.stringify(id));\n }\n }\n}\nvar defaultConfig = {\n dataIdFromObject: defaultDataIdFromObject,\n addTypename: true,\n resultCaching: true,\n canonizeResults: false,\n};\nexport function normalizeConfig(config) {\n return compact(defaultConfig, config);\n}\nexport function shouldCanonizeResults(config) {\n var value = config.canonizeResults;\n return value === void 0 ? defaultConfig.canonizeResults : value;\n}\nexport function getTypenameFromStoreObject(store, objectOrReference) {\n return isReference(objectOrReference)\n ? store.get(objectOrReference.__ref, \"__typename\")\n : objectOrReference && objectOrReference.__typename;\n}\nexport var TypeOrFieldNameRegExp = /^[_a-z][_0-9a-z]*/i;\nexport function fieldNameFromStoreName(storeFieldName) {\n var match = storeFieldName.match(TypeOrFieldNameRegExp);\n return match ? match[0] : storeFieldName;\n}\nexport function selectionSetMatchesResult(selectionSet, result, variables) {\n if (isNonNullObject(result)) {\n return isArray(result)\n ? result.every(function (item) { return selectionSetMatchesResult(selectionSet, item, variables); })\n : selectionSet.selections.every(function (field) {\n if (isField(field) && shouldInclude(field, variables)) {\n var key = resultKeyNameFromField(field);\n return hasOwn.call(result, key) &&\n (!field.selectionSet ||\n selectionSetMatchesResult(field.selectionSet, result[key], variables));\n }\n return true;\n });\n }\n return false;\n}\nexport function storeValueIsStoreObject(value) {\n return isNonNullObject(value) &&\n !isReference(value) &&\n !isArray(value);\n}\nexport function makeProcessedFieldsMerger() {\n return new DeepMerger;\n}\nexport function extractFragmentContext(document, fragments) {\n var fragmentMap = createFragmentMap(getFragmentDefinitions(document));\n return {\n fragmentMap: fragmentMap,\n lookupFragment: function (name) {\n var def = fragmentMap[name];\n if (!def && fragments) {\n def = fragments.lookup(name);\n }\n return def || null;\n },\n };\n}\n//# sourceMappingURL=helpers.js.map","import { __assign, __rest } from \"tslib\";\nimport { wrap } from 'optimism';\nimport { getFragmentQueryDocument, } from \"../../utilities/index.js\";\nvar ApolloCache = (function () {\n function ApolloCache() {\n this.getFragmentDoc = wrap(getFragmentQueryDocument);\n }\n ApolloCache.prototype.batch = function (options) {\n var _this = this;\n var optimisticId = typeof options.optimistic === \"string\" ? options.optimistic :\n options.optimistic === false ? null : void 0;\n var updateResult;\n this.performTransaction(function () { return updateResult = options.update(_this); }, optimisticId);\n return updateResult;\n };\n ApolloCache.prototype.recordOptimisticTransaction = function (transaction, optimisticId) {\n this.performTransaction(transaction, optimisticId);\n };\n ApolloCache.prototype.transformDocument = function (document) {\n return document;\n };\n ApolloCache.prototype.transformForLink = function (document) {\n return document;\n };\n ApolloCache.prototype.identify = function (object) {\n return;\n };\n ApolloCache.prototype.gc = function () {\n return [];\n };\n ApolloCache.prototype.modify = function (options) {\n return false;\n };\n ApolloCache.prototype.readQuery = function (options, optimistic) {\n if (optimistic === void 0) { optimistic = !!options.optimistic; }\n return this.read(__assign(__assign({}, options), { rootId: options.id || 'ROOT_QUERY', optimistic: optimistic }));\n };\n ApolloCache.prototype.readFragment = function (options, optimistic) {\n if (optimistic === void 0) { optimistic = !!options.optimistic; }\n return this.read(__assign(__assign({}, options), { query: this.getFragmentDoc(options.fragment, options.fragmentName), rootId: options.id, optimistic: optimistic }));\n };\n ApolloCache.prototype.writeQuery = function (_a) {\n var id = _a.id, data = _a.data, options = __rest(_a, [\"id\", \"data\"]);\n return this.write(Object.assign(options, {\n dataId: id || 'ROOT_QUERY',\n result: data,\n }));\n };\n ApolloCache.prototype.writeFragment = function (_a) {\n var id = _a.id, data = _a.data, fragment = _a.fragment, fragmentName = _a.fragmentName, options = __rest(_a, [\"id\", \"data\", \"fragment\", \"fragmentName\"]);\n return this.write(Object.assign(options, {\n query: this.getFragmentDoc(fragment, fragmentName),\n dataId: id,\n result: data,\n }));\n };\n ApolloCache.prototype.updateQuery = function (options, update) {\n return this.batch({\n update: function (cache) {\n var value = cache.readQuery(options);\n var data = update(value);\n if (data === void 0 || data === null)\n return value;\n cache.writeQuery(__assign(__assign({}, options), { data: data }));\n return data;\n },\n });\n };\n ApolloCache.prototype.updateFragment = function (options, update) {\n return this.batch({\n update: function (cache) {\n var value = cache.readFragment(options);\n var data = update(value);\n if (data === void 0 || data === null)\n return value;\n cache.writeFragment(__assign(__assign({}, options), { data: data }));\n return data;\n },\n });\n };\n return ApolloCache;\n}());\nexport { ApolloCache };\n//# sourceMappingURL=cache.js.map","import { __extends } from \"tslib\";\nvar MissingFieldError = (function (_super) {\n __extends(MissingFieldError, _super);\n function MissingFieldError(message, path, query, variables) {\n var _a;\n var _this = _super.call(this, message) || this;\n _this.message = message;\n _this.path = path;\n _this.query = query;\n _this.variables = variables;\n if (Array.isArray(_this.path)) {\n _this.missing = _this.message;\n for (var i = _this.path.length - 1; i >= 0; --i) {\n _this.missing = (_a = {}, _a[_this.path[i]] = _this.missing, _a);\n }\n }\n else {\n _this.missing = _this.path;\n }\n _this.__proto__ = MissingFieldError.prototype;\n return _this;\n }\n return MissingFieldError;\n}(Error));\nexport { MissingFieldError };\n//# sourceMappingURL=common.js.map","import { __assign, __extends, __rest } from \"tslib\";\nimport { invariant } from \"../../utilities/globals/index.js\";\nimport { dep } from 'optimism';\nimport { equal } from '@wry/equality';\nimport { Trie } from '@wry/trie';\nimport { isReference, makeReference, DeepMerger, maybeDeepFreeze, canUseWeakMap, isNonNullObject, } from \"../../utilities/index.js\";\nimport { hasOwn, fieldNameFromStoreName } from \"./helpers.js\";\nvar DELETE = Object.create(null);\nvar delModifier = function () { return DELETE; };\nvar INVALIDATE = Object.create(null);\nvar EntityStore = (function () {\n function EntityStore(policies, group) {\n var _this = this;\n this.policies = policies;\n this.group = group;\n this.data = Object.create(null);\n this.rootIds = Object.create(null);\n this.refs = Object.create(null);\n this.getFieldValue = function (objectOrReference, storeFieldName) { return maybeDeepFreeze(isReference(objectOrReference)\n ? _this.get(objectOrReference.__ref, storeFieldName)\n : objectOrReference && objectOrReference[storeFieldName]); };\n this.canRead = function (objOrRef) {\n return isReference(objOrRef)\n ? _this.has(objOrRef.__ref)\n : typeof objOrRef === \"object\";\n };\n this.toReference = function (objOrIdOrRef, mergeIntoStore) {\n if (typeof objOrIdOrRef === \"string\") {\n return makeReference(objOrIdOrRef);\n }\n if (isReference(objOrIdOrRef)) {\n return objOrIdOrRef;\n }\n var id = _this.policies.identify(objOrIdOrRef)[0];\n if (id) {\n var ref = makeReference(id);\n if (mergeIntoStore) {\n _this.merge(id, objOrIdOrRef);\n }\n return ref;\n }\n };\n }\n EntityStore.prototype.toObject = function () {\n return __assign({}, this.data);\n };\n EntityStore.prototype.has = function (dataId) {\n return this.lookup(dataId, true) !== void 0;\n };\n EntityStore.prototype.get = function (dataId, fieldName) {\n this.group.depend(dataId, fieldName);\n if (hasOwn.call(this.data, dataId)) {\n var storeObject = this.data[dataId];\n if (storeObject && hasOwn.call(storeObject, fieldName)) {\n return storeObject[fieldName];\n }\n }\n if (fieldName === \"__typename\" &&\n hasOwn.call(this.policies.rootTypenamesById, dataId)) {\n return this.policies.rootTypenamesById[dataId];\n }\n if (this instanceof Layer) {\n return this.parent.get(dataId, fieldName);\n }\n };\n EntityStore.prototype.lookup = function (dataId, dependOnExistence) {\n if (dependOnExistence)\n this.group.depend(dataId, \"__exists\");\n if (hasOwn.call(this.data, dataId)) {\n return this.data[dataId];\n }\n if (this instanceof Layer) {\n return this.parent.lookup(dataId, dependOnExistence);\n }\n if (this.policies.rootTypenamesById[dataId]) {\n return Object.create(null);\n }\n };\n EntityStore.prototype.merge = function (older, newer) {\n var _this = this;\n var dataId;\n if (isReference(older))\n older = older.__ref;\n if (isReference(newer))\n newer = newer.__ref;\n var existing = typeof older === \"string\"\n ? this.lookup(dataId = older)\n : older;\n var incoming = typeof newer === \"string\"\n ? this.lookup(dataId = newer)\n : newer;\n if (!incoming)\n return;\n __DEV__ ? invariant(typeof dataId === \"string\", \"store.merge expects a string ID\") : invariant(typeof dataId === \"string\", 1);\n var merged = new DeepMerger(storeObjectReconciler).merge(existing, incoming);\n this.data[dataId] = merged;\n if (merged !== existing) {\n delete this.refs[dataId];\n if (this.group.caching) {\n var fieldsToDirty_1 = Object.create(null);\n if (!existing)\n fieldsToDirty_1.__exists = 1;\n Object.keys(incoming).forEach(function (storeFieldName) {\n if (!existing || existing[storeFieldName] !== merged[storeFieldName]) {\n fieldsToDirty_1[storeFieldName] = 1;\n var fieldName = fieldNameFromStoreName(storeFieldName);\n if (fieldName !== storeFieldName &&\n !_this.policies.hasKeyArgs(merged.__typename, fieldName)) {\n fieldsToDirty_1[fieldName] = 1;\n }\n if (merged[storeFieldName] === void 0 && !(_this instanceof Layer)) {\n delete merged[storeFieldName];\n }\n }\n });\n if (fieldsToDirty_1.__typename &&\n !(existing && existing.__typename) &&\n this.policies.rootTypenamesById[dataId] === merged.__typename) {\n delete fieldsToDirty_1.__typename;\n }\n Object.keys(fieldsToDirty_1).forEach(function (fieldName) { return _this.group.dirty(dataId, fieldName); });\n }\n }\n };\n EntityStore.prototype.modify = function (dataId, fields) {\n var _this = this;\n var storeObject = this.lookup(dataId);\n if (storeObject) {\n var changedFields_1 = Object.create(null);\n var needToMerge_1 = false;\n var allDeleted_1 = true;\n var sharedDetails_1 = {\n DELETE: DELETE,\n INVALIDATE: INVALIDATE,\n isReference: isReference,\n toReference: this.toReference,\n canRead: this.canRead,\n readField: function (fieldNameOrOptions, from) { return _this.policies.readField(typeof fieldNameOrOptions === \"string\" ? {\n fieldName: fieldNameOrOptions,\n from: from || makeReference(dataId),\n } : fieldNameOrOptions, { store: _this }); },\n };\n Object.keys(storeObject).forEach(function (storeFieldName) {\n var fieldName = fieldNameFromStoreName(storeFieldName);\n var fieldValue = storeObject[storeFieldName];\n if (fieldValue === void 0)\n return;\n var modify = typeof fields === \"function\"\n ? fields\n : fields[storeFieldName] || fields[fieldName];\n if (modify) {\n var newValue = modify === delModifier ? DELETE :\n modify(maybeDeepFreeze(fieldValue), __assign(__assign({}, sharedDetails_1), { fieldName: fieldName, storeFieldName: storeFieldName, storage: _this.getStorage(dataId, storeFieldName) }));\n if (newValue === INVALIDATE) {\n _this.group.dirty(dataId, storeFieldName);\n }\n else {\n if (newValue === DELETE)\n newValue = void 0;\n if (newValue !== fieldValue) {\n changedFields_1[storeFieldName] = newValue;\n needToMerge_1 = true;\n fieldValue = newValue;\n }\n }\n }\n if (fieldValue !== void 0) {\n allDeleted_1 = false;\n }\n });\n if (needToMerge_1) {\n this.merge(dataId, changedFields_1);\n if (allDeleted_1) {\n if (this instanceof Layer) {\n this.data[dataId] = void 0;\n }\n else {\n delete this.data[dataId];\n }\n this.group.dirty(dataId, \"__exists\");\n }\n return true;\n }\n }\n return false;\n };\n EntityStore.prototype.delete = function (dataId, fieldName, args) {\n var _a;\n var storeObject = this.lookup(dataId);\n if (storeObject) {\n var typename = this.getFieldValue(storeObject, \"__typename\");\n var storeFieldName = fieldName && args\n ? this.policies.getStoreFieldName({ typename: typename, fieldName: fieldName, args: args })\n : fieldName;\n return this.modify(dataId, storeFieldName ? (_a = {},\n _a[storeFieldName] = delModifier,\n _a) : delModifier);\n }\n return false;\n };\n EntityStore.prototype.evict = function (options, limit) {\n var evicted = false;\n if (options.id) {\n if (hasOwn.call(this.data, options.id)) {\n evicted = this.delete(options.id, options.fieldName, options.args);\n }\n if (this instanceof Layer && this !== limit) {\n evicted = this.parent.evict(options, limit) || evicted;\n }\n if (options.fieldName || evicted) {\n this.group.dirty(options.id, options.fieldName || \"__exists\");\n }\n }\n return evicted;\n };\n EntityStore.prototype.clear = function () {\n this.replace(null);\n };\n EntityStore.prototype.extract = function () {\n var _this = this;\n var obj = this.toObject();\n var extraRootIds = [];\n this.getRootIdSet().forEach(function (id) {\n if (!hasOwn.call(_this.policies.rootTypenamesById, id)) {\n extraRootIds.push(id);\n }\n });\n if (extraRootIds.length) {\n obj.__META = { extraRootIds: extraRootIds.sort() };\n }\n return obj;\n };\n EntityStore.prototype.replace = function (newData) {\n var _this = this;\n Object.keys(this.data).forEach(function (dataId) {\n if (!(newData && hasOwn.call(newData, dataId))) {\n _this.delete(dataId);\n }\n });\n if (newData) {\n var __META = newData.__META, rest_1 = __rest(newData, [\"__META\"]);\n Object.keys(rest_1).forEach(function (dataId) {\n _this.merge(dataId, rest_1[dataId]);\n });\n if (__META) {\n __META.extraRootIds.forEach(this.retain, this);\n }\n }\n };\n EntityStore.prototype.retain = function (rootId) {\n return this.rootIds[rootId] = (this.rootIds[rootId] || 0) + 1;\n };\n EntityStore.prototype.release = function (rootId) {\n if (this.rootIds[rootId] > 0) {\n var count = --this.rootIds[rootId];\n if (!count)\n delete this.rootIds[rootId];\n return count;\n }\n return 0;\n };\n EntityStore.prototype.getRootIdSet = function (ids) {\n if (ids === void 0) { ids = new Set(); }\n Object.keys(this.rootIds).forEach(ids.add, ids);\n if (this instanceof Layer) {\n this.parent.getRootIdSet(ids);\n }\n else {\n Object.keys(this.policies.rootTypenamesById).forEach(ids.add, ids);\n }\n return ids;\n };\n EntityStore.prototype.gc = function () {\n var _this = this;\n var ids = this.getRootIdSet();\n var snapshot = this.toObject();\n ids.forEach(function (id) {\n if (hasOwn.call(snapshot, id)) {\n Object.keys(_this.findChildRefIds(id)).forEach(ids.add, ids);\n delete snapshot[id];\n }\n });\n var idsToRemove = Object.keys(snapshot);\n if (idsToRemove.length) {\n var root_1 = this;\n while (root_1 instanceof Layer)\n root_1 = root_1.parent;\n idsToRemove.forEach(function (id) { return root_1.delete(id); });\n }\n return idsToRemove;\n };\n EntityStore.prototype.findChildRefIds = function (dataId) {\n if (!hasOwn.call(this.refs, dataId)) {\n var found_1 = this.refs[dataId] = Object.create(null);\n var root = this.data[dataId];\n if (!root)\n return found_1;\n var workSet_1 = new Set([root]);\n workSet_1.forEach(function (obj) {\n if (isReference(obj)) {\n found_1[obj.__ref] = true;\n }\n if (isNonNullObject(obj)) {\n Object.keys(obj).forEach(function (key) {\n var child = obj[key];\n if (isNonNullObject(child)) {\n workSet_1.add(child);\n }\n });\n }\n });\n }\n return this.refs[dataId];\n };\n EntityStore.prototype.makeCacheKey = function () {\n return this.group.keyMaker.lookupArray(arguments);\n };\n return EntityStore;\n}());\nexport { EntityStore };\nvar CacheGroup = (function () {\n function CacheGroup(caching, parent) {\n if (parent === void 0) { parent = null; }\n this.caching = caching;\n this.parent = parent;\n this.d = null;\n this.resetCaching();\n }\n CacheGroup.prototype.resetCaching = function () {\n this.d = this.caching ? dep() : null;\n this.keyMaker = new Trie(canUseWeakMap);\n };\n CacheGroup.prototype.depend = function (dataId, storeFieldName) {\n if (this.d) {\n this.d(makeDepKey(dataId, storeFieldName));\n var fieldName = fieldNameFromStoreName(storeFieldName);\n if (fieldName !== storeFieldName) {\n this.d(makeDepKey(dataId, fieldName));\n }\n if (this.parent) {\n this.parent.depend(dataId, storeFieldName);\n }\n }\n };\n CacheGroup.prototype.dirty = function (dataId, storeFieldName) {\n if (this.d) {\n this.d.dirty(makeDepKey(dataId, storeFieldName), storeFieldName === \"__exists\" ? \"forget\" : \"setDirty\");\n }\n };\n return CacheGroup;\n}());\nfunction makeDepKey(dataId, storeFieldName) {\n return storeFieldName + '#' + dataId;\n}\nexport function maybeDependOnExistenceOfEntity(store, entityId) {\n if (supportsResultCaching(store)) {\n store.group.depend(entityId, \"__exists\");\n }\n}\n(function (EntityStore) {\n var Root = (function (_super) {\n __extends(Root, _super);\n function Root(_a) {\n var policies = _a.policies, _b = _a.resultCaching, resultCaching = _b === void 0 ? true : _b, seed = _a.seed;\n var _this = _super.call(this, policies, new CacheGroup(resultCaching)) || this;\n _this.stump = new Stump(_this);\n _this.storageTrie = new Trie(canUseWeakMap);\n if (seed)\n _this.replace(seed);\n return _this;\n }\n Root.prototype.addLayer = function (layerId, replay) {\n return this.stump.addLayer(layerId, replay);\n };\n Root.prototype.removeLayer = function () {\n return this;\n };\n Root.prototype.getStorage = function () {\n return this.storageTrie.lookupArray(arguments);\n };\n return Root;\n }(EntityStore));\n EntityStore.Root = Root;\n})(EntityStore || (EntityStore = {}));\nvar Layer = (function (_super) {\n __extends(Layer, _super);\n function Layer(id, parent, replay, group) {\n var _this = _super.call(this, parent.policies, group) || this;\n _this.id = id;\n _this.parent = parent;\n _this.replay = replay;\n _this.group = group;\n replay(_this);\n return _this;\n }\n Layer.prototype.addLayer = function (layerId, replay) {\n return new Layer(layerId, this, replay, this.group);\n };\n Layer.prototype.removeLayer = function (layerId) {\n var _this = this;\n var parent = this.parent.removeLayer(layerId);\n if (layerId === this.id) {\n if (this.group.caching) {\n Object.keys(this.data).forEach(function (dataId) {\n var ownStoreObject = _this.data[dataId];\n var parentStoreObject = parent[\"lookup\"](dataId);\n if (!parentStoreObject) {\n _this.delete(dataId);\n }\n else if (!ownStoreObject) {\n _this.group.dirty(dataId, \"__exists\");\n Object.keys(parentStoreObject).forEach(function (storeFieldName) {\n _this.group.dirty(dataId, storeFieldName);\n });\n }\n else if (ownStoreObject !== parentStoreObject) {\n Object.keys(ownStoreObject).forEach(function (storeFieldName) {\n if (!equal(ownStoreObject[storeFieldName], parentStoreObject[storeFieldName])) {\n _this.group.dirty(dataId, storeFieldName);\n }\n });\n }\n });\n }\n return parent;\n }\n if (parent === this.parent)\n return this;\n return parent.addLayer(this.id, this.replay);\n };\n Layer.prototype.toObject = function () {\n return __assign(__assign({}, this.parent.toObject()), this.data);\n };\n Layer.prototype.findChildRefIds = function (dataId) {\n var fromParent = this.parent.findChildRefIds(dataId);\n return hasOwn.call(this.data, dataId) ? __assign(__assign({}, fromParent), _super.prototype.findChildRefIds.call(this, dataId)) : fromParent;\n };\n Layer.prototype.getStorage = function () {\n var p = this.parent;\n while (p.parent)\n p = p.parent;\n return p.getStorage.apply(p, arguments);\n };\n return Layer;\n}(EntityStore));\nvar Stump = (function (_super) {\n __extends(Stump, _super);\n function Stump(root) {\n return _super.call(this, \"EntityStore.Stump\", root, function () { }, new CacheGroup(root.group.caching, root.group)) || this;\n }\n Stump.prototype.removeLayer = function () {\n return this;\n };\n Stump.prototype.merge = function () {\n return this.parent.merge.apply(this.parent, arguments);\n };\n return Stump;\n}(Layer));\nfunction storeObjectReconciler(existingObject, incomingObject, property) {\n var existingValue = existingObject[property];\n var incomingValue = incomingObject[property];\n return equal(existingValue, incomingValue) ? existingValue : incomingValue;\n}\nexport function supportsResultCaching(store) {\n return !!(store instanceof EntityStore && store.group.caching);\n}\n//# sourceMappingURL=entityStore.js.map","import { __assign } from \"tslib\";\nimport { invariant, InvariantError } from \"../../utilities/globals/index.js\";\nimport { Kind, } from 'graphql';\nimport { wrap } from 'optimism';\nimport { isField, resultKeyNameFromField, isReference, makeReference, shouldInclude, addTypenameToDocument, getDefaultValues, getMainDefinition, getQueryDefinition, getFragmentFromSelection, maybeDeepFreeze, mergeDeepArray, DeepMerger, isNonNullObject, canUseWeakMap, compact, } from \"../../utilities/index.js\";\nimport { maybeDependOnExistenceOfEntity, supportsResultCaching } from \"./entityStore.js\";\nimport { isArray, extractFragmentContext, getTypenameFromStoreObject, shouldCanonizeResults } from \"./helpers.js\";\nimport { MissingFieldError } from \"../core/types/common.js\";\nimport { canonicalStringify, ObjectCanon } from \"./object-canon.js\";\n;\nfunction execSelectionSetKeyArgs(options) {\n return [\n options.selectionSet,\n options.objectOrReference,\n options.context,\n options.context.canonizeResults,\n ];\n}\nvar StoreReader = (function () {\n function StoreReader(config) {\n var _this = this;\n this.knownResults = new (canUseWeakMap ? WeakMap : Map)();\n this.config = compact(config, {\n addTypename: config.addTypename !== false,\n canonizeResults: shouldCanonizeResults(config),\n });\n this.canon = config.canon || new ObjectCanon;\n this.executeSelectionSet = wrap(function (options) {\n var _a;\n var canonizeResults = options.context.canonizeResults;\n var peekArgs = execSelectionSetKeyArgs(options);\n peekArgs[3] = !canonizeResults;\n var other = (_a = _this.executeSelectionSet).peek.apply(_a, peekArgs);\n if (other) {\n if (canonizeResults) {\n return __assign(__assign({}, other), { result: _this.canon.admit(other.result) });\n }\n return other;\n }\n maybeDependOnExistenceOfEntity(options.context.store, options.enclosingRef.__ref);\n return _this.execSelectionSetImpl(options);\n }, {\n max: this.config.resultCacheMaxSize,\n keyArgs: execSelectionSetKeyArgs,\n makeCacheKey: function (selectionSet, parent, context, canonizeResults) {\n if (supportsResultCaching(context.store)) {\n return context.store.makeCacheKey(selectionSet, isReference(parent) ? parent.__ref : parent, context.varString, canonizeResults);\n }\n }\n });\n this.executeSubSelectedArray = wrap(function (options) {\n maybeDependOnExistenceOfEntity(options.context.store, options.enclosingRef.__ref);\n return _this.execSubSelectedArrayImpl(options);\n }, {\n max: this.config.resultCacheMaxSize,\n makeCacheKey: function (_a) {\n var field = _a.field, array = _a.array, context = _a.context;\n if (supportsResultCaching(context.store)) {\n return context.store.makeCacheKey(field, array, context.varString);\n }\n }\n });\n }\n StoreReader.prototype.resetCanon = function () {\n this.canon = new ObjectCanon;\n };\n StoreReader.prototype.diffQueryAgainstStore = function (_a) {\n var store = _a.store, query = _a.query, _b = _a.rootId, rootId = _b === void 0 ? 'ROOT_QUERY' : _b, variables = _a.variables, _c = _a.returnPartialData, returnPartialData = _c === void 0 ? true : _c, _d = _a.canonizeResults, canonizeResults = _d === void 0 ? this.config.canonizeResults : _d;\n var policies = this.config.cache.policies;\n variables = __assign(__assign({}, getDefaultValues(getQueryDefinition(query))), variables);\n var rootRef = makeReference(rootId);\n var execResult = this.executeSelectionSet({\n selectionSet: getMainDefinition(query).selectionSet,\n objectOrReference: rootRef,\n enclosingRef: rootRef,\n context: __assign({ store: store, query: query, policies: policies, variables: variables, varString: canonicalStringify(variables), canonizeResults: canonizeResults }, extractFragmentContext(query, this.config.fragments)),\n });\n var missing;\n if (execResult.missing) {\n missing = [new MissingFieldError(firstMissing(execResult.missing), execResult.missing, query, variables)];\n if (!returnPartialData) {\n throw missing[0];\n }\n }\n return {\n result: execResult.result,\n complete: !missing,\n missing: missing,\n };\n };\n StoreReader.prototype.isFresh = function (result, parent, selectionSet, context) {\n if (supportsResultCaching(context.store) &&\n this.knownResults.get(result) === selectionSet) {\n var latest = this.executeSelectionSet.peek(selectionSet, parent, context, this.canon.isKnown(result));\n if (latest && result === latest.result) {\n return true;\n }\n }\n return false;\n };\n StoreReader.prototype.execSelectionSetImpl = function (_a) {\n var _this = this;\n var selectionSet = _a.selectionSet, objectOrReference = _a.objectOrReference, enclosingRef = _a.enclosingRef, context = _a.context;\n if (isReference(objectOrReference) &&\n !context.policies.rootTypenamesById[objectOrReference.__ref] &&\n !context.store.has(objectOrReference.__ref)) {\n return {\n result: this.canon.empty,\n missing: \"Dangling reference to missing \".concat(objectOrReference.__ref, \" object\"),\n };\n }\n var variables = context.variables, policies = context.policies, store = context.store;\n var typename = store.getFieldValue(objectOrReference, \"__typename\");\n var objectsToMerge = [];\n var missing;\n var missingMerger = new DeepMerger();\n if (this.config.addTypename &&\n typeof typename === \"string\" &&\n !policies.rootIdsByTypename[typename]) {\n objectsToMerge.push({ __typename: typename });\n }\n function handleMissing(result, resultName) {\n var _a;\n if (result.missing) {\n missing = missingMerger.merge(missing, (_a = {}, _a[resultName] = result.missing, _a));\n }\n return result.result;\n }\n var workSet = new Set(selectionSet.selections);\n workSet.forEach(function (selection) {\n var _a, _b;\n if (!shouldInclude(selection, variables))\n return;\n if (isField(selection)) {\n var fieldValue = policies.readField({\n fieldName: selection.name.value,\n field: selection,\n variables: context.variables,\n from: objectOrReference,\n }, context);\n var resultName = resultKeyNameFromField(selection);\n if (fieldValue === void 0) {\n if (!addTypenameToDocument.added(selection)) {\n missing = missingMerger.merge(missing, (_a = {},\n _a[resultName] = \"Can't find field '\".concat(selection.name.value, \"' on \").concat(isReference(objectOrReference)\n ? objectOrReference.__ref + \" object\"\n : \"object \" + JSON.stringify(objectOrReference, null, 2)),\n _a));\n }\n }\n else if (isArray(fieldValue)) {\n fieldValue = handleMissing(_this.executeSubSelectedArray({\n field: selection,\n array: fieldValue,\n enclosingRef: enclosingRef,\n context: context,\n }), resultName);\n }\n else if (!selection.selectionSet) {\n if (context.canonizeResults) {\n fieldValue = _this.canon.pass(fieldValue);\n }\n }\n else if (fieldValue != null) {\n fieldValue = handleMissing(_this.executeSelectionSet({\n selectionSet: selection.selectionSet,\n objectOrReference: fieldValue,\n enclosingRef: isReference(fieldValue) ? fieldValue : enclosingRef,\n context: context,\n }), resultName);\n }\n if (fieldValue !== void 0) {\n objectsToMerge.push((_b = {}, _b[resultName] = fieldValue, _b));\n }\n }\n else {\n var fragment = getFragmentFromSelection(selection, context.lookupFragment);\n if (!fragment && selection.kind === Kind.FRAGMENT_SPREAD) {\n throw __DEV__ ? new InvariantError(\"No fragment named \".concat(selection.name.value)) : new InvariantError(5);\n }\n if (fragment && policies.fragmentMatches(fragment, typename)) {\n fragment.selectionSet.selections.forEach(workSet.add, workSet);\n }\n }\n });\n var result = mergeDeepArray(objectsToMerge);\n var finalResult = { result: result, missing: missing };\n var frozen = context.canonizeResults\n ? this.canon.admit(finalResult)\n : maybeDeepFreeze(finalResult);\n if (frozen.result) {\n this.knownResults.set(frozen.result, selectionSet);\n }\n return frozen;\n };\n StoreReader.prototype.execSubSelectedArrayImpl = function (_a) {\n var _this = this;\n var field = _a.field, array = _a.array, enclosingRef = _a.enclosingRef, context = _a.context;\n var missing;\n var missingMerger = new DeepMerger();\n function handleMissing(childResult, i) {\n var _a;\n if (childResult.missing) {\n missing = missingMerger.merge(missing, (_a = {}, _a[i] = childResult.missing, _a));\n }\n return childResult.result;\n }\n if (field.selectionSet) {\n array = array.filter(context.store.canRead);\n }\n array = array.map(function (item, i) {\n if (item === null) {\n return null;\n }\n if (isArray(item)) {\n return handleMissing(_this.executeSubSelectedArray({\n field: field,\n array: item,\n enclosingRef: enclosingRef,\n context: context,\n }), i);\n }\n if (field.selectionSet) {\n return handleMissing(_this.executeSelectionSet({\n selectionSet: field.selectionSet,\n objectOrReference: item,\n enclosingRef: isReference(item) ? item : enclosingRef,\n context: context,\n }), i);\n }\n if (__DEV__) {\n assertSelectionSetForIdValue(context.store, field, item);\n }\n return item;\n });\n return {\n result: context.canonizeResults ? this.canon.admit(array) : array,\n missing: missing,\n };\n };\n return StoreReader;\n}());\nexport { StoreReader };\nfunction firstMissing(tree) {\n try {\n JSON.stringify(tree, function (_, value) {\n if (typeof value === \"string\")\n throw value;\n return value;\n });\n }\n catch (result) {\n return result;\n }\n}\nfunction assertSelectionSetForIdValue(store, field, fieldValue) {\n if (!field.selectionSet) {\n var workSet_1 = new Set([fieldValue]);\n workSet_1.forEach(function (value) {\n if (isNonNullObject(value)) {\n __DEV__ ? invariant(!isReference(value), \"Missing selection set for object of type \".concat(getTypenameFromStoreObject(store, value), \" returned for query field \").concat(field.name.value)) : invariant(!isReference(value), 6);\n Object.values(value).forEach(workSet_1.add, workSet_1);\n }\n });\n }\n}\n//# sourceMappingURL=readFromStore.js.map","import { invariant } from \"../../utilities/globals/index.js\";\nimport { argumentsObjectFromField, DeepMerger, isNonEmptyArray, isNonNullObject, } from \"../../utilities/index.js\";\nimport { hasOwn, isArray } from \"./helpers.js\";\nvar specifierInfoCache = Object.create(null);\nfunction lookupSpecifierInfo(spec) {\n var cacheKey = JSON.stringify(spec);\n return specifierInfoCache[cacheKey] ||\n (specifierInfoCache[cacheKey] = Object.create(null));\n}\nexport function keyFieldsFnFromSpecifier(specifier) {\n var info = lookupSpecifierInfo(specifier);\n return info.keyFieldsFn || (info.keyFieldsFn = function (object, context) {\n var extract = function (from, key) { return context.readField(key, from); };\n var keyObject = context.keyObject = collectSpecifierPaths(specifier, function (schemaKeyPath) {\n var extracted = extractKeyPath(context.storeObject, schemaKeyPath, extract);\n if (extracted === void 0 &&\n object !== context.storeObject &&\n hasOwn.call(object, schemaKeyPath[0])) {\n extracted = extractKeyPath(object, schemaKeyPath, extractKey);\n }\n __DEV__ ? invariant(extracted !== void 0, \"Missing field '\".concat(schemaKeyPath.join('.'), \"' while extracting keyFields from \").concat(JSON.stringify(object))) : invariant(extracted !== void 0, 2);\n return extracted;\n });\n return \"\".concat(context.typename, \":\").concat(JSON.stringify(keyObject));\n });\n}\nexport function keyArgsFnFromSpecifier(specifier) {\n var info = lookupSpecifierInfo(specifier);\n return info.keyArgsFn || (info.keyArgsFn = function (args, _a) {\n var field = _a.field, variables = _a.variables, fieldName = _a.fieldName;\n var collected = collectSpecifierPaths(specifier, function (keyPath) {\n var firstKey = keyPath[0];\n var firstChar = firstKey.charAt(0);\n if (firstChar === \"@\") {\n if (field && isNonEmptyArray(field.directives)) {\n var directiveName_1 = firstKey.slice(1);\n var d = field.directives.find(function (d) { return d.name.value === directiveName_1; });\n var directiveArgs = d && argumentsObjectFromField(d, variables);\n return directiveArgs && extractKeyPath(directiveArgs, keyPath.slice(1));\n }\n return;\n }\n if (firstChar === \"$\") {\n var variableName = firstKey.slice(1);\n if (variables && hasOwn.call(variables, variableName)) {\n var varKeyPath = keyPath.slice(0);\n varKeyPath[0] = variableName;\n return extractKeyPath(variables, varKeyPath);\n }\n return;\n }\n if (args) {\n return extractKeyPath(args, keyPath);\n }\n });\n var suffix = JSON.stringify(collected);\n if (args || suffix !== \"{}\") {\n fieldName += \":\" + suffix;\n }\n return fieldName;\n });\n}\nexport function collectSpecifierPaths(specifier, extractor) {\n var merger = new DeepMerger;\n return getSpecifierPaths(specifier).reduce(function (collected, path) {\n var _a;\n var toMerge = extractor(path);\n if (toMerge !== void 0) {\n for (var i = path.length - 1; i >= 0; --i) {\n toMerge = (_a = {}, _a[path[i]] = toMerge, _a);\n }\n collected = merger.merge(collected, toMerge);\n }\n return collected;\n }, Object.create(null));\n}\nexport function getSpecifierPaths(spec) {\n var info = lookupSpecifierInfo(spec);\n if (!info.paths) {\n var paths_1 = info.paths = [];\n var currentPath_1 = [];\n spec.forEach(function (s, i) {\n if (isArray(s)) {\n getSpecifierPaths(s).forEach(function (p) { return paths_1.push(currentPath_1.concat(p)); });\n currentPath_1.length = 0;\n }\n else {\n currentPath_1.push(s);\n if (!isArray(spec[i + 1])) {\n paths_1.push(currentPath_1.slice(0));\n currentPath_1.length = 0;\n }\n }\n });\n }\n return info.paths;\n}\nfunction extractKey(object, key) {\n return object[key];\n}\nexport function extractKeyPath(object, path, extract) {\n extract = extract || extractKey;\n return normalize(path.reduce(function reducer(obj, key) {\n return isArray(obj)\n ? obj.map(function (child) { return reducer(child, key); })\n : obj && extract(obj, key);\n }, object));\n}\nfunction normalize(value) {\n if (isNonNullObject(value)) {\n if (isArray(value)) {\n return value.map(normalize);\n }\n return collectSpecifierPaths(Object.keys(value).sort(), function (path) { return extractKeyPath(value, path); });\n }\n return value;\n}\n//# sourceMappingURL=key-extractor.js.map","import { __assign, __rest } from \"tslib\";\nimport { invariant, InvariantError } from \"../../utilities/globals/index.js\";\nimport { storeKeyNameFromField, argumentsObjectFromField, isReference, getStoreKeyName, isNonNullObject, stringifyForDisplay, } from \"../../utilities/index.js\";\nimport { hasOwn, fieldNameFromStoreName, storeValueIsStoreObject, selectionSetMatchesResult, TypeOrFieldNameRegExp, defaultDataIdFromObject, isArray, } from \"./helpers.js\";\nimport { cacheSlot } from \"./reactiveVars.js\";\nimport { canonicalStringify } from \"./object-canon.js\";\nimport { keyArgsFnFromSpecifier, keyFieldsFnFromSpecifier } from \"./key-extractor.js\";\ngetStoreKeyName.setStringify(canonicalStringify);\nfunction argsFromFieldSpecifier(spec) {\n return spec.args !== void 0 ? spec.args :\n spec.field ? argumentsObjectFromField(spec.field, spec.variables) : null;\n}\nvar nullKeyFieldsFn = function () { return void 0; };\nvar simpleKeyArgsFn = function (_args, context) { return context.fieldName; };\nvar mergeTrueFn = function (existing, incoming, _a) {\n var mergeObjects = _a.mergeObjects;\n return mergeObjects(existing, incoming);\n};\nvar mergeFalseFn = function (_, incoming) { return incoming; };\nvar Policies = (function () {\n function Policies(config) {\n this.config = config;\n this.typePolicies = Object.create(null);\n this.toBeAdded = Object.create(null);\n this.supertypeMap = new Map();\n this.fuzzySubtypes = new Map();\n this.rootIdsByTypename = Object.create(null);\n this.rootTypenamesById = Object.create(null);\n this.usingPossibleTypes = false;\n this.config = __assign({ dataIdFromObject: defaultDataIdFromObject }, config);\n this.cache = this.config.cache;\n this.setRootTypename(\"Query\");\n this.setRootTypename(\"Mutation\");\n this.setRootTypename(\"Subscription\");\n if (config.possibleTypes) {\n this.addPossibleTypes(config.possibleTypes);\n }\n if (config.typePolicies) {\n this.addTypePolicies(config.typePolicies);\n }\n }\n Policies.prototype.identify = function (object, partialContext) {\n var _a;\n var policies = this;\n var typename = partialContext && (partialContext.typename ||\n ((_a = partialContext.storeObject) === null || _a === void 0 ? void 0 : _a.__typename)) || object.__typename;\n if (typename === this.rootTypenamesById.ROOT_QUERY) {\n return [\"ROOT_QUERY\"];\n }\n var storeObject = partialContext && partialContext.storeObject || object;\n var context = __assign(__assign({}, partialContext), { typename: typename, storeObject: storeObject, readField: partialContext && partialContext.readField || function () {\n var options = normalizeReadFieldOptions(arguments, storeObject);\n return policies.readField(options, {\n store: policies.cache[\"data\"],\n variables: options.variables,\n });\n } });\n var id;\n var policy = typename && this.getTypePolicy(typename);\n var keyFn = policy && policy.keyFn || this.config.dataIdFromObject;\n while (keyFn) {\n var specifierOrId = keyFn(object, context);\n if (isArray(specifierOrId)) {\n keyFn = keyFieldsFnFromSpecifier(specifierOrId);\n }\n else {\n id = specifierOrId;\n break;\n }\n }\n id = id ? String(id) : void 0;\n return context.keyObject ? [id, context.keyObject] : [id];\n };\n Policies.prototype.addTypePolicies = function (typePolicies) {\n var _this = this;\n Object.keys(typePolicies).forEach(function (typename) {\n var _a = typePolicies[typename], queryType = _a.queryType, mutationType = _a.mutationType, subscriptionType = _a.subscriptionType, incoming = __rest(_a, [\"queryType\", \"mutationType\", \"subscriptionType\"]);\n if (queryType)\n _this.setRootTypename(\"Query\", typename);\n if (mutationType)\n _this.setRootTypename(\"Mutation\", typename);\n if (subscriptionType)\n _this.setRootTypename(\"Subscription\", typename);\n if (hasOwn.call(_this.toBeAdded, typename)) {\n _this.toBeAdded[typename].push(incoming);\n }\n else {\n _this.toBeAdded[typename] = [incoming];\n }\n });\n };\n Policies.prototype.updateTypePolicy = function (typename, incoming) {\n var _this = this;\n var existing = this.getTypePolicy(typename);\n var keyFields = incoming.keyFields, fields = incoming.fields;\n function setMerge(existing, merge) {\n existing.merge =\n typeof merge === \"function\" ? merge :\n merge === true ? mergeTrueFn :\n merge === false ? mergeFalseFn :\n existing.merge;\n }\n setMerge(existing, incoming.merge);\n existing.keyFn =\n keyFields === false ? nullKeyFieldsFn :\n isArray(keyFields) ? keyFieldsFnFromSpecifier(keyFields) :\n typeof keyFields === \"function\" ? keyFields :\n existing.keyFn;\n if (fields) {\n Object.keys(fields).forEach(function (fieldName) {\n var existing = _this.getFieldPolicy(typename, fieldName, true);\n var incoming = fields[fieldName];\n if (typeof incoming === \"function\") {\n existing.read = incoming;\n }\n else {\n var keyArgs = incoming.keyArgs, read = incoming.read, merge = incoming.merge;\n existing.keyFn =\n keyArgs === false ? simpleKeyArgsFn :\n isArray(keyArgs) ? keyArgsFnFromSpecifier(keyArgs) :\n typeof keyArgs === \"function\" ? keyArgs :\n existing.keyFn;\n if (typeof read === \"function\") {\n existing.read = read;\n }\n setMerge(existing, merge);\n }\n if (existing.read && existing.merge) {\n existing.keyFn = existing.keyFn || simpleKeyArgsFn;\n }\n });\n }\n };\n Policies.prototype.setRootTypename = function (which, typename) {\n if (typename === void 0) { typename = which; }\n var rootId = \"ROOT_\" + which.toUpperCase();\n var old = this.rootTypenamesById[rootId];\n if (typename !== old) {\n __DEV__ ? invariant(!old || old === which, \"Cannot change root \".concat(which, \" __typename more than once\")) : invariant(!old || old === which, 3);\n if (old)\n delete this.rootIdsByTypename[old];\n this.rootIdsByTypename[typename] = rootId;\n this.rootTypenamesById[rootId] = typename;\n }\n };\n Policies.prototype.addPossibleTypes = function (possibleTypes) {\n var _this = this;\n this.usingPossibleTypes = true;\n Object.keys(possibleTypes).forEach(function (supertype) {\n _this.getSupertypeSet(supertype, true);\n possibleTypes[supertype].forEach(function (subtype) {\n _this.getSupertypeSet(subtype, true).add(supertype);\n var match = subtype.match(TypeOrFieldNameRegExp);\n if (!match || match[0] !== subtype) {\n _this.fuzzySubtypes.set(subtype, new RegExp(subtype));\n }\n });\n });\n };\n Policies.prototype.getTypePolicy = function (typename) {\n var _this = this;\n if (!hasOwn.call(this.typePolicies, typename)) {\n var policy_1 = this.typePolicies[typename] = Object.create(null);\n policy_1.fields = Object.create(null);\n var supertypes = this.supertypeMap.get(typename);\n if (supertypes && supertypes.size) {\n supertypes.forEach(function (supertype) {\n var _a = _this.getTypePolicy(supertype), fields = _a.fields, rest = __rest(_a, [\"fields\"]);\n Object.assign(policy_1, rest);\n Object.assign(policy_1.fields, fields);\n });\n }\n }\n var inbox = this.toBeAdded[typename];\n if (inbox && inbox.length) {\n inbox.splice(0).forEach(function (policy) {\n _this.updateTypePolicy(typename, policy);\n });\n }\n return this.typePolicies[typename];\n };\n Policies.prototype.getFieldPolicy = function (typename, fieldName, createIfMissing) {\n if (typename) {\n var fieldPolicies = this.getTypePolicy(typename).fields;\n return fieldPolicies[fieldName] || (createIfMissing && (fieldPolicies[fieldName] = Object.create(null)));\n }\n };\n Policies.prototype.getSupertypeSet = function (subtype, createIfMissing) {\n var supertypeSet = this.supertypeMap.get(subtype);\n if (!supertypeSet && createIfMissing) {\n this.supertypeMap.set(subtype, supertypeSet = new Set());\n }\n return supertypeSet;\n };\n Policies.prototype.fragmentMatches = function (fragment, typename, result, variables) {\n var _this = this;\n if (!fragment.typeCondition)\n return true;\n if (!typename)\n return false;\n var supertype = fragment.typeCondition.name.value;\n if (typename === supertype)\n return true;\n if (this.usingPossibleTypes &&\n this.supertypeMap.has(supertype)) {\n var typenameSupertypeSet = this.getSupertypeSet(typename, true);\n var workQueue_1 = [typenameSupertypeSet];\n var maybeEnqueue_1 = function (subtype) {\n var supertypeSet = _this.getSupertypeSet(subtype, false);\n if (supertypeSet &&\n supertypeSet.size &&\n workQueue_1.indexOf(supertypeSet) < 0) {\n workQueue_1.push(supertypeSet);\n }\n };\n var needToCheckFuzzySubtypes = !!(result && this.fuzzySubtypes.size);\n var checkingFuzzySubtypes = false;\n for (var i = 0; i < workQueue_1.length; ++i) {\n var supertypeSet = workQueue_1[i];\n if (supertypeSet.has(supertype)) {\n if (!typenameSupertypeSet.has(supertype)) {\n if (checkingFuzzySubtypes) {\n __DEV__ && invariant.warn(\"Inferring subtype \".concat(typename, \" of supertype \").concat(supertype));\n }\n typenameSupertypeSet.add(supertype);\n }\n return true;\n }\n supertypeSet.forEach(maybeEnqueue_1);\n if (needToCheckFuzzySubtypes &&\n i === workQueue_1.length - 1 &&\n selectionSetMatchesResult(fragment.selectionSet, result, variables)) {\n needToCheckFuzzySubtypes = false;\n checkingFuzzySubtypes = true;\n this.fuzzySubtypes.forEach(function (regExp, fuzzyString) {\n var match = typename.match(regExp);\n if (match && match[0] === typename) {\n maybeEnqueue_1(fuzzyString);\n }\n });\n }\n }\n }\n return false;\n };\n Policies.prototype.hasKeyArgs = function (typename, fieldName) {\n var policy = this.getFieldPolicy(typename, fieldName, false);\n return !!(policy && policy.keyFn);\n };\n Policies.prototype.getStoreFieldName = function (fieldSpec) {\n var typename = fieldSpec.typename, fieldName = fieldSpec.fieldName;\n var policy = this.getFieldPolicy(typename, fieldName, false);\n var storeFieldName;\n var keyFn = policy && policy.keyFn;\n if (keyFn && typename) {\n var context = {\n typename: typename,\n fieldName: fieldName,\n field: fieldSpec.field || null,\n variables: fieldSpec.variables,\n };\n var args = argsFromFieldSpecifier(fieldSpec);\n while (keyFn) {\n var specifierOrString = keyFn(args, context);\n if (isArray(specifierOrString)) {\n keyFn = keyArgsFnFromSpecifier(specifierOrString);\n }\n else {\n storeFieldName = specifierOrString || fieldName;\n break;\n }\n }\n }\n if (storeFieldName === void 0) {\n storeFieldName = fieldSpec.field\n ? storeKeyNameFromField(fieldSpec.field, fieldSpec.variables)\n : getStoreKeyName(fieldName, argsFromFieldSpecifier(fieldSpec));\n }\n if (storeFieldName === false) {\n return fieldName;\n }\n return fieldName === fieldNameFromStoreName(storeFieldName)\n ? storeFieldName\n : fieldName + \":\" + storeFieldName;\n };\n Policies.prototype.readField = function (options, context) {\n var objectOrReference = options.from;\n if (!objectOrReference)\n return;\n var nameOrField = options.field || options.fieldName;\n if (!nameOrField)\n return;\n if (options.typename === void 0) {\n var typename = context.store.getFieldValue(objectOrReference, \"__typename\");\n if (typename)\n options.typename = typename;\n }\n var storeFieldName = this.getStoreFieldName(options);\n var fieldName = fieldNameFromStoreName(storeFieldName);\n var existing = context.store.getFieldValue(objectOrReference, storeFieldName);\n var policy = this.getFieldPolicy(options.typename, fieldName, false);\n var read = policy && policy.read;\n if (read) {\n var readOptions = makeFieldFunctionOptions(this, objectOrReference, options, context, context.store.getStorage(isReference(objectOrReference)\n ? objectOrReference.__ref\n : objectOrReference, storeFieldName));\n return cacheSlot.withValue(this.cache, read, [existing, readOptions]);\n }\n return existing;\n };\n Policies.prototype.getReadFunction = function (typename, fieldName) {\n var policy = this.getFieldPolicy(typename, fieldName, false);\n return policy && policy.read;\n };\n Policies.prototype.getMergeFunction = function (parentTypename, fieldName, childTypename) {\n var policy = this.getFieldPolicy(parentTypename, fieldName, false);\n var merge = policy && policy.merge;\n if (!merge && childTypename) {\n policy = this.getTypePolicy(childTypename);\n merge = policy && policy.merge;\n }\n return merge;\n };\n Policies.prototype.runMergeFunction = function (existing, incoming, _a, context, storage) {\n var field = _a.field, typename = _a.typename, merge = _a.merge;\n if (merge === mergeTrueFn) {\n return makeMergeObjectsFunction(context.store)(existing, incoming);\n }\n if (merge === mergeFalseFn) {\n return incoming;\n }\n if (context.overwrite) {\n existing = void 0;\n }\n return merge(existing, incoming, makeFieldFunctionOptions(this, void 0, { typename: typename, fieldName: field.name.value, field: field, variables: context.variables }, context, storage || Object.create(null)));\n };\n return Policies;\n}());\nexport { Policies };\nfunction makeFieldFunctionOptions(policies, objectOrReference, fieldSpec, context, storage) {\n var storeFieldName = policies.getStoreFieldName(fieldSpec);\n var fieldName = fieldNameFromStoreName(storeFieldName);\n var variables = fieldSpec.variables || context.variables;\n var _a = context.store, toReference = _a.toReference, canRead = _a.canRead;\n return {\n args: argsFromFieldSpecifier(fieldSpec),\n field: fieldSpec.field || null,\n fieldName: fieldName,\n storeFieldName: storeFieldName,\n variables: variables,\n isReference: isReference,\n toReference: toReference,\n storage: storage,\n cache: policies.cache,\n canRead: canRead,\n readField: function () {\n return policies.readField(normalizeReadFieldOptions(arguments, objectOrReference, variables), context);\n },\n mergeObjects: makeMergeObjectsFunction(context.store),\n };\n}\nexport function normalizeReadFieldOptions(readFieldArgs, objectOrReference, variables) {\n var fieldNameOrOptions = readFieldArgs[0], from = readFieldArgs[1], argc = readFieldArgs.length;\n var options;\n if (typeof fieldNameOrOptions === \"string\") {\n options = {\n fieldName: fieldNameOrOptions,\n from: argc > 1 ? from : objectOrReference,\n };\n }\n else {\n options = __assign({}, fieldNameOrOptions);\n if (!hasOwn.call(options, \"from\")) {\n options.from = objectOrReference;\n }\n }\n if (__DEV__ && options.from === void 0) {\n __DEV__ && invariant.warn(\"Undefined 'from' passed to readField with arguments \".concat(stringifyForDisplay(Array.from(readFieldArgs))));\n }\n if (void 0 === options.variables) {\n options.variables = variables;\n }\n return options;\n}\nfunction makeMergeObjectsFunction(store) {\n return function mergeObjects(existing, incoming) {\n if (isArray(existing) || isArray(incoming)) {\n throw __DEV__ ? new InvariantError(\"Cannot automatically merge arrays\") : new InvariantError(4);\n }\n if (isNonNullObject(existing) &&\n isNonNullObject(incoming)) {\n var eType = store.getFieldValue(existing, \"__typename\");\n var iType = store.getFieldValue(incoming, \"__typename\");\n var typesDiffer = eType && iType && eType !== iType;\n if (typesDiffer) {\n return incoming;\n }\n if (isReference(existing) &&\n storeValueIsStoreObject(incoming)) {\n store.merge(existing.__ref, incoming);\n return existing;\n }\n if (storeValueIsStoreObject(existing) &&\n isReference(incoming)) {\n store.merge(existing, incoming.__ref);\n return incoming;\n }\n if (storeValueIsStoreObject(existing) &&\n storeValueIsStoreObject(incoming)) {\n return __assign(__assign({}, existing), incoming);\n }\n }\n return incoming;\n };\n}\n//# sourceMappingURL=policies.js.map","import { makeUniqueId } from \"./makeUniqueId.js\";\nexport function stringifyForDisplay(value) {\n var undefId = makeUniqueId(\"stringifyForDisplay\");\n return JSON.stringify(value, function (key, value) {\n return value === void 0 ? undefId : value;\n }).split(JSON.stringify(undefId)).join(\"\");\n}\n//# sourceMappingURL=stringifyForDisplay.js.map","import { __assign } from \"tslib\";\nimport { invariant, InvariantError } from \"../../utilities/globals/index.js\";\nimport { equal } from '@wry/equality';\nimport { Trie } from '@wry/trie';\nimport { Kind, } from 'graphql';\nimport { getFragmentFromSelection, getDefaultValues, getOperationDefinition, getTypenameFromResult, makeReference, isField, resultKeyNameFromField, isReference, shouldInclude, cloneDeep, addTypenameToDocument, isNonEmptyArray, argumentsObjectFromField, } from \"../../utilities/index.js\";\nimport { isArray, makeProcessedFieldsMerger, fieldNameFromStoreName, storeValueIsStoreObject, extractFragmentContext } from \"./helpers.js\";\nimport { canonicalStringify } from \"./object-canon.js\";\nimport { normalizeReadFieldOptions } from \"./policies.js\";\n;\nfunction getContextFlavor(context, clientOnly, deferred) {\n var key = \"\".concat(clientOnly).concat(deferred);\n var flavored = context.flavors.get(key);\n if (!flavored) {\n context.flavors.set(key, flavored = (context.clientOnly === clientOnly &&\n context.deferred === deferred) ? context : __assign(__assign({}, context), { clientOnly: clientOnly, deferred: deferred }));\n }\n return flavored;\n}\nvar StoreWriter = (function () {\n function StoreWriter(cache, reader, fragments) {\n this.cache = cache;\n this.reader = reader;\n this.fragments = fragments;\n }\n StoreWriter.prototype.writeToStore = function (store, _a) {\n var _this = this;\n var query = _a.query, result = _a.result, dataId = _a.dataId, variables = _a.variables, overwrite = _a.overwrite;\n var operationDefinition = getOperationDefinition(query);\n var merger = makeProcessedFieldsMerger();\n variables = __assign(__assign({}, getDefaultValues(operationDefinition)), variables);\n var context = __assign(__assign({ store: store, written: Object.create(null), merge: function (existing, incoming) {\n return merger.merge(existing, incoming);\n }, variables: variables, varString: canonicalStringify(variables) }, extractFragmentContext(query, this.fragments)), { overwrite: !!overwrite, incomingById: new Map, clientOnly: false, deferred: false, flavors: new Map });\n var ref = this.processSelectionSet({\n result: result || Object.create(null),\n dataId: dataId,\n selectionSet: operationDefinition.selectionSet,\n mergeTree: { map: new Map },\n context: context,\n });\n if (!isReference(ref)) {\n throw __DEV__ ? new InvariantError(\"Could not identify object \".concat(JSON.stringify(result))) : new InvariantError(7);\n }\n context.incomingById.forEach(function (_a, dataId) {\n var storeObject = _a.storeObject, mergeTree = _a.mergeTree, fieldNodeSet = _a.fieldNodeSet;\n var entityRef = makeReference(dataId);\n if (mergeTree && mergeTree.map.size) {\n var applied = _this.applyMerges(mergeTree, entityRef, storeObject, context);\n if (isReference(applied)) {\n return;\n }\n storeObject = applied;\n }\n if (__DEV__ && !context.overwrite) {\n var fieldsWithSelectionSets_1 = Object.create(null);\n fieldNodeSet.forEach(function (field) {\n if (field.selectionSet) {\n fieldsWithSelectionSets_1[field.name.value] = true;\n }\n });\n var hasSelectionSet_1 = function (storeFieldName) {\n return fieldsWithSelectionSets_1[fieldNameFromStoreName(storeFieldName)] === true;\n };\n var hasMergeFunction_1 = function (storeFieldName) {\n var childTree = mergeTree && mergeTree.map.get(storeFieldName);\n return Boolean(childTree && childTree.info && childTree.info.merge);\n };\n Object.keys(storeObject).forEach(function (storeFieldName) {\n if (hasSelectionSet_1(storeFieldName) &&\n !hasMergeFunction_1(storeFieldName)) {\n warnAboutDataLoss(entityRef, storeObject, storeFieldName, context.store);\n }\n });\n }\n store.merge(dataId, storeObject);\n });\n store.retain(ref.__ref);\n return ref;\n };\n StoreWriter.prototype.processSelectionSet = function (_a) {\n var _this = this;\n var dataId = _a.dataId, result = _a.result, selectionSet = _a.selectionSet, context = _a.context, mergeTree = _a.mergeTree;\n var policies = this.cache.policies;\n var incoming = Object.create(null);\n var typename = (dataId && policies.rootTypenamesById[dataId]) ||\n getTypenameFromResult(result, selectionSet, context.fragmentMap) ||\n (dataId && context.store.get(dataId, \"__typename\"));\n if (\"string\" === typeof typename) {\n incoming.__typename = typename;\n }\n var readField = function () {\n var options = normalizeReadFieldOptions(arguments, incoming, context.variables);\n if (isReference(options.from)) {\n var info = context.incomingById.get(options.from.__ref);\n if (info) {\n var result_1 = policies.readField(__assign(__assign({}, options), { from: info.storeObject }), context);\n if (result_1 !== void 0) {\n return result_1;\n }\n }\n }\n return policies.readField(options, context);\n };\n var fieldNodeSet = new Set();\n this.flattenFields(selectionSet, result, context, typename).forEach(function (context, field) {\n var _a;\n var resultFieldKey = resultKeyNameFromField(field);\n var value = result[resultFieldKey];\n fieldNodeSet.add(field);\n if (value !== void 0) {\n var storeFieldName = policies.getStoreFieldName({\n typename: typename,\n fieldName: field.name.value,\n field: field,\n variables: context.variables,\n });\n var childTree = getChildMergeTree(mergeTree, storeFieldName);\n var incomingValue = _this.processFieldValue(value, field, field.selectionSet\n ? getContextFlavor(context, false, false)\n : context, childTree);\n var childTypename = void 0;\n if (field.selectionSet &&\n (isReference(incomingValue) ||\n storeValueIsStoreObject(incomingValue))) {\n childTypename = readField(\"__typename\", incomingValue);\n }\n var merge = policies.getMergeFunction(typename, field.name.value, childTypename);\n if (merge) {\n childTree.info = {\n field: field,\n typename: typename,\n merge: merge,\n };\n }\n else {\n maybeRecycleChildMergeTree(mergeTree, storeFieldName);\n }\n incoming = context.merge(incoming, (_a = {},\n _a[storeFieldName] = incomingValue,\n _a));\n }\n else if (__DEV__ &&\n !context.clientOnly &&\n !context.deferred &&\n !addTypenameToDocument.added(field) &&\n !policies.getReadFunction(typename, field.name.value)) {\n __DEV__ && invariant.error(\"Missing field '\".concat(resultKeyNameFromField(field), \"' while writing result \").concat(JSON.stringify(result, null, 2)).substring(0, 1000));\n }\n });\n try {\n var _b = policies.identify(result, {\n typename: typename,\n selectionSet: selectionSet,\n fragmentMap: context.fragmentMap,\n storeObject: incoming,\n readField: readField,\n }), id = _b[0], keyObject = _b[1];\n dataId = dataId || id;\n if (keyObject) {\n incoming = context.merge(incoming, keyObject);\n }\n }\n catch (e) {\n if (!dataId)\n throw e;\n }\n if (\"string\" === typeof dataId) {\n var dataRef = makeReference(dataId);\n var sets = context.written[dataId] || (context.written[dataId] = []);\n if (sets.indexOf(selectionSet) >= 0)\n return dataRef;\n sets.push(selectionSet);\n if (this.reader && this.reader.isFresh(result, dataRef, selectionSet, context)) {\n return dataRef;\n }\n var previous_1 = context.incomingById.get(dataId);\n if (previous_1) {\n previous_1.storeObject = context.merge(previous_1.storeObject, incoming);\n previous_1.mergeTree = mergeMergeTrees(previous_1.mergeTree, mergeTree);\n fieldNodeSet.forEach(function (field) { return previous_1.fieldNodeSet.add(field); });\n }\n else {\n context.incomingById.set(dataId, {\n storeObject: incoming,\n mergeTree: mergeTreeIsEmpty(mergeTree) ? void 0 : mergeTree,\n fieldNodeSet: fieldNodeSet,\n });\n }\n return dataRef;\n }\n return incoming;\n };\n StoreWriter.prototype.processFieldValue = function (value, field, context, mergeTree) {\n var _this = this;\n if (!field.selectionSet || value === null) {\n return __DEV__ ? cloneDeep(value) : value;\n }\n if (isArray(value)) {\n return value.map(function (item, i) {\n var value = _this.processFieldValue(item, field, context, getChildMergeTree(mergeTree, i));\n maybeRecycleChildMergeTree(mergeTree, i);\n return value;\n });\n }\n return this.processSelectionSet({\n result: value,\n selectionSet: field.selectionSet,\n context: context,\n mergeTree: mergeTree,\n });\n };\n StoreWriter.prototype.flattenFields = function (selectionSet, result, context, typename) {\n if (typename === void 0) { typename = getTypenameFromResult(result, selectionSet, context.fragmentMap); }\n var fieldMap = new Map();\n var policies = this.cache.policies;\n var limitingTrie = new Trie(false);\n (function flatten(selectionSet, inheritedContext) {\n var visitedNode = limitingTrie.lookup(selectionSet, inheritedContext.clientOnly, inheritedContext.deferred);\n if (visitedNode.visited)\n return;\n visitedNode.visited = true;\n selectionSet.selections.forEach(function (selection) {\n if (!shouldInclude(selection, context.variables))\n return;\n var clientOnly = inheritedContext.clientOnly, deferred = inheritedContext.deferred;\n if (!(clientOnly && deferred) &&\n isNonEmptyArray(selection.directives)) {\n selection.directives.forEach(function (dir) {\n var name = dir.name.value;\n if (name === \"client\")\n clientOnly = true;\n if (name === \"defer\") {\n var args = argumentsObjectFromField(dir, context.variables);\n if (!args || args.if !== false) {\n deferred = true;\n }\n }\n });\n }\n if (isField(selection)) {\n var existing = fieldMap.get(selection);\n if (existing) {\n clientOnly = clientOnly && existing.clientOnly;\n deferred = deferred && existing.deferred;\n }\n fieldMap.set(selection, getContextFlavor(context, clientOnly, deferred));\n }\n else {\n var fragment = getFragmentFromSelection(selection, context.lookupFragment);\n if (!fragment && selection.kind === Kind.FRAGMENT_SPREAD) {\n throw __DEV__ ? new InvariantError(\"No fragment named \".concat(selection.name.value)) : new InvariantError(8);\n }\n if (fragment &&\n policies.fragmentMatches(fragment, typename, result, context.variables)) {\n flatten(fragment.selectionSet, getContextFlavor(context, clientOnly, deferred));\n }\n }\n });\n })(selectionSet, context);\n return fieldMap;\n };\n StoreWriter.prototype.applyMerges = function (mergeTree, existing, incoming, context, getStorageArgs) {\n var _a;\n var _this = this;\n if (mergeTree.map.size && !isReference(incoming)) {\n var e_1 = (!isArray(incoming) &&\n (isReference(existing) || storeValueIsStoreObject(existing))) ? existing : void 0;\n var i_1 = incoming;\n if (e_1 && !getStorageArgs) {\n getStorageArgs = [isReference(e_1) ? e_1.__ref : e_1];\n }\n var changedFields_1;\n var getValue_1 = function (from, name) {\n return isArray(from)\n ? (typeof name === \"number\" ? from[name] : void 0)\n : context.store.getFieldValue(from, String(name));\n };\n mergeTree.map.forEach(function (childTree, storeFieldName) {\n var eVal = getValue_1(e_1, storeFieldName);\n var iVal = getValue_1(i_1, storeFieldName);\n if (void 0 === iVal)\n return;\n if (getStorageArgs) {\n getStorageArgs.push(storeFieldName);\n }\n var aVal = _this.applyMerges(childTree, eVal, iVal, context, getStorageArgs);\n if (aVal !== iVal) {\n changedFields_1 = changedFields_1 || new Map;\n changedFields_1.set(storeFieldName, aVal);\n }\n if (getStorageArgs) {\n invariant(getStorageArgs.pop() === storeFieldName);\n }\n });\n if (changedFields_1) {\n incoming = (isArray(i_1) ? i_1.slice(0) : __assign({}, i_1));\n changedFields_1.forEach(function (value, name) {\n incoming[name] = value;\n });\n }\n }\n if (mergeTree.info) {\n return this.cache.policies.runMergeFunction(existing, incoming, mergeTree.info, context, getStorageArgs && (_a = context.store).getStorage.apply(_a, getStorageArgs));\n }\n return incoming;\n };\n return StoreWriter;\n}());\nexport { StoreWriter };\nvar emptyMergeTreePool = [];\nfunction getChildMergeTree(_a, name) {\n var map = _a.map;\n if (!map.has(name)) {\n map.set(name, emptyMergeTreePool.pop() || { map: new Map });\n }\n return map.get(name);\n}\nfunction mergeMergeTrees(left, right) {\n if (left === right || !right || mergeTreeIsEmpty(right))\n return left;\n if (!left || mergeTreeIsEmpty(left))\n return right;\n var info = left.info && right.info ? __assign(__assign({}, left.info), right.info) : left.info || right.info;\n var needToMergeMaps = left.map.size && right.map.size;\n var map = needToMergeMaps ? new Map :\n left.map.size ? left.map : right.map;\n var merged = { info: info, map: map };\n if (needToMergeMaps) {\n var remainingRightKeys_1 = new Set(right.map.keys());\n left.map.forEach(function (leftTree, key) {\n merged.map.set(key, mergeMergeTrees(leftTree, right.map.get(key)));\n remainingRightKeys_1.delete(key);\n });\n remainingRightKeys_1.forEach(function (key) {\n merged.map.set(key, mergeMergeTrees(right.map.get(key), left.map.get(key)));\n });\n }\n return merged;\n}\nfunction mergeTreeIsEmpty(tree) {\n return !tree || !(tree.info || tree.map.size);\n}\nfunction maybeRecycleChildMergeTree(_a, name) {\n var map = _a.map;\n var childTree = map.get(name);\n if (childTree && mergeTreeIsEmpty(childTree)) {\n emptyMergeTreePool.push(childTree);\n map.delete(name);\n }\n}\nvar warnings = new Set();\nfunction warnAboutDataLoss(existingRef, incomingObj, storeFieldName, store) {\n var getChild = function (objOrRef) {\n var child = store.getFieldValue(objOrRef, storeFieldName);\n return typeof child === \"object\" && child;\n };\n var existing = getChild(existingRef);\n if (!existing)\n return;\n var incoming = getChild(incomingObj);\n if (!incoming)\n return;\n if (isReference(existing))\n return;\n if (equal(existing, incoming))\n return;\n if (Object.keys(existing).every(function (key) { return store.getFieldValue(incoming, key) !== void 0; })) {\n return;\n }\n var parentType = store.getFieldValue(existingRef, \"__typename\") ||\n store.getFieldValue(incomingObj, \"__typename\");\n var fieldName = fieldNameFromStoreName(storeFieldName);\n var typeDotName = \"\".concat(parentType, \".\").concat(fieldName);\n if (warnings.has(typeDotName))\n return;\n warnings.add(typeDotName);\n var childTypenames = [];\n if (!isArray(existing) &&\n !isArray(incoming)) {\n [existing, incoming].forEach(function (child) {\n var typename = store.getFieldValue(child, \"__typename\");\n if (typeof typename === \"string\" &&\n !childTypenames.includes(typename)) {\n childTypenames.push(typename);\n }\n });\n }\n __DEV__ && invariant.warn(\"Cache data may be lost when replacing the \".concat(fieldName, \" field of a \").concat(parentType, \" object.\\n\\nTo address this problem (which is not a bug in Apollo Client), \").concat(childTypenames.length\n ? \"either ensure all objects of type \" +\n childTypenames.join(\" and \") + \" have an ID or a custom merge function, or \"\n : \"\", \"define a custom merge function for the \").concat(typeDotName, \" field, so InMemoryCache can safely merge these objects:\\n\\n existing: \").concat(JSON.stringify(existing).slice(0, 1000), \"\\n incoming: \").concat(JSON.stringify(incoming).slice(0, 1000), \"\\n\\nFor more information about these options, please refer to the documentation:\\n\\n * Ensuring entity objects have IDs: https://go.apollo.dev/c/generating-unique-identifiers\\n * Defining custom merge functions: https://go.apollo.dev/c/merging-non-normalized-objects\\n\"));\n}\n//# sourceMappingURL=writeToStore.js.map","import { __assign, __extends } from \"tslib\";\nimport { invariant } from \"../../utilities/globals/index.js\";\nimport \"./fixPolyfills.js\";\nimport { wrap } from 'optimism';\nimport { equal } from '@wry/equality';\nimport { ApolloCache } from \"../core/cache.js\";\nimport { MissingFieldError } from \"../core/types/common.js\";\nimport { addTypenameToDocument, isReference, } from \"../../utilities/index.js\";\nimport { StoreReader } from \"./readFromStore.js\";\nimport { StoreWriter } from \"./writeToStore.js\";\nimport { EntityStore, supportsResultCaching } from \"./entityStore.js\";\nimport { makeVar, forgetCache, recallCache } from \"./reactiveVars.js\";\nimport { Policies } from \"./policies.js\";\nimport { hasOwn, normalizeConfig, shouldCanonizeResults } from \"./helpers.js\";\nimport { canonicalStringify } from \"./object-canon.js\";\nvar InMemoryCache = (function (_super) {\n __extends(InMemoryCache, _super);\n function InMemoryCache(config) {\n if (config === void 0) { config = {}; }\n var _this = _super.call(this) || this;\n _this.watches = new Set();\n _this.typenameDocumentCache = new Map();\n _this.makeVar = makeVar;\n _this.txCount = 0;\n _this.config = normalizeConfig(config);\n _this.addTypename = !!_this.config.addTypename;\n _this.policies = new Policies({\n cache: _this,\n dataIdFromObject: _this.config.dataIdFromObject,\n possibleTypes: _this.config.possibleTypes,\n typePolicies: _this.config.typePolicies,\n });\n _this.init();\n return _this;\n }\n InMemoryCache.prototype.init = function () {\n var rootStore = this.data = new EntityStore.Root({\n policies: this.policies,\n resultCaching: this.config.resultCaching,\n });\n this.optimisticData = rootStore.stump;\n this.resetResultCache();\n };\n InMemoryCache.prototype.resetResultCache = function (resetResultIdentities) {\n var _this = this;\n var previousReader = this.storeReader;\n var fragments = this.config.fragments;\n this.storeWriter = new StoreWriter(this, this.storeReader = new StoreReader({\n cache: this,\n addTypename: this.addTypename,\n resultCacheMaxSize: this.config.resultCacheMaxSize,\n canonizeResults: shouldCanonizeResults(this.config),\n canon: resetResultIdentities\n ? void 0\n : previousReader && previousReader.canon,\n fragments: fragments,\n }), fragments);\n this.maybeBroadcastWatch = wrap(function (c, options) {\n return _this.broadcastWatch(c, options);\n }, {\n max: this.config.resultCacheMaxSize,\n makeCacheKey: function (c) {\n var store = c.optimistic ? _this.optimisticData : _this.data;\n if (supportsResultCaching(store)) {\n var optimistic = c.optimistic, id = c.id, variables = c.variables;\n return store.makeCacheKey(c.query, c.callback, canonicalStringify({ optimistic: optimistic, id: id, variables: variables }));\n }\n }\n });\n new Set([\n this.data.group,\n this.optimisticData.group,\n ]).forEach(function (group) { return group.resetCaching(); });\n };\n InMemoryCache.prototype.restore = function (data) {\n this.init();\n if (data)\n this.data.replace(data);\n return this;\n };\n InMemoryCache.prototype.extract = function (optimistic) {\n if (optimistic === void 0) { optimistic = false; }\n return (optimistic ? this.optimisticData : this.data).extract();\n };\n InMemoryCache.prototype.read = function (options) {\n var _a = options.returnPartialData, returnPartialData = _a === void 0 ? false : _a;\n try {\n return this.storeReader.diffQueryAgainstStore(__assign(__assign({}, options), { store: options.optimistic ? this.optimisticData : this.data, config: this.config, returnPartialData: returnPartialData })).result || null;\n }\n catch (e) {\n if (e instanceof MissingFieldError) {\n return null;\n }\n throw e;\n }\n };\n InMemoryCache.prototype.write = function (options) {\n try {\n ++this.txCount;\n return this.storeWriter.writeToStore(this.data, options);\n }\n finally {\n if (!--this.txCount && options.broadcast !== false) {\n this.broadcastWatches();\n }\n }\n };\n InMemoryCache.prototype.modify = function (options) {\n if (hasOwn.call(options, \"id\") && !options.id) {\n return false;\n }\n var store = options.optimistic\n ? this.optimisticData\n : this.data;\n try {\n ++this.txCount;\n return store.modify(options.id || \"ROOT_QUERY\", options.fields);\n }\n finally {\n if (!--this.txCount && options.broadcast !== false) {\n this.broadcastWatches();\n }\n }\n };\n InMemoryCache.prototype.diff = function (options) {\n return this.storeReader.diffQueryAgainstStore(__assign(__assign({}, options), { store: options.optimistic ? this.optimisticData : this.data, rootId: options.id || \"ROOT_QUERY\", config: this.config }));\n };\n InMemoryCache.prototype.watch = function (watch) {\n var _this = this;\n if (!this.watches.size) {\n recallCache(this);\n }\n this.watches.add(watch);\n if (watch.immediate) {\n this.maybeBroadcastWatch(watch);\n }\n return function () {\n if (_this.watches.delete(watch) && !_this.watches.size) {\n forgetCache(_this);\n }\n _this.maybeBroadcastWatch.forget(watch);\n };\n };\n InMemoryCache.prototype.gc = function (options) {\n canonicalStringify.reset();\n var ids = this.optimisticData.gc();\n if (options && !this.txCount) {\n if (options.resetResultCache) {\n this.resetResultCache(options.resetResultIdentities);\n }\n else if (options.resetResultIdentities) {\n this.storeReader.resetCanon();\n }\n }\n return ids;\n };\n InMemoryCache.prototype.retain = function (rootId, optimistic) {\n return (optimistic ? this.optimisticData : this.data).retain(rootId);\n };\n InMemoryCache.prototype.release = function (rootId, optimistic) {\n return (optimistic ? this.optimisticData : this.data).release(rootId);\n };\n InMemoryCache.prototype.identify = function (object) {\n if (isReference(object))\n return object.__ref;\n try {\n return this.policies.identify(object)[0];\n }\n catch (e) {\n __DEV__ && invariant.warn(e);\n }\n };\n InMemoryCache.prototype.evict = function (options) {\n if (!options.id) {\n if (hasOwn.call(options, \"id\")) {\n return false;\n }\n options = __assign(__assign({}, options), { id: \"ROOT_QUERY\" });\n }\n try {\n ++this.txCount;\n return this.optimisticData.evict(options, this.data);\n }\n finally {\n if (!--this.txCount && options.broadcast !== false) {\n this.broadcastWatches();\n }\n }\n };\n InMemoryCache.prototype.reset = function (options) {\n var _this = this;\n this.init();\n canonicalStringify.reset();\n if (options && options.discardWatches) {\n this.watches.forEach(function (watch) { return _this.maybeBroadcastWatch.forget(watch); });\n this.watches.clear();\n forgetCache(this);\n }\n else {\n this.broadcastWatches();\n }\n return Promise.resolve();\n };\n InMemoryCache.prototype.removeOptimistic = function (idToRemove) {\n var newOptimisticData = this.optimisticData.removeLayer(idToRemove);\n if (newOptimisticData !== this.optimisticData) {\n this.optimisticData = newOptimisticData;\n this.broadcastWatches();\n }\n };\n InMemoryCache.prototype.batch = function (options) {\n var _this = this;\n var update = options.update, _a = options.optimistic, optimistic = _a === void 0 ? true : _a, removeOptimistic = options.removeOptimistic, onWatchUpdated = options.onWatchUpdated;\n var updateResult;\n var perform = function (layer) {\n var _a = _this, data = _a.data, optimisticData = _a.optimisticData;\n ++_this.txCount;\n if (layer) {\n _this.data = _this.optimisticData = layer;\n }\n try {\n return updateResult = update(_this);\n }\n finally {\n --_this.txCount;\n _this.data = data;\n _this.optimisticData = optimisticData;\n }\n };\n var alreadyDirty = new Set();\n if (onWatchUpdated && !this.txCount) {\n this.broadcastWatches(__assign(__assign({}, options), { onWatchUpdated: function (watch) {\n alreadyDirty.add(watch);\n return false;\n } }));\n }\n if (typeof optimistic === 'string') {\n this.optimisticData = this.optimisticData.addLayer(optimistic, perform);\n }\n else if (optimistic === false) {\n perform(this.data);\n }\n else {\n perform();\n }\n if (typeof removeOptimistic === \"string\") {\n this.optimisticData = this.optimisticData.removeLayer(removeOptimistic);\n }\n if (onWatchUpdated && alreadyDirty.size) {\n this.broadcastWatches(__assign(__assign({}, options), { onWatchUpdated: function (watch, diff) {\n var result = onWatchUpdated.call(this, watch, diff);\n if (result !== false) {\n alreadyDirty.delete(watch);\n }\n return result;\n } }));\n if (alreadyDirty.size) {\n alreadyDirty.forEach(function (watch) { return _this.maybeBroadcastWatch.dirty(watch); });\n }\n }\n else {\n this.broadcastWatches(options);\n }\n return updateResult;\n };\n InMemoryCache.prototype.performTransaction = function (update, optimisticId) {\n return this.batch({\n update: update,\n optimistic: optimisticId || (optimisticId !== null),\n });\n };\n InMemoryCache.prototype.transformDocument = function (document) {\n if (this.addTypename) {\n var result = this.typenameDocumentCache.get(document);\n if (!result) {\n result = addTypenameToDocument(document);\n this.typenameDocumentCache.set(document, result);\n this.typenameDocumentCache.set(result, result);\n }\n return result;\n }\n return document;\n };\n InMemoryCache.prototype.transformForLink = function (document) {\n var fragments = this.config.fragments;\n return fragments\n ? fragments.transform(document)\n : document;\n };\n InMemoryCache.prototype.broadcastWatches = function (options) {\n var _this = this;\n if (!this.txCount) {\n this.watches.forEach(function (c) { return _this.maybeBroadcastWatch(c, options); });\n }\n };\n InMemoryCache.prototype.broadcastWatch = function (c, options) {\n var lastDiff = c.lastDiff;\n var diff = this.diff(c);\n if (options) {\n if (c.optimistic &&\n typeof options.optimistic === \"string\") {\n diff.fromOptimisticTransaction = true;\n }\n if (options.onWatchUpdated &&\n options.onWatchUpdated.call(this, c, diff, lastDiff) === false) {\n return;\n }\n }\n if (!lastDiff || !equal(lastDiff.result, diff.result)) {\n c.callback(c.lastDiff = diff, lastDiff);\n }\n };\n return InMemoryCache;\n}(ApolloCache));\nexport { InMemoryCache };\n//# sourceMappingURL=inMemoryCache.js.map","import { __assign } from \"tslib\";\nimport \"../../utilities/globals/index.js\";\nimport { Trie } from \"@wry/trie\";\nimport { canUseWeakMap, canUseWeakSet, isNonNullObject as isObjectOrArray, } from \"../../utilities/index.js\";\nimport { isArray } from \"./helpers.js\";\nfunction shallowCopy(value) {\n if (isObjectOrArray(value)) {\n return isArray(value)\n ? value.slice(0)\n : __assign({ __proto__: Object.getPrototypeOf(value) }, value);\n }\n return value;\n}\nvar ObjectCanon = (function () {\n function ObjectCanon() {\n this.known = new (canUseWeakSet ? WeakSet : Set)();\n this.pool = new Trie(canUseWeakMap);\n this.passes = new WeakMap();\n this.keysByJSON = new Map();\n this.empty = this.admit({});\n }\n ObjectCanon.prototype.isKnown = function (value) {\n return isObjectOrArray(value) && this.known.has(value);\n };\n ObjectCanon.prototype.pass = function (value) {\n if (isObjectOrArray(value)) {\n var copy = shallowCopy(value);\n this.passes.set(copy, value);\n return copy;\n }\n return value;\n };\n ObjectCanon.prototype.admit = function (value) {\n var _this = this;\n if (isObjectOrArray(value)) {\n var original = this.passes.get(value);\n if (original)\n return original;\n var proto = Object.getPrototypeOf(value);\n switch (proto) {\n case Array.prototype: {\n if (this.known.has(value))\n return value;\n var array = value.map(this.admit, this);\n var node = this.pool.lookupArray(array);\n if (!node.array) {\n this.known.add(node.array = array);\n if (__DEV__) {\n Object.freeze(array);\n }\n }\n return node.array;\n }\n case null:\n case Object.prototype: {\n if (this.known.has(value))\n return value;\n var proto_1 = Object.getPrototypeOf(value);\n var array_1 = [proto_1];\n var keys = this.sortedKeys(value);\n array_1.push(keys.json);\n var firstValueIndex_1 = array_1.length;\n keys.sorted.forEach(function (key) {\n array_1.push(_this.admit(value[key]));\n });\n var node = this.pool.lookupArray(array_1);\n if (!node.object) {\n var obj_1 = node.object = Object.create(proto_1);\n this.known.add(obj_1);\n keys.sorted.forEach(function (key, i) {\n obj_1[key] = array_1[firstValueIndex_1 + i];\n });\n if (__DEV__) {\n Object.freeze(obj_1);\n }\n }\n return node.object;\n }\n }\n }\n return value;\n };\n ObjectCanon.prototype.sortedKeys = function (obj) {\n var keys = Object.keys(obj);\n var node = this.pool.lookupArray(keys);\n if (!node.keys) {\n keys.sort();\n var json = JSON.stringify(keys);\n if (!(node.keys = this.keysByJSON.get(json))) {\n this.keysByJSON.set(json, node.keys = { sorted: keys, json: json });\n }\n }\n return node.keys;\n };\n return ObjectCanon;\n}());\nexport { ObjectCanon };\nexport var canonicalStringify = Object.assign(function (value) {\n if (isObjectOrArray(value)) {\n if (stringifyCanon === void 0) {\n resetCanonicalStringify();\n }\n var canonical = stringifyCanon.admit(value);\n var json = stringifyCache.get(canonical);\n if (json === void 0) {\n stringifyCache.set(canonical, json = JSON.stringify(canonical));\n }\n return json;\n }\n return JSON.stringify(value);\n}, {\n reset: resetCanonicalStringify,\n});\nvar stringifyCanon;\nvar stringifyCache;\nfunction resetCanonicalStringify() {\n stringifyCanon = new ObjectCanon;\n stringifyCache = new (canUseWeakMap ? WeakMap : Map)();\n}\n//# sourceMappingURL=object-canon.js.map","// This currentContext variable will only be used if the makeSlotClass\n// function is called, which happens only if this is the first copy of the\n// @wry/context package to be imported.\nlet currentContext = null;\n// This unique internal object is used to denote the absence of a value\n// for a given Slot, and is never exposed to outside code.\nconst MISSING_VALUE = {};\nlet idCounter = 1;\n// Although we can't do anything about the cost of duplicated code from\n// accidentally bundling multiple copies of the @wry/context package, we can\n// avoid creating the Slot class more than once using makeSlotClass.\nconst makeSlotClass = () => class Slot {\n constructor() {\n // If you have a Slot object, you can find out its slot.id, but you cannot\n // guess the slot.id of a Slot you don't have access to, thanks to the\n // randomized suffix.\n this.id = [\n \"slot\",\n idCounter++,\n Date.now(),\n Math.random().toString(36).slice(2),\n ].join(\":\");\n }\n hasValue() {\n for (let context = currentContext; context; context = context.parent) {\n // We use the Slot object iself as a key to its value, which means the\n // value cannot be obtained without a reference to the Slot object.\n if (this.id in context.slots) {\n const value = context.slots[this.id];\n if (value === MISSING_VALUE)\n break;\n if (context !== currentContext) {\n // Cache the value in currentContext.slots so the next lookup will\n // be faster. This caching is safe because the tree of contexts and\n // the values of the slots are logically immutable.\n currentContext.slots[this.id] = value;\n }\n return true;\n }\n }\n if (currentContext) {\n // If a value was not found for this Slot, it's never going to be found\n // no matter how many times we look it up, so we might as well cache\n // the absence of the value, too.\n currentContext.slots[this.id] = MISSING_VALUE;\n }\n return false;\n }\n getValue() {\n if (this.hasValue()) {\n return currentContext.slots[this.id];\n }\n }\n withValue(value, callback, \n // Given the prevalence of arrow functions, specifying arguments is likely\n // to be much more common than specifying `this`, hence this ordering:\n args, thisArg) {\n const slots = {\n __proto__: null,\n [this.id]: value,\n };\n const parent = currentContext;\n currentContext = { parent, slots };\n try {\n // Function.prototype.apply allows the arguments array argument to be\n // omitted or undefined, so args! is fine here.\n return callback.apply(thisArg, args);\n }\n finally {\n currentContext = parent;\n }\n }\n // Capture the current context and wrap a callback function so that it\n // reestablishes the captured context when called.\n static bind(callback) {\n const context = currentContext;\n return function () {\n const saved = currentContext;\n try {\n currentContext = context;\n return callback.apply(this, arguments);\n }\n finally {\n currentContext = saved;\n }\n };\n }\n // Immediately run a callback function without any captured context.\n static noContext(callback, \n // Given the prevalence of arrow functions, specifying arguments is likely\n // to be much more common than specifying `this`, hence this ordering:\n args, thisArg) {\n if (currentContext) {\n const saved = currentContext;\n try {\n currentContext = null;\n // Function.prototype.apply allows the arguments array argument to be\n // omitted or undefined, so args! is fine here.\n return callback.apply(thisArg, args);\n }\n finally {\n currentContext = saved;\n }\n }\n else {\n return callback.apply(thisArg, args);\n }\n }\n};\nfunction maybe(fn) {\n try {\n return fn();\n }\n catch (ignored) { }\n}\n// We store a single global implementation of the Slot class as a permanent\n// non-enumerable property of the globalThis object. This obfuscation does\n// nothing to prevent access to the Slot class, but at least it ensures the\n// implementation (i.e. currentContext) cannot be tampered with, and all copies\n// of the @wry/context package (hopefully just one) will share the same Slot\n// implementation. Since the first copy of the @wry/context package to be\n// imported wins, this technique imposes a steep cost for any future breaking\n// changes to the Slot class.\nconst globalKey = \"@wry/context:Slot\";\nconst host = \n// Prefer globalThis when available.\n// https://github.com/benjamn/wryware/issues/347\nmaybe(() => globalThis) ||\n // Fall back to global, which works in Node.js and may be converted by some\n // bundlers to the appropriate identifier (window, self, ...) depending on the\n // bundling target. https://github.com/endojs/endo/issues/576#issuecomment-1178515224\n maybe(() => global) ||\n // Otherwise, use a dummy host that's local to this module. We used to fall\n // back to using the Array constructor as a namespace, but that was flagged in\n // https://github.com/benjamn/wryware/issues/347, and can be avoided.\n Object.create(null);\n// Whichever globalHost we're using, make TypeScript happy about the additional\n// globalKey property.\nconst globalHost = host;\nexport const Slot = globalHost[globalKey] ||\n // Earlier versions of this package stored the globalKey property on the Array\n // constructor, so we check there as well, to prevent Slot class duplication.\n Array[globalKey] ||\n (function (Slot) {\n try {\n Object.defineProperty(globalHost, globalKey, {\n value: Slot,\n enumerable: false,\n writable: false,\n // When it was possible for globalHost to be the Array constructor (a\n // legacy Slot dedup strategy), it was important for the property to be\n // configurable:true so it could be deleted. That does not seem to be as\n // important when globalHost is the global object, but I don't want to\n // cause similar problems again, and configurable:true seems safest.\n // https://github.com/endojs/endo/issues/576#issuecomment-1178274008\n configurable: true\n });\n }\n finally {\n return Slot;\n }\n })(makeSlotClass());\n//# sourceMappingURL=slot.js.map","import { Slot } from \"./slot.js\";\nexport { Slot };\nexport const { bind, noContext } = Slot;\n// Like global.setTimeout, except the callback runs with captured context.\nexport { setTimeoutWithContext as setTimeout };\nfunction setTimeoutWithContext(callback, delay) {\n return setTimeout(bind(callback), delay);\n}\n// Turn any generator function into an async function (using yield instead\n// of await), with context automatically preserved across yields.\nexport function asyncFromGen(genFn) {\n return function () {\n const gen = genFn.apply(this, arguments);\n const boundNext = bind(gen.next);\n const boundThrow = bind(gen.throw);\n return new Promise((resolve, reject) => {\n function invoke(method, argument) {\n try {\n var result = method.call(gen, argument);\n }\n catch (error) {\n return reject(error);\n }\n const next = result.done ? resolve : invokeNext;\n if (isPromiseLike(result.value)) {\n result.value.then(next, result.done ? reject : invokeThrow);\n }\n else {\n next(result.value);\n }\n }\n const invokeNext = (value) => invoke(boundNext, value);\n const invokeThrow = (error) => invoke(boundThrow, error);\n invokeNext();\n });\n };\n}\nfunction isPromiseLike(value) {\n return value && typeof value.then === \"function\";\n}\n// If you use the fibers npm package to implement coroutines in Node.js,\n// you should call this function at least once to ensure context management\n// remains coherent across any yields.\nconst wrappedFibers = [];\nexport function wrapYieldingFiberMethods(Fiber) {\n // There can be only one implementation of Fiber per process, so this array\n // should never grow longer than one element.\n if (wrappedFibers.indexOf(Fiber) < 0) {\n const wrap = (obj, method) => {\n const fn = obj[method];\n obj[method] = function () {\n return noContext(fn, arguments, this);\n };\n };\n // These methods can yield, according to\n // https://github.com/laverdet/node-fibers/blob/ddebed9b8ae3883e57f822e2108e6943e5c8d2a8/fibers.js#L97-L100\n wrap(Fiber, \"yield\");\n wrap(Fiber.prototype, \"run\");\n wrap(Fiber.prototype, \"throwInto\");\n wrappedFibers.push(Fiber);\n }\n return Fiber;\n}\n//# sourceMappingURL=index.js.map","import { dep } from \"optimism\";\nimport { Slot } from \"@wry/context\";\nexport var cacheSlot = new Slot();\nvar cacheInfoMap = new WeakMap();\nfunction getCacheInfo(cache) {\n var info = cacheInfoMap.get(cache);\n if (!info) {\n cacheInfoMap.set(cache, info = {\n vars: new Set,\n dep: dep(),\n });\n }\n return info;\n}\nexport function forgetCache(cache) {\n getCacheInfo(cache).vars.forEach(function (rv) { return rv.forgetCache(cache); });\n}\nexport function recallCache(cache) {\n getCacheInfo(cache).vars.forEach(function (rv) { return rv.attachCache(cache); });\n}\nexport function makeVar(value) {\n var caches = new Set();\n var listeners = new Set();\n var rv = function (newValue) {\n if (arguments.length > 0) {\n if (value !== newValue) {\n value = newValue;\n caches.forEach(function (cache) {\n getCacheInfo(cache).dep.dirty(rv);\n broadcast(cache);\n });\n var oldListeners = Array.from(listeners);\n listeners.clear();\n oldListeners.forEach(function (listener) { return listener(value); });\n }\n }\n else {\n var cache = cacheSlot.getValue();\n if (cache) {\n attach(cache);\n getCacheInfo(cache).dep(rv);\n }\n }\n return value;\n };\n rv.onNextChange = function (listener) {\n listeners.add(listener);\n return function () {\n listeners.delete(listener);\n };\n };\n var attach = rv.attachCache = function (cache) {\n caches.add(cache);\n getCacheInfo(cache).vars.add(rv);\n return rv;\n };\n rv.forgetCache = function (cache) { return caches.delete(cache); };\n return rv;\n}\nfunction broadcast(cache) {\n if (cache.broadcastWatches) {\n cache.broadcastWatches();\n }\n}\n//# sourceMappingURL=reactiveVars.js.map","import { ApolloLink } from \"./ApolloLink.js\";\nexport var execute = ApolloLink.execute;\n//# sourceMappingURL=execute.js.map","import { __extends } from \"tslib\";\nimport { ApolloLink } from \"../core/index.js\";\nimport { createHttpLink } from \"./createHttpLink.js\";\nvar HttpLink = (function (_super) {\n __extends(HttpLink, _super);\n function HttpLink(options) {\n if (options === void 0) { options = {}; }\n var _this = _super.call(this, createHttpLink(options).request) || this;\n _this.options = options;\n return _this;\n }\n return HttpLink;\n}(ApolloLink));\nexport { HttpLink };\n//# sourceMappingURL=HttpLink.js.map","import { Observable } from \"./Observable.js\";\nexport function asyncMap(observable, mapFn, catchFn) {\n return new Observable(function (observer) {\n var next = observer.next, error = observer.error, complete = observer.complete;\n var activeCallbackCount = 0;\n var completed = false;\n var promiseQueue = {\n then: function (callback) {\n return new Promise(function (resolve) { return resolve(callback()); });\n },\n };\n function makeCallback(examiner, delegate) {\n if (examiner) {\n return function (arg) {\n ++activeCallbackCount;\n var both = function () { return examiner(arg); };\n promiseQueue = promiseQueue.then(both, both).then(function (result) {\n --activeCallbackCount;\n next && next.call(observer, result);\n if (completed) {\n handler.complete();\n }\n }, function (error) {\n --activeCallbackCount;\n throw error;\n }).catch(function (caught) {\n error && error.call(observer, caught);\n });\n };\n }\n else {\n return function (arg) { return delegate && delegate.call(observer, arg); };\n }\n }\n var handler = {\n next: makeCallback(mapFn, next),\n error: makeCallback(catchFn, error),\n complete: function () {\n completed = true;\n if (!activeCallbackCount) {\n complete && complete.call(observer);\n }\n },\n };\n var sub = observable.subscribe(handler);\n return function () { return sub.unsubscribe(); };\n });\n}\n//# sourceMappingURL=asyncMap.js.map","export function graphQLResultHasError(result) {\n return (result.errors && result.errors.length > 0) || false;\n}\n//# sourceMappingURL=errorHandling.js.map","export function iterateObserversSafely(observers, method, argument) {\n var observersWithMethod = [];\n observers.forEach(function (obs) { return obs[method] && observersWithMethod.push(obs); });\n observersWithMethod.forEach(function (obs) { return obs[method](argument); });\n}\n//# sourceMappingURL=iteration.js.map","import { Observable } from \"./Observable.js\";\nimport { canUseSymbol } from \"../common/canUse.js\";\nexport function fixObservableSubclass(subclass) {\n function set(key) {\n Object.defineProperty(subclass, key, { value: Observable });\n }\n if (canUseSymbol && Symbol.species) {\n set(Symbol.species);\n }\n set(\"@@species\");\n return subclass;\n}\n//# sourceMappingURL=subclassing.js.map","import { __extends } from \"tslib\";\nimport { Observable } from \"./Observable.js\";\nimport { iterateObserversSafely } from \"./iteration.js\";\nimport { fixObservableSubclass } from \"./subclassing.js\";\nfunction isPromiseLike(value) {\n return value && typeof value.then === \"function\";\n}\nvar Concast = (function (_super) {\n __extends(Concast, _super);\n function Concast(sources) {\n var _this = _super.call(this, function (observer) {\n _this.addObserver(observer);\n return function () { return _this.removeObserver(observer); };\n }) || this;\n _this.observers = new Set();\n _this.promise = new Promise(function (resolve, reject) {\n _this.resolve = resolve;\n _this.reject = reject;\n });\n _this.handlers = {\n next: function (result) {\n if (_this.sub !== null) {\n _this.latest = [\"next\", result];\n _this.notify(\"next\", result);\n iterateObserversSafely(_this.observers, \"next\", result);\n }\n },\n error: function (error) {\n var sub = _this.sub;\n if (sub !== null) {\n if (sub)\n setTimeout(function () { return sub.unsubscribe(); });\n _this.sub = null;\n _this.latest = [\"error\", error];\n _this.reject(error);\n _this.notify(\"error\", error);\n iterateObserversSafely(_this.observers, \"error\", error);\n }\n },\n complete: function () {\n var sub = _this.sub;\n if (sub !== null) {\n var value = _this.sources.shift();\n if (!value) {\n if (sub)\n setTimeout(function () { return sub.unsubscribe(); });\n _this.sub = null;\n if (_this.latest &&\n _this.latest[0] === \"next\") {\n _this.resolve(_this.latest[1]);\n }\n else {\n _this.resolve();\n }\n _this.notify(\"complete\");\n iterateObserversSafely(_this.observers, \"complete\");\n }\n else if (isPromiseLike(value)) {\n value.then(function (obs) { return _this.sub = obs.subscribe(_this.handlers); });\n }\n else {\n _this.sub = value.subscribe(_this.handlers);\n }\n }\n },\n };\n _this.nextResultListeners = new Set();\n _this.cancel = function (reason) {\n _this.reject(reason);\n _this.sources = [];\n _this.handlers.complete();\n };\n _this.promise.catch(function (_) { });\n if (typeof sources === \"function\") {\n sources = [new Observable(sources)];\n }\n if (isPromiseLike(sources)) {\n sources.then(function (iterable) { return _this.start(iterable); }, _this.handlers.error);\n }\n else {\n _this.start(sources);\n }\n return _this;\n }\n Concast.prototype.start = function (sources) {\n if (this.sub !== void 0)\n return;\n this.sources = Array.from(sources);\n this.handlers.complete();\n };\n Concast.prototype.deliverLastMessage = function (observer) {\n if (this.latest) {\n var nextOrError = this.latest[0];\n var method = observer[nextOrError];\n if (method) {\n method.call(observer, this.latest[1]);\n }\n if (this.sub === null &&\n nextOrError === \"next\" &&\n observer.complete) {\n observer.complete();\n }\n }\n };\n Concast.prototype.addObserver = function (observer) {\n if (!this.observers.has(observer)) {\n this.deliverLastMessage(observer);\n this.observers.add(observer);\n }\n };\n Concast.prototype.removeObserver = function (observer) {\n if (this.observers.delete(observer) &&\n this.observers.size < 1) {\n this.handlers.complete();\n }\n };\n Concast.prototype.notify = function (method, arg) {\n var nextResultListeners = this.nextResultListeners;\n if (nextResultListeners.size) {\n this.nextResultListeners = new Set;\n nextResultListeners.forEach(function (listener) { return listener(method, arg); });\n }\n };\n Concast.prototype.beforeNext = function (callback) {\n var called = false;\n this.nextResultListeners.add(function (method, arg) {\n if (!called) {\n called = true;\n callback(method, arg);\n }\n });\n };\n return Concast;\n}(Observable));\nexport { Concast };\nfixObservableSubclass(Concast);\n//# sourceMappingURL=Concast.js.map","import { __assign, __extends } from \"tslib\";\nimport { invariant } from \"../utilities/globals/index.js\";\nimport { equal } from '@wry/equality';\nimport { NetworkStatus, isNetworkRequestInFlight } from \"./networkStatus.js\";\nimport { cloneDeep, compact, getOperationDefinition, Observable, iterateObserversSafely, isNonEmptyArray, fixObservableSubclass, getQueryDefinition, } from \"../utilities/index.js\";\nvar assign = Object.assign, hasOwnProperty = Object.hasOwnProperty;\nvar ObservableQuery = (function (_super) {\n __extends(ObservableQuery, _super);\n function ObservableQuery(_a) {\n var queryManager = _a.queryManager, queryInfo = _a.queryInfo, options = _a.options;\n var _this = _super.call(this, function (observer) {\n try {\n var subObserver = observer._subscription._observer;\n if (subObserver && !subObserver.error) {\n subObserver.error = defaultSubscriptionObserverErrorCallback;\n }\n }\n catch (_a) { }\n var first = !_this.observers.size;\n _this.observers.add(observer);\n var last = _this.last;\n if (last && last.error) {\n observer.error && observer.error(last.error);\n }\n else if (last && last.result) {\n observer.next && observer.next(last.result);\n }\n if (first) {\n _this.reobserve().catch(function () { });\n }\n return function () {\n if (_this.observers.delete(observer) && !_this.observers.size) {\n _this.tearDownQuery();\n }\n };\n }) || this;\n _this.observers = new Set();\n _this.subscriptions = new Set();\n _this.queryInfo = queryInfo;\n _this.queryManager = queryManager;\n _this.isTornDown = false;\n var _b = queryManager.defaultOptions.watchQuery, _c = _b === void 0 ? {} : _b, _d = _c.fetchPolicy, defaultFetchPolicy = _d === void 0 ? \"cache-first\" : _d;\n var _e = options.fetchPolicy, fetchPolicy = _e === void 0 ? defaultFetchPolicy : _e, _f = options.initialFetchPolicy, initialFetchPolicy = _f === void 0 ? (fetchPolicy === \"standby\" ? defaultFetchPolicy : fetchPolicy) : _f;\n _this.options = __assign(__assign({}, options), { initialFetchPolicy: initialFetchPolicy, fetchPolicy: fetchPolicy });\n _this.queryId = queryInfo.queryId || queryManager.generateQueryId();\n var opDef = getOperationDefinition(_this.query);\n _this.queryName = opDef && opDef.name && opDef.name.value;\n return _this;\n }\n Object.defineProperty(ObservableQuery.prototype, \"query\", {\n get: function () {\n return this.queryManager.transform(this.options.query).document;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ObservableQuery.prototype, \"variables\", {\n get: function () {\n return this.options.variables;\n },\n enumerable: false,\n configurable: true\n });\n ObservableQuery.prototype.result = function () {\n var _this = this;\n return new Promise(function (resolve, reject) {\n var observer = {\n next: function (result) {\n resolve(result);\n _this.observers.delete(observer);\n if (!_this.observers.size) {\n _this.queryManager.removeQuery(_this.queryId);\n }\n setTimeout(function () {\n subscription.unsubscribe();\n }, 0);\n },\n error: reject,\n };\n var subscription = _this.subscribe(observer);\n });\n };\n ObservableQuery.prototype.getCurrentResult = function (saveAsLastResult) {\n if (saveAsLastResult === void 0) { saveAsLastResult = true; }\n var lastResult = this.getLastResult(true);\n var networkStatus = this.queryInfo.networkStatus ||\n (lastResult && lastResult.networkStatus) ||\n NetworkStatus.ready;\n var result = __assign(__assign({}, lastResult), { loading: isNetworkRequestInFlight(networkStatus), networkStatus: networkStatus });\n var _a = this.options.fetchPolicy, fetchPolicy = _a === void 0 ? \"cache-first\" : _a;\n if (fetchPolicy === 'network-only' ||\n fetchPolicy === 'no-cache' ||\n fetchPolicy === 'standby' ||\n this.queryManager.transform(this.options.query).hasForcedResolvers) {\n }\n else {\n var diff = this.queryInfo.getDiff();\n if (diff.complete || this.options.returnPartialData) {\n result.data = diff.result;\n }\n if (equal(result.data, {})) {\n result.data = void 0;\n }\n if (diff.complete) {\n delete result.partial;\n if (diff.complete &&\n result.networkStatus === NetworkStatus.loading &&\n (fetchPolicy === 'cache-first' ||\n fetchPolicy === 'cache-only')) {\n result.networkStatus = NetworkStatus.ready;\n result.loading = false;\n }\n }\n else {\n result.partial = true;\n }\n if (__DEV__ &&\n !diff.complete &&\n !this.options.partialRefetch &&\n !result.loading &&\n !result.data &&\n !result.error) {\n logMissingFieldErrors(diff.missing);\n }\n }\n if (saveAsLastResult) {\n this.updateLastResult(result);\n }\n return result;\n };\n ObservableQuery.prototype.isDifferentFromLastResult = function (newResult, variables) {\n return (!this.last ||\n !equal(this.last.result, newResult) ||\n (variables && !equal(this.last.variables, variables)));\n };\n ObservableQuery.prototype.getLast = function (key, variablesMustMatch) {\n var last = this.last;\n if (last &&\n last[key] &&\n (!variablesMustMatch || equal(last.variables, this.variables))) {\n return last[key];\n }\n };\n ObservableQuery.prototype.getLastResult = function (variablesMustMatch) {\n return this.getLast(\"result\", variablesMustMatch);\n };\n ObservableQuery.prototype.getLastError = function (variablesMustMatch) {\n return this.getLast(\"error\", variablesMustMatch);\n };\n ObservableQuery.prototype.resetLastResults = function () {\n delete this.last;\n this.isTornDown = false;\n };\n ObservableQuery.prototype.resetQueryStoreErrors = function () {\n this.queryManager.resetErrors(this.queryId);\n };\n ObservableQuery.prototype.refetch = function (variables) {\n var _a;\n var reobserveOptions = {\n pollInterval: 0,\n };\n var fetchPolicy = this.options.fetchPolicy;\n if (fetchPolicy === 'cache-and-network') {\n reobserveOptions.fetchPolicy = fetchPolicy;\n }\n else if (fetchPolicy === 'no-cache') {\n reobserveOptions.fetchPolicy = 'no-cache';\n }\n else {\n reobserveOptions.fetchPolicy = 'network-only';\n }\n if (__DEV__ && variables && hasOwnProperty.call(variables, \"variables\")) {\n var queryDef = getQueryDefinition(this.query);\n var vars = queryDef.variableDefinitions;\n if (!vars || !vars.some(function (v) { return v.variable.name.value === \"variables\"; })) {\n __DEV__ && invariant.warn(\"Called refetch(\".concat(JSON.stringify(variables), \") for query \").concat(((_a = queryDef.name) === null || _a === void 0 ? void 0 : _a.value) || JSON.stringify(queryDef), \", which does not declare a $variables variable.\\nDid you mean to call refetch(variables) instead of refetch({ variables })?\"));\n }\n }\n if (variables && !equal(this.options.variables, variables)) {\n reobserveOptions.variables = this.options.variables = __assign(__assign({}, this.options.variables), variables);\n }\n this.queryInfo.resetLastWrite();\n return this.reobserve(reobserveOptions, NetworkStatus.refetch);\n };\n ObservableQuery.prototype.fetchMore = function (fetchMoreOptions) {\n var _this = this;\n var combinedOptions = __assign(__assign({}, (fetchMoreOptions.query ? fetchMoreOptions : __assign(__assign(__assign(__assign({}, this.options), { query: this.query }), fetchMoreOptions), { variables: __assign(__assign({}, this.options.variables), fetchMoreOptions.variables) }))), { fetchPolicy: \"no-cache\" });\n var qid = this.queryManager.generateQueryId();\n var queryInfo = this.queryInfo;\n var originalNetworkStatus = queryInfo.networkStatus;\n queryInfo.networkStatus = NetworkStatus.fetchMore;\n if (combinedOptions.notifyOnNetworkStatusChange) {\n this.observe();\n }\n var updatedQuerySet = new Set();\n return this.queryManager.fetchQuery(qid, combinedOptions, NetworkStatus.fetchMore).then(function (fetchMoreResult) {\n _this.queryManager.removeQuery(qid);\n if (queryInfo.networkStatus === NetworkStatus.fetchMore) {\n queryInfo.networkStatus = originalNetworkStatus;\n }\n _this.queryManager.cache.batch({\n update: function (cache) {\n var updateQuery = fetchMoreOptions.updateQuery;\n if (updateQuery) {\n cache.updateQuery({\n query: _this.query,\n variables: _this.variables,\n returnPartialData: true,\n optimistic: false,\n }, function (previous) { return updateQuery(previous, {\n fetchMoreResult: fetchMoreResult.data,\n variables: combinedOptions.variables,\n }); });\n }\n else {\n cache.writeQuery({\n query: combinedOptions.query,\n variables: combinedOptions.variables,\n data: fetchMoreResult.data,\n });\n }\n },\n onWatchUpdated: function (watch) {\n updatedQuerySet.add(watch.query);\n },\n });\n return fetchMoreResult;\n }).finally(function () {\n if (!updatedQuerySet.has(_this.query)) {\n reobserveCacheFirst(_this);\n }\n });\n };\n ObservableQuery.prototype.subscribeToMore = function (options) {\n var _this = this;\n var subscription = this.queryManager\n .startGraphQLSubscription({\n query: options.document,\n variables: options.variables,\n context: options.context,\n })\n .subscribe({\n next: function (subscriptionData) {\n var updateQuery = options.updateQuery;\n if (updateQuery) {\n _this.updateQuery(function (previous, _a) {\n var variables = _a.variables;\n return updateQuery(previous, {\n subscriptionData: subscriptionData,\n variables: variables,\n });\n });\n }\n },\n error: function (err) {\n if (options.onError) {\n options.onError(err);\n return;\n }\n __DEV__ && invariant.error('Unhandled GraphQL subscription error', err);\n },\n });\n this.subscriptions.add(subscription);\n return function () {\n if (_this.subscriptions.delete(subscription)) {\n subscription.unsubscribe();\n }\n };\n };\n ObservableQuery.prototype.setOptions = function (newOptions) {\n return this.reobserve(newOptions);\n };\n ObservableQuery.prototype.setVariables = function (variables) {\n if (equal(this.variables, variables)) {\n return this.observers.size\n ? this.result()\n : Promise.resolve();\n }\n this.options.variables = variables;\n if (!this.observers.size) {\n return Promise.resolve();\n }\n return this.reobserve({\n fetchPolicy: this.options.initialFetchPolicy,\n variables: variables,\n }, NetworkStatus.setVariables);\n };\n ObservableQuery.prototype.updateQuery = function (mapFn) {\n var queryManager = this.queryManager;\n var result = queryManager.cache.diff({\n query: this.options.query,\n variables: this.variables,\n returnPartialData: true,\n optimistic: false,\n }).result;\n var newResult = mapFn(result, {\n variables: this.variables,\n });\n if (newResult) {\n queryManager.cache.writeQuery({\n query: this.options.query,\n data: newResult,\n variables: this.variables,\n });\n queryManager.broadcastQueries();\n }\n };\n ObservableQuery.prototype.startPolling = function (pollInterval) {\n this.options.pollInterval = pollInterval;\n this.updatePolling();\n };\n ObservableQuery.prototype.stopPolling = function () {\n this.options.pollInterval = 0;\n this.updatePolling();\n };\n ObservableQuery.prototype.applyNextFetchPolicy = function (reason, options) {\n if (options.nextFetchPolicy) {\n var _a = options.fetchPolicy, fetchPolicy = _a === void 0 ? \"cache-first\" : _a, _b = options.initialFetchPolicy, initialFetchPolicy = _b === void 0 ? fetchPolicy : _b;\n if (fetchPolicy === \"standby\") {\n }\n else if (typeof options.nextFetchPolicy === \"function\") {\n options.fetchPolicy = options.nextFetchPolicy(fetchPolicy, {\n reason: reason,\n options: options,\n observable: this,\n initialFetchPolicy: initialFetchPolicy,\n });\n }\n else if (reason === \"variables-changed\") {\n options.fetchPolicy = initialFetchPolicy;\n }\n else {\n options.fetchPolicy = options.nextFetchPolicy;\n }\n }\n return options.fetchPolicy;\n };\n ObservableQuery.prototype.fetch = function (options, newNetworkStatus) {\n this.queryManager.setObservableQuery(this);\n return this.queryManager.fetchQueryObservable(this.queryId, options, newNetworkStatus);\n };\n ObservableQuery.prototype.updatePolling = function () {\n var _this = this;\n if (this.queryManager.ssrMode) {\n return;\n }\n var _a = this, pollingInfo = _a.pollingInfo, pollInterval = _a.options.pollInterval;\n if (!pollInterval) {\n if (pollingInfo) {\n clearTimeout(pollingInfo.timeout);\n delete this.pollingInfo;\n }\n return;\n }\n if (pollingInfo &&\n pollingInfo.interval === pollInterval) {\n return;\n }\n __DEV__ ? invariant(pollInterval, 'Attempted to start a polling query without a polling interval.') : invariant(pollInterval, 12);\n var info = pollingInfo || (this.pollingInfo = {});\n info.interval = pollInterval;\n var maybeFetch = function () {\n if (_this.pollingInfo) {\n if (!isNetworkRequestInFlight(_this.queryInfo.networkStatus)) {\n _this.reobserve({\n fetchPolicy: _this.options.initialFetchPolicy === 'no-cache' ? 'no-cache' : 'network-only',\n }, NetworkStatus.poll).then(poll, poll);\n }\n else {\n poll();\n }\n }\n ;\n };\n var poll = function () {\n var info = _this.pollingInfo;\n if (info) {\n clearTimeout(info.timeout);\n info.timeout = setTimeout(maybeFetch, info.interval);\n }\n };\n poll();\n };\n ObservableQuery.prototype.updateLastResult = function (newResult, variables) {\n if (variables === void 0) { variables = this.variables; }\n this.last = __assign(__assign({}, this.last), { result: this.queryManager.assumeImmutableResults\n ? newResult\n : cloneDeep(newResult), variables: variables });\n if (!isNonEmptyArray(newResult.errors)) {\n delete this.last.error;\n }\n return this.last;\n };\n ObservableQuery.prototype.reobserve = function (newOptions, newNetworkStatus) {\n var _this = this;\n this.isTornDown = false;\n var useDisposableConcast = newNetworkStatus === NetworkStatus.refetch ||\n newNetworkStatus === NetworkStatus.fetchMore ||\n newNetworkStatus === NetworkStatus.poll;\n var oldVariables = this.options.variables;\n var oldFetchPolicy = this.options.fetchPolicy;\n var mergedOptions = compact(this.options, newOptions || {});\n var options = useDisposableConcast\n ? mergedOptions\n : assign(this.options, mergedOptions);\n if (!useDisposableConcast) {\n this.updatePolling();\n if (newOptions &&\n newOptions.variables &&\n !equal(newOptions.variables, oldVariables) &&\n options.fetchPolicy !== \"standby\" &&\n options.fetchPolicy === oldFetchPolicy) {\n this.applyNextFetchPolicy(\"variables-changed\", options);\n if (newNetworkStatus === void 0) {\n newNetworkStatus = NetworkStatus.setVariables;\n }\n }\n }\n var variables = options.variables && __assign({}, options.variables);\n var concast = this.fetch(options, newNetworkStatus);\n var observer = {\n next: function (result) {\n _this.reportResult(result, variables);\n },\n error: function (error) {\n _this.reportError(error, variables);\n },\n };\n if (!useDisposableConcast) {\n if (this.concast && this.observer) {\n this.concast.removeObserver(this.observer);\n }\n this.concast = concast;\n this.observer = observer;\n }\n concast.addObserver(observer);\n return concast.promise;\n };\n ObservableQuery.prototype.observe = function () {\n this.reportResult(this.getCurrentResult(false), this.variables);\n };\n ObservableQuery.prototype.reportResult = function (result, variables) {\n var lastError = this.getLastError();\n if (lastError || this.isDifferentFromLastResult(result, variables)) {\n if (lastError || !result.partial || this.options.returnPartialData) {\n this.updateLastResult(result, variables);\n }\n iterateObserversSafely(this.observers, 'next', result);\n }\n };\n ObservableQuery.prototype.reportError = function (error, variables) {\n var errorResult = __assign(__assign({}, this.getLastResult()), { error: error, errors: error.graphQLErrors, networkStatus: NetworkStatus.error, loading: false });\n this.updateLastResult(errorResult, variables);\n iterateObserversSafely(this.observers, 'error', this.last.error = error);\n };\n ObservableQuery.prototype.hasObservers = function () {\n return this.observers.size > 0;\n };\n ObservableQuery.prototype.tearDownQuery = function () {\n if (this.isTornDown)\n return;\n if (this.concast && this.observer) {\n this.concast.removeObserver(this.observer);\n delete this.concast;\n delete this.observer;\n }\n this.stopPolling();\n this.subscriptions.forEach(function (sub) { return sub.unsubscribe(); });\n this.subscriptions.clear();\n this.queryManager.stopQuery(this.queryId);\n this.observers.clear();\n this.isTornDown = true;\n };\n return ObservableQuery;\n}(Observable));\nexport { ObservableQuery };\nfixObservableSubclass(ObservableQuery);\nexport function reobserveCacheFirst(obsQuery) {\n var _a = obsQuery.options, fetchPolicy = _a.fetchPolicy, nextFetchPolicy = _a.nextFetchPolicy;\n if (fetchPolicy === \"cache-and-network\" ||\n fetchPolicy === \"network-only\") {\n return obsQuery.reobserve({\n fetchPolicy: \"cache-first\",\n nextFetchPolicy: function () {\n this.nextFetchPolicy = nextFetchPolicy;\n if (typeof nextFetchPolicy === \"function\") {\n return nextFetchPolicy.apply(this, arguments);\n }\n return fetchPolicy;\n },\n });\n }\n return obsQuery.reobserve();\n}\nfunction defaultSubscriptionObserverErrorCallback(error) {\n __DEV__ && invariant.error('Unhandled error', error.message, error.stack);\n}\nexport function logMissingFieldErrors(missing) {\n if (__DEV__ && missing) {\n __DEV__ && invariant.debug(\"Missing cache result fields: \".concat(JSON.stringify(missing)), missing);\n }\n}\n//# sourceMappingURL=ObservableQuery.js.map","import { __assign, __awaiter, __generator } from \"tslib\";\nimport { invariant } from \"../utilities/globals/index.js\";\nimport { visit, BREAK, } from 'graphql';\nimport { argumentsObjectFromField, buildQueryFromSelectionSet, createFragmentMap, getFragmentDefinitions, getMainDefinition, hasDirectives, isField, isInlineFragment, mergeDeep, mergeDeepArray, removeClientSetsFromDocument, resultKeyNameFromField, shouldInclude, } from \"../utilities/index.js\";\nimport { cacheSlot } from \"../cache/index.js\";\nvar LocalState = (function () {\n function LocalState(_a) {\n var cache = _a.cache, client = _a.client, resolvers = _a.resolvers, fragmentMatcher = _a.fragmentMatcher;\n this.cache = cache;\n if (client) {\n this.client = client;\n }\n if (resolvers) {\n this.addResolvers(resolvers);\n }\n if (fragmentMatcher) {\n this.setFragmentMatcher(fragmentMatcher);\n }\n }\n LocalState.prototype.addResolvers = function (resolvers) {\n var _this = this;\n this.resolvers = this.resolvers || {};\n if (Array.isArray(resolvers)) {\n resolvers.forEach(function (resolverGroup) {\n _this.resolvers = mergeDeep(_this.resolvers, resolverGroup);\n });\n }\n else {\n this.resolvers = mergeDeep(this.resolvers, resolvers);\n }\n };\n LocalState.prototype.setResolvers = function (resolvers) {\n this.resolvers = {};\n this.addResolvers(resolvers);\n };\n LocalState.prototype.getResolvers = function () {\n return this.resolvers || {};\n };\n LocalState.prototype.runResolvers = function (_a) {\n var document = _a.document, remoteResult = _a.remoteResult, context = _a.context, variables = _a.variables, _b = _a.onlyRunForcedResolvers, onlyRunForcedResolvers = _b === void 0 ? false : _b;\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_c) {\n if (document) {\n return [2, this.resolveDocument(document, remoteResult.data, context, variables, this.fragmentMatcher, onlyRunForcedResolvers).then(function (localResult) { return (__assign(__assign({}, remoteResult), { data: localResult.result })); })];\n }\n return [2, remoteResult];\n });\n });\n };\n LocalState.prototype.setFragmentMatcher = function (fragmentMatcher) {\n this.fragmentMatcher = fragmentMatcher;\n };\n LocalState.prototype.getFragmentMatcher = function () {\n return this.fragmentMatcher;\n };\n LocalState.prototype.clientQuery = function (document) {\n if (hasDirectives(['client'], document)) {\n if (this.resolvers) {\n return document;\n }\n }\n return null;\n };\n LocalState.prototype.serverQuery = function (document) {\n return removeClientSetsFromDocument(document);\n };\n LocalState.prototype.prepareContext = function (context) {\n var cache = this.cache;\n return __assign(__assign({}, context), { cache: cache, getCacheKey: function (obj) {\n return cache.identify(obj);\n } });\n };\n LocalState.prototype.addExportedVariables = function (document, variables, context) {\n if (variables === void 0) { variables = {}; }\n if (context === void 0) { context = {}; }\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n if (document) {\n return [2, this.resolveDocument(document, this.buildRootValueFromCache(document, variables) || {}, this.prepareContext(context), variables).then(function (data) { return (__assign(__assign({}, variables), data.exportedVariables)); })];\n }\n return [2, __assign({}, variables)];\n });\n });\n };\n LocalState.prototype.shouldForceResolvers = function (document) {\n var forceResolvers = false;\n visit(document, {\n Directive: {\n enter: function (node) {\n if (node.name.value === 'client' && node.arguments) {\n forceResolvers = node.arguments.some(function (arg) {\n return arg.name.value === 'always' &&\n arg.value.kind === 'BooleanValue' &&\n arg.value.value === true;\n });\n if (forceResolvers) {\n return BREAK;\n }\n }\n },\n },\n });\n return forceResolvers;\n };\n LocalState.prototype.buildRootValueFromCache = function (document, variables) {\n return this.cache.diff({\n query: buildQueryFromSelectionSet(document),\n variables: variables,\n returnPartialData: true,\n optimistic: false,\n }).result;\n };\n LocalState.prototype.resolveDocument = function (document, rootValue, context, variables, fragmentMatcher, onlyRunForcedResolvers) {\n if (context === void 0) { context = {}; }\n if (variables === void 0) { variables = {}; }\n if (fragmentMatcher === void 0) { fragmentMatcher = function () { return true; }; }\n if (onlyRunForcedResolvers === void 0) { onlyRunForcedResolvers = false; }\n return __awaiter(this, void 0, void 0, function () {\n var mainDefinition, fragments, fragmentMap, definitionOperation, defaultOperationType, _a, cache, client, execContext;\n return __generator(this, function (_b) {\n mainDefinition = getMainDefinition(document);\n fragments = getFragmentDefinitions(document);\n fragmentMap = createFragmentMap(fragments);\n definitionOperation = mainDefinition\n .operation;\n defaultOperationType = definitionOperation\n ? definitionOperation.charAt(0).toUpperCase() +\n definitionOperation.slice(1)\n : 'Query';\n _a = this, cache = _a.cache, client = _a.client;\n execContext = {\n fragmentMap: fragmentMap,\n context: __assign(__assign({}, context), { cache: cache, client: client }),\n variables: variables,\n fragmentMatcher: fragmentMatcher,\n defaultOperationType: defaultOperationType,\n exportedVariables: {},\n onlyRunForcedResolvers: onlyRunForcedResolvers,\n };\n return [2, this.resolveSelectionSet(mainDefinition.selectionSet, rootValue, execContext).then(function (result) { return ({\n result: result,\n exportedVariables: execContext.exportedVariables,\n }); })];\n });\n });\n };\n LocalState.prototype.resolveSelectionSet = function (selectionSet, rootValue, execContext) {\n return __awaiter(this, void 0, void 0, function () {\n var fragmentMap, context, variables, resultsToMerge, execute;\n var _this = this;\n return __generator(this, function (_a) {\n fragmentMap = execContext.fragmentMap, context = execContext.context, variables = execContext.variables;\n resultsToMerge = [rootValue];\n execute = function (selection) { return __awaiter(_this, void 0, void 0, function () {\n var fragment, typeCondition;\n return __generator(this, function (_a) {\n if (!shouldInclude(selection, variables)) {\n return [2];\n }\n if (isField(selection)) {\n return [2, this.resolveField(selection, rootValue, execContext).then(function (fieldResult) {\n var _a;\n if (typeof fieldResult !== 'undefined') {\n resultsToMerge.push((_a = {},\n _a[resultKeyNameFromField(selection)] = fieldResult,\n _a));\n }\n })];\n }\n if (isInlineFragment(selection)) {\n fragment = selection;\n }\n else {\n fragment = fragmentMap[selection.name.value];\n __DEV__ ? invariant(fragment, \"No fragment named \".concat(selection.name.value)) : invariant(fragment, 11);\n }\n if (fragment && fragment.typeCondition) {\n typeCondition = fragment.typeCondition.name.value;\n if (execContext.fragmentMatcher(rootValue, typeCondition, context)) {\n return [2, this.resolveSelectionSet(fragment.selectionSet, rootValue, execContext).then(function (fragmentResult) {\n resultsToMerge.push(fragmentResult);\n })];\n }\n }\n return [2];\n });\n }); };\n return [2, Promise.all(selectionSet.selections.map(execute)).then(function () {\n return mergeDeepArray(resultsToMerge);\n })];\n });\n });\n };\n LocalState.prototype.resolveField = function (field, rootValue, execContext) {\n return __awaiter(this, void 0, void 0, function () {\n var variables, fieldName, aliasedFieldName, aliasUsed, defaultResult, resultPromise, resolverType, resolverMap, resolve;\n var _this = this;\n return __generator(this, function (_a) {\n variables = execContext.variables;\n fieldName = field.name.value;\n aliasedFieldName = resultKeyNameFromField(field);\n aliasUsed = fieldName !== aliasedFieldName;\n defaultResult = rootValue[aliasedFieldName] || rootValue[fieldName];\n resultPromise = Promise.resolve(defaultResult);\n if (!execContext.onlyRunForcedResolvers ||\n this.shouldForceResolvers(field)) {\n resolverType = rootValue.__typename || execContext.defaultOperationType;\n resolverMap = this.resolvers && this.resolvers[resolverType];\n if (resolverMap) {\n resolve = resolverMap[aliasUsed ? fieldName : aliasedFieldName];\n if (resolve) {\n resultPromise = Promise.resolve(cacheSlot.withValue(this.cache, resolve, [\n rootValue,\n argumentsObjectFromField(field, variables),\n execContext.context,\n { field: field, fragmentMap: execContext.fragmentMap },\n ]));\n }\n }\n }\n return [2, resultPromise.then(function (result) {\n if (result === void 0) { result = defaultResult; }\n if (field.directives) {\n field.directives.forEach(function (directive) {\n if (directive.name.value === 'export' && directive.arguments) {\n directive.arguments.forEach(function (arg) {\n if (arg.name.value === 'as' && arg.value.kind === 'StringValue') {\n execContext.exportedVariables[arg.value.value] = result;\n }\n });\n }\n });\n }\n if (!field.selectionSet) {\n return result;\n }\n if (result == null) {\n return result;\n }\n if (Array.isArray(result)) {\n return _this.resolveSubSelectedArray(field, result, execContext);\n }\n if (field.selectionSet) {\n return _this.resolveSelectionSet(field.selectionSet, result, execContext);\n }\n })];\n });\n });\n };\n LocalState.prototype.resolveSubSelectedArray = function (field, result, execContext) {\n var _this = this;\n return Promise.all(result.map(function (item) {\n if (item === null) {\n return null;\n }\n if (Array.isArray(item)) {\n return _this.resolveSubSelectedArray(field, item, execContext);\n }\n if (field.selectionSet) {\n return _this.resolveSelectionSet(field.selectionSet, item, execContext);\n }\n }));\n };\n return LocalState;\n}());\nexport { LocalState };\n//# sourceMappingURL=LocalState.js.map","import { __assign } from \"tslib\";\nimport { equal } from \"@wry/equality\";\nimport { DeepMerger } from \"../utilities/index.js\";\nimport { reobserveCacheFirst } from \"./ObservableQuery.js\";\nimport { isNonEmptyArray, graphQLResultHasError, canUseWeakMap, } from \"../utilities/index.js\";\nimport { NetworkStatus, isNetworkRequestInFlight, } from \"./networkStatus.js\";\n;\nvar destructiveMethodCounts = new (canUseWeakMap ? WeakMap : Map)();\nfunction wrapDestructiveCacheMethod(cache, methodName) {\n var original = cache[methodName];\n if (typeof original === \"function\") {\n cache[methodName] = function () {\n destructiveMethodCounts.set(cache, (destructiveMethodCounts.get(cache) + 1) % 1e15);\n return original.apply(this, arguments);\n };\n }\n}\nfunction cancelNotifyTimeout(info) {\n if (info[\"notifyTimeout\"]) {\n clearTimeout(info[\"notifyTimeout\"]);\n info[\"notifyTimeout\"] = void 0;\n }\n}\nvar QueryInfo = (function () {\n function QueryInfo(queryManager, queryId) {\n if (queryId === void 0) { queryId = queryManager.generateQueryId(); }\n this.queryId = queryId;\n this.listeners = new Set();\n this.document = null;\n this.lastRequestId = 1;\n this.subscriptions = new Set();\n this.stopped = false;\n this.dirty = false;\n this.observableQuery = null;\n var cache = this.cache = queryManager.cache;\n if (!destructiveMethodCounts.has(cache)) {\n destructiveMethodCounts.set(cache, 0);\n wrapDestructiveCacheMethod(cache, \"evict\");\n wrapDestructiveCacheMethod(cache, \"modify\");\n wrapDestructiveCacheMethod(cache, \"reset\");\n }\n }\n QueryInfo.prototype.init = function (query) {\n var networkStatus = query.networkStatus || NetworkStatus.loading;\n if (this.variables &&\n this.networkStatus !== NetworkStatus.loading &&\n !equal(this.variables, query.variables)) {\n networkStatus = NetworkStatus.setVariables;\n }\n if (!equal(query.variables, this.variables)) {\n this.lastDiff = void 0;\n }\n Object.assign(this, {\n document: query.document,\n variables: query.variables,\n networkError: null,\n graphQLErrors: this.graphQLErrors || [],\n networkStatus: networkStatus,\n });\n if (query.observableQuery) {\n this.setObservableQuery(query.observableQuery);\n }\n if (query.lastRequestId) {\n this.lastRequestId = query.lastRequestId;\n }\n return this;\n };\n QueryInfo.prototype.reset = function () {\n cancelNotifyTimeout(this);\n this.dirty = false;\n };\n QueryInfo.prototype.getDiff = function (variables) {\n if (variables === void 0) { variables = this.variables; }\n var options = this.getDiffOptions(variables);\n if (this.lastDiff && equal(options, this.lastDiff.options)) {\n return this.lastDiff.diff;\n }\n this.updateWatch(this.variables = variables);\n var oq = this.observableQuery;\n if (oq && oq.options.fetchPolicy === \"no-cache\") {\n return { complete: false };\n }\n var diff = this.cache.diff(options);\n this.updateLastDiff(diff, options);\n return diff;\n };\n QueryInfo.prototype.updateLastDiff = function (diff, options) {\n this.lastDiff = diff ? {\n diff: diff,\n options: options || this.getDiffOptions(),\n } : void 0;\n };\n QueryInfo.prototype.getDiffOptions = function (variables) {\n var _a;\n if (variables === void 0) { variables = this.variables; }\n return {\n query: this.document,\n variables: variables,\n returnPartialData: true,\n optimistic: true,\n canonizeResults: (_a = this.observableQuery) === null || _a === void 0 ? void 0 : _a.options.canonizeResults,\n };\n };\n QueryInfo.prototype.setDiff = function (diff) {\n var _this = this;\n var oldDiff = this.lastDiff && this.lastDiff.diff;\n this.updateLastDiff(diff);\n if (!this.dirty &&\n !equal(oldDiff && oldDiff.result, diff && diff.result)) {\n this.dirty = true;\n if (!this.notifyTimeout) {\n this.notifyTimeout = setTimeout(function () { return _this.notify(); }, 0);\n }\n }\n };\n QueryInfo.prototype.setObservableQuery = function (oq) {\n var _this = this;\n if (oq === this.observableQuery)\n return;\n if (this.oqListener) {\n this.listeners.delete(this.oqListener);\n }\n this.observableQuery = oq;\n if (oq) {\n oq[\"queryInfo\"] = this;\n this.listeners.add(this.oqListener = function () {\n var diff = _this.getDiff();\n if (diff.fromOptimisticTransaction) {\n oq[\"observe\"]();\n }\n else {\n reobserveCacheFirst(oq);\n }\n });\n }\n else {\n delete this.oqListener;\n }\n };\n QueryInfo.prototype.notify = function () {\n var _this = this;\n cancelNotifyTimeout(this);\n if (this.shouldNotify()) {\n this.listeners.forEach(function (listener) { return listener(_this); });\n }\n this.dirty = false;\n };\n QueryInfo.prototype.shouldNotify = function () {\n if (!this.dirty || !this.listeners.size) {\n return false;\n }\n if (isNetworkRequestInFlight(this.networkStatus) &&\n this.observableQuery) {\n var fetchPolicy = this.observableQuery.options.fetchPolicy;\n if (fetchPolicy !== \"cache-only\" &&\n fetchPolicy !== \"cache-and-network\") {\n return false;\n }\n }\n return true;\n };\n QueryInfo.prototype.stop = function () {\n if (!this.stopped) {\n this.stopped = true;\n this.reset();\n this.cancel();\n this.cancel = QueryInfo.prototype.cancel;\n this.subscriptions.forEach(function (sub) { return sub.unsubscribe(); });\n var oq = this.observableQuery;\n if (oq)\n oq.stopPolling();\n }\n };\n QueryInfo.prototype.cancel = function () { };\n QueryInfo.prototype.updateWatch = function (variables) {\n var _this = this;\n if (variables === void 0) { variables = this.variables; }\n var oq = this.observableQuery;\n if (oq && oq.options.fetchPolicy === \"no-cache\") {\n return;\n }\n var watchOptions = __assign(__assign({}, this.getDiffOptions(variables)), { watcher: this, callback: function (diff) { return _this.setDiff(diff); } });\n if (!this.lastWatch ||\n !equal(watchOptions, this.lastWatch)) {\n this.cancel();\n this.cancel = this.cache.watch(this.lastWatch = watchOptions);\n }\n };\n QueryInfo.prototype.resetLastWrite = function () {\n this.lastWrite = void 0;\n };\n QueryInfo.prototype.shouldWrite = function (result, variables) {\n var lastWrite = this.lastWrite;\n return !(lastWrite &&\n lastWrite.dmCount === destructiveMethodCounts.get(this.cache) &&\n equal(variables, lastWrite.variables) &&\n equal(result.data, lastWrite.result.data));\n };\n QueryInfo.prototype.markResult = function (result, document, options, cacheWriteBehavior) {\n var _this = this;\n var graphQLErrors = isNonEmptyArray(result.errors)\n ? result.errors.slice(0)\n : [];\n this.reset();\n if ('incremental' in result && isNonEmptyArray(result.incremental)) {\n var mergedData_1 = this.getDiff().result;\n var merger_1 = new DeepMerger();\n result.incremental.forEach(function (_a) {\n var data = _a.data, path = _a.path, errors = _a.errors;\n for (var i = path.length - 1; i >= 0; --i) {\n var key = path[i];\n var isNumericKey = !isNaN(+key);\n var parent_1 = isNumericKey ? [] : {};\n parent_1[key] = data;\n data = parent_1;\n }\n if (errors) {\n graphQLErrors.push.apply(graphQLErrors, errors);\n }\n mergedData_1 = merger_1.merge(mergedData_1, data);\n });\n result.data = mergedData_1;\n }\n this.graphQLErrors = graphQLErrors;\n if (options.fetchPolicy === 'no-cache') {\n this.updateLastDiff({ result: result.data, complete: true }, this.getDiffOptions(options.variables));\n }\n else if (cacheWriteBehavior !== 0) {\n if (shouldWriteResult(result, options.errorPolicy)) {\n this.cache.performTransaction(function (cache) {\n if (_this.shouldWrite(result, options.variables)) {\n cache.writeQuery({\n query: document,\n data: result.data,\n variables: options.variables,\n overwrite: cacheWriteBehavior === 1,\n });\n _this.lastWrite = {\n result: result,\n variables: options.variables,\n dmCount: destructiveMethodCounts.get(_this.cache),\n };\n }\n else {\n if (_this.lastDiff &&\n _this.lastDiff.diff.complete) {\n result.data = _this.lastDiff.diff.result;\n return;\n }\n }\n var diffOptions = _this.getDiffOptions(options.variables);\n var diff = cache.diff(diffOptions);\n if (!_this.stopped) {\n _this.updateWatch(options.variables);\n }\n _this.updateLastDiff(diff, diffOptions);\n if (diff.complete) {\n result.data = diff.result;\n }\n });\n }\n else {\n this.lastWrite = void 0;\n }\n }\n };\n QueryInfo.prototype.markReady = function () {\n this.networkError = null;\n return this.networkStatus = NetworkStatus.ready;\n };\n QueryInfo.prototype.markError = function (error) {\n this.networkStatus = NetworkStatus.error;\n this.lastWrite = void 0;\n this.reset();\n if (error.graphQLErrors) {\n this.graphQLErrors = error.graphQLErrors;\n }\n if (error.networkError) {\n this.networkError = error.networkError;\n }\n return error;\n };\n return QueryInfo;\n}());\nexport { QueryInfo };\nexport function shouldWriteResult(result, errorPolicy) {\n if (errorPolicy === void 0) { errorPolicy = \"none\"; }\n var ignoreErrors = errorPolicy === \"ignore\" ||\n errorPolicy === \"all\";\n var writeWithErrors = !graphQLResultHasError(result);\n if (!writeWithErrors && ignoreErrors && result.data) {\n writeWithErrors = true;\n }\n return writeWithErrors;\n}\n//# sourceMappingURL=QueryInfo.js.map","import { __assign, __awaiter, __generator } from \"tslib\";\nimport { invariant, InvariantError } from \"../utilities/globals/index.js\";\nimport { equal } from '@wry/equality';\nimport { execute } from \"../link/core/index.js\";\nimport { isExecutionPatchIncrementalResult } from \"../utilities/common/incrementalResult.js\";\nimport { canonicalStringify } from \"../cache/index.js\";\nimport { getDefaultValues, getOperationDefinition, getOperationName, hasClientExports, graphQLResultHasError, removeConnectionDirectiveFromDocument, canUseWeakMap, Observable, asyncMap, isNonEmptyArray, Concast, makeUniqueId, isDocumentNode, isNonNullObject, cloneDeep, } from \"../utilities/index.js\";\nimport { ApolloError, isApolloError } from \"../errors/index.js\";\nimport { ObservableQuery, logMissingFieldErrors } from \"./ObservableQuery.js\";\nimport { NetworkStatus, isNetworkRequestInFlight } from \"./networkStatus.js\";\nimport { LocalState } from \"./LocalState.js\";\nimport { QueryInfo, shouldWriteResult, } from \"./QueryInfo.js\";\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar QueryManager = (function () {\n function QueryManager(_a) {\n var cache = _a.cache, link = _a.link, defaultOptions = _a.defaultOptions, _b = _a.queryDeduplication, queryDeduplication = _b === void 0 ? false : _b, onBroadcast = _a.onBroadcast, _c = _a.ssrMode, ssrMode = _c === void 0 ? false : _c, _d = _a.clientAwareness, clientAwareness = _d === void 0 ? {} : _d, localState = _a.localState, assumeImmutableResults = _a.assumeImmutableResults;\n this.clientAwareness = {};\n this.queries = new Map();\n this.fetchCancelFns = new Map();\n this.transformCache = new (canUseWeakMap ? WeakMap : Map)();\n this.queryIdCounter = 1;\n this.requestIdCounter = 1;\n this.mutationIdCounter = 1;\n this.inFlightLinkObservables = new Map();\n this.cache = cache;\n this.link = link;\n this.defaultOptions = defaultOptions || Object.create(null);\n this.queryDeduplication = queryDeduplication;\n this.clientAwareness = clientAwareness;\n this.localState = localState || new LocalState({ cache: cache });\n this.ssrMode = ssrMode;\n this.assumeImmutableResults = !!assumeImmutableResults;\n if ((this.onBroadcast = onBroadcast)) {\n this.mutationStore = Object.create(null);\n }\n }\n QueryManager.prototype.stop = function () {\n var _this = this;\n this.queries.forEach(function (_info, queryId) {\n _this.stopQueryNoBroadcast(queryId);\n });\n this.cancelPendingFetches(__DEV__ ? new InvariantError('QueryManager stopped while query was in flight') : new InvariantError(13));\n };\n QueryManager.prototype.cancelPendingFetches = function (error) {\n this.fetchCancelFns.forEach(function (cancel) { return cancel(error); });\n this.fetchCancelFns.clear();\n };\n QueryManager.prototype.mutate = function (_a) {\n var _b, _c;\n var mutation = _a.mutation, variables = _a.variables, optimisticResponse = _a.optimisticResponse, updateQueries = _a.updateQueries, _d = _a.refetchQueries, refetchQueries = _d === void 0 ? [] : _d, _e = _a.awaitRefetchQueries, awaitRefetchQueries = _e === void 0 ? false : _e, updateWithProxyFn = _a.update, onQueryUpdated = _a.onQueryUpdated, _f = _a.fetchPolicy, fetchPolicy = _f === void 0 ? ((_b = this.defaultOptions.mutate) === null || _b === void 0 ? void 0 : _b.fetchPolicy) || \"network-only\" : _f, _g = _a.errorPolicy, errorPolicy = _g === void 0 ? ((_c = this.defaultOptions.mutate) === null || _c === void 0 ? void 0 : _c.errorPolicy) || \"none\" : _g, keepRootFields = _a.keepRootFields, context = _a.context;\n return __awaiter(this, void 0, void 0, function () {\n var mutationId, _h, document, hasClientExports, mutationStoreValue, self;\n return __generator(this, function (_j) {\n switch (_j.label) {\n case 0:\n __DEV__ ? invariant(mutation, 'mutation option is required. You must specify your GraphQL document in the mutation option.') : invariant(mutation, 14);\n __DEV__ ? invariant(fetchPolicy === 'network-only' ||\n fetchPolicy === 'no-cache', \"Mutations support only 'network-only' or 'no-cache' fetchPolicy strings. The default `network-only` behavior automatically writes mutation results to the cache. Passing `no-cache` skips the cache write.\") : invariant(fetchPolicy === 'network-only' ||\n fetchPolicy === 'no-cache', 15);\n mutationId = this.generateMutationId();\n _h = this.transform(mutation), document = _h.document, hasClientExports = _h.hasClientExports;\n mutation = this.cache.transformForLink(document);\n variables = this.getVariables(mutation, variables);\n if (!hasClientExports) return [3, 2];\n return [4, this.localState.addExportedVariables(mutation, variables, context)];\n case 1:\n variables = (_j.sent());\n _j.label = 2;\n case 2:\n mutationStoreValue = this.mutationStore &&\n (this.mutationStore[mutationId] = {\n mutation: mutation,\n variables: variables,\n loading: true,\n error: null,\n });\n if (optimisticResponse) {\n this.markMutationOptimistic(optimisticResponse, {\n mutationId: mutationId,\n document: mutation,\n variables: variables,\n fetchPolicy: fetchPolicy,\n errorPolicy: errorPolicy,\n context: context,\n updateQueries: updateQueries,\n update: updateWithProxyFn,\n keepRootFields: keepRootFields,\n });\n }\n this.broadcastQueries();\n self = this;\n return [2, new Promise(function (resolve, reject) {\n return asyncMap(self.getObservableFromLink(mutation, __assign(__assign({}, context), { optimisticResponse: optimisticResponse }), variables, false), function (result) {\n if (graphQLResultHasError(result) && errorPolicy === 'none') {\n throw new ApolloError({\n graphQLErrors: result.errors,\n });\n }\n if (mutationStoreValue) {\n mutationStoreValue.loading = false;\n mutationStoreValue.error = null;\n }\n var storeResult = __assign({}, result);\n if (typeof refetchQueries === \"function\") {\n refetchQueries = refetchQueries(storeResult);\n }\n if (errorPolicy === 'ignore' &&\n graphQLResultHasError(storeResult)) {\n delete storeResult.errors;\n }\n return self.markMutationResult({\n mutationId: mutationId,\n result: storeResult,\n document: mutation,\n variables: variables,\n fetchPolicy: fetchPolicy,\n errorPolicy: errorPolicy,\n context: context,\n update: updateWithProxyFn,\n updateQueries: updateQueries,\n awaitRefetchQueries: awaitRefetchQueries,\n refetchQueries: refetchQueries,\n removeOptimistic: optimisticResponse ? mutationId : void 0,\n onQueryUpdated: onQueryUpdated,\n keepRootFields: keepRootFields,\n });\n }).subscribe({\n next: function (storeResult) {\n self.broadcastQueries();\n resolve(storeResult);\n },\n error: function (err) {\n if (mutationStoreValue) {\n mutationStoreValue.loading = false;\n mutationStoreValue.error = err;\n }\n if (optimisticResponse) {\n self.cache.removeOptimistic(mutationId);\n }\n self.broadcastQueries();\n reject(err instanceof ApolloError ? err : new ApolloError({\n networkError: err,\n }));\n },\n });\n })];\n }\n });\n });\n };\n QueryManager.prototype.markMutationResult = function (mutation, cache) {\n var _this = this;\n if (cache === void 0) { cache = this.cache; }\n var result = mutation.result;\n var cacheWrites = [];\n var skipCache = mutation.fetchPolicy === \"no-cache\";\n if (!skipCache && shouldWriteResult(result, mutation.errorPolicy)) {\n cacheWrites.push({\n result: result.data,\n dataId: 'ROOT_MUTATION',\n query: mutation.document,\n variables: mutation.variables,\n });\n var updateQueries_1 = mutation.updateQueries;\n if (updateQueries_1) {\n this.queries.forEach(function (_a, queryId) {\n var observableQuery = _a.observableQuery;\n var queryName = observableQuery && observableQuery.queryName;\n if (!queryName || !hasOwnProperty.call(updateQueries_1, queryName)) {\n return;\n }\n var updater = updateQueries_1[queryName];\n var _b = _this.queries.get(queryId), document = _b.document, variables = _b.variables;\n var _c = cache.diff({\n query: document,\n variables: variables,\n returnPartialData: true,\n optimistic: false,\n }), currentQueryResult = _c.result, complete = _c.complete;\n if (complete && currentQueryResult) {\n var nextQueryResult = updater(currentQueryResult, {\n mutationResult: result,\n queryName: document && getOperationName(document) || void 0,\n queryVariables: variables,\n });\n if (nextQueryResult) {\n cacheWrites.push({\n result: nextQueryResult,\n dataId: 'ROOT_QUERY',\n query: document,\n variables: variables,\n });\n }\n }\n });\n }\n }\n if (cacheWrites.length > 0 ||\n mutation.refetchQueries ||\n mutation.update ||\n mutation.onQueryUpdated ||\n mutation.removeOptimistic) {\n var results_1 = [];\n this.refetchQueries({\n updateCache: function (cache) {\n if (!skipCache) {\n cacheWrites.forEach(function (write) { return cache.write(write); });\n }\n var update = mutation.update;\n if (update) {\n if (!skipCache) {\n var diff = cache.diff({\n id: \"ROOT_MUTATION\",\n query: _this.transform(mutation.document).asQuery,\n variables: mutation.variables,\n optimistic: false,\n returnPartialData: true,\n });\n if (diff.complete && !(isExecutionPatchIncrementalResult(result))) {\n result = __assign(__assign({}, result), { data: diff.result });\n }\n }\n update(cache, result, {\n context: mutation.context,\n variables: mutation.variables,\n });\n }\n if (!skipCache && !mutation.keepRootFields) {\n cache.modify({\n id: 'ROOT_MUTATION',\n fields: function (value, _a) {\n var fieldName = _a.fieldName, DELETE = _a.DELETE;\n return fieldName === \"__typename\" ? value : DELETE;\n },\n });\n }\n },\n include: mutation.refetchQueries,\n optimistic: false,\n removeOptimistic: mutation.removeOptimistic,\n onQueryUpdated: mutation.onQueryUpdated || null,\n }).forEach(function (result) { return results_1.push(result); });\n if (mutation.awaitRefetchQueries || mutation.onQueryUpdated) {\n return Promise.all(results_1).then(function () { return result; });\n }\n }\n return Promise.resolve(result);\n };\n QueryManager.prototype.markMutationOptimistic = function (optimisticResponse, mutation) {\n var _this = this;\n var data = typeof optimisticResponse === \"function\"\n ? optimisticResponse(mutation.variables)\n : optimisticResponse;\n return this.cache.recordOptimisticTransaction(function (cache) {\n try {\n _this.markMutationResult(__assign(__assign({}, mutation), { result: { data: data } }), cache);\n }\n catch (error) {\n __DEV__ && invariant.error(error);\n }\n }, mutation.mutationId);\n };\n QueryManager.prototype.fetchQuery = function (queryId, options, networkStatus) {\n return this.fetchQueryObservable(queryId, options, networkStatus).promise;\n };\n QueryManager.prototype.getQueryStore = function () {\n var store = Object.create(null);\n this.queries.forEach(function (info, queryId) {\n store[queryId] = {\n variables: info.variables,\n networkStatus: info.networkStatus,\n networkError: info.networkError,\n graphQLErrors: info.graphQLErrors,\n };\n });\n return store;\n };\n QueryManager.prototype.resetErrors = function (queryId) {\n var queryInfo = this.queries.get(queryId);\n if (queryInfo) {\n queryInfo.networkError = undefined;\n queryInfo.graphQLErrors = [];\n }\n };\n QueryManager.prototype.transform = function (document) {\n var transformCache = this.transformCache;\n if (!transformCache.has(document)) {\n var transformed = this.cache.transformDocument(document);\n var noConnection = removeConnectionDirectiveFromDocument(transformed);\n var clientQuery = this.localState.clientQuery(transformed);\n var serverQuery = noConnection && this.localState.serverQuery(noConnection);\n var cacheEntry_1 = {\n document: transformed,\n hasClientExports: hasClientExports(transformed),\n hasForcedResolvers: this.localState.shouldForceResolvers(transformed),\n clientQuery: clientQuery,\n serverQuery: serverQuery,\n defaultVars: getDefaultValues(getOperationDefinition(transformed)),\n asQuery: __assign(__assign({}, transformed), { definitions: transformed.definitions.map(function (def) {\n if (def.kind === \"OperationDefinition\" &&\n def.operation !== \"query\") {\n return __assign(__assign({}, def), { operation: \"query\" });\n }\n return def;\n }) })\n };\n var add = function (doc) {\n if (doc && !transformCache.has(doc)) {\n transformCache.set(doc, cacheEntry_1);\n }\n };\n add(document);\n add(transformed);\n add(clientQuery);\n add(serverQuery);\n }\n return transformCache.get(document);\n };\n QueryManager.prototype.getVariables = function (document, variables) {\n return __assign(__assign({}, this.transform(document).defaultVars), variables);\n };\n QueryManager.prototype.watchQuery = function (options) {\n options = __assign(__assign({}, options), { variables: this.getVariables(options.query, options.variables) });\n if (typeof options.notifyOnNetworkStatusChange === 'undefined') {\n options.notifyOnNetworkStatusChange = false;\n }\n var queryInfo = new QueryInfo(this);\n var observable = new ObservableQuery({\n queryManager: this,\n queryInfo: queryInfo,\n options: options,\n });\n this.queries.set(observable.queryId, queryInfo);\n queryInfo.init({\n document: observable.query,\n observableQuery: observable,\n variables: observable.variables,\n });\n return observable;\n };\n QueryManager.prototype.query = function (options, queryId) {\n var _this = this;\n if (queryId === void 0) { queryId = this.generateQueryId(); }\n __DEV__ ? invariant(options.query, 'query option is required. You must specify your GraphQL document ' +\n 'in the query option.') : invariant(options.query, 16);\n __DEV__ ? invariant(options.query.kind === 'Document', 'You must wrap the query string in a \"gql\" tag.') : invariant(options.query.kind === 'Document', 17);\n __DEV__ ? invariant(!options.returnPartialData, 'returnPartialData option only supported on watchQuery.') : invariant(!options.returnPartialData, 18);\n __DEV__ ? invariant(!options.pollInterval, 'pollInterval option only supported on watchQuery.') : invariant(!options.pollInterval, 19);\n return this.fetchQuery(queryId, options).finally(function () { return _this.stopQuery(queryId); });\n };\n QueryManager.prototype.generateQueryId = function () {\n return String(this.queryIdCounter++);\n };\n QueryManager.prototype.generateRequestId = function () {\n return this.requestIdCounter++;\n };\n QueryManager.prototype.generateMutationId = function () {\n return String(this.mutationIdCounter++);\n };\n QueryManager.prototype.stopQueryInStore = function (queryId) {\n this.stopQueryInStoreNoBroadcast(queryId);\n this.broadcastQueries();\n };\n QueryManager.prototype.stopQueryInStoreNoBroadcast = function (queryId) {\n var queryInfo = this.queries.get(queryId);\n if (queryInfo)\n queryInfo.stop();\n };\n QueryManager.prototype.clearStore = function (options) {\n if (options === void 0) { options = {\n discardWatches: true,\n }; }\n this.cancelPendingFetches(__DEV__ ? new InvariantError('Store reset while query was in flight (not completed in link chain)') : new InvariantError(20));\n this.queries.forEach(function (queryInfo) {\n if (queryInfo.observableQuery) {\n queryInfo.networkStatus = NetworkStatus.loading;\n }\n else {\n queryInfo.stop();\n }\n });\n if (this.mutationStore) {\n this.mutationStore = Object.create(null);\n }\n return this.cache.reset(options);\n };\n QueryManager.prototype.getObservableQueries = function (include) {\n var _this = this;\n if (include === void 0) { include = \"active\"; }\n var queries = new Map();\n var queryNamesAndDocs = new Map();\n var legacyQueryOptions = new Set();\n if (Array.isArray(include)) {\n include.forEach(function (desc) {\n if (typeof desc === \"string\") {\n queryNamesAndDocs.set(desc, false);\n }\n else if (isDocumentNode(desc)) {\n queryNamesAndDocs.set(_this.transform(desc).document, false);\n }\n else if (isNonNullObject(desc) && desc.query) {\n legacyQueryOptions.add(desc);\n }\n });\n }\n this.queries.forEach(function (_a, queryId) {\n var oq = _a.observableQuery, document = _a.document;\n if (oq) {\n if (include === \"all\") {\n queries.set(queryId, oq);\n return;\n }\n var queryName = oq.queryName, fetchPolicy = oq.options.fetchPolicy;\n if (fetchPolicy === \"standby\" ||\n (include === \"active\" && !oq.hasObservers())) {\n return;\n }\n if (include === \"active\" ||\n (queryName && queryNamesAndDocs.has(queryName)) ||\n (document && queryNamesAndDocs.has(document))) {\n queries.set(queryId, oq);\n if (queryName)\n queryNamesAndDocs.set(queryName, true);\n if (document)\n queryNamesAndDocs.set(document, true);\n }\n }\n });\n if (legacyQueryOptions.size) {\n legacyQueryOptions.forEach(function (options) {\n var queryId = makeUniqueId(\"legacyOneTimeQuery\");\n var queryInfo = _this.getQuery(queryId).init({\n document: options.query,\n variables: options.variables,\n });\n var oq = new ObservableQuery({\n queryManager: _this,\n queryInfo: queryInfo,\n options: __assign(__assign({}, options), { fetchPolicy: \"network-only\" }),\n });\n invariant(oq.queryId === queryId);\n queryInfo.setObservableQuery(oq);\n queries.set(queryId, oq);\n });\n }\n if (__DEV__ && queryNamesAndDocs.size) {\n queryNamesAndDocs.forEach(function (included, nameOrDoc) {\n if (!included) {\n __DEV__ && invariant.warn(\"Unknown query \".concat(typeof nameOrDoc === \"string\" ? \"named \" : \"\").concat(JSON.stringify(nameOrDoc, null, 2), \" requested in refetchQueries options.include array\"));\n }\n });\n }\n return queries;\n };\n QueryManager.prototype.reFetchObservableQueries = function (includeStandby) {\n var _this = this;\n if (includeStandby === void 0) { includeStandby = false; }\n var observableQueryPromises = [];\n this.getObservableQueries(includeStandby ? \"all\" : \"active\").forEach(function (observableQuery, queryId) {\n var fetchPolicy = observableQuery.options.fetchPolicy;\n observableQuery.resetLastResults();\n if (includeStandby ||\n (fetchPolicy !== \"standby\" &&\n fetchPolicy !== \"cache-only\")) {\n observableQueryPromises.push(observableQuery.refetch());\n }\n _this.getQuery(queryId).setDiff(null);\n });\n this.broadcastQueries();\n return Promise.all(observableQueryPromises);\n };\n QueryManager.prototype.setObservableQuery = function (observableQuery) {\n this.getQuery(observableQuery.queryId).setObservableQuery(observableQuery);\n };\n QueryManager.prototype.startGraphQLSubscription = function (_a) {\n var _this = this;\n var query = _a.query, fetchPolicy = _a.fetchPolicy, errorPolicy = _a.errorPolicy, variables = _a.variables, _b = _a.context, context = _b === void 0 ? {} : _b;\n query = this.transform(query).document;\n variables = this.getVariables(query, variables);\n var makeObservable = function (variables) {\n return _this.getObservableFromLink(query, context, variables).map(function (result) {\n if (fetchPolicy !== 'no-cache') {\n if (shouldWriteResult(result, errorPolicy)) {\n _this.cache.write({\n query: query,\n result: result.data,\n dataId: 'ROOT_SUBSCRIPTION',\n variables: variables,\n });\n }\n _this.broadcastQueries();\n }\n if (graphQLResultHasError(result)) {\n throw new ApolloError({\n graphQLErrors: result.errors,\n });\n }\n return result;\n });\n };\n if (this.transform(query).hasClientExports) {\n var observablePromise_1 = this.localState.addExportedVariables(query, variables, context).then(makeObservable);\n return new Observable(function (observer) {\n var sub = null;\n observablePromise_1.then(function (observable) { return sub = observable.subscribe(observer); }, observer.error);\n return function () { return sub && sub.unsubscribe(); };\n });\n }\n return makeObservable(variables);\n };\n QueryManager.prototype.stopQuery = function (queryId) {\n this.stopQueryNoBroadcast(queryId);\n this.broadcastQueries();\n };\n QueryManager.prototype.stopQueryNoBroadcast = function (queryId) {\n this.stopQueryInStoreNoBroadcast(queryId);\n this.removeQuery(queryId);\n };\n QueryManager.prototype.removeQuery = function (queryId) {\n this.fetchCancelFns.delete(queryId);\n if (this.queries.has(queryId)) {\n this.getQuery(queryId).stop();\n this.queries.delete(queryId);\n }\n };\n QueryManager.prototype.broadcastQueries = function () {\n if (this.onBroadcast)\n this.onBroadcast();\n this.queries.forEach(function (info) { return info.notify(); });\n };\n QueryManager.prototype.getLocalState = function () {\n return this.localState;\n };\n QueryManager.prototype.getObservableFromLink = function (query, context, variables, deduplication) {\n var _this = this;\n var _a;\n if (deduplication === void 0) { deduplication = (_a = context === null || context === void 0 ? void 0 : context.queryDeduplication) !== null && _a !== void 0 ? _a : this.queryDeduplication; }\n var observable;\n var serverQuery = this.transform(query).serverQuery;\n if (serverQuery) {\n var _b = this, inFlightLinkObservables_1 = _b.inFlightLinkObservables, link = _b.link;\n var operation = {\n query: serverQuery,\n variables: variables,\n operationName: getOperationName(serverQuery) || void 0,\n context: this.prepareContext(__assign(__assign({}, context), { forceFetch: !deduplication })),\n };\n context = operation.context;\n if (deduplication) {\n var byVariables_1 = inFlightLinkObservables_1.get(serverQuery) || new Map();\n inFlightLinkObservables_1.set(serverQuery, byVariables_1);\n var varJson_1 = canonicalStringify(variables);\n observable = byVariables_1.get(varJson_1);\n if (!observable) {\n var concast = new Concast([\n execute(link, operation)\n ]);\n byVariables_1.set(varJson_1, observable = concast);\n concast.beforeNext(function () {\n if (byVariables_1.delete(varJson_1) &&\n byVariables_1.size < 1) {\n inFlightLinkObservables_1.delete(serverQuery);\n }\n });\n }\n }\n else {\n observable = new Concast([\n execute(link, operation)\n ]);\n }\n }\n else {\n observable = new Concast([\n Observable.of({ data: {} })\n ]);\n context = this.prepareContext(context);\n }\n var clientQuery = this.transform(query).clientQuery;\n if (clientQuery) {\n observable = asyncMap(observable, function (result) {\n return _this.localState.runResolvers({\n document: clientQuery,\n remoteResult: result,\n context: context,\n variables: variables,\n });\n });\n }\n return observable;\n };\n QueryManager.prototype.getResultsFromLink = function (queryInfo, cacheWriteBehavior, options) {\n var requestId = queryInfo.lastRequestId = this.generateRequestId();\n options = cloneDeep(options);\n var linkDocument = this.cache.transformForLink(this.transform(queryInfo.document).document);\n return asyncMap(this.getObservableFromLink(linkDocument, options.context, options.variables), function (result) {\n var graphQLErrors = isNonEmptyArray(result.errors)\n ? result.errors.slice(0)\n : [];\n if ('incremental' in result && isNonEmptyArray(result.incremental)) {\n result.incremental.forEach(function (incrementalResult) {\n if (incrementalResult.errors) {\n graphQLErrors.push.apply(graphQLErrors, incrementalResult.errors);\n }\n });\n }\n var hasErrors = isNonEmptyArray(graphQLErrors);\n if (requestId >= queryInfo.lastRequestId) {\n if (hasErrors && options.errorPolicy === \"none\") {\n throw queryInfo.markError(new ApolloError({\n graphQLErrors: graphQLErrors,\n }));\n }\n queryInfo.markResult(result, linkDocument, options, cacheWriteBehavior);\n queryInfo.markReady();\n }\n var aqr = {\n data: result.data,\n loading: false,\n networkStatus: NetworkStatus.ready,\n };\n if (hasErrors && options.errorPolicy !== \"ignore\") {\n aqr.errors = graphQLErrors;\n aqr.networkStatus = NetworkStatus.error;\n }\n return aqr;\n }, function (networkError) {\n var error = isApolloError(networkError)\n ? networkError\n : new ApolloError({ networkError: networkError });\n if (requestId >= queryInfo.lastRequestId) {\n queryInfo.markError(error);\n }\n throw error;\n });\n };\n QueryManager.prototype.fetchQueryObservable = function (queryId, options, networkStatus) {\n var _this = this;\n if (networkStatus === void 0) { networkStatus = NetworkStatus.loading; }\n var query = this.transform(options.query).document;\n var variables = this.getVariables(query, options.variables);\n var queryInfo = this.getQuery(queryId);\n var defaults = this.defaultOptions.watchQuery;\n var _a = options.fetchPolicy, fetchPolicy = _a === void 0 ? defaults && defaults.fetchPolicy || \"cache-first\" : _a, _b = options.errorPolicy, errorPolicy = _b === void 0 ? defaults && defaults.errorPolicy || \"none\" : _b, _c = options.returnPartialData, returnPartialData = _c === void 0 ? false : _c, _d = options.notifyOnNetworkStatusChange, notifyOnNetworkStatusChange = _d === void 0 ? false : _d, _e = options.context, context = _e === void 0 ? {} : _e;\n var normalized = Object.assign({}, options, {\n query: query,\n variables: variables,\n fetchPolicy: fetchPolicy,\n errorPolicy: errorPolicy,\n returnPartialData: returnPartialData,\n notifyOnNetworkStatusChange: notifyOnNetworkStatusChange,\n context: context,\n });\n var fromVariables = function (variables) {\n normalized.variables = variables;\n var concastSources = _this.fetchQueryByPolicy(queryInfo, normalized, networkStatus);\n if (normalized.fetchPolicy !== \"standby\" &&\n concastSources.length > 0 &&\n queryInfo.observableQuery) {\n queryInfo.observableQuery[\"applyNextFetchPolicy\"](\"after-fetch\", options);\n }\n return concastSources;\n };\n var cleanupCancelFn = function () { return _this.fetchCancelFns.delete(queryId); };\n this.fetchCancelFns.set(queryId, function (reason) {\n cleanupCancelFn();\n setTimeout(function () { return concast.cancel(reason); });\n });\n var concast = new Concast(this.transform(normalized.query).hasClientExports\n ? this.localState.addExportedVariables(normalized.query, normalized.variables, normalized.context).then(fromVariables)\n : fromVariables(normalized.variables));\n concast.promise.then(cleanupCancelFn, cleanupCancelFn);\n return concast;\n };\n QueryManager.prototype.refetchQueries = function (_a) {\n var _this = this;\n var updateCache = _a.updateCache, include = _a.include, _b = _a.optimistic, optimistic = _b === void 0 ? false : _b, _c = _a.removeOptimistic, removeOptimistic = _c === void 0 ? optimistic ? makeUniqueId(\"refetchQueries\") : void 0 : _c, onQueryUpdated = _a.onQueryUpdated;\n var includedQueriesById = new Map();\n if (include) {\n this.getObservableQueries(include).forEach(function (oq, queryId) {\n includedQueriesById.set(queryId, {\n oq: oq,\n lastDiff: _this.getQuery(queryId).getDiff(),\n });\n });\n }\n var results = new Map;\n if (updateCache) {\n this.cache.batch({\n update: updateCache,\n optimistic: optimistic && removeOptimistic || false,\n removeOptimistic: removeOptimistic,\n onWatchUpdated: function (watch, diff, lastDiff) {\n var oq = watch.watcher instanceof QueryInfo &&\n watch.watcher.observableQuery;\n if (oq) {\n if (onQueryUpdated) {\n includedQueriesById.delete(oq.queryId);\n var result = onQueryUpdated(oq, diff, lastDiff);\n if (result === true) {\n result = oq.refetch();\n }\n if (result !== false) {\n results.set(oq, result);\n }\n return result;\n }\n if (onQueryUpdated !== null) {\n includedQueriesById.set(oq.queryId, { oq: oq, lastDiff: lastDiff, diff: diff });\n }\n }\n },\n });\n }\n if (includedQueriesById.size) {\n includedQueriesById.forEach(function (_a, queryId) {\n var oq = _a.oq, lastDiff = _a.lastDiff, diff = _a.diff;\n var result;\n if (onQueryUpdated) {\n if (!diff) {\n var info = oq[\"queryInfo\"];\n info.reset();\n diff = info.getDiff();\n }\n result = onQueryUpdated(oq, diff, lastDiff);\n }\n if (!onQueryUpdated || result === true) {\n result = oq.refetch();\n }\n if (result !== false) {\n results.set(oq, result);\n }\n if (queryId.indexOf(\"legacyOneTimeQuery\") >= 0) {\n _this.stopQueryNoBroadcast(queryId);\n }\n });\n }\n if (removeOptimistic) {\n this.cache.removeOptimistic(removeOptimistic);\n }\n return results;\n };\n QueryManager.prototype.fetchQueryByPolicy = function (queryInfo, _a, networkStatus) {\n var _this = this;\n var query = _a.query, variables = _a.variables, fetchPolicy = _a.fetchPolicy, refetchWritePolicy = _a.refetchWritePolicy, errorPolicy = _a.errorPolicy, returnPartialData = _a.returnPartialData, context = _a.context, notifyOnNetworkStatusChange = _a.notifyOnNetworkStatusChange;\n var oldNetworkStatus = queryInfo.networkStatus;\n queryInfo.init({\n document: this.transform(query).document,\n variables: variables,\n networkStatus: networkStatus,\n });\n var readCache = function () { return queryInfo.getDiff(variables); };\n var resultsFromCache = function (diff, networkStatus) {\n if (networkStatus === void 0) { networkStatus = queryInfo.networkStatus || NetworkStatus.loading; }\n var data = diff.result;\n if (__DEV__ &&\n !returnPartialData &&\n !equal(data, {})) {\n logMissingFieldErrors(diff.missing);\n }\n var fromData = function (data) { return Observable.of(__assign({ data: data, loading: isNetworkRequestInFlight(networkStatus), networkStatus: networkStatus }, (diff.complete ? null : { partial: true }))); };\n if (data && _this.transform(query).hasForcedResolvers) {\n return _this.localState.runResolvers({\n document: query,\n remoteResult: { data: data },\n context: context,\n variables: variables,\n onlyRunForcedResolvers: true,\n }).then(function (resolved) { return fromData(resolved.data || void 0); });\n }\n return fromData(data);\n };\n var cacheWriteBehavior = fetchPolicy === \"no-cache\" ? 0 :\n (networkStatus === NetworkStatus.refetch &&\n refetchWritePolicy !== \"merge\") ? 1\n : 2;\n var resultsFromLink = function () { return _this.getResultsFromLink(queryInfo, cacheWriteBehavior, {\n variables: variables,\n context: context,\n fetchPolicy: fetchPolicy,\n errorPolicy: errorPolicy,\n }); };\n var shouldNotify = notifyOnNetworkStatusChange &&\n typeof oldNetworkStatus === \"number\" &&\n oldNetworkStatus !== networkStatus &&\n isNetworkRequestInFlight(networkStatus);\n switch (fetchPolicy) {\n default:\n case \"cache-first\": {\n var diff = readCache();\n if (diff.complete) {\n return [\n resultsFromCache(diff, queryInfo.markReady()),\n ];\n }\n if (returnPartialData || shouldNotify) {\n return [\n resultsFromCache(diff),\n resultsFromLink(),\n ];\n }\n return [\n resultsFromLink(),\n ];\n }\n case \"cache-and-network\": {\n var diff = readCache();\n if (diff.complete || returnPartialData || shouldNotify) {\n return [\n resultsFromCache(diff),\n resultsFromLink(),\n ];\n }\n return [\n resultsFromLink(),\n ];\n }\n case \"cache-only\":\n return [\n resultsFromCache(readCache(), queryInfo.markReady()),\n ];\n case \"network-only\":\n if (shouldNotify) {\n return [\n resultsFromCache(readCache()),\n resultsFromLink(),\n ];\n }\n return [resultsFromLink()];\n case \"no-cache\":\n if (shouldNotify) {\n return [\n resultsFromCache(queryInfo.getDiff()),\n resultsFromLink(),\n ];\n }\n return [resultsFromLink()];\n case \"standby\":\n return [];\n }\n };\n QueryManager.prototype.getQuery = function (queryId) {\n if (queryId && !this.queries.has(queryId)) {\n this.queries.set(queryId, new QueryInfo(this, queryId));\n }\n return this.queries.get(queryId);\n };\n QueryManager.prototype.prepareContext = function (context) {\n if (context === void 0) { context = {}; }\n var newContext = this.localState.prepareContext(context);\n return __assign(__assign({}, newContext), { clientAwareness: this.clientAwareness });\n };\n return QueryManager;\n}());\nexport { QueryManager };\n//# sourceMappingURL=QueryManager.js.map","export function isExecutionPatchIncrementalResult(value) {\n return !!value.incremental;\n}\n//# sourceMappingURL=incrementalResult.js.map","import { __assign } from \"tslib\";\nimport { invariant, InvariantError } from \"../utilities/globals/index.js\";\nimport { ApolloLink, execute } from \"../link/core/index.js\";\nimport { version } from \"../version.js\";\nimport { HttpLink } from \"../link/http/index.js\";\nimport { QueryManager } from \"./QueryManager.js\";\nimport { LocalState, } from \"./LocalState.js\";\nvar hasSuggestedDevtools = false;\nimport { mergeOptions } from \"../utilities/index.js\";\nexport { mergeOptions };\nvar ApolloClient = (function () {\n function ApolloClient(options) {\n var _this = this;\n this.resetStoreCallbacks = [];\n this.clearStoreCallbacks = [];\n var uri = options.uri, credentials = options.credentials, headers = options.headers, cache = options.cache, _a = options.ssrMode, ssrMode = _a === void 0 ? false : _a, _b = options.ssrForceFetchDelay, ssrForceFetchDelay = _b === void 0 ? 0 : _b, _c = options.connectToDevTools, connectToDevTools = _c === void 0 ? typeof window === 'object' &&\n !window.__APOLLO_CLIENT__ &&\n __DEV__ : _c, _d = options.queryDeduplication, queryDeduplication = _d === void 0 ? true : _d, defaultOptions = options.defaultOptions, _e = options.assumeImmutableResults, assumeImmutableResults = _e === void 0 ? false : _e, resolvers = options.resolvers, typeDefs = options.typeDefs, fragmentMatcher = options.fragmentMatcher, clientAwarenessName = options.name, clientAwarenessVersion = options.version;\n var link = options.link;\n if (!link) {\n link = uri\n ? new HttpLink({ uri: uri, credentials: credentials, headers: headers })\n : ApolloLink.empty();\n }\n if (!cache) {\n throw __DEV__ ? new InvariantError(\"To initialize Apollo Client, you must specify a 'cache' property \" +\n \"in the options object. \\n\" +\n \"For more information, please visit: https://go.apollo.dev/c/docs\") : new InvariantError(9);\n }\n this.link = link;\n this.cache = cache;\n this.disableNetworkFetches = ssrMode || ssrForceFetchDelay > 0;\n this.queryDeduplication = queryDeduplication;\n this.defaultOptions = defaultOptions || Object.create(null);\n this.typeDefs = typeDefs;\n if (ssrForceFetchDelay) {\n setTimeout(function () { return (_this.disableNetworkFetches = false); }, ssrForceFetchDelay);\n }\n this.watchQuery = this.watchQuery.bind(this);\n this.query = this.query.bind(this);\n this.mutate = this.mutate.bind(this);\n this.resetStore = this.resetStore.bind(this);\n this.reFetchObservableQueries = this.reFetchObservableQueries.bind(this);\n if (connectToDevTools && typeof window === 'object') {\n window.__APOLLO_CLIENT__ = this;\n }\n if (!hasSuggestedDevtools && __DEV__) {\n hasSuggestedDevtools = true;\n if (typeof window !== 'undefined' &&\n window.document &&\n window.top === window.self &&\n !window.__APOLLO_DEVTOOLS_GLOBAL_HOOK__) {\n var nav = window.navigator;\n var ua = nav && nav.userAgent;\n var url = void 0;\n if (typeof ua === \"string\") {\n if (ua.indexOf(\"Chrome/\") > -1) {\n url = \"https://chrome.google.com/webstore/detail/\" +\n \"apollo-client-developer-t/jdkknkkbebbapilgoeccciglkfbmbnfm\";\n }\n else if (ua.indexOf(\"Firefox/\") > -1) {\n url = \"https://addons.mozilla.org/en-US/firefox/addon/apollo-developer-tools/\";\n }\n }\n if (url) {\n __DEV__ && invariant.log(\"Download the Apollo DevTools for a better development \" +\n \"experience: \" + url);\n }\n }\n }\n this.version = version;\n this.localState = new LocalState({\n cache: cache,\n client: this,\n resolvers: resolvers,\n fragmentMatcher: fragmentMatcher,\n });\n this.queryManager = new QueryManager({\n cache: this.cache,\n link: this.link,\n defaultOptions: this.defaultOptions,\n queryDeduplication: queryDeduplication,\n ssrMode: ssrMode,\n clientAwareness: {\n name: clientAwarenessName,\n version: clientAwarenessVersion,\n },\n localState: this.localState,\n assumeImmutableResults: assumeImmutableResults,\n onBroadcast: connectToDevTools ? function () {\n if (_this.devToolsHookCb) {\n _this.devToolsHookCb({\n action: {},\n state: {\n queries: _this.queryManager.getQueryStore(),\n mutations: _this.queryManager.mutationStore || {},\n },\n dataWithOptimisticResults: _this.cache.extract(true),\n });\n }\n } : void 0,\n });\n }\n ApolloClient.prototype.stop = function () {\n this.queryManager.stop();\n };\n ApolloClient.prototype.watchQuery = function (options) {\n if (this.defaultOptions.watchQuery) {\n options = mergeOptions(this.defaultOptions.watchQuery, options);\n }\n if (this.disableNetworkFetches &&\n (options.fetchPolicy === 'network-only' ||\n options.fetchPolicy === 'cache-and-network')) {\n options = __assign(__assign({}, options), { fetchPolicy: 'cache-first' });\n }\n return this.queryManager.watchQuery(options);\n };\n ApolloClient.prototype.query = function (options) {\n if (this.defaultOptions.query) {\n options = mergeOptions(this.defaultOptions.query, options);\n }\n __DEV__ ? invariant(options.fetchPolicy !== 'cache-and-network', 'The cache-and-network fetchPolicy does not work with client.query, because ' +\n 'client.query can only return a single result. Please use client.watchQuery ' +\n 'to receive multiple results from the cache and the network, or consider ' +\n 'using a different fetchPolicy, such as cache-first or network-only.') : invariant(options.fetchPolicy !== 'cache-and-network', 10);\n if (this.disableNetworkFetches && options.fetchPolicy === 'network-only') {\n options = __assign(__assign({}, options), { fetchPolicy: 'cache-first' });\n }\n return this.queryManager.query(options);\n };\n ApolloClient.prototype.mutate = function (options) {\n if (this.defaultOptions.mutate) {\n options = mergeOptions(this.defaultOptions.mutate, options);\n }\n return this.queryManager.mutate(options);\n };\n ApolloClient.prototype.subscribe = function (options) {\n return this.queryManager.startGraphQLSubscription(options);\n };\n ApolloClient.prototype.readQuery = function (options, optimistic) {\n if (optimistic === void 0) { optimistic = false; }\n return this.cache.readQuery(options, optimistic);\n };\n ApolloClient.prototype.readFragment = function (options, optimistic) {\n if (optimistic === void 0) { optimistic = false; }\n return this.cache.readFragment(options, optimistic);\n };\n ApolloClient.prototype.writeQuery = function (options) {\n this.cache.writeQuery(options);\n this.queryManager.broadcastQueries();\n };\n ApolloClient.prototype.writeFragment = function (options) {\n this.cache.writeFragment(options);\n this.queryManager.broadcastQueries();\n };\n ApolloClient.prototype.__actionHookForDevTools = function (cb) {\n this.devToolsHookCb = cb;\n };\n ApolloClient.prototype.__requestRaw = function (payload) {\n return execute(this.link, payload);\n };\n ApolloClient.prototype.resetStore = function () {\n var _this = this;\n return Promise.resolve()\n .then(function () { return _this.queryManager.clearStore({\n discardWatches: false,\n }); })\n .then(function () { return Promise.all(_this.resetStoreCallbacks.map(function (fn) { return fn(); })); })\n .then(function () { return _this.reFetchObservableQueries(); });\n };\n ApolloClient.prototype.clearStore = function () {\n var _this = this;\n return Promise.resolve()\n .then(function () { return _this.queryManager.clearStore({\n discardWatches: true,\n }); })\n .then(function () { return Promise.all(_this.clearStoreCallbacks.map(function (fn) { return fn(); })); });\n };\n ApolloClient.prototype.onResetStore = function (cb) {\n var _this = this;\n this.resetStoreCallbacks.push(cb);\n return function () {\n _this.resetStoreCallbacks = _this.resetStoreCallbacks.filter(function (c) { return c !== cb; });\n };\n };\n ApolloClient.prototype.onClearStore = function (cb) {\n var _this = this;\n this.clearStoreCallbacks.push(cb);\n return function () {\n _this.clearStoreCallbacks = _this.clearStoreCallbacks.filter(function (c) { return c !== cb; });\n };\n };\n ApolloClient.prototype.reFetchObservableQueries = function (includeStandby) {\n return this.queryManager.reFetchObservableQueries(includeStandby);\n };\n ApolloClient.prototype.refetchQueries = function (options) {\n var map = this.queryManager.refetchQueries(options);\n var queries = [];\n var results = [];\n map.forEach(function (result, obsQuery) {\n queries.push(obsQuery);\n results.push(result);\n });\n var result = Promise.all(results);\n result.queries = queries;\n result.results = results;\n result.catch(function (error) {\n __DEV__ && invariant.debug(\"In client.refetchQueries, Promise.all promise rejected with error \".concat(error));\n });\n return result;\n };\n ApolloClient.prototype.getObservableQueries = function (include) {\n if (include === void 0) { include = \"active\"; }\n return this.queryManager.getObservableQueries(include);\n };\n ApolloClient.prototype.extract = function (optimistic) {\n return this.cache.extract(optimistic);\n };\n ApolloClient.prototype.restore = function (serializedState) {\n return this.cache.restore(serializedState);\n };\n ApolloClient.prototype.addResolvers = function (resolvers) {\n this.localState.addResolvers(resolvers);\n };\n ApolloClient.prototype.setResolvers = function (resolvers) {\n this.localState.setResolvers(resolvers);\n };\n ApolloClient.prototype.getResolvers = function () {\n return this.localState.getResolvers();\n };\n ApolloClient.prototype.setLocalStateFragmentMatcher = function (fragmentMatcher) {\n this.localState.setFragmentMatcher(fragmentMatcher);\n };\n ApolloClient.prototype.setLink = function (newLink) {\n this.link = this.queryManager.link = newLink;\n };\n return ApolloClient;\n}());\nexport { ApolloClient };\n//# sourceMappingURL=ApolloClient.js.map","export var version = '3.7.1';\n//# sourceMappingURL=version.js.map","export var NetworkStatus;\n(function (NetworkStatus) {\n NetworkStatus[NetworkStatus[\"loading\"] = 1] = \"loading\";\n NetworkStatus[NetworkStatus[\"setVariables\"] = 2] = \"setVariables\";\n NetworkStatus[NetworkStatus[\"fetchMore\"] = 3] = \"fetchMore\";\n NetworkStatus[NetworkStatus[\"refetch\"] = 4] = \"refetch\";\n NetworkStatus[NetworkStatus[\"poll\"] = 6] = \"poll\";\n NetworkStatus[NetworkStatus[\"ready\"] = 7] = \"ready\";\n NetworkStatus[NetworkStatus[\"error\"] = 8] = \"error\";\n})(NetworkStatus || (NetworkStatus = {}));\nexport function isNetworkRequestInFlight(networkStatus) {\n return networkStatus ? networkStatus < 7 : false;\n}\n//# sourceMappingURL=networkStatus.js.map","import { __extends } from \"tslib\";\nimport \"../utilities/globals/index.js\";\nimport { isNonEmptyArray } from \"../utilities/index.js\";\nexport function isApolloError(err) {\n return err.hasOwnProperty('graphQLErrors');\n}\nvar generateErrorMessage = function (err) {\n var message = '';\n if (isNonEmptyArray(err.graphQLErrors) || isNonEmptyArray(err.clientErrors)) {\n var errors = (err.graphQLErrors || [])\n .concat(err.clientErrors || []);\n errors.forEach(function (error) {\n var errorMessage = error\n ? error.message\n : 'Error message not found.';\n message += \"\".concat(errorMessage, \"\\n\");\n });\n }\n if (err.networkError) {\n message += \"\".concat(err.networkError.message, \"\\n\");\n }\n message = message.replace(/\\n$/, '');\n return message;\n};\nvar ApolloError = (function (_super) {\n __extends(ApolloError, _super);\n function ApolloError(_a) {\n var graphQLErrors = _a.graphQLErrors, clientErrors = _a.clientErrors, networkError = _a.networkError, errorMessage = _a.errorMessage, extraInfo = _a.extraInfo;\n var _this = _super.call(this, errorMessage) || this;\n _this.graphQLErrors = graphQLErrors || [];\n _this.clientErrors = clientErrors || [];\n _this.networkError = networkError || null;\n _this.message = errorMessage || generateErrorMessage(_this);\n _this.extraInfo = extraInfo;\n _this.__proto__ = ApolloError.prototype;\n return _this;\n }\n return ApolloError;\n}(Error));\nexport { ApolloError };\n//# sourceMappingURL=index.js.map","import { __extends } from \"tslib\";\nimport { InvariantError, invariant } from \"../../utilities/globals/index.js\";\nimport { Observable } from \"../../utilities/index.js\";\nimport { validateOperation, createOperation, transformOperation, } from \"../utils/index.js\";\nfunction passthrough(op, forward) {\n return (forward ? forward(op) : Observable.of());\n}\nfunction toLink(handler) {\n return typeof handler === 'function' ? new ApolloLink(handler) : handler;\n}\nfunction isTerminating(link) {\n return link.request.length <= 1;\n}\nvar LinkError = (function (_super) {\n __extends(LinkError, _super);\n function LinkError(message, link) {\n var _this = _super.call(this, message) || this;\n _this.link = link;\n return _this;\n }\n return LinkError;\n}(Error));\nvar ApolloLink = (function () {\n function ApolloLink(request) {\n if (request)\n this.request = request;\n }\n ApolloLink.empty = function () {\n return new ApolloLink(function () { return Observable.of(); });\n };\n ApolloLink.from = function (links) {\n if (links.length === 0)\n return ApolloLink.empty();\n return links.map(toLink).reduce(function (x, y) { return x.concat(y); });\n };\n ApolloLink.split = function (test, left, right) {\n var leftLink = toLink(left);\n var rightLink = toLink(right || new ApolloLink(passthrough));\n if (isTerminating(leftLink) && isTerminating(rightLink)) {\n return new ApolloLink(function (operation) {\n return test(operation)\n ? leftLink.request(operation) || Observable.of()\n : rightLink.request(operation) || Observable.of();\n });\n }\n else {\n return new ApolloLink(function (operation, forward) {\n return test(operation)\n ? leftLink.request(operation, forward) || Observable.of()\n : rightLink.request(operation, forward) || Observable.of();\n });\n }\n };\n ApolloLink.execute = function (link, operation) {\n return (link.request(createOperation(operation.context, transformOperation(validateOperation(operation)))) || Observable.of());\n };\n ApolloLink.concat = function (first, second) {\n var firstLink = toLink(first);\n if (isTerminating(firstLink)) {\n __DEV__ && invariant.warn(new LinkError(\"You are calling concat on a terminating link, which will have no effect\", firstLink));\n return firstLink;\n }\n var nextLink = toLink(second);\n if (isTerminating(nextLink)) {\n return new ApolloLink(function (operation) {\n return firstLink.request(operation, function (op) { return nextLink.request(op) || Observable.of(); }) || Observable.of();\n });\n }\n else {\n return new ApolloLink(function (operation, forward) {\n return (firstLink.request(operation, function (op) {\n return nextLink.request(op, forward) || Observable.of();\n }) || Observable.of());\n });\n }\n };\n ApolloLink.prototype.split = function (test, left, right) {\n return this.concat(ApolloLink.split(test, left, right || new ApolloLink(passthrough)));\n };\n ApolloLink.prototype.concat = function (next) {\n return ApolloLink.concat(this, next);\n };\n ApolloLink.prototype.request = function (operation, forward) {\n throw __DEV__ ? new InvariantError('request is not implemented') : new InvariantError(21);\n };\n ApolloLink.prototype.onError = function (error, observer) {\n if (observer && observer.error) {\n observer.error(error);\n return false;\n }\n throw error;\n };\n ApolloLink.prototype.setOnError = function (fn) {\n this.onError = fn;\n return this;\n };\n return ApolloLink;\n}());\nexport { ApolloLink };\n//# sourceMappingURL=ApolloLink.js.map","import { __assign } from \"tslib\";\nexport function createOperation(starting, operation) {\n var context = __assign({}, starting);\n var setContext = function (next) {\n if (typeof next === 'function') {\n context = __assign(__assign({}, context), next(context));\n }\n else {\n context = __assign(__assign({}, context), next);\n }\n };\n var getContext = function () { return (__assign({}, context)); };\n Object.defineProperty(operation, 'setContext', {\n enumerable: false,\n value: setContext,\n });\n Object.defineProperty(operation, 'getContext', {\n enumerable: false,\n value: getContext,\n });\n return operation;\n}\n//# sourceMappingURL=createOperation.js.map","import { getOperationName } from \"../../utilities/index.js\";\nexport function transformOperation(operation) {\n var transformedOperation = {\n variables: operation.variables || {},\n extensions: operation.extensions || {},\n operationName: operation.operationName,\n query: operation.query,\n };\n if (!transformedOperation.operationName) {\n transformedOperation.operationName =\n typeof transformedOperation.query !== 'string'\n ? getOperationName(transformedOperation.query) || undefined\n : '';\n }\n return transformedOperation;\n}\n//# sourceMappingURL=transformOperation.js.map","import { InvariantError } from \"../../utilities/globals/index.js\";\nexport function validateOperation(operation) {\n var OPERATION_FIELDS = [\n 'query',\n 'operationName',\n 'variables',\n 'extensions',\n 'context',\n ];\n for (var _i = 0, _a = Object.keys(operation); _i < _a.length; _i++) {\n var key = _a[_i];\n if (OPERATION_FIELDS.indexOf(key) < 0) {\n throw __DEV__ ? new InvariantError(\"illegal argument: \".concat(key)) : new InvariantError(26);\n }\n }\n return operation;\n}\n//# sourceMappingURL=validateOperation.js.map","import { ApolloLink } from \"./ApolloLink.js\";\nexport var concat = ApolloLink.concat;\n//# sourceMappingURL=concat.js.map","import { InvariantError } from \"../../utilities/globals/index.js\";\nexport var serializeFetchParameter = function (p, label) {\n var serialized;\n try {\n serialized = JSON.stringify(p);\n }\n catch (e) {\n var parseError = __DEV__ ? new InvariantError(\"Network request failed. \".concat(label, \" is not serializable: \").concat(e.message)) : new InvariantError(23);\n parseError.parseError = e;\n throw parseError;\n }\n return serialized;\n};\n//# sourceMappingURL=serializeFetchParameter.js.map","import { canUseAsyncIteratorSymbol } from \"../../../utilities/index.js\";\nexport default function nodeStreamIterator(stream) {\n var cleanup = null;\n var error = null;\n var done = false;\n var data = [];\n var waiting = [];\n function onData(chunk) {\n if (error)\n return;\n if (waiting.length) {\n var shiftedArr = waiting.shift();\n if (Array.isArray(shiftedArr) && shiftedArr[0]) {\n return shiftedArr[0]({ value: chunk, done: false });\n }\n }\n data.push(chunk);\n }\n function onError(err) {\n error = err;\n var all = waiting.slice();\n all.forEach(function (pair) {\n pair[1](err);\n });\n !cleanup || cleanup();\n }\n function onEnd() {\n done = true;\n var all = waiting.slice();\n all.forEach(function (pair) {\n pair[0]({ value: undefined, done: true });\n });\n !cleanup || cleanup();\n }\n cleanup = function () {\n cleanup = null;\n stream.removeListener(\"data\", onData);\n stream.removeListener(\"error\", onError);\n stream.removeListener(\"end\", onEnd);\n stream.removeListener(\"finish\", onEnd);\n stream.removeListener(\"close\", onEnd);\n };\n stream.on(\"data\", onData);\n stream.on(\"error\", onError);\n stream.on(\"end\", onEnd);\n stream.on(\"finish\", onEnd);\n stream.on(\"close\", onEnd);\n function getNext() {\n return new Promise(function (resolve, reject) {\n if (error)\n return reject(error);\n if (data.length)\n return resolve({ value: data.shift(), done: false });\n if (done)\n return resolve({ value: undefined, done: true });\n waiting.push([resolve, reject]);\n });\n }\n var iterator = {\n next: function () {\n return getNext();\n },\n };\n if (canUseAsyncIteratorSymbol) {\n iterator[Symbol.asyncIterator] = function () {\n return this;\n };\n }\n return iterator;\n}\n//# sourceMappingURL=nodeStream.js.map","import { canUseAsyncIteratorSymbol } from \"../../../utilities/index.js\";\nexport default function readerIterator(reader) {\n var iterator = {\n next: function () {\n return reader.read();\n },\n };\n if (canUseAsyncIteratorSymbol) {\n iterator[Symbol.asyncIterator] = function () {\n return this;\n };\n }\n return iterator;\n}\n//# sourceMappingURL=reader.js.map","import { isAsyncIterableIterator, isBlob, isNodeResponse, isNodeReadableStream, isReadableStream, isStreamableBlob, } from \"../../utilities/common/responseIterator.js\";\nimport asyncIterator from \"./iterators/async.js\";\nimport nodeStreamIterator from \"./iterators/nodeStream.js\";\nimport promiseIterator from \"./iterators/promise.js\";\nimport readerIterator from \"./iterators/reader.js\";\nexport function responseIterator(response) {\n var body = response;\n if (isNodeResponse(response))\n body = response.body;\n if (isAsyncIterableIterator(body))\n return asyncIterator(body);\n if (isReadableStream(body))\n return readerIterator(body.getReader());\n if (isStreamableBlob(body)) {\n return readerIterator(body.stream().getReader());\n }\n if (isBlob(body))\n return promiseIterator(body.arrayBuffer());\n if (isNodeReadableStream(body))\n return nodeStreamIterator(body);\n throw new Error(\"Unknown body type for responseIterator. Please pass a streamable response.\");\n}\n//# sourceMappingURL=responseIterator.js.map","export default function asyncIterator(source) {\n var _a;\n var iterator = source[Symbol.asyncIterator]();\n return _a = {\n next: function () {\n return iterator.next();\n }\n },\n _a[Symbol.asyncIterator] = function () {\n return this;\n },\n _a;\n}\n//# sourceMappingURL=async.js.map","import { canUseAsyncIteratorSymbol } from \"./canUse.js\";\nexport function isNodeResponse(value) {\n return !!value.body;\n}\nexport function isReadableStream(value) {\n return !!value.getReader;\n}\nexport function isAsyncIterableIterator(value) {\n return !!(canUseAsyncIteratorSymbol &&\n value[Symbol.asyncIterator]);\n}\nexport function isStreamableBlob(value) {\n return !!value.stream;\n}\nexport function isBlob(value) {\n return !!value.arrayBuffer;\n}\nexport function isNodeReadableStream(value) {\n return !!value.pipe;\n}\n//# sourceMappingURL=responseIterator.js.map","import { canUseAsyncIteratorSymbol } from \"../../../utilities/index.js\";\nexport default function promiseIterator(promise) {\n var resolved = false;\n var iterator = {\n next: function () {\n if (resolved)\n return Promise.resolve({\n value: undefined,\n done: true,\n });\n resolved = true;\n return new Promise(function (resolve, reject) {\n promise\n .then(function (value) {\n resolve({ value: value, done: false });\n })\n .catch(reject);\n });\n },\n };\n if (canUseAsyncIteratorSymbol) {\n iterator[Symbol.asyncIterator] = function () {\n return this;\n };\n }\n return iterator;\n}\n//# sourceMappingURL=promise.js.map","export var throwServerError = function (response, result, message) {\n var error = new Error(message);\n error.name = 'ServerError';\n error.response = response;\n error.statusCode = response.status;\n error.result = result;\n throw error;\n};\n//# sourceMappingURL=throwServerError.js.map","import { __awaiter, __generator } from \"tslib\";\nimport { responseIterator } from \"./responseIterator.js\";\nimport { throwServerError } from \"../utils/index.js\";\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nexport function readMultipartBody(response, observer) {\n var _a, _b, _c;\n return __awaiter(this, void 0, void 0, function () {\n var decoder, contentType, delimiter, boundaryVal, boundary, buffer, iterator, running, _d, value, done, chunk, bi, message, i, headers, contentType_1, body, result;\n var _e;\n return __generator(this, function (_f) {\n switch (_f.label) {\n case 0:\n if (TextDecoder === undefined) {\n throw new Error(\"TextDecoder must be defined in the environment: please import a polyfill.\");\n }\n decoder = new TextDecoder(\"utf-8\");\n contentType = (_a = response.headers) === null || _a === void 0 ? void 0 : _a.get('content-type');\n delimiter = \"boundary=\";\n boundaryVal = (contentType === null || contentType === void 0 ? void 0 : contentType.includes(delimiter))\n ? contentType === null || contentType === void 0 ? void 0 : contentType.substring((contentType === null || contentType === void 0 ? void 0 : contentType.indexOf(delimiter)) + delimiter.length).replace(/['\"]/g, \"\").replace(/\\;(.*)/gm, \"\").trim()\n : \"-\";\n boundary = \"--\".concat(boundaryVal);\n buffer = \"\";\n iterator = responseIterator(response);\n running = true;\n _f.label = 1;\n case 1:\n if (!running) return [3, 3];\n return [4, iterator.next()];\n case 2:\n _d = _f.sent(), value = _d.value, done = _d.done;\n chunk = typeof value === \"string\" ? value : decoder.decode(value);\n running = !done;\n buffer += chunk;\n bi = buffer.indexOf(boundary);\n while (bi > -1) {\n message = void 0;\n _e = [\n buffer.slice(0, bi),\n buffer.slice(bi + boundary.length),\n ], message = _e[0], buffer = _e[1];\n if (message.trim()) {\n i = message.indexOf(\"\\r\\n\\r\\n\");\n headers = parseHeaders(message.slice(0, i));\n contentType_1 = headers[\"content-type\"];\n if (contentType_1 &&\n contentType_1.toLowerCase().indexOf(\"application/json\") === -1) {\n throw new Error(\"Unsupported patch content type: application/json is required.\");\n }\n body = message.slice(i);\n try {\n result = parseJsonBody(response, body.replace(\"\\r\\n\", \"\"));\n if (Object.keys(result).length > 1 ||\n \"data\" in result ||\n \"incremental\" in result ||\n \"errors\" in result) {\n (_b = observer.next) === null || _b === void 0 ? void 0 : _b.call(observer, result);\n }\n }\n catch (err) {\n handleError(err, observer);\n }\n }\n bi = buffer.indexOf(boundary);\n }\n return [3, 1];\n case 3:\n (_c = observer.complete) === null || _c === void 0 ? void 0 : _c.call(observer);\n return [2];\n }\n });\n });\n}\nexport function parseHeaders(headerText) {\n var headersInit = {};\n headerText.split(\"\\n\").forEach(function (line) {\n var i = line.indexOf(\":\");\n if (i > -1) {\n var name_1 = line.slice(0, i).trim().toLowerCase();\n var value = line.slice(i + 1).trim();\n headersInit[name_1] = value;\n }\n });\n return headersInit;\n}\nexport function parseJsonBody(response, bodyText) {\n if (response.status >= 300) {\n var getResult = function () {\n try {\n return JSON.parse(bodyText);\n }\n catch (err) {\n return bodyText;\n }\n };\n throwServerError(response, getResult(), \"Response not successful: Received status code \".concat(response.status));\n }\n try {\n return JSON.parse(bodyText);\n }\n catch (err) {\n var parseError = err;\n parseError.name = \"ServerParseError\";\n parseError.response = response;\n parseError.statusCode = response.status;\n parseError.bodyText = bodyText;\n throw parseError;\n }\n}\nexport function handleError(err, observer) {\n var _a, _b;\n if (err.name === \"AbortError\")\n return;\n if (err.result && err.result.errors && err.result.data) {\n (_a = observer.next) === null || _a === void 0 ? void 0 : _a.call(observer, err.result);\n }\n (_b = observer.error) === null || _b === void 0 ? void 0 : _b.call(observer, err);\n}\nexport function readJsonBody(response, operation, observer) {\n parseAndCheckHttpResponse(operation)(response)\n .then(function (result) {\n var _a, _b;\n (_a = observer.next) === null || _a === void 0 ? void 0 : _a.call(observer, result);\n (_b = observer.complete) === null || _b === void 0 ? void 0 : _b.call(observer);\n })\n .catch(function (err) { return handleError(err, observer); });\n}\nexport function parseAndCheckHttpResponse(operations) {\n return function (response) {\n return response\n .text()\n .then(function (bodyText) { return parseJsonBody(response, bodyText); })\n .then(function (result) {\n if (response.status >= 300) {\n throwServerError(response, result, \"Response not successful: Received status code \".concat(response.status));\n }\n if (!Array.isArray(result) &&\n !hasOwnProperty.call(result, \"data\") &&\n !hasOwnProperty.call(result, \"errors\")) {\n throwServerError(response, result, \"Server response was missing for query '\".concat(Array.isArray(operations)\n ? operations.map(function (op) { return op.operationName; })\n : operations.operationName, \"'.\"));\n }\n return result;\n });\n };\n}\n//# sourceMappingURL=parseAndCheckHttpResponse.js.map","import { InvariantError } from \"../../utilities/globals/index.js\";\nexport var checkFetcher = function (fetcher) {\n if (!fetcher && typeof fetch === 'undefined') {\n throw __DEV__ ? new InvariantError(\"\\n\\\"fetch\\\" has not been found globally and no fetcher has been configured. To fix this, install a fetch package (like https://www.npmjs.com/package/cross-fetch), instantiate the fetcher, and pass it into your HttpLink constructor. For example:\\n\\nimport fetch from 'cross-fetch';\\nimport { ApolloClient, HttpLink } from '@apollo/client';\\nconst client = new ApolloClient({\\n link: new HttpLink({ uri: '/graphql', fetch })\\n});\\n \") : new InvariantError(22);\n }\n};\n//# sourceMappingURL=checkFetcher.js.map","import { visit } from \"./visitor.mjs\";\nimport { printBlockString } from \"./blockString.mjs\";\n/**\n * Converts an AST into a string, using one set of reasonable\n * formatting rules.\n */\n\nexport function print(ast) {\n return visit(ast, {\n leave: printDocASTReducer\n });\n}\nvar MAX_LINE_LENGTH = 80; // TODO: provide better type coverage in future\n\nvar printDocASTReducer = {\n Name: function Name(node) {\n return node.value;\n },\n Variable: function Variable(node) {\n return '$' + node.name;\n },\n // Document\n Document: function Document(node) {\n return join(node.definitions, '\\n\\n') + '\\n';\n },\n OperationDefinition: function OperationDefinition(node) {\n var op = node.operation;\n var name = node.name;\n var varDefs = wrap('(', join(node.variableDefinitions, ', '), ')');\n var directives = join(node.directives, ' ');\n var selectionSet = node.selectionSet; // Anonymous queries with no directives or variable definitions can use\n // the query short form.\n\n return !name && !directives && !varDefs && op === 'query' ? selectionSet : join([op, join([name, varDefs]), directives, selectionSet], ' ');\n },\n VariableDefinition: function VariableDefinition(_ref) {\n var variable = _ref.variable,\n type = _ref.type,\n defaultValue = _ref.defaultValue,\n directives = _ref.directives;\n return variable + ': ' + type + wrap(' = ', defaultValue) + wrap(' ', join(directives, ' '));\n },\n SelectionSet: function SelectionSet(_ref2) {\n var selections = _ref2.selections;\n return block(selections);\n },\n Field: function Field(_ref3) {\n var alias = _ref3.alias,\n name = _ref3.name,\n args = _ref3.arguments,\n directives = _ref3.directives,\n selectionSet = _ref3.selectionSet;\n var prefix = wrap('', alias, ': ') + name;\n var argsLine = prefix + wrap('(', join(args, ', '), ')');\n\n if (argsLine.length > MAX_LINE_LENGTH) {\n argsLine = prefix + wrap('(\\n', indent(join(args, '\\n')), '\\n)');\n }\n\n return join([argsLine, join(directives, ' '), selectionSet], ' ');\n },\n Argument: function Argument(_ref4) {\n var name = _ref4.name,\n value = _ref4.value;\n return name + ': ' + value;\n },\n // Fragments\n FragmentSpread: function FragmentSpread(_ref5) {\n var name = _ref5.name,\n directives = _ref5.directives;\n return '...' + name + wrap(' ', join(directives, ' '));\n },\n InlineFragment: function InlineFragment(_ref6) {\n var typeCondition = _ref6.typeCondition,\n directives = _ref6.directives,\n selectionSet = _ref6.selectionSet;\n return join(['...', wrap('on ', typeCondition), join(directives, ' '), selectionSet], ' ');\n },\n FragmentDefinition: function FragmentDefinition(_ref7) {\n var name = _ref7.name,\n typeCondition = _ref7.typeCondition,\n variableDefinitions = _ref7.variableDefinitions,\n directives = _ref7.directives,\n selectionSet = _ref7.selectionSet;\n return (// Note: fragment variable definitions are experimental and may be changed\n // or removed in the future.\n \"fragment \".concat(name).concat(wrap('(', join(variableDefinitions, ', '), ')'), \" \") + \"on \".concat(typeCondition, \" \").concat(wrap('', join(directives, ' '), ' ')) + selectionSet\n );\n },\n // Value\n IntValue: function IntValue(_ref8) {\n var value = _ref8.value;\n return value;\n },\n FloatValue: function FloatValue(_ref9) {\n var value = _ref9.value;\n return value;\n },\n StringValue: function StringValue(_ref10, key) {\n var value = _ref10.value,\n isBlockString = _ref10.block;\n return isBlockString ? printBlockString(value, key === 'description' ? '' : ' ') : JSON.stringify(value);\n },\n BooleanValue: function BooleanValue(_ref11) {\n var value = _ref11.value;\n return value ? 'true' : 'false';\n },\n NullValue: function NullValue() {\n return 'null';\n },\n EnumValue: function EnumValue(_ref12) {\n var value = _ref12.value;\n return value;\n },\n ListValue: function ListValue(_ref13) {\n var values = _ref13.values;\n return '[' + join(values, ', ') + ']';\n },\n ObjectValue: function ObjectValue(_ref14) {\n var fields = _ref14.fields;\n return '{' + join(fields, ', ') + '}';\n },\n ObjectField: function ObjectField(_ref15) {\n var name = _ref15.name,\n value = _ref15.value;\n return name + ': ' + value;\n },\n // Directive\n Directive: function Directive(_ref16) {\n var name = _ref16.name,\n args = _ref16.arguments;\n return '@' + name + wrap('(', join(args, ', '), ')');\n },\n // Type\n NamedType: function NamedType(_ref17) {\n var name = _ref17.name;\n return name;\n },\n ListType: function ListType(_ref18) {\n var type = _ref18.type;\n return '[' + type + ']';\n },\n NonNullType: function NonNullType(_ref19) {\n var type = _ref19.type;\n return type + '!';\n },\n // Type System Definitions\n SchemaDefinition: addDescription(function (_ref20) {\n var directives = _ref20.directives,\n operationTypes = _ref20.operationTypes;\n return join(['schema', join(directives, ' '), block(operationTypes)], ' ');\n }),\n OperationTypeDefinition: function OperationTypeDefinition(_ref21) {\n var operation = _ref21.operation,\n type = _ref21.type;\n return operation + ': ' + type;\n },\n ScalarTypeDefinition: addDescription(function (_ref22) {\n var name = _ref22.name,\n directives = _ref22.directives;\n return join(['scalar', name, join(directives, ' ')], ' ');\n }),\n ObjectTypeDefinition: addDescription(function (_ref23) {\n var name = _ref23.name,\n interfaces = _ref23.interfaces,\n directives = _ref23.directives,\n fields = _ref23.fields;\n return join(['type', name, wrap('implements ', join(interfaces, ' & ')), join(directives, ' '), block(fields)], ' ');\n }),\n FieldDefinition: addDescription(function (_ref24) {\n var name = _ref24.name,\n args = _ref24.arguments,\n type = _ref24.type,\n directives = _ref24.directives;\n return name + (hasMultilineItems(args) ? wrap('(\\n', indent(join(args, '\\n')), '\\n)') : wrap('(', join(args, ', '), ')')) + ': ' + type + wrap(' ', join(directives, ' '));\n }),\n InputValueDefinition: addDescription(function (_ref25) {\n var name = _ref25.name,\n type = _ref25.type,\n defaultValue = _ref25.defaultValue,\n directives = _ref25.directives;\n return join([name + ': ' + type, wrap('= ', defaultValue), join(directives, ' ')], ' ');\n }),\n InterfaceTypeDefinition: addDescription(function (_ref26) {\n var name = _ref26.name,\n interfaces = _ref26.interfaces,\n directives = _ref26.directives,\n fields = _ref26.fields;\n return join(['interface', name, wrap('implements ', join(interfaces, ' & ')), join(directives, ' '), block(fields)], ' ');\n }),\n UnionTypeDefinition: addDescription(function (_ref27) {\n var name = _ref27.name,\n directives = _ref27.directives,\n types = _ref27.types;\n return join(['union', name, join(directives, ' '), types && types.length !== 0 ? '= ' + join(types, ' | ') : ''], ' ');\n }),\n EnumTypeDefinition: addDescription(function (_ref28) {\n var name = _ref28.name,\n directives = _ref28.directives,\n values = _ref28.values;\n return join(['enum', name, join(directives, ' '), block(values)], ' ');\n }),\n EnumValueDefinition: addDescription(function (_ref29) {\n var name = _ref29.name,\n directives = _ref29.directives;\n return join([name, join(directives, ' ')], ' ');\n }),\n InputObjectTypeDefinition: addDescription(function (_ref30) {\n var name = _ref30.name,\n directives = _ref30.directives,\n fields = _ref30.fields;\n return join(['input', name, join(directives, ' '), block(fields)], ' ');\n }),\n DirectiveDefinition: addDescription(function (_ref31) {\n var name = _ref31.name,\n args = _ref31.arguments,\n repeatable = _ref31.repeatable,\n locations = _ref31.locations;\n return 'directive @' + name + (hasMultilineItems(args) ? wrap('(\\n', indent(join(args, '\\n')), '\\n)') : wrap('(', join(args, ', '), ')')) + (repeatable ? ' repeatable' : '') + ' on ' + join(locations, ' | ');\n }),\n SchemaExtension: function SchemaExtension(_ref32) {\n var directives = _ref32.directives,\n operationTypes = _ref32.operationTypes;\n return join(['extend schema', join(directives, ' '), block(operationTypes)], ' ');\n },\n ScalarTypeExtension: function ScalarTypeExtension(_ref33) {\n var name = _ref33.name,\n directives = _ref33.directives;\n return join(['extend scalar', name, join(directives, ' ')], ' ');\n },\n ObjectTypeExtension: function ObjectTypeExtension(_ref34) {\n var name = _ref34.name,\n interfaces = _ref34.interfaces,\n directives = _ref34.directives,\n fields = _ref34.fields;\n return join(['extend type', name, wrap('implements ', join(interfaces, ' & ')), join(directives, ' '), block(fields)], ' ');\n },\n InterfaceTypeExtension: function InterfaceTypeExtension(_ref35) {\n var name = _ref35.name,\n interfaces = _ref35.interfaces,\n directives = _ref35.directives,\n fields = _ref35.fields;\n return join(['extend interface', name, wrap('implements ', join(interfaces, ' & ')), join(directives, ' '), block(fields)], ' ');\n },\n UnionTypeExtension: function UnionTypeExtension(_ref36) {\n var name = _ref36.name,\n directives = _ref36.directives,\n types = _ref36.types;\n return join(['extend union', name, join(directives, ' '), types && types.length !== 0 ? '= ' + join(types, ' | ') : ''], ' ');\n },\n EnumTypeExtension: function EnumTypeExtension(_ref37) {\n var name = _ref37.name,\n directives = _ref37.directives,\n values = _ref37.values;\n return join(['extend enum', name, join(directives, ' '), block(values)], ' ');\n },\n InputObjectTypeExtension: function InputObjectTypeExtension(_ref38) {\n var name = _ref38.name,\n directives = _ref38.directives,\n fields = _ref38.fields;\n return join(['extend input', name, join(directives, ' '), block(fields)], ' ');\n }\n};\n\nfunction addDescription(cb) {\n return function (node) {\n return join([node.description, cb(node)], '\\n');\n };\n}\n/**\n * Given maybeArray, print an empty string if it is null or empty, otherwise\n * print all items together separated by separator if provided\n */\n\n\nfunction join(maybeArray) {\n var _maybeArray$filter$jo;\n\n var separator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n return (_maybeArray$filter$jo = maybeArray === null || maybeArray === void 0 ? void 0 : maybeArray.filter(function (x) {\n return x;\n }).join(separator)) !== null && _maybeArray$filter$jo !== void 0 ? _maybeArray$filter$jo : '';\n}\n/**\n * Given array, print each item on its own line, wrapped in an\n * indented \"{ }\" block.\n */\n\n\nfunction block(array) {\n return wrap('{\\n', indent(join(array, '\\n')), '\\n}');\n}\n/**\n * If maybeString is not null or empty, then wrap with start and end, otherwise print an empty string.\n */\n\n\nfunction wrap(start, maybeString) {\n var end = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n return maybeString != null && maybeString !== '' ? start + maybeString + end : '';\n}\n\nfunction indent(str) {\n return wrap(' ', str.replace(/\\n/g, '\\n '));\n}\n\nfunction isMultiline(str) {\n return str.indexOf('\\n') !== -1;\n}\n\nfunction hasMultilineItems(maybeArray) {\n return maybeArray != null && maybeArray.some(isMultiline);\n}\n","import { __assign, __spreadArray } from \"tslib\";\nimport { print } from 'graphql';\n;\nvar defaultHttpOptions = {\n includeQuery: true,\n includeExtensions: false,\n preserveHeaderCase: false,\n};\nvar defaultHeaders = {\n accept: '*/*',\n 'content-type': 'application/json',\n};\nvar defaultOptions = {\n method: 'POST',\n};\nexport var fallbackHttpConfig = {\n http: defaultHttpOptions,\n headers: defaultHeaders,\n options: defaultOptions,\n};\nexport var defaultPrinter = function (ast, printer) { return printer(ast); };\nexport function selectHttpOptionsAndBody(operation, fallbackConfig) {\n var configs = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n configs[_i - 2] = arguments[_i];\n }\n configs.unshift(fallbackConfig);\n return selectHttpOptionsAndBodyInternal.apply(void 0, __spreadArray([operation,\n defaultPrinter], configs, false));\n}\nexport function selectHttpOptionsAndBodyInternal(operation, printer) {\n var configs = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n configs[_i - 2] = arguments[_i];\n }\n var options = {};\n var http = {};\n configs.forEach(function (config) {\n options = __assign(__assign(__assign({}, options), config.options), { headers: __assign(__assign({}, options.headers), config.headers) });\n if (config.credentials) {\n options.credentials = config.credentials;\n }\n http = __assign(__assign({}, http), config.http);\n });\n options.headers = removeDuplicateHeaders(options.headers, http.preserveHeaderCase);\n var operationName = operation.operationName, extensions = operation.extensions, variables = operation.variables, query = operation.query;\n var body = { operationName: operationName, variables: variables };\n if (http.includeExtensions)\n body.extensions = extensions;\n if (http.includeQuery)\n body.query = printer(query, print);\n return {\n options: options,\n body: body,\n };\n}\n;\nfunction removeDuplicateHeaders(headers, preserveHeaderCase) {\n if (!preserveHeaderCase) {\n var normalizedHeaders_1 = Object.create(null);\n Object.keys(Object(headers)).forEach(function (name) {\n normalizedHeaders_1[name.toLowerCase()] = headers[name];\n });\n return normalizedHeaders_1;\n }\n var headerData = Object.create(null);\n Object.keys(Object(headers)).forEach(function (name) {\n headerData[name.toLowerCase()] = { originalName: name, value: headers[name] };\n });\n var normalizedHeaders = Object.create(null);\n Object.keys(headerData).forEach(function (name) {\n normalizedHeaders[headerData[name].originalName] = headerData[name].value;\n });\n return normalizedHeaders;\n}\n//# sourceMappingURL=selectHttpOptionsAndBody.js.map","import { Observable } from \"../../utilities/index.js\";\nexport function fromError(errorValue) {\n return new Observable(function (observer) {\n observer.error(errorValue);\n });\n}\n//# sourceMappingURL=fromError.js.map","import { __assign, __rest } from \"tslib\";\nimport \"../../utilities/globals/index.js\";\nimport { visit } from 'graphql';\nimport { ApolloLink } from \"../core/index.js\";\nimport { Observable, hasDirectives } from \"../../utilities/index.js\";\nimport { serializeFetchParameter } from \"./serializeFetchParameter.js\";\nimport { selectURI } from \"./selectURI.js\";\nimport { handleError, readMultipartBody, readJsonBody } from \"./parseAndCheckHttpResponse.js\";\nimport { checkFetcher } from \"./checkFetcher.js\";\nimport { selectHttpOptionsAndBodyInternal, defaultPrinter, fallbackHttpConfig } from \"./selectHttpOptionsAndBody.js\";\nimport { createSignalIfSupported } from \"./createSignalIfSupported.js\";\nimport { rewriteURIForGET } from \"./rewriteURIForGET.js\";\nimport { fromError } from \"../utils/index.js\";\nimport { maybe } from \"../../utilities/index.js\";\nvar backupFetch = maybe(function () { return fetch; });\nexport var createHttpLink = function (linkOptions) {\n if (linkOptions === void 0) { linkOptions = {}; }\n var _a = linkOptions.uri, uri = _a === void 0 ? '/graphql' : _a, preferredFetch = linkOptions.fetch, _b = linkOptions.print, print = _b === void 0 ? defaultPrinter : _b, includeExtensions = linkOptions.includeExtensions, preserveHeaderCase = linkOptions.preserveHeaderCase, useGETForQueries = linkOptions.useGETForQueries, _c = linkOptions.includeUnusedVariables, includeUnusedVariables = _c === void 0 ? false : _c, requestOptions = __rest(linkOptions, [\"uri\", \"fetch\", \"print\", \"includeExtensions\", \"preserveHeaderCase\", \"useGETForQueries\", \"includeUnusedVariables\"]);\n if (__DEV__) {\n checkFetcher(preferredFetch || backupFetch);\n }\n var linkConfig = {\n http: { includeExtensions: includeExtensions, preserveHeaderCase: preserveHeaderCase },\n options: requestOptions.fetchOptions,\n credentials: requestOptions.credentials,\n headers: requestOptions.headers,\n };\n return new ApolloLink(function (operation) {\n var chosenURI = selectURI(operation, uri);\n var context = operation.getContext();\n var clientAwarenessHeaders = {};\n if (context.clientAwareness) {\n var _a = context.clientAwareness, name_1 = _a.name, version = _a.version;\n if (name_1) {\n clientAwarenessHeaders['apollographql-client-name'] = name_1;\n }\n if (version) {\n clientAwarenessHeaders['apollographql-client-version'] = version;\n }\n }\n var contextHeaders = __assign(__assign({}, clientAwarenessHeaders), context.headers);\n var contextConfig = {\n http: context.http,\n options: context.fetchOptions,\n credentials: context.credentials,\n headers: contextHeaders,\n };\n var _b = selectHttpOptionsAndBodyInternal(operation, print, fallbackHttpConfig, linkConfig, contextConfig), options = _b.options, body = _b.body;\n if (body.variables && !includeUnusedVariables) {\n var unusedNames_1 = new Set(Object.keys(body.variables));\n visit(operation.query, {\n Variable: function (node, _key, parent) {\n if (parent && parent.kind !== 'VariableDefinition') {\n unusedNames_1.delete(node.name.value);\n }\n },\n });\n if (unusedNames_1.size) {\n body.variables = __assign({}, body.variables);\n unusedNames_1.forEach(function (name) {\n delete body.variables[name];\n });\n }\n }\n var controller;\n if (!options.signal) {\n var _c = createSignalIfSupported(), _controller = _c.controller, signal = _c.signal;\n controller = _controller;\n if (controller)\n options.signal = signal;\n }\n var definitionIsMutation = function (d) {\n return d.kind === 'OperationDefinition' && d.operation === 'mutation';\n };\n if (useGETForQueries &&\n !operation.query.definitions.some(definitionIsMutation)) {\n options.method = 'GET';\n }\n if (hasDirectives(['defer'], operation.query)) {\n options.headers.accept = \"multipart/mixed; deferSpec=20220824, application/json\";\n }\n if (options.method === 'GET') {\n var _d = rewriteURIForGET(chosenURI, body), newURI = _d.newURI, parseError = _d.parseError;\n if (parseError) {\n return fromError(parseError);\n }\n chosenURI = newURI;\n }\n else {\n try {\n options.body = serializeFetchParameter(body, 'Payload');\n }\n catch (parseError) {\n return fromError(parseError);\n }\n }\n return new Observable(function (observer) {\n var currentFetch = preferredFetch || maybe(function () { return fetch; }) || backupFetch;\n currentFetch(chosenURI, options)\n .then(function (response) {\n var _a;\n operation.setContext({ response: response });\n var ctype = (_a = response.headers) === null || _a === void 0 ? void 0 : _a.get('content-type');\n if (ctype !== null && /^multipart\\/mixed/i.test(ctype)) {\n return readMultipartBody(response, observer);\n }\n else {\n return readJsonBody(response, operation, observer);\n }\n })\n .catch(function (err) { return handleError(err, observer); });\n return function () {\n if (controller)\n controller.abort();\n };\n });\n });\n};\n//# sourceMappingURL=createHttpLink.js.map","export var selectURI = function (operation, fallbackURI) {\n var context = operation.getContext();\n var contextURI = context.uri;\n if (contextURI) {\n return contextURI;\n }\n else if (typeof fallbackURI === 'function') {\n return fallbackURI(operation);\n }\n else {\n return fallbackURI || '/graphql';\n }\n};\n//# sourceMappingURL=selectURI.js.map","export var createSignalIfSupported = function () {\n if (typeof AbortController === 'undefined')\n return { controller: false, signal: false };\n var controller = new AbortController();\n var signal = controller.signal;\n return { controller: controller, signal: signal };\n};\n//# sourceMappingURL=createSignalIfSupported.js.map","import { serializeFetchParameter } from \"./serializeFetchParameter.js\";\nexport function rewriteURIForGET(chosenURI, body) {\n var queryParams = [];\n var addQueryParam = function (key, value) {\n queryParams.push(\"\".concat(key, \"=\").concat(encodeURIComponent(value)));\n };\n if ('query' in body) {\n addQueryParam('query', body.query);\n }\n if (body.operationName) {\n addQueryParam('operationName', body.operationName);\n }\n if (body.variables) {\n var serializedVariables = void 0;\n try {\n serializedVariables = serializeFetchParameter(body.variables, 'Variables map');\n }\n catch (parseError) {\n return { parseError: parseError };\n }\n addQueryParam('variables', serializedVariables);\n }\n if (body.extensions) {\n var serializedExtensions = void 0;\n try {\n serializedExtensions = serializeFetchParameter(body.extensions, 'Extensions map');\n }\n catch (parseError) {\n return { parseError: parseError };\n }\n addQueryParam('extensions', serializedExtensions);\n }\n var fragment = '', preFragment = chosenURI;\n var fragmentStart = chosenURI.indexOf('#');\n if (fragmentStart !== -1) {\n fragment = chosenURI.substr(fragmentStart);\n preFragment = chosenURI.substr(0, fragmentStart);\n }\n var queryParamsPrefix = preFragment.indexOf('?') === -1 ? '?' : '&';\n var newURI = preFragment + queryParamsPrefix + queryParams.join('&') + fragment;\n return { newURI: newURI };\n}\n//# sourceMappingURL=rewriteURIForGET.js.map","import * as React from 'react';\nimport { canUseSymbol } from \"../../utilities/index.js\";\nvar contextKey = canUseSymbol\n ? Symbol.for('__APOLLO_CONTEXT__')\n : '__APOLLO_CONTEXT__';\nexport function getApolloContext() {\n var context = React.createContext[contextKey];\n if (!context) {\n Object.defineProperty(React.createContext, contextKey, {\n value: context = React.createContext({}),\n enumerable: false,\n writable: false,\n configurable: true,\n });\n context.displayName = 'ApolloContext';\n }\n return context;\n}\nexport { getApolloContext as resetApolloContext };\n//# sourceMappingURL=ApolloContext.js.map","import { invariant } from \"../../utilities/globals/index.js\";\nimport * as React from 'react';\nimport { getApolloContext } from \"./ApolloContext.js\";\nexport var ApolloProvider = function (_a) {\n var client = _a.client, children = _a.children;\n var ApolloContext = getApolloContext();\n return (React.createElement(ApolloContext.Consumer, null, function (context) {\n if (context === void 0) { context = {}; }\n if (client && context.client !== client) {\n context = Object.assign({}, context, { client: client });\n }\n __DEV__ ? invariant(context.client, 'ApolloProvider was not passed a client instance. Make ' +\n 'sure you pass in your client via the \"client\" prop.') : invariant(context.client, 28);\n return (React.createElement(ApolloContext.Provider, { value: context }, children));\n }));\n};\n//# sourceMappingURL=ApolloProvider.js.map","import { invariant } from \"../../utilities/globals/index.js\";\nimport { useContext } from 'react';\nimport { getApolloContext } from \"../context/index.js\";\nexport function useApolloClient(override) {\n var context = useContext(getApolloContext());\n var client = override || context.client;\n __DEV__ ? invariant(!!client, 'Could not find \"client\" in the context or passed in as an option. ' +\n 'Wrap the root component in an , or pass an ApolloClient ' +\n 'instance in via options.') : invariant(!!client, 31);\n return client;\n}\n//# sourceMappingURL=useApolloClient.js.map","import { __assign } from \"tslib\";\nimport { useCallback, useMemo, useRef } from 'react';\nimport { mergeOptions } from \"../../utilities/index.js\";\nimport { useInternalState } from \"./useQuery.js\";\nimport { useApolloClient } from \"./useApolloClient.js\";\nvar EAGER_METHODS = [\n 'refetch',\n 'reobserve',\n 'fetchMore',\n 'updateQuery',\n 'startPolling',\n 'subscribeToMore',\n];\nexport function useLazyQuery(query, options) {\n var internalState = useInternalState(useApolloClient(options && options.client), query);\n var execOptionsRef = useRef();\n var merged = execOptionsRef.current\n ? mergeOptions(options, execOptionsRef.current)\n : options;\n var useQueryResult = internalState.useQuery(__assign(__assign({}, merged), { skip: !execOptionsRef.current }));\n var initialFetchPolicy = useQueryResult.observable.options.initialFetchPolicy ||\n internalState.getDefaultFetchPolicy();\n var result = Object.assign(useQueryResult, {\n called: !!execOptionsRef.current,\n });\n var eagerMethods = useMemo(function () {\n var eagerMethods = {};\n var _loop_1 = function (key) {\n var method = result[key];\n eagerMethods[key] = function () {\n if (!execOptionsRef.current) {\n execOptionsRef.current = Object.create(null);\n internalState.forceUpdate();\n }\n return method.apply(this, arguments);\n };\n };\n for (var _i = 0, EAGER_METHODS_1 = EAGER_METHODS; _i < EAGER_METHODS_1.length; _i++) {\n var key = EAGER_METHODS_1[_i];\n _loop_1(key);\n }\n return eagerMethods;\n }, []);\n Object.assign(result, eagerMethods);\n var execute = useCallback(function (executeOptions) {\n execOptionsRef.current = executeOptions ? __assign(__assign({}, executeOptions), { fetchPolicy: executeOptions.fetchPolicy || initialFetchPolicy }) : {\n fetchPolicy: initialFetchPolicy,\n };\n var promise = internalState\n .asyncUpdate()\n .then(function (queryResult) { return Object.assign(queryResult, eagerMethods); });\n promise.catch(function () { });\n return promise;\n }, []);\n return [execute, result];\n}\n//# sourceMappingURL=useLazyQuery.js.map","import { __assign } from \"tslib\";\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport { mergeOptions, } from \"../../core/index.js\";\nimport { equal } from '@wry/equality';\nimport { DocumentType, verifyDocumentType } from \"../parser/index.js\";\nimport { ApolloError } from \"../../errors/index.js\";\nimport { useApolloClient } from \"./useApolloClient.js\";\nexport function useMutation(mutation, options) {\n var client = useApolloClient(options === null || options === void 0 ? void 0 : options.client);\n verifyDocumentType(mutation, DocumentType.Mutation);\n var _a = useState({\n called: false,\n loading: false,\n client: client,\n }), result = _a[0], setResult = _a[1];\n var ref = useRef({\n result: result,\n mutationId: 0,\n isMounted: true,\n client: client,\n mutation: mutation,\n options: options,\n });\n {\n Object.assign(ref.current, { client: client, options: options, mutation: mutation });\n }\n var execute = useCallback(function (executeOptions) {\n if (executeOptions === void 0) { executeOptions = {}; }\n var _a = ref.current, client = _a.client, options = _a.options, mutation = _a.mutation;\n var baseOptions = __assign(__assign({}, options), { mutation: mutation });\n if (!ref.current.result.loading && !baseOptions.ignoreResults && ref.current.isMounted) {\n setResult(ref.current.result = {\n loading: true,\n error: void 0,\n data: void 0,\n called: true,\n client: client,\n });\n }\n var mutationId = ++ref.current.mutationId;\n var clientOptions = mergeOptions(baseOptions, executeOptions);\n return client.mutate(clientOptions).then(function (response) {\n var _a, _b, _c;\n var data = response.data, errors = response.errors;\n var error = errors && errors.length > 0\n ? new ApolloError({ graphQLErrors: errors })\n : void 0;\n if (mutationId === ref.current.mutationId &&\n !clientOptions.ignoreResults) {\n var result_1 = {\n called: true,\n loading: false,\n data: data,\n error: error,\n client: client,\n };\n if (ref.current.isMounted && !equal(ref.current.result, result_1)) {\n setResult(ref.current.result = result_1);\n }\n }\n (_b = (_a = ref.current.options) === null || _a === void 0 ? void 0 : _a.onCompleted) === null || _b === void 0 ? void 0 : _b.call(_a, response.data, clientOptions);\n (_c = executeOptions.onCompleted) === null || _c === void 0 ? void 0 : _c.call(executeOptions, response.data, clientOptions);\n return response;\n }).catch(function (error) {\n var _a, _b, _c, _d;\n if (mutationId === ref.current.mutationId &&\n ref.current.isMounted) {\n var result_2 = {\n loading: false,\n error: error,\n data: void 0,\n called: true,\n client: client,\n };\n if (!equal(ref.current.result, result_2)) {\n setResult(ref.current.result = result_2);\n }\n }\n if (((_a = ref.current.options) === null || _a === void 0 ? void 0 : _a.onError) || clientOptions.onError) {\n (_c = (_b = ref.current.options) === null || _b === void 0 ? void 0 : _b.onError) === null || _c === void 0 ? void 0 : _c.call(_b, error, clientOptions);\n (_d = executeOptions.onError) === null || _d === void 0 ? void 0 : _d.call(executeOptions, error, clientOptions);\n return { data: void 0, errors: error };\n }\n throw error;\n });\n }, []);\n var reset = useCallback(function () {\n if (ref.current.isMounted) {\n setResult({ called: false, loading: false, client: client });\n }\n }, []);\n useEffect(function () {\n ref.current.isMounted = true;\n return function () {\n ref.current.isMounted = false;\n };\n }, []);\n return [execute, __assign({ reset: reset }, result)];\n}\n//# sourceMappingURL=useMutation.js.map","import { invariant } from \"../../utilities/globals/index.js\";\nimport * as React from 'react';\nimport { canUseLayoutEffect } from \"../../utilities/index.js\";\nvar didWarnUncachedGetSnapshot = false;\nvar uSESKey = \"useSyncExternalStore\";\nvar realHook = React[uSESKey];\nexport var useSyncExternalStore = realHook || (function (subscribe, getSnapshot, getServerSnapshot) {\n var value = getSnapshot();\n if (__DEV__ &&\n !didWarnUncachedGetSnapshot &&\n value !== getSnapshot()) {\n didWarnUncachedGetSnapshot = true;\n __DEV__ && invariant.error('The result of getSnapshot should be cached to avoid an infinite loop');\n }\n var _a = React.useState({ inst: { value: value, getSnapshot: getSnapshot } }), inst = _a[0].inst, forceUpdate = _a[1];\n if (canUseLayoutEffect) {\n React.useLayoutEffect(function () {\n Object.assign(inst, { value: value, getSnapshot: getSnapshot });\n if (checkIfSnapshotChanged(inst)) {\n forceUpdate({ inst: inst });\n }\n }, [subscribe, value, getSnapshot]);\n }\n else {\n Object.assign(inst, { value: value, getSnapshot: getSnapshot });\n }\n React.useEffect(function () {\n if (checkIfSnapshotChanged(inst)) {\n forceUpdate({ inst: inst });\n }\n return subscribe(function handleStoreChange() {\n if (checkIfSnapshotChanged(inst)) {\n forceUpdate({ inst: inst });\n }\n });\n }, [subscribe]);\n return value;\n});\nfunction checkIfSnapshotChanged(_a) {\n var value = _a.value, getSnapshot = _a.getSnapshot;\n try {\n return value !== getSnapshot();\n }\n catch (_b) {\n return true;\n }\n}\n//# sourceMappingURL=useSyncExternalStore.js.map","import { __assign, __rest } from \"tslib\";\nimport { invariant } from \"../../utilities/globals/index.js\";\nimport { useCallback, useContext, useMemo, useRef, useState, } from 'react';\nimport { useSyncExternalStore } from \"./useSyncExternalStore.js\";\nimport { equal } from '@wry/equality';\nimport { mergeOptions } from \"../../core/index.js\";\nimport { getApolloContext } from \"../context/index.js\";\nimport { ApolloError } from \"../../errors/index.js\";\nimport { NetworkStatus, } from \"../../core/index.js\";\nimport { DocumentType, verifyDocumentType } from \"../parser/index.js\";\nimport { useApolloClient } from \"./useApolloClient.js\";\nimport { canUseWeakMap, canUseWeakSet, compact, isNonEmptyArray, maybeDeepFreeze } from \"../../utilities/index.js\";\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nexport function useQuery(query, options) {\n if (options === void 0) { options = Object.create(null); }\n return useInternalState(useApolloClient(options.client), query).useQuery(options);\n}\nexport function useInternalState(client, query) {\n var stateRef = useRef();\n if (!stateRef.current ||\n client !== stateRef.current.client ||\n query !== stateRef.current.query) {\n stateRef.current = new InternalState(client, query, stateRef.current);\n }\n var state = stateRef.current;\n var _a = useState(0), _tick = _a[0], setTick = _a[1];\n state.forceUpdate = function () {\n setTick(function (tick) { return tick + 1; });\n };\n return state;\n}\nvar InternalState = (function () {\n function InternalState(client, query, previous) {\n this.client = client;\n this.query = query;\n this.asyncResolveFns = new Set();\n this.optionsToIgnoreOnce = new (canUseWeakSet ? WeakSet : Set)();\n this.ssrDisabledResult = maybeDeepFreeze({\n loading: true,\n data: void 0,\n error: void 0,\n networkStatus: NetworkStatus.loading,\n });\n this.skipStandbyResult = maybeDeepFreeze({\n loading: false,\n data: void 0,\n error: void 0,\n networkStatus: NetworkStatus.ready,\n });\n this.toQueryResultCache = new (canUseWeakMap ? WeakMap : Map)();\n verifyDocumentType(query, DocumentType.Query);\n var previousResult = previous && previous.result;\n var previousData = previousResult && previousResult.data;\n if (previousData) {\n this.previousData = previousData;\n }\n }\n InternalState.prototype.forceUpdate = function () {\n __DEV__ && invariant.warn(\"Calling default no-op implementation of InternalState#forceUpdate\");\n };\n InternalState.prototype.asyncUpdate = function () {\n var _this = this;\n return new Promise(function (resolve) {\n _this.asyncResolveFns.add(resolve);\n _this.optionsToIgnoreOnce.add(_this.watchQueryOptions);\n _this.forceUpdate();\n });\n };\n InternalState.prototype.useQuery = function (options) {\n var _this = this;\n this.renderPromises = useContext(getApolloContext()).renderPromises;\n this.useOptions(options);\n var obsQuery = this.useObservableQuery();\n var result = useSyncExternalStore(useCallback(function () {\n if (_this.renderPromises) {\n return function () { };\n }\n var onNext = function () {\n var previousResult = _this.result;\n var result = obsQuery.getCurrentResult();\n if (previousResult &&\n previousResult.loading === result.loading &&\n previousResult.networkStatus === result.networkStatus &&\n equal(previousResult.data, result.data)) {\n return;\n }\n _this.setResult(result);\n };\n var onError = function (error) {\n var last = obsQuery[\"last\"];\n subscription.unsubscribe();\n try {\n obsQuery.resetLastResults();\n subscription = obsQuery.subscribe(onNext, onError);\n }\n finally {\n obsQuery[\"last\"] = last;\n }\n if (!hasOwnProperty.call(error, 'graphQLErrors')) {\n throw error;\n }\n var previousResult = _this.result;\n if (!previousResult ||\n (previousResult && previousResult.loading) ||\n !equal(error, previousResult.error)) {\n _this.setResult({\n data: (previousResult && previousResult.data),\n error: error,\n loading: false,\n networkStatus: NetworkStatus.error,\n });\n }\n };\n var subscription = obsQuery.subscribe(onNext, onError);\n return function () { return subscription.unsubscribe(); };\n }, [\n obsQuery,\n this.renderPromises,\n this.client.disableNetworkFetches,\n ]), function () { return _this.getCurrentResult(); }, function () { return _this.getCurrentResult(); });\n this.unsafeHandlePartialRefetch(result);\n var queryResult = this.toQueryResult(result);\n if (!queryResult.loading && this.asyncResolveFns.size) {\n this.asyncResolveFns.forEach(function (resolve) { return resolve(queryResult); });\n this.asyncResolveFns.clear();\n }\n return queryResult;\n };\n InternalState.prototype.useOptions = function (options) {\n var _a;\n var watchQueryOptions = this.createWatchQueryOptions(this.queryHookOptions = options);\n var currentWatchQueryOptions = this.watchQueryOptions;\n if (this.optionsToIgnoreOnce.has(currentWatchQueryOptions) ||\n !equal(watchQueryOptions, currentWatchQueryOptions)) {\n this.watchQueryOptions = watchQueryOptions;\n if (currentWatchQueryOptions && this.observable) {\n this.optionsToIgnoreOnce.delete(currentWatchQueryOptions);\n this.observable.reobserve(this.getObsQueryOptions());\n this.previousData = ((_a = this.result) === null || _a === void 0 ? void 0 : _a.data) || this.previousData;\n this.result = void 0;\n }\n }\n this.onCompleted = options.onCompleted || InternalState.prototype.onCompleted;\n this.onError = options.onError || InternalState.prototype.onError;\n if ((this.renderPromises || this.client.disableNetworkFetches) &&\n this.queryHookOptions.ssr === false &&\n !this.queryHookOptions.skip) {\n this.result = this.ssrDisabledResult;\n }\n else if (this.queryHookOptions.skip ||\n this.watchQueryOptions.fetchPolicy === 'standby') {\n this.result = this.skipStandbyResult;\n }\n else if (this.result === this.ssrDisabledResult ||\n this.result === this.skipStandbyResult) {\n this.result = void 0;\n }\n };\n InternalState.prototype.getObsQueryOptions = function () {\n var toMerge = [];\n var globalDefaults = this.client.defaultOptions.watchQuery;\n if (globalDefaults)\n toMerge.push(globalDefaults);\n if (this.queryHookOptions.defaultOptions) {\n toMerge.push(this.queryHookOptions.defaultOptions);\n }\n toMerge.push(compact(this.observable && this.observable.options, this.watchQueryOptions));\n return toMerge.reduce(mergeOptions);\n };\n InternalState.prototype.createWatchQueryOptions = function (_a) {\n var _b;\n if (_a === void 0) { _a = {}; }\n var skip = _a.skip, ssr = _a.ssr, onCompleted = _a.onCompleted, onError = _a.onError, defaultOptions = _a.defaultOptions, otherOptions = __rest(_a, [\"skip\", \"ssr\", \"onCompleted\", \"onError\", \"defaultOptions\"]);\n var watchQueryOptions = Object.assign(otherOptions, { query: this.query });\n if (this.renderPromises &&\n (watchQueryOptions.fetchPolicy === 'network-only' ||\n watchQueryOptions.fetchPolicy === 'cache-and-network')) {\n watchQueryOptions.fetchPolicy = 'cache-first';\n }\n if (!watchQueryOptions.variables) {\n watchQueryOptions.variables = {};\n }\n if (skip) {\n var _c = watchQueryOptions.fetchPolicy, fetchPolicy = _c === void 0 ? this.getDefaultFetchPolicy() : _c, _d = watchQueryOptions.initialFetchPolicy, initialFetchPolicy = _d === void 0 ? fetchPolicy : _d;\n Object.assign(watchQueryOptions, {\n initialFetchPolicy: initialFetchPolicy,\n fetchPolicy: 'standby',\n });\n }\n else if (!watchQueryOptions.fetchPolicy) {\n watchQueryOptions.fetchPolicy =\n ((_b = this.observable) === null || _b === void 0 ? void 0 : _b.options.initialFetchPolicy) ||\n this.getDefaultFetchPolicy();\n }\n return watchQueryOptions;\n };\n InternalState.prototype.getDefaultFetchPolicy = function () {\n var _a, _b;\n return (((_a = this.queryHookOptions.defaultOptions) === null || _a === void 0 ? void 0 : _a.fetchPolicy) ||\n ((_b = this.client.defaultOptions.watchQuery) === null || _b === void 0 ? void 0 : _b.fetchPolicy) ||\n \"cache-first\");\n };\n InternalState.prototype.onCompleted = function (data) { };\n InternalState.prototype.onError = function (error) { };\n InternalState.prototype.useObservableQuery = function () {\n var obsQuery = this.observable =\n this.renderPromises\n && this.renderPromises.getSSRObservable(this.watchQueryOptions)\n || this.observable\n || this.client.watchQuery(this.getObsQueryOptions());\n this.obsQueryFields = useMemo(function () { return ({\n refetch: obsQuery.refetch.bind(obsQuery),\n reobserve: obsQuery.reobserve.bind(obsQuery),\n fetchMore: obsQuery.fetchMore.bind(obsQuery),\n updateQuery: obsQuery.updateQuery.bind(obsQuery),\n startPolling: obsQuery.startPolling.bind(obsQuery),\n stopPolling: obsQuery.stopPolling.bind(obsQuery),\n subscribeToMore: obsQuery.subscribeToMore.bind(obsQuery),\n }); }, [obsQuery]);\n var ssrAllowed = !(this.queryHookOptions.ssr === false ||\n this.queryHookOptions.skip);\n if (this.renderPromises && ssrAllowed) {\n this.renderPromises.registerSSRObservable(obsQuery);\n if (obsQuery.getCurrentResult().loading) {\n this.renderPromises.addObservableQueryPromise(obsQuery);\n }\n }\n return obsQuery;\n };\n InternalState.prototype.setResult = function (nextResult) {\n var previousResult = this.result;\n if (previousResult && previousResult.data) {\n this.previousData = previousResult.data;\n }\n this.result = nextResult;\n this.forceUpdate();\n this.handleErrorOrCompleted(nextResult);\n };\n InternalState.prototype.handleErrorOrCompleted = function (result) {\n var _this = this;\n if (!result.loading) {\n Promise.resolve().then(function () {\n if (result.error) {\n _this.onError(result.error);\n }\n else if (result.data) {\n _this.onCompleted(result.data);\n }\n }).catch(function (error) {\n __DEV__ && invariant.warn(error);\n });\n }\n };\n InternalState.prototype.getCurrentResult = function () {\n if (!this.result) {\n this.handleErrorOrCompleted(this.result = this.observable.getCurrentResult());\n }\n return this.result;\n };\n InternalState.prototype.toQueryResult = function (result) {\n var queryResult = this.toQueryResultCache.get(result);\n if (queryResult)\n return queryResult;\n var data = result.data, partial = result.partial, resultWithoutPartial = __rest(result, [\"data\", \"partial\"]);\n this.toQueryResultCache.set(result, queryResult = __assign(__assign(__assign({ data: data }, resultWithoutPartial), this.obsQueryFields), { client: this.client, observable: this.observable, variables: this.observable.variables, called: !this.queryHookOptions.skip, previousData: this.previousData }));\n if (!queryResult.error && isNonEmptyArray(result.errors)) {\n queryResult.error = new ApolloError({ graphQLErrors: result.errors });\n }\n return queryResult;\n };\n InternalState.prototype.unsafeHandlePartialRefetch = function (result) {\n if (result.partial &&\n this.queryHookOptions.partialRefetch &&\n !result.loading &&\n (!result.data || Object.keys(result.data).length === 0) &&\n this.observable.options.fetchPolicy !== 'cache-only') {\n Object.assign(result, {\n loading: true,\n networkStatus: NetworkStatus.refetch,\n });\n this.observable.refetch();\n }\n };\n return InternalState;\n}());\n//# sourceMappingURL=useQuery.js.map","import { invariant } from \"../../utilities/globals/index.js\";\nexport var DocumentType;\n(function (DocumentType) {\n DocumentType[DocumentType[\"Query\"] = 0] = \"Query\";\n DocumentType[DocumentType[\"Mutation\"] = 1] = \"Mutation\";\n DocumentType[DocumentType[\"Subscription\"] = 2] = \"Subscription\";\n})(DocumentType || (DocumentType = {}));\nvar cache = new Map();\nexport function operationName(type) {\n var name;\n switch (type) {\n case DocumentType.Query:\n name = 'Query';\n break;\n case DocumentType.Mutation:\n name = 'Mutation';\n break;\n case DocumentType.Subscription:\n name = 'Subscription';\n break;\n }\n return name;\n}\nexport function parser(document) {\n var cached = cache.get(document);\n if (cached)\n return cached;\n var variables, type, name;\n __DEV__ ? invariant(!!document && !!document.kind, \"Argument of \".concat(document, \" passed to parser was not a valid GraphQL \") +\n \"DocumentNode. You may need to use 'graphql-tag' or another method \" +\n \"to convert your operation into a document\") : invariant(!!document && !!document.kind, 32);\n var fragments = [];\n var queries = [];\n var mutations = [];\n var subscriptions = [];\n for (var _i = 0, _a = document.definitions; _i < _a.length; _i++) {\n var x = _a[_i];\n if (x.kind === 'FragmentDefinition') {\n fragments.push(x);\n continue;\n }\n if (x.kind === 'OperationDefinition') {\n switch (x.operation) {\n case 'query':\n queries.push(x);\n break;\n case 'mutation':\n mutations.push(x);\n break;\n case 'subscription':\n subscriptions.push(x);\n break;\n }\n }\n }\n __DEV__ ? invariant(!fragments.length ||\n (queries.length || mutations.length || subscriptions.length), \"Passing only a fragment to 'graphql' is not yet supported. \" +\n \"You must include a query, subscription or mutation as well\") : invariant(!fragments.length ||\n (queries.length || mutations.length || subscriptions.length), 33);\n __DEV__ ? invariant(queries.length + mutations.length + subscriptions.length <= 1, \"react-apollo only supports a query, subscription, or a mutation per HOC. \" +\n \"\".concat(document, \" had \").concat(queries.length, \" queries, \").concat(subscriptions.length, \" \") +\n \"subscriptions and \".concat(mutations.length, \" mutations. \") +\n \"You can use 'compose' to join multiple operation types to a component\") : invariant(queries.length + mutations.length + subscriptions.length <= 1, 34);\n type = queries.length ? DocumentType.Query : DocumentType.Mutation;\n if (!queries.length && !mutations.length)\n type = DocumentType.Subscription;\n var definitions = queries.length\n ? queries\n : mutations.length\n ? mutations\n : subscriptions;\n __DEV__ ? invariant(definitions.length === 1, \"react-apollo only supports one definition per HOC. \".concat(document, \" had \") +\n \"\".concat(definitions.length, \" definitions. \") +\n \"You can use 'compose' to join multiple operation types to a component\") : invariant(definitions.length === 1, 35);\n var definition = definitions[0];\n variables = definition.variableDefinitions || [];\n if (definition.name && definition.name.kind === 'Name') {\n name = definition.name.value;\n }\n else {\n name = 'data';\n }\n var payload = { name: name, type: type, variables: variables };\n cache.set(document, payload);\n return payload;\n}\nexport function verifyDocumentType(document, type) {\n var operation = parser(document);\n var requiredOperationName = operationName(type);\n var usedOperationName = operationName(operation.type);\n __DEV__ ? invariant(operation.type === type, \"Running a \".concat(requiredOperationName, \" requires a graphql \") +\n \"\".concat(requiredOperationName, \", but a \").concat(usedOperationName, \" was used instead.\")) : invariant(operation.type === type, 36);\n}\n//# sourceMappingURL=index.js.map","export function isNonEmptyArray(value) {\n return Array.isArray(value) && value.length > 0;\n}\n//# sourceMappingURL=arrays.js.map","import { maybe } from \"../globals/index.js\";\nexport var canUseWeakMap = typeof WeakMap === 'function' &&\n maybe(function () { return navigator.product; }) !== 'ReactNative';\nexport var canUseWeakSet = typeof WeakSet === 'function';\nexport var canUseSymbol = typeof Symbol === 'function' &&\n typeof Symbol.for === 'function';\nexport var canUseAsyncIteratorSymbol = canUseSymbol && Symbol.asyncIterator;\nexport var canUseDOM = typeof maybe(function () { return window.document.createElement; }) === \"function\";\nvar usingJSDOM = maybe(function () { return navigator.userAgent.indexOf(\"jsdom\") >= 0; }) || false;\nexport var canUseLayoutEffect = canUseDOM && !usingJSDOM;\n//# sourceMappingURL=canUse.js.map","var toString = Object.prototype.toString;\nexport function cloneDeep(value) {\n return cloneDeepHelper(value);\n}\nfunction cloneDeepHelper(val, seen) {\n switch (toString.call(val)) {\n case \"[object Array]\": {\n seen = seen || new Map;\n if (seen.has(val))\n return seen.get(val);\n var copy_1 = val.slice(0);\n seen.set(val, copy_1);\n copy_1.forEach(function (child, i) {\n copy_1[i] = cloneDeepHelper(child, seen);\n });\n return copy_1;\n }\n case \"[object Object]\": {\n seen = seen || new Map;\n if (seen.has(val))\n return seen.get(val);\n var copy_2 = Object.create(Object.getPrototypeOf(val));\n seen.set(val, copy_2);\n Object.keys(val).forEach(function (key) {\n copy_2[key] = cloneDeepHelper(val[key], seen);\n });\n return copy_2;\n }\n default:\n return val;\n }\n}\n//# sourceMappingURL=cloneDeep.js.map","export function compact() {\n var objects = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n objects[_i] = arguments[_i];\n }\n var result = Object.create(null);\n objects.forEach(function (obj) {\n if (!obj)\n return;\n Object.keys(obj).forEach(function (key) {\n var value = obj[key];\n if (value !== void 0) {\n result[key] = value;\n }\n });\n });\n return result;\n}\n//# sourceMappingURL=compact.js.map","var prefixCounts = new Map();\nexport function makeUniqueId(prefix) {\n var count = prefixCounts.get(prefix) || 1;\n prefixCounts.set(prefix, count + 1);\n return \"\".concat(prefix, \":\").concat(count, \":\").concat(Math.random().toString(36).slice(2));\n}\n//# sourceMappingURL=makeUniqueId.js.map","import \"../globals/index.js\";\nimport { isNonNullObject } from \"./objects.js\";\nfunction deepFreeze(value) {\n var workSet = new Set([value]);\n workSet.forEach(function (obj) {\n if (isNonNullObject(obj) && shallowFreeze(obj) === obj) {\n Object.getOwnPropertyNames(obj).forEach(function (name) {\n if (isNonNullObject(obj[name]))\n workSet.add(obj[name]);\n });\n }\n });\n return value;\n}\nfunction shallowFreeze(obj) {\n if (__DEV__ && !Object.isFrozen(obj)) {\n try {\n Object.freeze(obj);\n }\n catch (e) {\n if (e instanceof TypeError)\n return null;\n throw e;\n }\n }\n return obj;\n}\nexport function maybeDeepFreeze(obj) {\n if (__DEV__) {\n deepFreeze(obj);\n }\n return obj;\n}\n//# sourceMappingURL=maybeDeepFreeze.js.map","import { __assign, __spreadArray } from \"tslib\";\nimport { isNonNullObject } from \"./objects.js\";\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nexport function mergeDeep() {\n var sources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n sources[_i] = arguments[_i];\n }\n return mergeDeepArray(sources);\n}\nexport function mergeDeepArray(sources) {\n var target = sources[0] || {};\n var count = sources.length;\n if (count > 1) {\n var merger = new DeepMerger();\n for (var i = 1; i < count; ++i) {\n target = merger.merge(target, sources[i]);\n }\n }\n return target;\n}\nvar defaultReconciler = function (target, source, property) {\n return this.merge(target[property], source[property]);\n};\nvar DeepMerger = (function () {\n function DeepMerger(reconciler) {\n if (reconciler === void 0) { reconciler = defaultReconciler; }\n this.reconciler = reconciler;\n this.isObject = isNonNullObject;\n this.pastCopies = new Set();\n }\n DeepMerger.prototype.merge = function (target, source) {\n var _this = this;\n var context = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n context[_i - 2] = arguments[_i];\n }\n if (isNonNullObject(source) && isNonNullObject(target)) {\n Object.keys(source).forEach(function (sourceKey) {\n if (hasOwnProperty.call(target, sourceKey)) {\n var targetValue = target[sourceKey];\n if (source[sourceKey] !== targetValue) {\n var result = _this.reconciler.apply(_this, __spreadArray([target, source, sourceKey], context, false));\n if (result !== targetValue) {\n target = _this.shallowCopyForMerge(target);\n target[sourceKey] = result;\n }\n }\n }\n else {\n target = _this.shallowCopyForMerge(target);\n target[sourceKey] = source[sourceKey];\n }\n });\n return target;\n }\n return source;\n };\n DeepMerger.prototype.shallowCopyForMerge = function (value) {\n if (isNonNullObject(value)) {\n if (!this.pastCopies.has(value)) {\n if (Array.isArray(value)) {\n value = value.slice(0);\n }\n else {\n value = __assign({ __proto__: Object.getPrototypeOf(value) }, value);\n }\n this.pastCopies.add(value);\n }\n }\n return value;\n };\n return DeepMerger;\n}());\nexport { DeepMerger };\n//# sourceMappingURL=mergeDeep.js.map","import { __assign } from \"tslib\";\nimport { compact } from \"./compact.js\";\nexport function mergeOptions(defaults, options) {\n return compact(defaults, options, options.variables && {\n variables: __assign(__assign({}, (defaults && defaults.variables)), options.variables),\n });\n}\n//# sourceMappingURL=mergeOptions.js.map","export function isNonNullObject(obj) {\n return obj !== null && typeof obj === 'object';\n}\n//# sourceMappingURL=objects.js.map","import { __extends } from \"tslib\";\nvar genericMessage = \"Invariant Violation\";\nvar _a = Object.setPrototypeOf, setPrototypeOf = _a === void 0 ? function (obj, proto) {\n obj.__proto__ = proto;\n return obj;\n} : _a;\nvar InvariantError = /** @class */ (function (_super) {\n __extends(InvariantError, _super);\n function InvariantError(message) {\n if (message === void 0) { message = genericMessage; }\n var _this = _super.call(this, typeof message === \"number\"\n ? genericMessage + \": \" + message + \" (see https://github.com/apollographql/invariant-packages)\"\n : message) || this;\n _this.framesToPop = 1;\n _this.name = genericMessage;\n setPrototypeOf(_this, InvariantError.prototype);\n return _this;\n }\n return InvariantError;\n}(Error));\nexport { InvariantError };\nexport function invariant(condition, message) {\n if (!condition) {\n throw new InvariantError(message);\n }\n}\nvar verbosityLevels = [\"debug\", \"log\", \"warn\", \"error\", \"silent\"];\nvar verbosityLevel = verbosityLevels.indexOf(\"log\");\nfunction wrapConsoleMethod(name) {\n return function () {\n if (verbosityLevels.indexOf(name) >= verbosityLevel) {\n // Default to console.log if this host environment happens not to provide\n // all the console.* methods we need.\n var method = console[name] || console.log;\n return method.apply(console, arguments);\n }\n };\n}\n(function (invariant) {\n invariant.debug = wrapConsoleMethod(\"debug\");\n invariant.log = wrapConsoleMethod(\"log\");\n invariant.warn = wrapConsoleMethod(\"warn\");\n invariant.error = wrapConsoleMethod(\"error\");\n})(invariant || (invariant = {}));\nexport function setVerbosity(level) {\n var old = verbosityLevels[verbosityLevel];\n verbosityLevel = Math.max(0, verbosityLevels.indexOf(level));\n return old;\n}\nexport default invariant;\n//# sourceMappingURL=invariant.js.map","export function maybe(thunk) {\n try {\n return thunk();\n }\n catch (_a) { }\n}\n//# sourceMappingURL=maybe.js.map","import { maybe } from \"./maybe.js\";\nexport default (maybe(function () { return globalThis; }) ||\n maybe(function () { return window; }) ||\n maybe(function () { return self; }) ||\n maybe(function () { return global; }) || maybe(function () { return maybe.constructor(\"return this\")(); }));\n//# sourceMappingURL=global.js.map","import global from \"./global.js\";\nimport { maybe } from \"./maybe.js\";\nvar __ = \"__\";\nvar GLOBAL_KEY = [__, __].join(\"DEV\");\nfunction getDEV() {\n try {\n return Boolean(__DEV__);\n }\n catch (_a) {\n Object.defineProperty(global, GLOBAL_KEY, {\n value: maybe(function () { return process.env.NODE_ENV; }) !== \"production\",\n enumerable: false,\n configurable: true,\n writable: true,\n });\n return global[GLOBAL_KEY];\n }\n}\nexport default getDEV();\n//# sourceMappingURL=DEV.js.map","function maybe(thunk) {\n try { return thunk() } catch (_) {}\n}\n\nvar safeGlobal = (\n maybe(function() { return globalThis }) ||\n maybe(function() { return window }) ||\n maybe(function() { return self }) ||\n maybe(function() { return global }) ||\n // We don't expect the Function constructor ever to be invoked at runtime, as\n // long as at least one of globalThis, window, self, or global is defined, so\n // we are under no obligation to make it easy for static analysis tools to\n // detect syntactic usage of the Function constructor. If you think you can\n // improve your static analysis to detect this obfuscation, think again. This\n // is an arms race you cannot win, at least not in JavaScript.\n maybe(function() { return maybe.constructor(\"return this\")() })\n);\n\nvar needToRemove = false;\n\nexport function install() {\n if (safeGlobal &&\n !maybe(function() { return process.env.NODE_ENV }) &&\n !maybe(function() { return process })) {\n Object.defineProperty(safeGlobal, \"process\", {\n value: {\n env: {\n // This default needs to be \"production\" instead of \"development\", to\n // avoid the problem https://github.com/graphql/graphql-js/pull/2894\n // will eventually solve, once merged and released.\n NODE_ENV: \"production\",\n },\n },\n // Let anyone else change global.process as they see fit, but hide it from\n // Object.keys(global) enumeration.\n configurable: true,\n enumerable: false,\n writable: true,\n });\n needToRemove = true;\n }\n}\n\n// Call install() at least once, when this module is imported.\ninstall();\n\nexport function remove() {\n if (needToRemove) {\n delete safeGlobal.process;\n needToRemove = false;\n }\n}\n","import { remove } from \"ts-invariant/process/index.js\";\nimport { Source } from 'graphql';\nexport function removeTemporaryGlobals() {\n return typeof Source === \"function\" ? remove() : remove();\n}\n//# sourceMappingURL=fix-graphql.js.map","import { invariant, InvariantError } from \"ts-invariant\";\nimport DEV from \"./DEV.js\";\nexport { DEV };\nexport function checkDEV() {\n __DEV__ ? invariant(\"boolean\" === typeof DEV, DEV) : invariant(\"boolean\" === typeof DEV, 38);\n}\nimport { removeTemporaryGlobals } from \"./fix-graphql.js\";\nremoveTemporaryGlobals();\nexport { maybe } from \"./maybe.js\";\nexport { default as global } from \"./global.js\";\nexport { invariant, InvariantError };\ncheckDEV();\n//# sourceMappingURL=index.js.map","import { invariant } from \"../globals/index.js\";\nimport { visit, BREAK, } from 'graphql';\nexport function shouldInclude(_a, variables) {\n var directives = _a.directives;\n if (!directives || !directives.length) {\n return true;\n }\n return getInclusionDirectives(directives).every(function (_a) {\n var directive = _a.directive, ifArgument = _a.ifArgument;\n var evaledValue = false;\n if (ifArgument.value.kind === 'Variable') {\n evaledValue = variables && variables[ifArgument.value.name.value];\n __DEV__ ? invariant(evaledValue !== void 0, \"Invalid variable referenced in @\".concat(directive.name.value, \" directive.\")) : invariant(evaledValue !== void 0, 39);\n }\n else {\n evaledValue = ifArgument.value.value;\n }\n return directive.name.value === 'skip' ? !evaledValue : evaledValue;\n });\n}\nexport function getDirectiveNames(root) {\n var names = [];\n visit(root, {\n Directive: function (node) {\n names.push(node.name.value);\n },\n });\n return names;\n}\nexport var hasAnyDirectives = function (names, root) { return hasDirectives(names, root, false); };\nexport var hasAllDirectives = function (names, root) { return hasDirectives(names, root, true); };\nexport function hasDirectives(names, root, all) {\n var nameSet = new Set(names);\n var uniqueCount = nameSet.size;\n visit(root, {\n Directive: function (node) {\n if (nameSet.delete(node.name.value) &&\n (!all || !nameSet.size)) {\n return BREAK;\n }\n },\n });\n return all ? !nameSet.size : nameSet.size < uniqueCount;\n}\nexport function hasClientExports(document) {\n return document && hasDirectives(['client', 'export'], document, true);\n}\nfunction isInclusionDirective(_a) {\n var value = _a.name.value;\n return value === 'skip' || value === 'include';\n}\nexport function getInclusionDirectives(directives) {\n var result = [];\n if (directives && directives.length) {\n directives.forEach(function (directive) {\n if (!isInclusionDirective(directive))\n return;\n var directiveArguments = directive.arguments;\n var directiveName = directive.name.value;\n __DEV__ ? invariant(directiveArguments && directiveArguments.length === 1, \"Incorrect number of arguments for the @\".concat(directiveName, \" directive.\")) : invariant(directiveArguments && directiveArguments.length === 1, 40);\n var ifArgument = directiveArguments[0];\n __DEV__ ? invariant(ifArgument.name && ifArgument.name.value === 'if', \"Invalid argument for the @\".concat(directiveName, \" directive.\")) : invariant(ifArgument.name && ifArgument.name.value === 'if', 41);\n var ifValue = ifArgument.value;\n __DEV__ ? invariant(ifValue &&\n (ifValue.kind === 'Variable' || ifValue.kind === 'BooleanValue'), \"Argument for the @\".concat(directiveName, \" directive must be a variable or a boolean value.\")) : invariant(ifValue &&\n (ifValue.kind === 'Variable' || ifValue.kind === 'BooleanValue'), 42);\n result.push({ directive: directive, ifArgument: ifArgument });\n });\n }\n return result;\n}\n//# sourceMappingURL=directives.js.map","import { __assign, __spreadArray } from \"tslib\";\nimport { invariant, InvariantError } from \"../globals/index.js\";\nexport function getFragmentQueryDocument(document, fragmentName) {\n var actualFragmentName = fragmentName;\n var fragments = [];\n document.definitions.forEach(function (definition) {\n if (definition.kind === 'OperationDefinition') {\n throw __DEV__ ? new InvariantError(\"Found a \".concat(definition.operation, \" operation\").concat(definition.name ? \" named '\".concat(definition.name.value, \"'\") : '', \". \") +\n 'No operations are allowed when using a fragment as a query. Only fragments are allowed.') : new InvariantError(43);\n }\n if (definition.kind === 'FragmentDefinition') {\n fragments.push(definition);\n }\n });\n if (typeof actualFragmentName === 'undefined') {\n __DEV__ ? invariant(fragments.length === 1, \"Found \".concat(fragments.length, \" fragments. `fragmentName` must be provided when there is not exactly 1 fragment.\")) : invariant(fragments.length === 1, 44);\n actualFragmentName = fragments[0].name.value;\n }\n var query = __assign(__assign({}, document), { definitions: __spreadArray([\n {\n kind: 'OperationDefinition',\n operation: 'query',\n selectionSet: {\n kind: 'SelectionSet',\n selections: [\n {\n kind: 'FragmentSpread',\n name: {\n kind: 'Name',\n value: actualFragmentName,\n },\n },\n ],\n },\n }\n ], document.definitions, true) });\n return query;\n}\nexport function createFragmentMap(fragments) {\n if (fragments === void 0) { fragments = []; }\n var symTable = {};\n fragments.forEach(function (fragment) {\n symTable[fragment.name.value] = fragment;\n });\n return symTable;\n}\nexport function getFragmentFromSelection(selection, fragmentMap) {\n switch (selection.kind) {\n case 'InlineFragment':\n return selection;\n case 'FragmentSpread': {\n var fragmentName = selection.name.value;\n if (typeof fragmentMap === \"function\") {\n return fragmentMap(fragmentName);\n }\n var fragment = fragmentMap && fragmentMap[fragmentName];\n __DEV__ ? invariant(fragment, \"No fragment named \".concat(fragmentName)) : invariant(fragment, 45);\n return fragment || null;\n }\n default:\n return null;\n }\n}\n//# sourceMappingURL=fragments.js.map","import { invariant, InvariantError } from \"../globals/index.js\";\nimport { valueToObjectRepresentation } from \"./storeUtils.js\";\nexport function checkDocument(doc) {\n __DEV__ ? invariant(doc && doc.kind === 'Document', \"Expecting a parsed GraphQL document. Perhaps you need to wrap the query string in a \\\"gql\\\" tag? http://docs.apollostack.com/apollo-client/core.html#gql\") : invariant(doc && doc.kind === 'Document', 46);\n var operations = doc.definitions\n .filter(function (d) { return d.kind !== 'FragmentDefinition'; })\n .map(function (definition) {\n if (definition.kind !== 'OperationDefinition') {\n throw __DEV__ ? new InvariantError(\"Schema type definitions not allowed in queries. Found: \\\"\".concat(definition.kind, \"\\\"\")) : new InvariantError(47);\n }\n return definition;\n });\n __DEV__ ? invariant(operations.length <= 1, \"Ambiguous GraphQL document: contains \".concat(operations.length, \" operations\")) : invariant(operations.length <= 1, 48);\n return doc;\n}\nexport function getOperationDefinition(doc) {\n checkDocument(doc);\n return doc.definitions.filter(function (definition) { return definition.kind === 'OperationDefinition'; })[0];\n}\nexport function getOperationName(doc) {\n return (doc.definitions\n .filter(function (definition) {\n return definition.kind === 'OperationDefinition' && definition.name;\n })\n .map(function (x) { return x.name.value; })[0] || null);\n}\nexport function getFragmentDefinitions(doc) {\n return doc.definitions.filter(function (definition) { return definition.kind === 'FragmentDefinition'; });\n}\nexport function getQueryDefinition(doc) {\n var queryDef = getOperationDefinition(doc);\n __DEV__ ? invariant(queryDef && queryDef.operation === 'query', 'Must contain a query definition.') : invariant(queryDef && queryDef.operation === 'query', 49);\n return queryDef;\n}\nexport function getFragmentDefinition(doc) {\n __DEV__ ? invariant(doc.kind === 'Document', \"Expecting a parsed GraphQL document. Perhaps you need to wrap the query string in a \\\"gql\\\" tag? http://docs.apollostack.com/apollo-client/core.html#gql\") : invariant(doc.kind === 'Document', 50);\n __DEV__ ? invariant(doc.definitions.length <= 1, 'Fragment must have exactly one definition.') : invariant(doc.definitions.length <= 1, 51);\n var fragmentDef = doc.definitions[0];\n __DEV__ ? invariant(fragmentDef.kind === 'FragmentDefinition', 'Must be a fragment definition.') : invariant(fragmentDef.kind === 'FragmentDefinition', 52);\n return fragmentDef;\n}\nexport function getMainDefinition(queryDoc) {\n checkDocument(queryDoc);\n var fragmentDefinition;\n for (var _i = 0, _a = queryDoc.definitions; _i < _a.length; _i++) {\n var definition = _a[_i];\n if (definition.kind === 'OperationDefinition') {\n var operation = definition.operation;\n if (operation === 'query' ||\n operation === 'mutation' ||\n operation === 'subscription') {\n return definition;\n }\n }\n if (definition.kind === 'FragmentDefinition' && !fragmentDefinition) {\n fragmentDefinition = definition;\n }\n }\n if (fragmentDefinition) {\n return fragmentDefinition;\n }\n throw __DEV__ ? new InvariantError('Expected a parsed GraphQL query with a query, mutation, subscription, or a fragment.') : new InvariantError(53);\n}\nexport function getDefaultValues(definition) {\n var defaultValues = Object.create(null);\n var defs = definition && definition.variableDefinitions;\n if (defs && defs.length) {\n defs.forEach(function (def) {\n if (def.defaultValue) {\n valueToObjectRepresentation(defaultValues, def.variable.name, def.defaultValue);\n }\n });\n }\n return defaultValues;\n}\n//# sourceMappingURL=getFromAST.js.map","import { InvariantError } from \"../globals/index.js\";\nimport { isNonNullObject } from \"../common/objects.js\";\nimport { getFragmentFromSelection } from \"./fragments.js\";\nexport function makeReference(id) {\n return { __ref: String(id) };\n}\nexport function isReference(obj) {\n return Boolean(obj && typeof obj === 'object' && typeof obj.__ref === 'string');\n}\nexport function isDocumentNode(value) {\n return (isNonNullObject(value) &&\n value.kind === \"Document\" &&\n Array.isArray(value.definitions));\n}\nfunction isStringValue(value) {\n return value.kind === 'StringValue';\n}\nfunction isBooleanValue(value) {\n return value.kind === 'BooleanValue';\n}\nfunction isIntValue(value) {\n return value.kind === 'IntValue';\n}\nfunction isFloatValue(value) {\n return value.kind === 'FloatValue';\n}\nfunction isVariable(value) {\n return value.kind === 'Variable';\n}\nfunction isObjectValue(value) {\n return value.kind === 'ObjectValue';\n}\nfunction isListValue(value) {\n return value.kind === 'ListValue';\n}\nfunction isEnumValue(value) {\n return value.kind === 'EnumValue';\n}\nfunction isNullValue(value) {\n return value.kind === 'NullValue';\n}\nexport function valueToObjectRepresentation(argObj, name, value, variables) {\n if (isIntValue(value) || isFloatValue(value)) {\n argObj[name.value] = Number(value.value);\n }\n else if (isBooleanValue(value) || isStringValue(value)) {\n argObj[name.value] = value.value;\n }\n else if (isObjectValue(value)) {\n var nestedArgObj_1 = {};\n value.fields.map(function (obj) {\n return valueToObjectRepresentation(nestedArgObj_1, obj.name, obj.value, variables);\n });\n argObj[name.value] = nestedArgObj_1;\n }\n else if (isVariable(value)) {\n var variableValue = (variables || {})[value.name.value];\n argObj[name.value] = variableValue;\n }\n else if (isListValue(value)) {\n argObj[name.value] = value.values.map(function (listValue) {\n var nestedArgArrayObj = {};\n valueToObjectRepresentation(nestedArgArrayObj, name, listValue, variables);\n return nestedArgArrayObj[name.value];\n });\n }\n else if (isEnumValue(value)) {\n argObj[name.value] = value.value;\n }\n else if (isNullValue(value)) {\n argObj[name.value] = null;\n }\n else {\n throw __DEV__ ? new InvariantError(\"The inline argument \\\"\".concat(name.value, \"\\\" of kind \\\"\").concat(value.kind, \"\\\"\") +\n 'is not supported. Use variables instead of inline arguments to ' +\n 'overcome this limitation.') : new InvariantError(54);\n }\n}\nexport function storeKeyNameFromField(field, variables) {\n var directivesObj = null;\n if (field.directives) {\n directivesObj = {};\n field.directives.forEach(function (directive) {\n directivesObj[directive.name.value] = {};\n if (directive.arguments) {\n directive.arguments.forEach(function (_a) {\n var name = _a.name, value = _a.value;\n return valueToObjectRepresentation(directivesObj[directive.name.value], name, value, variables);\n });\n }\n });\n }\n var argObj = null;\n if (field.arguments && field.arguments.length) {\n argObj = {};\n field.arguments.forEach(function (_a) {\n var name = _a.name, value = _a.value;\n return valueToObjectRepresentation(argObj, name, value, variables);\n });\n }\n return getStoreKeyName(field.name.value, argObj, directivesObj);\n}\nvar KNOWN_DIRECTIVES = [\n 'connection',\n 'include',\n 'skip',\n 'client',\n 'rest',\n 'export',\n];\nexport var getStoreKeyName = Object.assign(function (fieldName, args, directives) {\n if (args &&\n directives &&\n directives['connection'] &&\n directives['connection']['key']) {\n if (directives['connection']['filter'] &&\n directives['connection']['filter'].length > 0) {\n var filterKeys = directives['connection']['filter']\n ? directives['connection']['filter']\n : [];\n filterKeys.sort();\n var filteredArgs_1 = {};\n filterKeys.forEach(function (key) {\n filteredArgs_1[key] = args[key];\n });\n return \"\".concat(directives['connection']['key'], \"(\").concat(stringify(filteredArgs_1), \")\");\n }\n else {\n return directives['connection']['key'];\n }\n }\n var completeFieldName = fieldName;\n if (args) {\n var stringifiedArgs = stringify(args);\n completeFieldName += \"(\".concat(stringifiedArgs, \")\");\n }\n if (directives) {\n Object.keys(directives).forEach(function (key) {\n if (KNOWN_DIRECTIVES.indexOf(key) !== -1)\n return;\n if (directives[key] && Object.keys(directives[key]).length) {\n completeFieldName += \"@\".concat(key, \"(\").concat(stringify(directives[key]), \")\");\n }\n else {\n completeFieldName += \"@\".concat(key);\n }\n });\n }\n return completeFieldName;\n}, {\n setStringify: function (s) {\n var previous = stringify;\n stringify = s;\n return previous;\n },\n});\nvar stringify = function defaultStringify(value) {\n return JSON.stringify(value, stringifyReplacer);\n};\nfunction stringifyReplacer(_key, value) {\n if (isNonNullObject(value) && !Array.isArray(value)) {\n value = Object.keys(value).sort().reduce(function (copy, key) {\n copy[key] = value[key];\n return copy;\n }, {});\n }\n return value;\n}\nexport function argumentsObjectFromField(field, variables) {\n if (field.arguments && field.arguments.length) {\n var argObj_1 = {};\n field.arguments.forEach(function (_a) {\n var name = _a.name, value = _a.value;\n return valueToObjectRepresentation(argObj_1, name, value, variables);\n });\n return argObj_1;\n }\n return null;\n}\nexport function resultKeyNameFromField(field) {\n return field.alias ? field.alias.value : field.name.value;\n}\nexport function getTypenameFromResult(result, selectionSet, fragmentMap) {\n if (typeof result.__typename === 'string') {\n return result.__typename;\n }\n for (var _i = 0, _a = selectionSet.selections; _i < _a.length; _i++) {\n var selection = _a[_i];\n if (isField(selection)) {\n if (selection.name.value === '__typename') {\n return result[resultKeyNameFromField(selection)];\n }\n }\n else {\n var typename = getTypenameFromResult(result, getFragmentFromSelection(selection, fragmentMap).selectionSet, fragmentMap);\n if (typeof typename === 'string') {\n return typename;\n }\n }\n }\n}\nexport function isField(selection) {\n return selection.kind === 'Field';\n}\nexport function isInlineFragment(selection) {\n return selection.kind === 'InlineFragment';\n}\n//# sourceMappingURL=storeUtils.js.map","export function filterInPlace(array, test, context) {\n var target = 0;\n array.forEach(function (elem, i) {\n if (test.call(this, elem, i, array)) {\n array[target++] = elem;\n }\n }, context);\n array.length = target;\n return array;\n}\n//# sourceMappingURL=filterInPlace.js.map","import { __assign, __spreadArray } from \"tslib\";\nimport { invariant } from \"../globals/index.js\";\nimport { visit, } from 'graphql';\nimport { checkDocument, getOperationDefinition, getFragmentDefinition, getFragmentDefinitions, getMainDefinition, } from \"./getFromAST.js\";\nimport { filterInPlace } from \"../common/filterInPlace.js\";\nimport { isField, isInlineFragment } from \"./storeUtils.js\";\nimport { createFragmentMap, } from \"./fragments.js\";\nvar TYPENAME_FIELD = {\n kind: 'Field',\n name: {\n kind: 'Name',\n value: '__typename',\n },\n};\nfunction isEmpty(op, fragmentMap) {\n return !op || op.selectionSet.selections.every(function (selection) { return selection.kind === 'FragmentSpread' &&\n isEmpty(fragmentMap[selection.name.value], fragmentMap); });\n}\nfunction nullIfDocIsEmpty(doc) {\n return isEmpty(getOperationDefinition(doc) || getFragmentDefinition(doc), createFragmentMap(getFragmentDefinitions(doc)))\n ? null\n : doc;\n}\nfunction getDirectiveMatcher(directives) {\n return function directiveMatcher(directive) {\n return directives.some(function (dir) {\n return (dir.name && dir.name === directive.name.value) ||\n (dir.test && dir.test(directive));\n });\n };\n}\nexport function removeDirectivesFromDocument(directives, doc) {\n var variablesInUse = Object.create(null);\n var variablesToRemove = [];\n var fragmentSpreadsInUse = Object.create(null);\n var fragmentSpreadsToRemove = [];\n var modifiedDoc = nullIfDocIsEmpty(visit(doc, {\n Variable: {\n enter: function (node, _key, parent) {\n if (parent.kind !== 'VariableDefinition') {\n variablesInUse[node.name.value] = true;\n }\n },\n },\n Field: {\n enter: function (node) {\n if (directives && node.directives) {\n var shouldRemoveField = directives.some(function (directive) { return directive.remove; });\n if (shouldRemoveField &&\n node.directives &&\n node.directives.some(getDirectiveMatcher(directives))) {\n if (node.arguments) {\n node.arguments.forEach(function (arg) {\n if (arg.value.kind === 'Variable') {\n variablesToRemove.push({\n name: arg.value.name.value,\n });\n }\n });\n }\n if (node.selectionSet) {\n getAllFragmentSpreadsFromSelectionSet(node.selectionSet).forEach(function (frag) {\n fragmentSpreadsToRemove.push({\n name: frag.name.value,\n });\n });\n }\n return null;\n }\n }\n },\n },\n FragmentSpread: {\n enter: function (node) {\n fragmentSpreadsInUse[node.name.value] = true;\n },\n },\n Directive: {\n enter: function (node) {\n if (getDirectiveMatcher(directives)(node)) {\n return null;\n }\n },\n },\n }));\n if (modifiedDoc &&\n filterInPlace(variablesToRemove, function (v) { return !!v.name && !variablesInUse[v.name]; }).length) {\n modifiedDoc = removeArgumentsFromDocument(variablesToRemove, modifiedDoc);\n }\n if (modifiedDoc &&\n filterInPlace(fragmentSpreadsToRemove, function (fs) { return !!fs.name && !fragmentSpreadsInUse[fs.name]; })\n .length) {\n modifiedDoc = removeFragmentSpreadFromDocument(fragmentSpreadsToRemove, modifiedDoc);\n }\n return modifiedDoc;\n}\nexport var addTypenameToDocument = Object.assign(function (doc) {\n return visit(doc, {\n SelectionSet: {\n enter: function (node, _key, parent) {\n if (parent &&\n parent.kind === 'OperationDefinition') {\n return;\n }\n var selections = node.selections;\n if (!selections) {\n return;\n }\n var skip = selections.some(function (selection) {\n return (isField(selection) &&\n (selection.name.value === '__typename' ||\n selection.name.value.lastIndexOf('__', 0) === 0));\n });\n if (skip) {\n return;\n }\n var field = parent;\n if (isField(field) &&\n field.directives &&\n field.directives.some(function (d) { return d.name.value === 'export'; })) {\n return;\n }\n return __assign(__assign({}, node), { selections: __spreadArray(__spreadArray([], selections, true), [TYPENAME_FIELD], false) });\n },\n },\n });\n}, {\n added: function (field) {\n return field === TYPENAME_FIELD;\n },\n});\nvar connectionRemoveConfig = {\n test: function (directive) {\n var willRemove = directive.name.value === 'connection';\n if (willRemove) {\n if (!directive.arguments ||\n !directive.arguments.some(function (arg) { return arg.name.value === 'key'; })) {\n __DEV__ && invariant.warn('Removing an @connection directive even though it does not have a key. ' +\n 'You may want to use the key parameter to specify a store key.');\n }\n }\n return willRemove;\n },\n};\nexport function removeConnectionDirectiveFromDocument(doc) {\n return removeDirectivesFromDocument([connectionRemoveConfig], checkDocument(doc));\n}\nfunction hasDirectivesInSelectionSet(directives, selectionSet, nestedCheck) {\n if (nestedCheck === void 0) { nestedCheck = true; }\n return (!!selectionSet &&\n selectionSet.selections &&\n selectionSet.selections.some(function (selection) {\n return hasDirectivesInSelection(directives, selection, nestedCheck);\n }));\n}\nfunction hasDirectivesInSelection(directives, selection, nestedCheck) {\n if (nestedCheck === void 0) { nestedCheck = true; }\n if (!isField(selection)) {\n return true;\n }\n if (!selection.directives) {\n return false;\n }\n return (selection.directives.some(getDirectiveMatcher(directives)) ||\n (nestedCheck &&\n hasDirectivesInSelectionSet(directives, selection.selectionSet, nestedCheck)));\n}\nfunction getArgumentMatcher(config) {\n return function argumentMatcher(argument) {\n return config.some(function (aConfig) {\n return argument.value &&\n argument.value.kind === 'Variable' &&\n argument.value.name &&\n (aConfig.name === argument.value.name.value ||\n (aConfig.test && aConfig.test(argument)));\n });\n };\n}\nexport function removeArgumentsFromDocument(config, doc) {\n var argMatcher = getArgumentMatcher(config);\n return nullIfDocIsEmpty(visit(doc, {\n OperationDefinition: {\n enter: function (node) {\n return __assign(__assign({}, node), { variableDefinitions: node.variableDefinitions ? node.variableDefinitions.filter(function (varDef) {\n return !config.some(function (arg) { return arg.name === varDef.variable.name.value; });\n }) : [] });\n },\n },\n Field: {\n enter: function (node) {\n var shouldRemoveField = config.some(function (argConfig) { return argConfig.remove; });\n if (shouldRemoveField) {\n var argMatchCount_1 = 0;\n if (node.arguments) {\n node.arguments.forEach(function (arg) {\n if (argMatcher(arg)) {\n argMatchCount_1 += 1;\n }\n });\n }\n if (argMatchCount_1 === 1) {\n return null;\n }\n }\n },\n },\n Argument: {\n enter: function (node) {\n if (argMatcher(node)) {\n return null;\n }\n },\n },\n }));\n}\nexport function removeFragmentSpreadFromDocument(config, doc) {\n function enter(node) {\n if (config.some(function (def) { return def.name === node.name.value; })) {\n return null;\n }\n }\n return nullIfDocIsEmpty(visit(doc, {\n FragmentSpread: { enter: enter },\n FragmentDefinition: { enter: enter },\n }));\n}\nfunction getAllFragmentSpreadsFromSelectionSet(selectionSet) {\n var allFragments = [];\n selectionSet.selections.forEach(function (selection) {\n if ((isField(selection) || isInlineFragment(selection)) &&\n selection.selectionSet) {\n getAllFragmentSpreadsFromSelectionSet(selection.selectionSet).forEach(function (frag) { return allFragments.push(frag); });\n }\n else if (selection.kind === 'FragmentSpread') {\n allFragments.push(selection);\n }\n });\n return allFragments;\n}\nexport function buildQueryFromSelectionSet(document) {\n var definition = getMainDefinition(document);\n var definitionOperation = definition.operation;\n if (definitionOperation === 'query') {\n return document;\n }\n var modifiedDoc = visit(document, {\n OperationDefinition: {\n enter: function (node) {\n return __assign(__assign({}, node), { operation: 'query' });\n },\n },\n });\n return modifiedDoc;\n}\nexport function removeClientSetsFromDocument(document) {\n checkDocument(document);\n var modifiedDoc = removeDirectivesFromDocument([\n {\n test: function (directive) { return directive.name.value === 'client'; },\n remove: true,\n },\n ], document);\n if (modifiedDoc) {\n modifiedDoc = visit(modifiedDoc, {\n FragmentDefinition: {\n enter: function (node) {\n if (node.selectionSet) {\n var isTypenameOnly = node.selectionSet.selections.every(function (selection) {\n return isField(selection) && selection.name.value === '__typename';\n });\n if (isTypenameOnly) {\n return null;\n }\n }\n },\n },\n });\n }\n return modifiedDoc;\n}\n//# sourceMappingURL=transform.js.map","import * as prismicH from '@prismicio/helpers';\n\nconst isRepositoryName = (input) => {\n return /^[a-zA-Z0-9][-a-zA-Z0-9]{2,}[a-zA-Z0-9]$/.test(input);\n};\n\nclass PrismicError extends Error {\n constructor(message = \"An invalid API response was returned\", url, response) {\n super(message);\n this.url = url;\n this.response = response;\n }\n}\n\nconst getRepositoryEndpoint = (repositoryName) => {\n if (isRepositoryName(repositoryName)) {\n return `https://${repositoryName}.cdn.prismic.io/api/v2`;\n } else {\n throw new PrismicError(\n `An invalid Prismic repository name was given: ${repositoryName}`,\n void 0,\n void 0\n );\n }\n};\n\nconst getRepositoryName = (repositoryEndpoint) => {\n try {\n return new URL(repositoryEndpoint).hostname.split(\".\")[0];\n } catch (e) {\n throw new PrismicError(\n `An invalid Prismic Rest API V2 endpoint was provided: ${repositoryEndpoint}`,\n void 0,\n void 0\n );\n }\n};\n\nconst getGraphQLEndpoint = (repositoryName) => {\n if (isRepositoryName(repositoryName)) {\n return `https://${repositoryName}.cdn.prismic.io/graphql`;\n } else {\n throw new PrismicError(\n `An invalid Prismic repository name was given: ${repositoryName}`,\n void 0,\n void 0\n );\n }\n};\n\nconst isRepositoryEndpoint = (input) => {\n try {\n new URL(input);\n return true;\n } catch (e) {\n return false;\n }\n};\n\nconst castArray = (a) => Array.isArray(a) ? a : [a];\n\nconst RENAMED_PARAMS = {\n accessToken: \"access_token\"\n};\nconst castOrderingToString = (ordering) => typeof ordering === \"string\" ? ordering : [\n ordering.field,\n ordering.direction === \"desc\" ? ordering.direction : void 0\n].filter(Boolean).join(\" \");\nconst buildQueryURL = (endpoint, args) => {\n var _a;\n const { predicates, ...params } = args;\n const url = new URL(`documents/search`, `${endpoint}/`);\n if (predicates) {\n for (const predicate of castArray(predicates)) {\n url.searchParams.append(\"q\", `[${predicate}]`);\n }\n }\n for (const k in params) {\n const name = (_a = RENAMED_PARAMS[k]) != null ? _a : k;\n let value = params[k];\n if (name === \"orderings\") {\n const scopedValue = params[name];\n if (scopedValue != null) {\n const v = castArray(scopedValue).map((ordering) => castOrderingToString(ordering)).join(\",\");\n value = `[${v}]`;\n }\n } else if (name === \"routes\") {\n if (typeof params[name] === \"object\") {\n value = JSON.stringify(castArray(params[name]));\n }\n }\n if (value != null) {\n url.searchParams.set(name, castArray(value).join(\",\"));\n }\n }\n return url.toString();\n};\n\nconst appendPredicates = (objWithPredicates = {}, predicates) => {\n return {\n ...objWithPredicates,\n predicates: [\n ...objWithPredicates.predicates || [],\n ...castArray(predicates)\n ]\n };\n};\n\nconst castThunk = (a) => typeof a === \"function\" ? a : () => a;\n\nconst findRef = (refs, predicate) => {\n const ref = refs.find((ref2) => predicate(ref2));\n if (!ref) {\n throw new PrismicError(\"Ref could not be found.\", void 0, void 0);\n }\n return ref;\n};\n\nconst findMasterRef = (refs) => {\n return findRef(refs, (ref) => ref.isMasterRef);\n};\n\nconst findRefByID = (refs, id) => {\n return findRef(refs, (ref) => ref.id === id);\n};\n\nconst findRefByLabel = (refs, label) => {\n return findRef(refs, (ref) => ref.label === label);\n};\n\nconst preview = \"io.prismic.preview\";\n\nvar cookie = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tpreview: preview\n});\n\nconst readValue = (value) => {\n return value.replace(/%3B/g, \";\");\n};\nconst getPreviewCookie = (cookieJar) => {\n const cookies = cookieJar.split(\"; \");\n let value;\n for (const cookie of cookies) {\n const parts = cookie.split(\"=\");\n const name = readValue(parts[0]).replace(/%3D/g, \"=\");\n if (name === preview) {\n value = readValue(parts.slice(1).join(\"=\"));\n continue;\n }\n }\n return value;\n};\n\nconst minifyGraphQLQuery = (query) => {\n return query.replace(\n /(\\n| )*( |{|})(\\n| )*/gm,\n (_chars, _spaces, brackets) => brackets\n );\n};\n\nclass ForbiddenError extends PrismicError {\n}\n\nclass NotFoundError extends PrismicError {\n}\n\nclass ParsingError extends PrismicError {\n}\n\nconst formatValue = (value) => {\n if (Array.isArray(value)) {\n return `[${value.map(formatValue).join(\", \")}]`;\n }\n if (typeof value === \"string\") {\n return `\"${value}\"`;\n }\n if (value instanceof Date) {\n return `${value.getTime()}`;\n }\n return `${value}`;\n};\nconst pathWithArgsPredicate = (name) => {\n const fn = (path, ...args) => {\n const formattedArgs = args.map(formatValue).join(\", \");\n const joiner = path && args.length ? \", \" : \"\";\n return `[${name}(${path}${joiner}${formattedArgs})]`;\n };\n return fn;\n};\nconst pathPredicate = (name) => {\n const predicateFn = pathWithArgsPredicate(name);\n const fn = (path) => {\n return predicateFn(path);\n };\n return fn;\n};\nconst argsPredicate = (name) => {\n const predicateFn = pathWithArgsPredicate(name);\n const fn = (...args) => {\n return predicateFn(\"\", ...args);\n };\n return fn;\n};\nconst predicate = {\n at: pathWithArgsPredicate(\"at\"),\n not: pathWithArgsPredicate(\"not\"),\n any: pathWithArgsPredicate(\n \"any\"\n ),\n in: pathWithArgsPredicate(\"in\"),\n fulltext: pathWithArgsPredicate(\"fulltext\"),\n has: pathPredicate(\"has\"),\n missing: pathPredicate(\"missing\"),\n similar: argsPredicate(\"similar\"),\n geopointNear: pathWithArgsPredicate(\"geopoint.near\"),\n numberLessThan: pathWithArgsPredicate(\"number.lt\"),\n numberGreaterThan: pathWithArgsPredicate(\"number.gt\"),\n numberInRange: pathWithArgsPredicate(\n \"number.inRange\"\n ),\n dateAfter: pathWithArgsPredicate(\"date.after\"),\n dateBefore: pathWithArgsPredicate(\"date.before\"),\n dateBetween: pathWithArgsPredicate(\"date.between\"),\n dateDayOfMonth: pathWithArgsPredicate(\"date.day-of-month\"),\n dateDayOfMonthAfter: pathWithArgsPredicate(\n \"date.day-of-month-after\"\n ),\n dateDayOfMonthBefore: pathWithArgsPredicate(\n \"date.day-of-month-before\"\n ),\n dateDayOfWeek: pathWithArgsPredicate(\"date.day-of-week\"),\n dateDayOfWeekAfter: pathWithArgsPredicate(\n \"date.day-of-week-after\"\n ),\n dateDayOfWeekBefore: pathWithArgsPredicate(\n \"date.day-of-week-before\"\n ),\n dateMonth: pathWithArgsPredicate(\"date.month\"),\n dateMonthAfter: pathWithArgsPredicate(\"date.month-after\"),\n dateMonthBefore: pathWithArgsPredicate(\"date.month-before\"),\n dateYear: pathWithArgsPredicate(\"date.year\"),\n dateHour: pathWithArgsPredicate(\"date.hour\"),\n dateHourAfter: pathWithArgsPredicate(\"date.hour-after\"),\n dateHourBefore: pathWithArgsPredicate(\"date.hour-before\")\n};\n\nconst MAX_PAGE_SIZE = 100;\nconst REPOSITORY_CACHE_TTL = 5e3;\nconst GET_ALL_QUERY_DELAY = 500;\nconst typePredicate = (documentType) => predicate.at(\"document.type\", documentType);\nconst everyTagPredicate = (tags) => predicate.at(\"document.tags\", castArray(tags));\nconst someTagsPredicate = (tags) => predicate.any(\"document.tags\", castArray(tags));\nconst createClient = (repositoryNameOrEndpoint, options) => new Client(repositoryNameOrEndpoint, options);\nclass Client {\n constructor(repositoryNameOrEndpoint, options = {}) {\n this.refState = {\n mode: \"Master\" /* Master */,\n autoPreviewsEnabled: true\n };\n this.cachedRepositoryExpiration = 0;\n this.graphqlFetch = this.graphQLFetch.bind(this);\n if (isRepositoryEndpoint(repositoryNameOrEndpoint)) {\n if (process.env.NODE_ENV === \"development\" && /\\.prismic\\.io\\/(?!api\\/v2\\/?)/.test(repositoryNameOrEndpoint)) {\n throw new PrismicError(\n \"@prismicio/client only supports Prismic Rest API V2. Please provide only the repository name to the first createClient() parameter or use the getRepositoryEndpoint() helper to generate a valid Rest API V2 endpoint URL.\",\n void 0,\n void 0\n );\n }\n this.endpoint = repositoryNameOrEndpoint;\n } else {\n this.endpoint = getRepositoryEndpoint(repositoryNameOrEndpoint);\n }\n this.accessToken = options.accessToken;\n this.routes = options.routes;\n this.brokenRoute = options.brokenRoute;\n this.defaultParams = options.defaultParams;\n if (options.ref) {\n this.queryContentFromRef(options.ref);\n }\n if (typeof options.fetch === \"function\") {\n this.fetchFn = options.fetch;\n } else if (typeof globalThis.fetch === \"function\") {\n this.fetchFn = globalThis.fetch;\n } else {\n throw new PrismicError(\n \"A valid fetch implementation was not provided. In environments where fetch is not available (including Node.js), a fetch implementation must be provided via a polyfill or the `fetch` option.\",\n void 0,\n void 0\n );\n }\n if (this.fetchFn === globalThis.fetch) {\n this.fetchFn = this.fetchFn.bind(globalThis);\n }\n this.graphQLFetch = this.graphQLFetch.bind(this);\n }\n enableAutoPreviews() {\n this.refState.autoPreviewsEnabled = true;\n }\n enableAutoPreviewsFromReq(req) {\n this.refState.httpRequest = req;\n this.refState.autoPreviewsEnabled = true;\n }\n disableAutoPreviews() {\n this.refState.autoPreviewsEnabled = false;\n }\n async query(predicates, params) {\n const url = await this.buildQueryURL({ ...params, predicates });\n return await this.fetch(url, params);\n }\n async get(params) {\n const url = await this.buildQueryURL(params);\n return await this.fetch(url, params);\n }\n async getFirst(params) {\n var _a, _b;\n const actualParams = { ...params };\n if (!(params && params.page) && !(params == null ? void 0 : params.pageSize)) {\n actualParams.pageSize = (_b = (_a = this.defaultParams) == null ? void 0 : _a.pageSize) != null ? _b : 1;\n }\n const url = await this.buildQueryURL(actualParams);\n const result = await this.fetch(url, params);\n const firstResult = result.results[0];\n if (firstResult) {\n return firstResult;\n }\n throw new PrismicError(\"No documents were returned\", url, void 0);\n }\n async dangerouslyGetAll(params = {}) {\n var _a;\n const { limit = Infinity, ...actualParams } = params;\n const resolvedParams = {\n ...actualParams,\n pageSize: Math.min(\n limit,\n actualParams.pageSize || ((_a = this.defaultParams) == null ? void 0 : _a.pageSize) || MAX_PAGE_SIZE\n )\n };\n const documents = [];\n let latestResult;\n while ((!latestResult || latestResult.next_page) && documents.length < limit) {\n const page = latestResult ? latestResult.page + 1 : void 0;\n latestResult = await this.get({ ...resolvedParams, page });\n documents.push(...latestResult.results);\n if (latestResult.next_page) {\n await new Promise((res) => setTimeout(res, GET_ALL_QUERY_DELAY));\n }\n }\n return documents.slice(0, limit);\n }\n async getByID(id, params) {\n return await this.getFirst(\n appendPredicates(params, predicate.at(\"document.id\", id))\n );\n }\n async getByIDs(ids, params) {\n return await this.get(\n appendPredicates(params, predicate.in(\"document.id\", ids))\n );\n }\n async getAllByIDs(ids, params) {\n return await this.dangerouslyGetAll(\n appendPredicates(params, predicate.in(\"document.id\", ids))\n );\n }\n async getByUID(documentType, uid, params) {\n return await this.getFirst(\n appendPredicates(params, [\n typePredicate(documentType),\n predicate.at(`my.${documentType}.uid`, uid)\n ])\n );\n }\n async getByUIDs(documentType, uids, params) {\n return await this.get(\n appendPredicates(params, [\n typePredicate(documentType),\n predicate.in(`my.${documentType}.uid`, uids)\n ])\n );\n }\n async getAllByUIDs(documentType, uids, params) {\n return await this.dangerouslyGetAll(\n appendPredicates(params, [\n typePredicate(documentType),\n predicate.in(`my.${documentType}.uid`, uids)\n ])\n );\n }\n async getSingle(documentType, params) {\n return await this.getFirst(\n appendPredicates(params, typePredicate(documentType))\n );\n }\n async getByType(documentType, params) {\n return await this.get(\n appendPredicates(params, typePredicate(documentType))\n );\n }\n async getAllByType(documentType, params) {\n return await this.dangerouslyGetAll(appendPredicates(params, typePredicate(documentType)));\n }\n async getByTag(tag, params) {\n return await this.get(\n appendPredicates(params, someTagsPredicate(tag))\n );\n }\n async getAllByTag(tag, params) {\n return await this.dangerouslyGetAll(\n appendPredicates(params, someTagsPredicate(tag))\n );\n }\n async getByEveryTag(tags, params) {\n return await this.get(\n appendPredicates(params, everyTagPredicate(tags))\n );\n }\n async getAllByEveryTag(tags, params) {\n return await this.dangerouslyGetAll(\n appendPredicates(params, everyTagPredicate(tags))\n );\n }\n async getBySomeTags(tags, params) {\n return await this.get(\n appendPredicates(params, someTagsPredicate(tags))\n );\n }\n async getAllBySomeTags(tags, params) {\n return await this.dangerouslyGetAll(\n appendPredicates(params, someTagsPredicate(tags))\n );\n }\n async getRepository(params) {\n const url = new URL(this.endpoint);\n if (this.accessToken) {\n url.searchParams.set(\"access_token\", this.accessToken);\n }\n return await this.fetch(url.toString(), params);\n }\n async getRefs(params) {\n const repository = await this.getRepository(params);\n return repository.refs;\n }\n async getRefByID(id, params) {\n const refs = await this.getRefs(params);\n return findRefByID(refs, id);\n }\n async getRefByLabel(label, params) {\n const refs = await this.getRefs(params);\n return findRefByLabel(refs, label);\n }\n async getMasterRef(params) {\n const refs = await this.getRefs(params);\n return findMasterRef(refs);\n }\n async getReleases(params) {\n const refs = await this.getRefs(params);\n return refs.filter((ref) => !ref.isMasterRef);\n }\n async getReleaseByID(id, params) {\n const releases = await this.getReleases(params);\n return findRefByID(releases, id);\n }\n async getReleaseByLabel(label, params) {\n const releases = await this.getReleases(params);\n return findRefByLabel(releases, label);\n }\n async getTags(params) {\n try {\n const tagsForm = await this.getCachedRepositoryForm(\"tags\", params);\n const url = new URL(tagsForm.action);\n if (this.accessToken) {\n url.searchParams.set(\"access_token\", this.accessToken);\n }\n return await this.fetch(url.toString(), params);\n } catch (e) {\n const repository = await this.getRepository(params);\n return repository.tags;\n }\n }\n async buildQueryURL({\n signal,\n ...params\n } = {}) {\n const ref = params.ref || await this.getResolvedRefString();\n const integrationFieldsRef = params.integrationFieldsRef || (await this.getCachedRepository({ signal })).integrationFieldsRef || void 0;\n return buildQueryURL(this.endpoint, {\n ...this.defaultParams,\n ...params,\n ref,\n integrationFieldsRef,\n routes: params.routes || this.routes,\n brokenRoute: params.brokenRoute || this.brokenRoute,\n accessToken: params.accessToken || this.accessToken\n });\n }\n async resolvePreviewURL(args) {\n var _a, _b;\n let documentID = args.documentID;\n let previewToken = args.previewToken;\n if (typeof globalThis.location !== \"undefined\") {\n const searchParams = new URLSearchParams(globalThis.location.search);\n documentID = documentID || searchParams.get(\"documentId\");\n previewToken = previewToken || searchParams.get(\"token\");\n } else if (this.refState.httpRequest) {\n if (\"query\" in this.refState.httpRequest) {\n documentID = documentID || ((_a = this.refState.httpRequest.query) == null ? void 0 : _a.documentId);\n previewToken = previewToken || ((_b = this.refState.httpRequest.query) == null ? void 0 : _b.token);\n } else if (\"url\" in this.refState.httpRequest && this.refState.httpRequest.url) {\n const searchParams = new URL(this.refState.httpRequest.url).searchParams;\n documentID = documentID || searchParams.get(\"documentId\");\n previewToken = previewToken || searchParams.get(\"token\");\n }\n }\n if (documentID != null && previewToken != null) {\n const document = await this.getByID(documentID, {\n signal: args.signal,\n ref: previewToken,\n lang: \"*\"\n });\n const url = prismicH.asLink(document, args.linkResolver);\n if (typeof url === \"string\") {\n return url;\n }\n }\n return args.defaultURL;\n }\n queryLatestContent() {\n this.refState.mode = \"Master\" /* Master */;\n }\n queryContentFromReleaseByID(releaseID) {\n this.refState = {\n ...this.refState,\n mode: \"ReleaseID\" /* ReleaseID */,\n releaseID\n };\n }\n queryContentFromReleaseByLabel(releaseLabel) {\n this.refState = {\n ...this.refState,\n mode: \"ReleaseLabel\" /* ReleaseLabel */,\n releaseLabel\n };\n }\n queryContentFromRef(ref) {\n this.refState = {\n ...this.refState,\n mode: \"Manual\" /* Manual */,\n ref\n };\n }\n async graphQLFetch(input, init) {\n const cachedRepository = await this.getCachedRepository();\n const ref = await this.getResolvedRefString();\n const unsanitizedHeaders = {\n \"Prismic-ref\": ref,\n Authorization: this.accessToken ? `Token ${this.accessToken}` : \"\",\n ...init ? init.headers : {}\n };\n if (cachedRepository.integrationFieldsRef) {\n unsanitizedHeaders[\"Prismic-integration-field-ref\"] = cachedRepository.integrationFieldsRef;\n }\n const headers = {};\n for (const key in unsanitizedHeaders) {\n if (unsanitizedHeaders[key]) {\n headers[key.toLowerCase()] = unsanitizedHeaders[key];\n }\n }\n const url = new URL(\n input\n );\n url.searchParams.set(\"ref\", ref);\n const query = url.searchParams.get(\"query\");\n if (query) {\n url.searchParams.set(\n \"query\",\n minifyGraphQLQuery(query)\n );\n }\n return await this.fetchFn(url.toString(), {\n ...init,\n headers\n });\n }\n async getCachedRepository(params) {\n if (!this.cachedRepository || Date.now() >= this.cachedRepositoryExpiration) {\n this.cachedRepositoryExpiration = Date.now() + REPOSITORY_CACHE_TTL;\n this.cachedRepository = await this.getRepository(params);\n }\n return this.cachedRepository;\n }\n async getCachedRepositoryForm(name, params) {\n const cachedRepository = await this.getCachedRepository(params);\n const form = cachedRepository.forms[name];\n if (!form) {\n throw new PrismicError(\n `Form with name \"${name}\" could not be found`,\n void 0,\n void 0\n );\n }\n return form;\n }\n async getResolvedRefString(params) {\n var _a, _b;\n if (this.refState.autoPreviewsEnabled) {\n let previewRef;\n let cookieJar;\n if ((_a = this.refState.httpRequest) == null ? void 0 : _a.headers) {\n if (\"get\" in this.refState.httpRequest.headers && typeof this.refState.httpRequest.headers.get === \"function\") {\n cookieJar = this.refState.httpRequest.headers.get(\"cookie\");\n } else if (\"cookie\" in this.refState.httpRequest.headers) {\n cookieJar = this.refState.httpRequest.headers.cookie;\n }\n } else if ((_b = globalThis.document) == null ? void 0 : _b.cookie) {\n cookieJar = globalThis.document.cookie;\n }\n if (cookieJar) {\n previewRef = getPreviewCookie(cookieJar);\n }\n if (previewRef) {\n return previewRef;\n }\n }\n const cachedRepository = await this.getCachedRepository(params);\n const refModeType = this.refState.mode;\n if (refModeType === \"ReleaseID\" /* ReleaseID */) {\n return findRefByID(cachedRepository.refs, this.refState.releaseID).ref;\n } else if (refModeType === \"ReleaseLabel\" /* ReleaseLabel */) {\n return findRefByLabel(cachedRepository.refs, this.refState.releaseLabel).ref;\n } else if (refModeType === \"Manual\" /* Manual */) {\n const res = await castThunk(this.refState.ref)();\n if (typeof res === \"string\") {\n return res;\n }\n }\n return findMasterRef(cachedRepository.refs).ref;\n }\n async fetch(url, params = {}) {\n const res = await this.fetchFn(url, {\n signal: params.signal\n });\n let json;\n try {\n json = await res.json();\n } catch (e) {\n if (res.status === 404) {\n throw new NotFoundError(\n `Prismic repository not found. Check that \"${this.endpoint}\" is pointing to the correct repository.`,\n url,\n void 0\n );\n } else {\n throw new PrismicError(void 0, url, void 0);\n }\n }\n switch (res.status) {\n case 200: {\n return json;\n }\n case 400: {\n throw new ParsingError(json.message, url, json);\n }\n case 401:\n case 403: {\n throw new ForbiddenError(\n \"error\" in json ? json.error : json.message,\n url,\n json\n );\n }\n }\n throw new PrismicError(void 0, url, json);\n }\n}\n\nconst getEndpoint = getRepositoryEndpoint;\nconst predicates = predicate;\nconst Predicates = predicate;\n\nexport { Client, ForbiddenError, NotFoundError, ParsingError, Predicates, PrismicError, buildQueryURL, cookie, createClient, getEndpoint, getGraphQLEndpoint, getRepositoryEndpoint, getRepositoryName, isRepositoryEndpoint, isRepositoryName, predicate, predicates };\n//# sourceMappingURL=index.js.map\n","const camelCaseToParamCase = (input) => {\n return input.replace(/[A-Z]/g, (match) => {\n return `-${match.toLowerCase()}`;\n });\n};\nconst buildURL = (url, params) => {\n const instance = new URL(url);\n for (const camelCasedParamKey in params) {\n const paramKey = camelCaseToParamCase(camelCasedParamKey);\n const paramValue = params[camelCasedParamKey];\n if (paramValue === void 0) {\n instance.searchParams.delete(paramKey);\n } else if (Array.isArray(paramValue)) {\n instance.searchParams.set(paramKey, paramValue.join(\",\"));\n } else {\n instance.searchParams.set(paramKey, `${paramValue}`);\n }\n }\n const s = instance.searchParams.get(\"s\");\n if (s) {\n instance.searchParams.delete(\"s\");\n instance.searchParams.append(\"s\", s);\n }\n return instance.toString();\n};\n\nconst buildPixelDensitySrcSet = (url, { pixelDensities, ...params }) => {\n return pixelDensities.map((dpr) => {\n return `${buildURL(url, { ...params, dpr })} ${dpr}x`;\n }).join(\", \");\n};\n\nconst buildWidthSrcSet = (url, { widths, ...params }) => {\n return widths.map((width) => {\n return `${buildURL(url, { ...params, w: void 0, width })} ${width}w`;\n }).join(\", \");\n};\n\nclass Client {\n constructor(options) {\n this.baseURL = options.baseURL;\n }\n buildURLForPath(path, params = {}) {\n return buildURL(`${new URL(path, this.baseURL)}`, params);\n }\n buildWidthSrcSetForPath(path, params) {\n return buildWidthSrcSet(`${new URL(path, this.baseURL)}`, params);\n }\n buildPixelDensitySrcSetForPath(path, params) {\n return buildPixelDensitySrcSet(`${new URL(path, this.baseURL)}`, params);\n }\n}\n\nexport { Client, buildPixelDensitySrcSet, buildURL, buildWidthSrcSet };\n//# sourceMappingURL=index.mjs.map\n","import { LinkType, RichTextNodeType } from '@prismicio/types';\nimport { asText as asText$1, composeSerializers, wrapMapSerializer, Element, serialize } from '@prismicio/richtext';\nexport { Element } from '@prismicio/richtext';\nimport escapeHtml from 'escape-html';\nimport { buildURL, buildWidthSrcSet, buildPixelDensitySrcSet } from 'imgix-url-builder';\n\nconst asDate = (dateOrTimestampField) => {\n if (!dateOrTimestampField) {\n return null;\n }\n if (dateOrTimestampField.length === 24) {\n return new Date(dateOrTimestampField.replace(/(\\+|-)(\\d{2})(\\d{2})$/, \".000$1$2:$3\"));\n } else {\n return new Date(dateOrTimestampField);\n }\n};\n\nconst documentToLinkField = (prismicDocument) => {\n var _a, _b, _c;\n return {\n link_type: LinkType.Document,\n id: prismicDocument.id,\n uid: (_a = prismicDocument.uid) != null ? _a : void 0,\n type: prismicDocument.type,\n tags: prismicDocument.tags,\n lang: prismicDocument.lang,\n url: (_b = prismicDocument.url) != null ? _b : void 0,\n slug: (_c = prismicDocument.slugs) == null ? void 0 : _c[0],\n ...prismicDocument.data && Object.keys(prismicDocument.data).length > 0 ? { data: prismicDocument.data } : {}\n };\n};\n\nconst asLink = (linkFieldOrDocument, linkResolver) => {\n if (!linkFieldOrDocument) {\n return null;\n }\n const linkField = \"link_type\" in linkFieldOrDocument ? linkFieldOrDocument : documentToLinkField(linkFieldOrDocument);\n switch (linkField.link_type) {\n case LinkType.Media:\n case LinkType.Web:\n return \"url\" in linkField ? linkField.url : null;\n case LinkType.Document: {\n if (\"id\" in linkField && linkResolver) {\n const resolvedURL = linkResolver(linkField);\n if (resolvedURL != null) {\n return resolvedURL;\n }\n }\n if (\"url\" in linkField && linkField.url) {\n return linkField.url;\n }\n return null;\n }\n case LinkType.Any:\n default:\n return null;\n }\n};\n\nconst asText = (richTextField, separator) => {\n if (richTextField) {\n return asText$1(richTextField, separator);\n } else {\n return null;\n }\n};\n\nconst getLabel = (node) => {\n return \"data\" in node && \"label\" in node.data ? ` class=\"${node.data.label}\"` : \"\";\n};\nconst serializeStandardTag = (tag, node, children) => {\n return `<${tag}${getLabel(node)}>${children.join(\"\")}`;\n};\nconst serializePreFormatted = (node) => {\n return `${escapeHtml(node.text)}`;\n};\nconst serializeImage = (linkResolver, node) => {\n let imageTag = `\"${escapeHtml(node.alt)}\"${node.copyright`;\n if (node.linkTo) {\n imageTag = serializeHyperlink(linkResolver, {\n type: RichTextNodeType.hyperlink,\n data: node.linkTo,\n start: 0,\n end: 0\n }, [imageTag]);\n }\n return `

${imageTag}

`;\n};\nconst serializeEmbed = (node) => {\n return `
${node.oembed.html}
`;\n};\nconst serializeHyperlink = (linkResolver, node, children) => {\n switch (node.data.link_type) {\n case LinkType.Web: {\n return `${children.join(\"\")}`;\n }\n case LinkType.Document: {\n return `${children.join(\"\")}`;\n }\n case LinkType.Media: {\n return `${children.join(\"\")}`;\n }\n }\n};\nconst serializeSpan = (content) => {\n return content ? escapeHtml(content).replace(/\\n/g, \"
\") : \"\";\n};\n\nconst createDefaultHTMLSerializer = (linkResolver) => {\n return (_type, node, text, children, _key) => {\n switch (node.type) {\n case Element.heading1:\n return serializeStandardTag(\"h1\", node, children);\n case Element.heading2:\n return serializeStandardTag(\"h2\", node, children);\n case Element.heading3:\n return serializeStandardTag(\"h3\", node, children);\n case Element.heading4:\n return serializeStandardTag(\"h4\", node, children);\n case Element.heading5:\n return serializeStandardTag(\"h5\", node, children);\n case Element.heading6:\n return serializeStandardTag(\"h6\", node, children);\n case Element.paragraph:\n return serializeStandardTag(\"p\", node, children);\n case Element.preformatted:\n return serializePreFormatted(node);\n case Element.strong:\n return serializeStandardTag(\"strong\", node, children);\n case Element.em:\n return serializeStandardTag(\"em\", node, children);\n case Element.listItem:\n return serializeStandardTag(\"li\", node, children);\n case Element.oListItem:\n return serializeStandardTag(\"li\", node, children);\n case Element.list:\n return serializeStandardTag(\"ul\", node, children);\n case Element.oList:\n return serializeStandardTag(\"ol\", node, children);\n case Element.image:\n return serializeImage(linkResolver, node);\n case Element.embed:\n return serializeEmbed(node);\n case Element.hyperlink:\n return serializeHyperlink(linkResolver, node, children);\n case Element.label:\n return serializeStandardTag(\"span\", node, children);\n case Element.span:\n default:\n return serializeSpan(text);\n }\n };\n};\nconst wrapMapSerializerWithStringChildren = (mapSerializer) => {\n const modifiedMapSerializer = {};\n for (const tag in mapSerializer) {\n const tagSerializer = mapSerializer[tag];\n if (tagSerializer) {\n modifiedMapSerializer[tag] = (payload) => {\n return tagSerializer({\n ...payload,\n children: payload.children.join(\"\")\n });\n };\n }\n }\n return wrapMapSerializer(modifiedMapSerializer);\n};\nconst asHTML = (richTextField, linkResolver, htmlSerializer) => {\n if (richTextField) {\n let serializer;\n if (htmlSerializer) {\n serializer = composeSerializers(typeof htmlSerializer === \"object\" ? wrapMapSerializerWithStringChildren(htmlSerializer) : (type, node, text, children, key) => htmlSerializer(type, node, text, children.join(\"\"), key), createDefaultHTMLSerializer(linkResolver));\n } else {\n serializer = createDefaultHTMLSerializer(linkResolver);\n }\n return serialize(richTextField, serializer).join(\"\");\n } else {\n return null;\n }\n};\n\nconst isNonNullish = (input) => {\n return input != null;\n};\nconst isNonEmptyArray = (input) => {\n return !!input.length;\n};\nconst richText = (field) => {\n if (!isNonNullish(field)) {\n return false;\n } else if (field.length === 1 && \"text\" in field[0]) {\n return !!field[0].text;\n } else {\n return !!field.length;\n }\n};\nconst title = richText;\nconst imageThumbnail = (thumbnail) => {\n return isNonNullish(thumbnail) && !!thumbnail.url;\n};\nconst image = imageThumbnail;\nconst link = (field) => {\n return isNonNullish(field) && (\"id\" in field || \"url\" in field);\n};\nconst linkToMedia = link;\nconst contentRelationship = link;\nconst date = isNonNullish;\nconst timestamp = isNonNullish;\nconst color = isNonNullish;\nconst number = isNonNullish;\nconst keyText = (field) => {\n return isNonNullish(keyText) && !!field;\n};\nconst select = isNonNullish;\nconst embed = (field) => {\n return isNonNullish(field) && !!field.embed_url;\n};\nconst geoPoint = (field) => {\n return isNonNullish(field) && \"longitude\" in field;\n};\nconst integrationFields = isNonNullish;\nconst group = (group2) => {\n return isNonNullish(group2) && isNonEmptyArray(group2);\n};\nconst sliceZone = (slices) => {\n return isNonNullish(slices) && isNonEmptyArray(slices);\n};\n\nvar isFilled = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\trichText: richText,\n\ttitle: title,\n\timageThumbnail: imageThumbnail,\n\timage: image,\n\tlink: link,\n\tlinkToMedia: linkToMedia,\n\tcontentRelationship: contentRelationship,\n\tdate: date,\n\ttimestamp: timestamp,\n\tcolor: color,\n\tnumber: number,\n\tkeyText: keyText,\n\tselect: select,\n\tembed: embed,\n\tgeoPoint: geoPoint,\n\tintegrationFields: integrationFields,\n\tgroup: group,\n\tsliceZone: sliceZone\n});\n\nconst asImageSrc = (field, params = {}) => {\n if (field && imageThumbnail(field)) {\n return buildURL(field.url, params);\n } else {\n return null;\n }\n};\n\nconst DEFAULT_WIDTHS = [640, 828, 1200, 2048, 3840];\nconst asImageWidthSrcSet = (field, params = {}) => {\n if (field && imageThumbnail(field)) {\n let {\n widths = DEFAULT_WIDTHS,\n ...imgixParams\n } = params;\n const {\n url,\n dimensions,\n alt: _alt,\n copyright: _copyright,\n ...responsiveViews\n } = field;\n const responsiveViewObjects = Object.values(responsiveViews);\n if (widths === \"thumbnails\" && responsiveViewObjects.length < 1) {\n widths = DEFAULT_WIDTHS;\n }\n return {\n src: buildURL(url, imgixParams),\n srcset: widths === \"thumbnails\" ? [\n buildWidthSrcSet(url, {\n ...imgixParams,\n widths: [dimensions.width]\n }),\n ...responsiveViewObjects.map((thumbnail) => {\n return buildWidthSrcSet(thumbnail.url, {\n ...imgixParams,\n widths: [thumbnail.dimensions.width]\n });\n })\n ].join(\", \") : buildWidthSrcSet(field.url, {\n ...imgixParams,\n widths\n })\n };\n } else {\n return null;\n }\n};\n\nconst DEFAULT_PIXEL_DENSITIES = [1, 2, 3];\nconst asImagePixelDensitySrcSet = (field, params = {}) => {\n if (field && imageThumbnail(field)) {\n const { pixelDensities = DEFAULT_PIXEL_DENSITIES, ...imgixParams } = params;\n return {\n src: buildURL(field.url, imgixParams),\n srcset: buildPixelDensitySrcSet(field.url, {\n ...imgixParams,\n pixelDensities\n })\n };\n } else {\n return null;\n }\n};\n\nconst Elements = Element;\n\nexport { Elements, asDate, asHTML, asImagePixelDensitySrcSet, asImageSrc, asImageWidthSrcSet, asLink, asText, documentToLinkField, isFilled };\n//# sourceMappingURL=index.js.map\n","const RichTextNodeType = {\n heading1: \"heading1\",\n heading2: \"heading2\",\n heading3: \"heading3\",\n heading4: \"heading4\",\n heading5: \"heading5\",\n heading6: \"heading6\",\n paragraph: \"paragraph\",\n preformatted: \"preformatted\",\n strong: \"strong\",\n em: \"em\",\n listItem: \"list-item\",\n oListItem: \"o-list-item\",\n list: \"group-list-item\",\n oList: \"group-o-list-item\",\n image: \"image\",\n embed: \"embed\",\n hyperlink: \"hyperlink\",\n label: \"label\",\n span: \"span\"\n};\n\nconst LinkType = {\n Any: \"Any\",\n Document: \"Document\",\n Media: \"Media\",\n Web: \"Web\"\n};\n\nconst OEmbedType = {\n Photo: \"photo\",\n Video: \"video\",\n Link: \"link\",\n Rich: \"rich\"\n};\n\nconst CustomTypeModelFieldType = {\n Boolean: \"Boolean\",\n Color: \"Color\",\n Date: \"Date\",\n Embed: \"Embed\",\n GeoPoint: \"GeoPoint\",\n Group: \"Group\",\n Image: \"Image\",\n IntegrationFields: \"IntegrationFields\",\n Link: \"Link\",\n Number: \"Number\",\n Select: \"Select\",\n Slices: \"Slices\",\n StructuredText: \"StructuredText\",\n Text: \"Text\",\n Timestamp: \"Timestamp\",\n UID: \"UID\",\n Range: \"Range\",\n Separator: \"Separator\",\n LegacySlices: \"Choice\"\n};\n\nconst CustomTypeModelLinkSelectType = {\n Document: \"document\",\n Media: \"media\",\n Web: \"web\"\n};\n\nconst CustomTypeModelSliceType = {\n Slice: \"Slice\",\n SharedSlice: \"SharedSlice\"\n};\n\nconst CustomTypeModelSliceDisplay = {\n List: \"list\",\n Grid: \"grid\"\n};\n\nconst WebhookType = {\n APIUpdate: \"api-update\",\n TestTrigger: \"test-trigger\"\n};\n\nexport { CustomTypeModelFieldType, CustomTypeModelLinkSelectType, CustomTypeModelSliceDisplay, CustomTypeModelSliceType, LinkType, OEmbedType, RichTextNodeType, WebhookType };\n//# sourceMappingURL=index.js.map\n","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/* eslint-disable flowtype/no-weak-types */\nimport nodejsCustomInspectSymbol from \"./nodejsCustomInspectSymbol.mjs\";\nvar MAX_ARRAY_LENGTH = 10;\nvar MAX_RECURSIVE_DEPTH = 2;\n/**\n * Used to print values in error messages.\n */\n\nexport default function inspect(value) {\n return formatValue(value, []);\n}\n\nfunction formatValue(value, seenValues) {\n switch (_typeof(value)) {\n case 'string':\n return JSON.stringify(value);\n\n case 'function':\n return value.name ? \"[function \".concat(value.name, \"]\") : '[function]';\n\n case 'object':\n if (value === null) {\n return 'null';\n }\n\n return formatObjectValue(value, seenValues);\n\n default:\n return String(value);\n }\n}\n\nfunction formatObjectValue(value, previouslySeenValues) {\n if (previouslySeenValues.indexOf(value) !== -1) {\n return '[Circular]';\n }\n\n var seenValues = [].concat(previouslySeenValues, [value]);\n var customInspectFn = getCustomFn(value);\n\n if (customInspectFn !== undefined) {\n var customValue = customInspectFn.call(value); // check for infinite recursion\n\n if (customValue !== value) {\n return typeof customValue === 'string' ? customValue : formatValue(customValue, seenValues);\n }\n } else if (Array.isArray(value)) {\n return formatArray(value, seenValues);\n }\n\n return formatObject(value, seenValues);\n}\n\nfunction formatObject(object, seenValues) {\n var keys = Object.keys(object);\n\n if (keys.length === 0) {\n return '{}';\n }\n\n if (seenValues.length > MAX_RECURSIVE_DEPTH) {\n return '[' + getObjectTag(object) + ']';\n }\n\n var properties = keys.map(function (key) {\n var value = formatValue(object[key], seenValues);\n return key + ': ' + value;\n });\n return '{ ' + properties.join(', ') + ' }';\n}\n\nfunction formatArray(array, seenValues) {\n if (array.length === 0) {\n return '[]';\n }\n\n if (seenValues.length > MAX_RECURSIVE_DEPTH) {\n return '[Array]';\n }\n\n var len = Math.min(MAX_ARRAY_LENGTH, array.length);\n var remaining = array.length - len;\n var items = [];\n\n for (var i = 0; i < len; ++i) {\n items.push(formatValue(array[i], seenValues));\n }\n\n if (remaining === 1) {\n items.push('... 1 more item');\n } else if (remaining > 1) {\n items.push(\"... \".concat(remaining, \" more items\"));\n }\n\n return '[' + items.join(', ') + ']';\n}\n\nfunction getCustomFn(object) {\n var customInspectFn = object[String(nodejsCustomInspectSymbol)];\n\n if (typeof customInspectFn === 'function') {\n return customInspectFn;\n }\n\n if (typeof object.inspect === 'function') {\n return object.inspect;\n }\n}\n\nfunction getObjectTag(object) {\n var tag = Object.prototype.toString.call(object).replace(/^\\[object /, '').replace(/]$/, '');\n\n if (tag === 'Object' && typeof object.constructor === 'function') {\n var name = object.constructor.name;\n\n if (typeof name === 'string' && name !== '') {\n return name;\n }\n }\n\n return tag;\n}\n","// istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')\nvar nodejsCustomInspectSymbol = typeof Symbol === 'function' && typeof Symbol.for === 'function' ? Symbol.for('nodejs.util.inspect.custom') : undefined;\nexport default nodejsCustomInspectSymbol;\n","import invariant from \"./invariant.mjs\";\nimport nodejsCustomInspectSymbol from \"./nodejsCustomInspectSymbol.mjs\";\n/**\n * The `defineInspect()` function defines `inspect()` prototype method as alias of `toJSON`\n */\n\nexport default function defineInspect(classObject) {\n var fn = classObject.prototype.toJSON;\n typeof fn === 'function' || invariant(0);\n classObject.prototype.inspect = fn; // istanbul ignore else (See: 'https://github.com/graphql/graphql-js/issues/2317')\n\n if (nodejsCustomInspectSymbol) {\n classObject.prototype[nodejsCustomInspectSymbol] = fn;\n }\n}\n","export default function invariant(condition, message) {\n var booleanCondition = Boolean(condition); // istanbul ignore else (See transformation done in './resources/inlineInvariant.js')\n\n if (!booleanCondition) {\n throw new Error(message != null ? message : 'Unexpected invariant triggered.');\n }\n}\n","import defineInspect from \"../jsutils/defineInspect.mjs\";\n\n/**\n * Contains a range of UTF-8 character offsets and token references that\n * identify the region of the source from which the AST derived.\n */\nexport var Location = /*#__PURE__*/function () {\n /**\n * The character offset at which this Node begins.\n */\n\n /**\n * The character offset at which this Node ends.\n */\n\n /**\n * The Token at which this Node begins.\n */\n\n /**\n * The Token at which this Node ends.\n */\n\n /**\n * The Source document the AST represents.\n */\n function Location(startToken, endToken, source) {\n this.start = startToken.start;\n this.end = endToken.end;\n this.startToken = startToken;\n this.endToken = endToken;\n this.source = source;\n }\n\n var _proto = Location.prototype;\n\n _proto.toJSON = function toJSON() {\n return {\n start: this.start,\n end: this.end\n };\n };\n\n return Location;\n}(); // Print a simplified form when appearing in `inspect` and `util.inspect`.\n\ndefineInspect(Location);\n/**\n * Represents a range of characters represented by a lexical token\n * within a Source.\n */\n\nexport var Token = /*#__PURE__*/function () {\n /**\n * The kind of Token.\n */\n\n /**\n * The character offset at which this Node begins.\n */\n\n /**\n * The character offset at which this Node ends.\n */\n\n /**\n * The 1-indexed line number on which this Token appears.\n */\n\n /**\n * The 1-indexed column number at which this Token begins.\n */\n\n /**\n * For non-punctuation tokens, represents the interpreted value of the token.\n */\n\n /**\n * Tokens exist as nodes in a double-linked-list amongst all tokens\n * including ignored tokens. is always the first node and \n * the last.\n */\n function Token(kind, start, end, line, column, prev, value) {\n this.kind = kind;\n this.start = start;\n this.end = end;\n this.line = line;\n this.column = column;\n this.value = value;\n this.prev = prev;\n this.next = null;\n }\n\n var _proto2 = Token.prototype;\n\n _proto2.toJSON = function toJSON() {\n return {\n kind: this.kind,\n value: this.value,\n line: this.line,\n column: this.column\n };\n };\n\n return Token;\n}(); // Print a simplified form when appearing in `inspect` and `util.inspect`.\n\ndefineInspect(Token);\n/**\n * @internal\n */\n\nexport function isNode(maybeNode) {\n return maybeNode != null && typeof maybeNode.kind === 'string';\n}\n/**\n * The list of all possible AST node types.\n */\n","/**\n * Produces the value of a block string from its parsed raw value, similar to\n * CoffeeScript's block string, Python's docstring trim or Ruby's strip_heredoc.\n *\n * This implements the GraphQL spec's BlockStringValue() static algorithm.\n *\n * @internal\n */\nexport function dedentBlockStringValue(rawString) {\n // Expand a block string's raw value into independent lines.\n var lines = rawString.split(/\\r\\n|[\\n\\r]/g); // Remove common indentation from all lines but first.\n\n var commonIndent = getBlockStringIndentation(rawString);\n\n if (commonIndent !== 0) {\n for (var i = 1; i < lines.length; i++) {\n lines[i] = lines[i].slice(commonIndent);\n }\n } // Remove leading and trailing blank lines.\n\n\n var startLine = 0;\n\n while (startLine < lines.length && isBlank(lines[startLine])) {\n ++startLine;\n }\n\n var endLine = lines.length;\n\n while (endLine > startLine && isBlank(lines[endLine - 1])) {\n --endLine;\n } // Return a string of the lines joined with U+000A.\n\n\n return lines.slice(startLine, endLine).join('\\n');\n}\n\nfunction isBlank(str) {\n for (var i = 0; i < str.length; ++i) {\n if (str[i] !== ' ' && str[i] !== '\\t') {\n return false;\n }\n }\n\n return true;\n}\n/**\n * @internal\n */\n\n\nexport function getBlockStringIndentation(value) {\n var _commonIndent;\n\n var isFirstLine = true;\n var isEmptyLine = true;\n var indent = 0;\n var commonIndent = null;\n\n for (var i = 0; i < value.length; ++i) {\n switch (value.charCodeAt(i)) {\n case 13:\n // \\r\n if (value.charCodeAt(i + 1) === 10) {\n ++i; // skip \\r\\n as one symbol\n }\n\n // falls through\n\n case 10:\n // \\n\n isFirstLine = false;\n isEmptyLine = true;\n indent = 0;\n break;\n\n case 9: // \\t\n\n case 32:\n // \n ++indent;\n break;\n\n default:\n if (isEmptyLine && !isFirstLine && (commonIndent === null || indent < commonIndent)) {\n commonIndent = indent;\n }\n\n isEmptyLine = false;\n }\n }\n\n return (_commonIndent = commonIndent) !== null && _commonIndent !== void 0 ? _commonIndent : 0;\n}\n/**\n * Print a block string in the indented block form by adding a leading and\n * trailing blank line. However, if a block string starts with whitespace and is\n * a single-line, adding a leading blank line would strip that whitespace.\n *\n * @internal\n */\n\nexport function printBlockString(value) {\n var indentation = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var preferMultipleLines = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var isSingleLine = value.indexOf('\\n') === -1;\n var hasLeadingSpace = value[0] === ' ' || value[0] === '\\t';\n var hasTrailingQuote = value[value.length - 1] === '\"';\n var hasTrailingSlash = value[value.length - 1] === '\\\\';\n var printAsMultipleLines = !isSingleLine || hasTrailingQuote || hasTrailingSlash || preferMultipleLines;\n var result = ''; // Format a multi-line block quote to account for leading space.\n\n if (printAsMultipleLines && !(isSingleLine && hasLeadingSpace)) {\n result += '\\n' + indentation;\n }\n\n result += indentation ? value.replace(/\\n/g, '\\n' + indentation) : value;\n\n if (printAsMultipleLines) {\n result += '\\n';\n }\n\n return '\"\"\"' + result.replace(/\"\"\"/g, '\\\\\"\"\"') + '\"\"\"';\n}\n","/**\n * The set of allowed kind values for AST nodes.\n */\nexport var Kind = Object.freeze({\n // Name\n NAME: 'Name',\n // Document\n DOCUMENT: 'Document',\n OPERATION_DEFINITION: 'OperationDefinition',\n VARIABLE_DEFINITION: 'VariableDefinition',\n SELECTION_SET: 'SelectionSet',\n FIELD: 'Field',\n ARGUMENT: 'Argument',\n // Fragments\n FRAGMENT_SPREAD: 'FragmentSpread',\n INLINE_FRAGMENT: 'InlineFragment',\n FRAGMENT_DEFINITION: 'FragmentDefinition',\n // Values\n VARIABLE: 'Variable',\n INT: 'IntValue',\n FLOAT: 'FloatValue',\n STRING: 'StringValue',\n BOOLEAN: 'BooleanValue',\n NULL: 'NullValue',\n ENUM: 'EnumValue',\n LIST: 'ListValue',\n OBJECT: 'ObjectValue',\n OBJECT_FIELD: 'ObjectField',\n // Directives\n DIRECTIVE: 'Directive',\n // Types\n NAMED_TYPE: 'NamedType',\n LIST_TYPE: 'ListType',\n NON_NULL_TYPE: 'NonNullType',\n // Type System Definitions\n SCHEMA_DEFINITION: 'SchemaDefinition',\n OPERATION_TYPE_DEFINITION: 'OperationTypeDefinition',\n // Type Definitions\n SCALAR_TYPE_DEFINITION: 'ScalarTypeDefinition',\n OBJECT_TYPE_DEFINITION: 'ObjectTypeDefinition',\n FIELD_DEFINITION: 'FieldDefinition',\n INPUT_VALUE_DEFINITION: 'InputValueDefinition',\n INTERFACE_TYPE_DEFINITION: 'InterfaceTypeDefinition',\n UNION_TYPE_DEFINITION: 'UnionTypeDefinition',\n ENUM_TYPE_DEFINITION: 'EnumTypeDefinition',\n ENUM_VALUE_DEFINITION: 'EnumValueDefinition',\n INPUT_OBJECT_TYPE_DEFINITION: 'InputObjectTypeDefinition',\n // Directive Definitions\n DIRECTIVE_DEFINITION: 'DirectiveDefinition',\n // Type System Extensions\n SCHEMA_EXTENSION: 'SchemaExtension',\n // Type Extensions\n SCALAR_TYPE_EXTENSION: 'ScalarTypeExtension',\n OBJECT_TYPE_EXTENSION: 'ObjectTypeExtension',\n INTERFACE_TYPE_EXTENSION: 'InterfaceTypeExtension',\n UNION_TYPE_EXTENSION: 'UnionTypeExtension',\n ENUM_TYPE_EXTENSION: 'EnumTypeExtension',\n INPUT_OBJECT_TYPE_EXTENSION: 'InputObjectTypeExtension'\n});\n/**\n * The enum type representing the possible kind values of AST nodes.\n */\n","export default function devAssert(condition, message) {\n var booleanCondition = Boolean(condition); // istanbul ignore else (See transformation done in './resources/inlineInvariant.js')\n\n if (!booleanCondition) {\n throw new Error(message);\n }\n}\n","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport inspect from \"./inspect.mjs\";\n/**\n * A replacement for instanceof which includes an error warning when multi-realm\n * constructors are detected.\n */\n\n// See: https://expressjs.com/en/advanced/best-practice-performance.html#set-node_env-to-production\n// See: https://webpack.js.org/guides/production/\nexport default process.env.NODE_ENV === 'production' ? // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')\n// eslint-disable-next-line no-shadow\nfunction instanceOf(value, constructor) {\n return value instanceof constructor;\n} : // eslint-disable-next-line no-shadow\nfunction instanceOf(value, constructor) {\n if (value instanceof constructor) {\n return true;\n }\n\n if (_typeof(value) === 'object' && value !== null) {\n var _value$constructor;\n\n var className = constructor.prototype[Symbol.toStringTag];\n var valueClassName = // We still need to support constructor's name to detect conflicts with older versions of this library.\n Symbol.toStringTag in value ? value[Symbol.toStringTag] : (_value$constructor = value.constructor) === null || _value$constructor === void 0 ? void 0 : _value$constructor.name;\n\n if (className === valueClassName) {\n var stringifiedValue = inspect(value);\n throw new Error(\"Cannot use \".concat(className, \" \\\"\").concat(stringifiedValue, \"\\\" from another module or realm.\\n\\nEnsure that there is only one instance of \\\"graphql\\\" in the node_modules\\ndirectory. If different versions of \\\"graphql\\\" are the dependencies of other\\nrelied on modules, use \\\"resolutions\\\" to ensure only one version is installed.\\n\\nhttps://yarnpkg.com/en/docs/selective-version-resolutions\\n\\nDuplicate \\\"graphql\\\" modules cannot be used at the same time since different\\nversions may have different capabilities and behavior. The data from one\\nversion used in the function from another could produce confusing and\\nspurious results.\"));\n }\n }\n\n return false;\n};\n","function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nimport { SYMBOL_TO_STRING_TAG } from \"../polyfills/symbols.mjs\";\nimport inspect from \"../jsutils/inspect.mjs\";\nimport devAssert from \"../jsutils/devAssert.mjs\";\nimport instanceOf from \"../jsutils/instanceOf.mjs\";\n\n/**\n * A representation of source input to GraphQL. The `name` and `locationOffset` parameters are\n * optional, but they are useful for clients who store GraphQL documents in source files.\n * For example, if the GraphQL input starts at line 40 in a file named `Foo.graphql`, it might\n * be useful for `name` to be `\"Foo.graphql\"` and location to be `{ line: 40, column: 1 }`.\n * The `line` and `column` properties in `locationOffset` are 1-indexed.\n */\nexport var Source = /*#__PURE__*/function () {\n function Source(body) {\n var name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'GraphQL request';\n var locationOffset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {\n line: 1,\n column: 1\n };\n typeof body === 'string' || devAssert(0, \"Body must be a string. Received: \".concat(inspect(body), \".\"));\n this.body = body;\n this.name = name;\n this.locationOffset = locationOffset;\n this.locationOffset.line > 0 || devAssert(0, 'line in locationOffset is 1-indexed and must be positive.');\n this.locationOffset.column > 0 || devAssert(0, 'column in locationOffset is 1-indexed and must be positive.');\n } // $FlowFixMe[unsupported-syntax] Flow doesn't support computed properties yet\n\n\n _createClass(Source, [{\n key: SYMBOL_TO_STRING_TAG,\n get: function get() {\n return 'Source';\n }\n }]);\n\n return Source;\n}();\n/**\n * Test if the given value is a Source object.\n *\n * @internal\n */\n\n// eslint-disable-next-line no-redeclare\nexport function isSource(source) {\n return instanceOf(source, Source);\n}\n","import inspect from \"../jsutils/inspect.mjs\";\nimport { isNode } from \"./ast.mjs\";\n/**\n * A visitor is provided to visit, it contains the collection of\n * relevant functions to be called during the visitor's traversal.\n */\n\nexport var QueryDocumentKeys = {\n Name: [],\n Document: ['definitions'],\n OperationDefinition: ['name', 'variableDefinitions', 'directives', 'selectionSet'],\n VariableDefinition: ['variable', 'type', 'defaultValue', 'directives'],\n Variable: ['name'],\n SelectionSet: ['selections'],\n Field: ['alias', 'name', 'arguments', 'directives', 'selectionSet'],\n Argument: ['name', 'value'],\n FragmentSpread: ['name', 'directives'],\n InlineFragment: ['typeCondition', 'directives', 'selectionSet'],\n FragmentDefinition: ['name', // Note: fragment variable definitions are experimental and may be changed\n // or removed in the future.\n 'variableDefinitions', 'typeCondition', 'directives', 'selectionSet'],\n IntValue: [],\n FloatValue: [],\n StringValue: [],\n BooleanValue: [],\n NullValue: [],\n EnumValue: [],\n ListValue: ['values'],\n ObjectValue: ['fields'],\n ObjectField: ['name', 'value'],\n Directive: ['name', 'arguments'],\n NamedType: ['name'],\n ListType: ['type'],\n NonNullType: ['type'],\n SchemaDefinition: ['description', 'directives', 'operationTypes'],\n OperationTypeDefinition: ['type'],\n ScalarTypeDefinition: ['description', 'name', 'directives'],\n ObjectTypeDefinition: ['description', 'name', 'interfaces', 'directives', 'fields'],\n FieldDefinition: ['description', 'name', 'arguments', 'type', 'directives'],\n InputValueDefinition: ['description', 'name', 'type', 'defaultValue', 'directives'],\n InterfaceTypeDefinition: ['description', 'name', 'interfaces', 'directives', 'fields'],\n UnionTypeDefinition: ['description', 'name', 'directives', 'types'],\n EnumTypeDefinition: ['description', 'name', 'directives', 'values'],\n EnumValueDefinition: ['description', 'name', 'directives'],\n InputObjectTypeDefinition: ['description', 'name', 'directives', 'fields'],\n DirectiveDefinition: ['description', 'name', 'arguments', 'locations'],\n SchemaExtension: ['directives', 'operationTypes'],\n ScalarTypeExtension: ['name', 'directives'],\n ObjectTypeExtension: ['name', 'interfaces', 'directives', 'fields'],\n InterfaceTypeExtension: ['name', 'interfaces', 'directives', 'fields'],\n UnionTypeExtension: ['name', 'directives', 'types'],\n EnumTypeExtension: ['name', 'directives', 'values'],\n InputObjectTypeExtension: ['name', 'directives', 'fields']\n};\nexport var BREAK = Object.freeze({});\n/**\n * visit() will walk through an AST using a depth-first traversal, calling\n * the visitor's enter function at each node in the traversal, and calling the\n * leave function after visiting that node and all of its child nodes.\n *\n * By returning different values from the enter and leave functions, the\n * behavior of the visitor can be altered, including skipping over a sub-tree of\n * the AST (by returning false), editing the AST by returning a value or null\n * to remove the value, or to stop the whole traversal by returning BREAK.\n *\n * When using visit() to edit an AST, the original AST will not be modified, and\n * a new version of the AST with the changes applied will be returned from the\n * visit function.\n *\n * const editedAST = visit(ast, {\n * enter(node, key, parent, path, ancestors) {\n * // @return\n * // undefined: no action\n * // false: skip visiting this node\n * // visitor.BREAK: stop visiting altogether\n * // null: delete this node\n * // any value: replace this node with the returned value\n * },\n * leave(node, key, parent, path, ancestors) {\n * // @return\n * // undefined: no action\n * // false: no action\n * // visitor.BREAK: stop visiting altogether\n * // null: delete this node\n * // any value: replace this node with the returned value\n * }\n * });\n *\n * Alternatively to providing enter() and leave() functions, a visitor can\n * instead provide functions named the same as the kinds of AST nodes, or\n * enter/leave visitors at a named key, leading to four permutations of the\n * visitor API:\n *\n * 1) Named visitors triggered when entering a node of a specific kind.\n *\n * visit(ast, {\n * Kind(node) {\n * // enter the \"Kind\" node\n * }\n * })\n *\n * 2) Named visitors that trigger upon entering and leaving a node of\n * a specific kind.\n *\n * visit(ast, {\n * Kind: {\n * enter(node) {\n * // enter the \"Kind\" node\n * }\n * leave(node) {\n * // leave the \"Kind\" node\n * }\n * }\n * })\n *\n * 3) Generic visitors that trigger upon entering and leaving any node.\n *\n * visit(ast, {\n * enter(node) {\n * // enter any node\n * },\n * leave(node) {\n * // leave any node\n * }\n * })\n *\n * 4) Parallel visitors for entering and leaving nodes of a specific kind.\n *\n * visit(ast, {\n * enter: {\n * Kind(node) {\n * // enter the \"Kind\" node\n * }\n * },\n * leave: {\n * Kind(node) {\n * // leave the \"Kind\" node\n * }\n * }\n * })\n */\n\nexport function visit(root, visitor) {\n var visitorKeys = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : QueryDocumentKeys;\n\n /* eslint-disable no-undef-init */\n var stack = undefined;\n var inArray = Array.isArray(root);\n var keys = [root];\n var index = -1;\n var edits = [];\n var node = undefined;\n var key = undefined;\n var parent = undefined;\n var path = [];\n var ancestors = [];\n var newRoot = root;\n /* eslint-enable no-undef-init */\n\n do {\n index++;\n var isLeaving = index === keys.length;\n var isEdited = isLeaving && edits.length !== 0;\n\n if (isLeaving) {\n key = ancestors.length === 0 ? undefined : path[path.length - 1];\n node = parent;\n parent = ancestors.pop();\n\n if (isEdited) {\n if (inArray) {\n node = node.slice();\n } else {\n var clone = {};\n\n for (var _i2 = 0, _Object$keys2 = Object.keys(node); _i2 < _Object$keys2.length; _i2++) {\n var k = _Object$keys2[_i2];\n clone[k] = node[k];\n }\n\n node = clone;\n }\n\n var editOffset = 0;\n\n for (var ii = 0; ii < edits.length; ii++) {\n var editKey = edits[ii][0];\n var editValue = edits[ii][1];\n\n if (inArray) {\n editKey -= editOffset;\n }\n\n if (inArray && editValue === null) {\n node.splice(editKey, 1);\n editOffset++;\n } else {\n node[editKey] = editValue;\n }\n }\n }\n\n index = stack.index;\n keys = stack.keys;\n edits = stack.edits;\n inArray = stack.inArray;\n stack = stack.prev;\n } else {\n key = parent ? inArray ? index : keys[index] : undefined;\n node = parent ? parent[key] : newRoot;\n\n if (node === null || node === undefined) {\n continue;\n }\n\n if (parent) {\n path.push(key);\n }\n }\n\n var result = void 0;\n\n if (!Array.isArray(node)) {\n if (!isNode(node)) {\n throw new Error(\"Invalid AST Node: \".concat(inspect(node), \".\"));\n }\n\n var visitFn = getVisitFn(visitor, node.kind, isLeaving);\n\n if (visitFn) {\n result = visitFn.call(visitor, node, key, parent, path, ancestors);\n\n if (result === BREAK) {\n break;\n }\n\n if (result === false) {\n if (!isLeaving) {\n path.pop();\n continue;\n }\n } else if (result !== undefined) {\n edits.push([key, result]);\n\n if (!isLeaving) {\n if (isNode(result)) {\n node = result;\n } else {\n path.pop();\n continue;\n }\n }\n }\n }\n }\n\n if (result === undefined && isEdited) {\n edits.push([key, node]);\n }\n\n if (isLeaving) {\n path.pop();\n } else {\n var _visitorKeys$node$kin;\n\n stack = {\n inArray: inArray,\n index: index,\n keys: keys,\n edits: edits,\n prev: stack\n };\n inArray = Array.isArray(node);\n keys = inArray ? node : (_visitorKeys$node$kin = visitorKeys[node.kind]) !== null && _visitorKeys$node$kin !== void 0 ? _visitorKeys$node$kin : [];\n index = -1;\n edits = [];\n\n if (parent) {\n ancestors.push(parent);\n }\n\n parent = node;\n }\n } while (stack !== undefined);\n\n if (edits.length !== 0) {\n newRoot = edits[edits.length - 1][1];\n }\n\n return newRoot;\n}\n/**\n * Creates a new visitor instance which delegates to many visitors to run in\n * parallel. Each visitor will be visited for each node before moving on.\n *\n * If a prior visitor edits a node, no following visitors will see that node.\n */\n\nexport function visitInParallel(visitors) {\n var skipping = new Array(visitors.length);\n return {\n enter: function enter(node) {\n for (var i = 0; i < visitors.length; i++) {\n if (skipping[i] == null) {\n var fn = getVisitFn(visitors[i], node.kind,\n /* isLeaving */\n false);\n\n if (fn) {\n var result = fn.apply(visitors[i], arguments);\n\n if (result === false) {\n skipping[i] = node;\n } else if (result === BREAK) {\n skipping[i] = BREAK;\n } else if (result !== undefined) {\n return result;\n }\n }\n }\n }\n },\n leave: function leave(node) {\n for (var i = 0; i < visitors.length; i++) {\n if (skipping[i] == null) {\n var fn = getVisitFn(visitors[i], node.kind,\n /* isLeaving */\n true);\n\n if (fn) {\n var result = fn.apply(visitors[i], arguments);\n\n if (result === BREAK) {\n skipping[i] = BREAK;\n } else if (result !== undefined && result !== false) {\n return result;\n }\n }\n } else if (skipping[i] === node) {\n skipping[i] = null;\n }\n }\n }\n };\n}\n/**\n * Given a visitor instance, if it is leaving or not, and a node kind, return\n * the function the visitor runtime should call.\n */\n\nexport function getVisitFn(visitor, kind, isLeaving) {\n var kindVisitor = visitor[kind];\n\n if (kindVisitor) {\n if (!isLeaving && typeof kindVisitor === 'function') {\n // { Kind() {} }\n return kindVisitor;\n }\n\n var kindSpecificVisitor = isLeaving ? kindVisitor.leave : kindVisitor.enter;\n\n if (typeof kindSpecificVisitor === 'function') {\n // { Kind: { enter() {}, leave() {} } }\n return kindSpecificVisitor;\n }\n } else {\n var specificVisitor = isLeaving ? visitor.leave : visitor.enter;\n\n if (specificVisitor) {\n if (typeof specificVisitor === 'function') {\n // { enter() {}, leave() {} }\n return specificVisitor;\n }\n\n var specificKindVisitor = specificVisitor[kind];\n\n if (typeof specificKindVisitor === 'function') {\n // { enter: { Kind() {} }, leave: { Kind() {} } }\n return specificKindVisitor;\n }\n }\n }\n}\n","// In ES2015 (or a polyfilled) environment, this will be Symbol.iterator\n// istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')\nexport var SYMBOL_ITERATOR = typeof Symbol === 'function' && Symbol.iterator != null ? Symbol.iterator : '@@iterator'; // In ES2017 (or a polyfilled) environment, this will be Symbol.asyncIterator\n// istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')\n\nexport var SYMBOL_ASYNC_ITERATOR = typeof Symbol === 'function' && Symbol.asyncIterator != null ? Symbol.asyncIterator : '@@asyncIterator'; // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')\n\nexport var SYMBOL_TO_STRING_TAG = typeof Symbol === 'function' && Symbol.toStringTag != null ? Symbol.toStringTag : '@@toStringTag';\n","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport qs from 'qs';\nimport { safelyRunOnBrowser } from \"../utils/index.js\";\n\nvar setWindowTitle = function setWindowTitle(title) {\n if (title) {\n // This function is only executed on browsers so we can disable this check.\n // eslint-disable-next-line no-restricted-globals\n window.document.title = title;\n }\n};\n\nvar BrowserHistory = /*#__PURE__*/function () {\n /**\n * Initializes a new storage provider that syncs the search state to the URL\n * using web APIs (`window.location.pushState` and `onpopstate` event).\n */\n function BrowserHistory(_ref) {\n var _this = this;\n\n var windowTitle = _ref.windowTitle,\n _ref$writeDelay = _ref.writeDelay,\n writeDelay = _ref$writeDelay === void 0 ? 400 : _ref$writeDelay,\n createURL = _ref.createURL,\n parseURL = _ref.parseURL,\n getLocation = _ref.getLocation;\n\n _classCallCheck(this, BrowserHistory);\n\n _defineProperty(this, \"windowTitle\", void 0);\n\n _defineProperty(this, \"writeDelay\", void 0);\n\n _defineProperty(this, \"_createURL\", void 0);\n\n _defineProperty(this, \"parseURL\", void 0);\n\n _defineProperty(this, \"getLocation\", void 0);\n\n _defineProperty(this, \"writeTimer\", void 0);\n\n _defineProperty(this, \"inPopState\", false);\n\n _defineProperty(this, \"isDisposed\", false);\n\n _defineProperty(this, \"latestAcknowledgedHistory\", 0);\n\n this.windowTitle = windowTitle;\n this.writeTimer = undefined;\n this.writeDelay = writeDelay;\n this._createURL = createURL;\n this.parseURL = parseURL;\n this.getLocation = getLocation;\n safelyRunOnBrowser(function (_ref2) {\n var window = _ref2.window;\n\n var title = _this.windowTitle && _this.windowTitle(_this.read());\n\n setWindowTitle(title);\n _this.latestAcknowledgedHistory = window.history.length;\n });\n }\n /**\n * Reads the URL and returns a syncable UI search state.\n */\n\n\n _createClass(BrowserHistory, [{\n key: \"read\",\n value: function read() {\n return this.parseURL({\n qsModule: qs,\n location: this.getLocation()\n });\n }\n /**\n * Pushes a search state into the URL.\n */\n\n }, {\n key: \"write\",\n value: function write(routeState) {\n var _this2 = this;\n\n safelyRunOnBrowser(function (_ref3) {\n var window = _ref3.window;\n\n var url = _this2.createURL(routeState);\n\n var title = _this2.windowTitle && _this2.windowTitle(routeState);\n\n if (_this2.writeTimer) {\n clearTimeout(_this2.writeTimer);\n }\n\n _this2.writeTimer = setTimeout(function () {\n setWindowTitle(title);\n\n if (_this2.shouldWrite(url)) {\n window.history.pushState(routeState, title || '', url);\n _this2.latestAcknowledgedHistory = window.history.length;\n }\n\n _this2.inPopState = false;\n _this2.writeTimer = undefined;\n }, _this2.writeDelay);\n });\n }\n /**\n * Sets a callback on the `onpopstate` event of the history API of the current page.\n * It enables the URL sync to keep track of the changes.\n */\n\n }, {\n key: \"onUpdate\",\n value: function onUpdate(callback) {\n var _this3 = this;\n\n this._onPopState = function (event) {\n if (_this3.writeTimer) {\n clearTimeout(_this3.writeTimer);\n _this3.writeTimer = undefined;\n }\n\n _this3.inPopState = true;\n var routeState = event.state; // At initial load, the state is read from the URL without update.\n // Therefore the state object is not available.\n // In this case, we fallback and read the URL.\n\n if (!routeState) {\n callback(_this3.read());\n } else {\n callback(routeState);\n }\n };\n\n safelyRunOnBrowser(function (_ref4) {\n var window = _ref4.window;\n window.addEventListener('popstate', _this3._onPopState);\n });\n }\n /**\n * Creates a complete URL from a given syncable UI state.\n *\n * It always generates the full URL, not a relative one.\n * This allows to handle cases like using a .\n * See: https://github.com/algolia/instantsearch.js/issues/790\n */\n\n }, {\n key: \"createURL\",\n value: function createURL(routeState) {\n return this._createURL({\n qsModule: qs,\n routeState: routeState,\n location: this.getLocation()\n });\n }\n /**\n * Removes the event listener and cleans up the URL.\n */\n\n }, {\n key: \"dispose\",\n value: function dispose() {\n var _this4 = this;\n\n this.isDisposed = true;\n safelyRunOnBrowser(function (_ref5) {\n var window = _ref5.window;\n\n if (_this4._onPopState) {\n window.removeEventListener('popstate', _this4._onPopState);\n }\n });\n\n if (this.writeTimer) {\n clearTimeout(this.writeTimer);\n }\n\n this.write({});\n }\n }, {\n key: \"shouldWrite\",\n value: function shouldWrite(url) {\n var _this5 = this;\n\n return safelyRunOnBrowser(function (_ref6) {\n var window = _ref6.window;\n // We do want to `pushState` if:\n // - the router is not disposed, IS.js needs to update the URL\n // OR\n // - the last write was from InstantSearch.js\n // (unlike a SPA, where it would have last written)\n var lastPushWasByISAfterDispose = !(_this5.isDisposed && _this5.latestAcknowledgedHistory !== window.history.length);\n return (// When the last state change was through popstate, the IS.js state changes,\n // but that should not write the URL.\n !_this5.inPopState && // When the previous pushState after dispose was by IS.js, we want to write the URL.\n lastPushWasByISAfterDispose && // When the URL is the same as the current one, we do not want to write it.\n url !== window.location.href\n );\n });\n }\n }]);\n\n return BrowserHistory;\n}();\n\nexport default function historyRouter() {\n var _ref7 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref7$createURL = _ref7.createURL,\n createURL = _ref7$createURL === void 0 ? function (_ref8) {\n var qsModule = _ref8.qsModule,\n routeState = _ref8.routeState,\n location = _ref8.location;\n var protocol = location.protocol,\n hostname = location.hostname,\n _location$port = location.port,\n port = _location$port === void 0 ? '' : _location$port,\n pathname = location.pathname,\n hash = location.hash;\n var queryString = qsModule.stringify(routeState);\n var portWithPrefix = port === '' ? '' : \":\".concat(port); // IE <= 11 has no proper `location.origin` so we cannot rely on it.\n\n // IE <= 11 has no proper `location.origin` so we cannot rely on it.\n if (!queryString) {\n return \"\".concat(protocol, \"//\").concat(hostname).concat(portWithPrefix).concat(pathname).concat(hash);\n }\n\n return \"\".concat(protocol, \"//\").concat(hostname).concat(portWithPrefix).concat(pathname, \"?\").concat(queryString).concat(hash);\n } : _ref7$createURL,\n _ref7$parseURL = _ref7.parseURL,\n parseURL = _ref7$parseURL === void 0 ? function (_ref9) {\n var qsModule = _ref9.qsModule,\n location = _ref9.location;\n // `qs` by default converts arrays with more than 20 items to an object.\n // We want to avoid this because the data structure manipulated can therefore vary.\n // Setting the limit to `100` seems a good number because the engine's default is 100\n // (it can go up to 1000 but it is very unlikely to select more than 100 items in the UI).\n //\n // Using an `arrayLimit` of `n` allows `n + 1` items.\n //\n // See:\n // - https://github.com/ljharb/qs#parsing-arrays\n // - https://www.algolia.com/doc/api-reference/api-parameters/maxValuesPerFacet/\n return qsModule.parse(location.search.slice(1), {\n arrayLimit: 99\n });\n } : _ref7$parseURL,\n _ref7$writeDelay = _ref7.writeDelay,\n writeDelay = _ref7$writeDelay === void 0 ? 400 : _ref7$writeDelay,\n windowTitle = _ref7.windowTitle,\n _ref7$getLocation = _ref7.getLocation,\n getLocation = _ref7$getLocation === void 0 ? function () {\n return safelyRunOnBrowser(function (_ref10) {\n var window = _ref10.window;\n return window.location;\n }, {\n fallback: function fallback() {\n throw new Error('You need to provide `getLocation` to the `history` router in environments where `window` does not exist.');\n }\n });\n } : _ref7$getLocation;\n\n return new BrowserHistory({\n createURL: createURL,\n parseURL: parseURL,\n writeDelay: writeDelay,\n windowTitle: windowTitle,\n getLocation: getLocation\n });\n}","import { getObjectType } from \"./getObjectType.js\";\nexport function checkRendering(rendering, usage) {\n if (rendering === undefined || typeof rendering !== 'function') {\n throw new Error(\"The render function is not valid (received type \".concat(getObjectType(rendering), \").\\n\\n\").concat(usage));\n }\n}","export function getObjectType(object) {\n return Object.prototype.toString.call(object).slice(8, -1);\n}","export function createDocumentationLink(_ref) {\n var name = _ref.name,\n _ref$connector = _ref.connector,\n connector = _ref$connector === void 0 ? false : _ref$connector;\n return ['https://www.algolia.com/doc/api-reference/widgets/', name, '/js/', connector ? '#connector' : ''].join('');\n}\nexport function createDocumentationMessageGenerator() {\n for (var _len = arguments.length, widgets = new Array(_len), _key = 0; _key < _len; _key++) {\n widgets[_key] = arguments[_key];\n }\n\n var links = widgets.map(function (widget) {\n return createDocumentationLink(widget);\n }).join(', ');\n return function (message) {\n return [message, \"See documentation: \".concat(links)].filter(Boolean).join('\\n\\n');\n };\n}","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { escape } from \"./escape-html.js\";\nimport { isPlainObject } from \"./isPlainObject.js\";\nexport var TAG_PLACEHOLDER = {\n highlightPreTag: '__ais-highlight__',\n highlightPostTag: '__/ais-highlight__'\n};\nexport var TAG_REPLACEMENT = {\n highlightPreTag: '',\n highlightPostTag: ''\n};\n\nfunction replaceTagsAndEscape(value) {\n return escape(value).replace(new RegExp(TAG_PLACEHOLDER.highlightPreTag, 'g'), TAG_REPLACEMENT.highlightPreTag).replace(new RegExp(TAG_PLACEHOLDER.highlightPostTag, 'g'), TAG_REPLACEMENT.highlightPostTag);\n}\n\nfunction recursiveEscape(input) {\n if (isPlainObject(input) && typeof input.value !== 'string') {\n return Object.keys(input).reduce(function (acc, key) {\n return _objectSpread(_objectSpread({}, acc), {}, _defineProperty({}, key, recursiveEscape(input[key])));\n }, {});\n }\n\n if (Array.isArray(input)) {\n return input.map(recursiveEscape);\n }\n\n return _objectSpread(_objectSpread({}, input), {}, {\n value: replaceTagsAndEscape(input.value)\n });\n}\n\nexport function escapeHits(hits) {\n if (hits.__escaped === undefined) {\n // We don't override the value on hit because it will mutate the raw results\n // instead we make a shallow copy and we assign the escaped values on it.\n hits = hits.map(function (_ref) {\n var hit = _extends({}, _ref);\n\n if (hit._highlightResult) {\n hit._highlightResult = recursiveEscape(hit._highlightResult);\n }\n\n if (hit._snippetResult) {\n hit._snippetResult = recursiveEscape(hit._snippetResult);\n }\n\n return hit;\n });\n hits.__escaped = true;\n }\n\n return hits;\n}\nexport function escapeFacets(facetHits) {\n return facetHits.map(function (h) {\n return _objectSpread(_objectSpread({}, h), {}, {\n highlighted: replaceTagsAndEscape(h.highlighted)\n });\n });\n}","/**\n * This implementation is taken from Lodash implementation.\n * See: https://github.com/lodash/lodash/blob/4.17.11-npm/escape.js\n */\n// Used to map characters to HTML entities.\nvar htmlEntities = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n}; // Used to match HTML entities and HTML characters.\n\nvar regexUnescapedHtml = /[&<>\"']/g;\nvar regexHasUnescapedHtml = RegExp(regexUnescapedHtml.source);\n/**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n */\n\nexport function escape(value) {\n return value && regexHasUnescapedHtml.test(value) ? value.replace(regexUnescapedHtml, function (character) {\n return htmlEntities[character];\n }) : value;\n}\n/**\n * This implementation is taken from Lodash implementation.\n * See: https://github.com/lodash/lodash/blob/4.17.11-npm/unescape.js\n */\n// Used to map HTML entities to characters.\n\nvar htmlCharacters = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\"\n}; // Used to match HTML entities and HTML characters.\n\nvar regexEscapedHtml = /&(amp|quot|lt|gt|#39);/g;\nvar regexHasEscapedHtml = RegExp(regexEscapedHtml.source);\n/**\n * Converts the HTML entities \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * characters.\n */\n\nexport function unescape(value) {\n return value && regexHasEscapedHtml.test(value) ? value.replace(regexEscapedHtml, function (character) {\n return htmlCharacters[character];\n }) : value;\n}","export function unescapeFacetValue(value) {\n if (typeof value === 'string') {\n return value.replace(/^\\\\-/, '-');\n }\n\n return value;\n}\nexport function escapeFacetValue(value) {\n if (typeof value === 'number' && value < 0 || typeof value === 'string') {\n return String(value).replace(/^-/, '\\\\-');\n }\n\n return value;\n}","// We aren't using the native `Array.prototype.find` because the refactor away from Lodash is not\n// published as a major version.\n// Relying on the `find` polyfill on user-land, which before was only required for niche use-cases,\n// was decided as too risky.\n// @MAJOR Replace with the native `Array.prototype.find` method\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find\nexport function find(items, predicate) {\n var value;\n\n for (var i = 0; i < items.length; i++) {\n value = items[i]; // inlined for performance: if (Call(predicate, thisArg, [value, i, list])) {\n\n if (predicate(value, i, items)) {\n return value;\n }\n }\n\n return undefined;\n}","import { find } from \"./find.js\";\nimport { unescapeFacetValue, escapeFacetValue } from \"./escapeFacetValue.js\";\n\nfunction getRefinement(state, type, attribute, name) {\n var resultsFacets = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : [];\n var res = {\n type: type,\n attribute: attribute,\n name: name,\n escapedValue: escapeFacetValue(name)\n };\n var facet = find(resultsFacets, function (resultsFacet) {\n return resultsFacet.name === attribute;\n });\n var count;\n\n if (type === 'hierarchical') {\n (function () {\n var facetDeclaration = state.getHierarchicalFacetByName(attribute);\n var nameParts = name.split(facetDeclaration.separator);\n\n var getFacetRefinement = function getFacetRefinement(facetData) {\n return function (refinementKey) {\n return facetData[refinementKey];\n };\n };\n\n var _loop = function _loop(i) {\n facet = facet && facet.data && find(Object.keys(facet.data).map(getFacetRefinement(facet.data)), function (refinement) {\n return refinement.name === nameParts[i];\n });\n };\n\n for (var i = 0; facet !== undefined && i < nameParts.length; ++i) {\n _loop(i);\n }\n\n count = facet && facet.count;\n })();\n } else {\n count = facet && facet.data && facet.data[res.name];\n }\n\n if (count !== undefined) {\n res.count = count;\n }\n\n if (facet && facet.exhaustive !== undefined) {\n res.exhaustive = facet.exhaustive;\n }\n\n return res;\n}\n\nexport function getRefinements(results, state) {\n var includesQuery = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var refinements = [];\n var _state$facetsRefineme = state.facetsRefinements,\n facetsRefinements = _state$facetsRefineme === void 0 ? {} : _state$facetsRefineme,\n _state$facetsExcludes = state.facetsExcludes,\n facetsExcludes = _state$facetsExcludes === void 0 ? {} : _state$facetsExcludes,\n _state$disjunctiveFac = state.disjunctiveFacetsRefinements,\n disjunctiveFacetsRefinements = _state$disjunctiveFac === void 0 ? {} : _state$disjunctiveFac,\n _state$hierarchicalFa = state.hierarchicalFacetsRefinements,\n hierarchicalFacetsRefinements = _state$hierarchicalFa === void 0 ? {} : _state$hierarchicalFa,\n _state$numericRefinem = state.numericRefinements,\n numericRefinements = _state$numericRefinem === void 0 ? {} : _state$numericRefinem,\n _state$tagRefinements = state.tagRefinements,\n tagRefinements = _state$tagRefinements === void 0 ? [] : _state$tagRefinements;\n Object.keys(facetsRefinements).forEach(function (attribute) {\n var refinementNames = facetsRefinements[attribute];\n refinementNames.forEach(function (refinementName) {\n refinements.push(getRefinement(state, 'facet', attribute, refinementName, results.facets));\n });\n });\n Object.keys(facetsExcludes).forEach(function (attribute) {\n var refinementNames = facetsExcludes[attribute];\n refinementNames.forEach(function (refinementName) {\n refinements.push({\n type: 'exclude',\n attribute: attribute,\n name: refinementName,\n exclude: true\n });\n });\n });\n Object.keys(disjunctiveFacetsRefinements).forEach(function (attribute) {\n var refinementNames = disjunctiveFacetsRefinements[attribute];\n refinementNames.forEach(function (refinementName) {\n refinements.push(getRefinement(state, 'disjunctive', attribute, // We unescape any disjunctive refined values with `unescapeFacetValue` because\n // they can be escaped on negative numeric values with `escapeFacetValue`.\n unescapeFacetValue(refinementName), results.disjunctiveFacets));\n });\n });\n Object.keys(hierarchicalFacetsRefinements).forEach(function (attribute) {\n var refinementNames = hierarchicalFacetsRefinements[attribute];\n refinementNames.forEach(function (refinement) {\n refinements.push(getRefinement(state, 'hierarchical', attribute, refinement, results.hierarchicalFacets));\n });\n });\n Object.keys(numericRefinements).forEach(function (attribute) {\n var operators = numericRefinements[attribute];\n Object.keys(operators).forEach(function (operatorOriginal) {\n var operator = operatorOriginal;\n var valueOrValues = operators[operator];\n var refinementNames = Array.isArray(valueOrValues) ? valueOrValues : [valueOrValues];\n refinementNames.forEach(function (refinementName) {\n refinements.push({\n type: 'numeric',\n attribute: attribute,\n name: \"\".concat(refinementName),\n numericValue: refinementName,\n operator: operator\n });\n });\n });\n });\n tagRefinements.forEach(function (refinementName) {\n refinements.push({\n type: 'tag',\n attribute: '_tags',\n name: refinementName\n });\n });\n\n if (includesQuery && state.query && state.query.trim()) {\n refinements.push({\n attribute: 'query',\n type: 'query',\n name: state.query,\n query: state.query\n });\n }\n\n return refinements;\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/**\n * This implementation is taken from Lodash implementation.\n * See: https://github.com/lodash/lodash/blob/master/isPlainObject.js\n */\nfunction getTag(value) {\n if (value === null) {\n return value === undefined ? '[object Undefined]' : '[object Null]';\n }\n\n return Object.prototype.toString.call(value);\n}\n\nfunction isObjectLike(value) {\n return _typeof(value) === 'object' && value !== null;\n}\n/**\n * Checks if `value` is a plain object.\n *\n * A plain object is an object created by the `Object`\n * constructor or with a `[[Prototype]]` of `null`.\n */\n\n\nexport function isPlainObject(value) {\n if (!isObjectLike(value) || getTag(value) !== '[object Object]') {\n return false;\n }\n\n if (Object.getPrototypeOf(value) === null) {\n return true;\n }\n\n var proto = value;\n\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n\n return Object.getPrototypeOf(value) === proto;\n}","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport { findIndex } from \"./findIndex.js\";\nimport { uniq } from \"./uniq.js\";\n\nvar mergeWithRest = function mergeWithRest(left, right) {\n var facets = right.facets,\n disjunctiveFacets = right.disjunctiveFacets,\n facetsRefinements = right.facetsRefinements,\n facetsExcludes = right.facetsExcludes,\n disjunctiveFacetsRefinements = right.disjunctiveFacetsRefinements,\n numericRefinements = right.numericRefinements,\n tagRefinements = right.tagRefinements,\n hierarchicalFacets = right.hierarchicalFacets,\n hierarchicalFacetsRefinements = right.hierarchicalFacetsRefinements,\n ruleContexts = right.ruleContexts,\n rest = _objectWithoutProperties(right, [\"facets\", \"disjunctiveFacets\", \"facetsRefinements\", \"facetsExcludes\", \"disjunctiveFacetsRefinements\", \"numericRefinements\", \"tagRefinements\", \"hierarchicalFacets\", \"hierarchicalFacetsRefinements\", \"ruleContexts\"]);\n\n return left.setQueryParameters(rest);\n}; // Merge facets\n\n\nvar mergeFacets = function mergeFacets(left, right) {\n return right.facets.reduce(function (_, name) {\n return _.addFacet(name);\n }, left);\n};\n\nvar mergeDisjunctiveFacets = function mergeDisjunctiveFacets(left, right) {\n return right.disjunctiveFacets.reduce(function (_, name) {\n return _.addDisjunctiveFacet(name);\n }, left);\n};\n\nvar mergeHierarchicalFacets = function mergeHierarchicalFacets(left, right) {\n return left.setQueryParameters({\n hierarchicalFacets: right.hierarchicalFacets.reduce(function (facets, facet) {\n var index = findIndex(facets, function (_) {\n return _.name === facet.name;\n });\n\n if (index === -1) {\n return facets.concat(facet);\n }\n\n var nextFacets = facets.slice();\n nextFacets.splice(index, 1, facet);\n return nextFacets;\n }, left.hierarchicalFacets)\n });\n}; // Merge facet refinements\n\n\nvar mergeTagRefinements = function mergeTagRefinements(left, right) {\n return right.tagRefinements.reduce(function (_, value) {\n return _.addTagRefinement(value);\n }, left);\n};\n\nvar mergeFacetRefinements = function mergeFacetRefinements(left, right) {\n return left.setQueryParameters({\n facetsRefinements: _objectSpread(_objectSpread({}, left.facetsRefinements), right.facetsRefinements)\n });\n};\n\nvar mergeFacetsExcludes = function mergeFacetsExcludes(left, right) {\n return left.setQueryParameters({\n facetsExcludes: _objectSpread(_objectSpread({}, left.facetsExcludes), right.facetsExcludes)\n });\n};\n\nvar mergeDisjunctiveFacetsRefinements = function mergeDisjunctiveFacetsRefinements(left, right) {\n return left.setQueryParameters({\n disjunctiveFacetsRefinements: _objectSpread(_objectSpread({}, left.disjunctiveFacetsRefinements), right.disjunctiveFacetsRefinements)\n });\n};\n\nvar mergeNumericRefinements = function mergeNumericRefinements(left, right) {\n return left.setQueryParameters({\n numericRefinements: _objectSpread(_objectSpread({}, left.numericRefinements), right.numericRefinements)\n });\n};\n\nvar mergeHierarchicalFacetsRefinements = function mergeHierarchicalFacetsRefinements(left, right) {\n return left.setQueryParameters({\n hierarchicalFacetsRefinements: _objectSpread(_objectSpread({}, left.hierarchicalFacetsRefinements), right.hierarchicalFacetsRefinements)\n });\n};\n\nvar mergeRuleContexts = function mergeRuleContexts(left, right) {\n var ruleContexts = uniq([].concat(left.ruleContexts).concat(right.ruleContexts).filter(Boolean));\n\n if (ruleContexts.length > 0) {\n return left.setQueryParameters({\n ruleContexts: ruleContexts\n });\n }\n\n return left;\n};\n\nexport var mergeSearchParameters = function mergeSearchParameters() {\n for (var _len = arguments.length, parameters = new Array(_len), _key = 0; _key < _len; _key++) {\n parameters[_key] = arguments[_key];\n }\n\n return parameters.reduce(function (left, right) {\n var hierarchicalFacetsRefinementsMerged = mergeHierarchicalFacetsRefinements(left, right);\n var hierarchicalFacetsMerged = mergeHierarchicalFacets(hierarchicalFacetsRefinementsMerged, right);\n var tagRefinementsMerged = mergeTagRefinements(hierarchicalFacetsMerged, right);\n var numericRefinementsMerged = mergeNumericRefinements(tagRefinementsMerged, right);\n var disjunctiveFacetsRefinementsMerged = mergeDisjunctiveFacetsRefinements(numericRefinementsMerged, right);\n var facetsExcludesMerged = mergeFacetsExcludes(disjunctiveFacetsRefinementsMerged, right);\n var facetRefinementsMerged = mergeFacetRefinements(facetsExcludesMerged, right);\n var disjunctiveFacetsMerged = mergeDisjunctiveFacets(facetRefinementsMerged, right);\n var ruleContextsMerged = mergeRuleContexts(disjunctiveFacetsMerged, right);\n var facetsMerged = mergeFacets(ruleContextsMerged, right);\n return mergeWithRest(facetsMerged, right);\n });\n};","// We aren't using the native `Array.prototype.findIndex` because the refactor away from Lodash is not\n// published as a major version.\n// Relying on the `findIndex` polyfill on user-land, which before was only required for niche use-cases,\n// was decided as too risky.\n// @MAJOR Replace with the native `Array.prototype.findIndex` method\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/findIndex\nexport function findIndex(array, comparator) {\n if (!Array.isArray(array)) {\n return -1;\n }\n\n for (var i = 0; i < array.length; i++) {\n if (comparator(array[i])) {\n return i;\n }\n }\n\n return -1;\n}","export function noop() {}","// eslint-disable-next-line no-restricted-globals\n\n/**\n * Runs code on browser environments safely.\n */\nexport function safelyRunOnBrowser(callback) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n fallback: function fallback() {\n return undefined;\n }\n },\n fallback = _ref.fallback;\n\n // eslint-disable-next-line no-restricted-globals\n if (typeof window === 'undefined') {\n return fallback();\n } // eslint-disable-next-line no-restricted-globals\n\n\n return callback({\n window: window\n });\n}","export function serializePayload(payload) {\n return btoa(encodeURIComponent(JSON.stringify(payload)));\n}\nexport function deserializePayload(serialized) {\n return JSON.parse(decodeURIComponent(atob(serialized)));\n}","export function uniq(array) {\n return array.filter(function (value, index, self) {\n return self.indexOf(value) === index;\n });\n}","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nexport function range(_ref) {\n var _ref$start = _ref.start,\n start = _ref$start === void 0 ? 0 : _ref$start,\n end = _ref.end,\n _ref$step = _ref.step,\n step = _ref$step === void 0 ? 1 : _ref$step;\n // We can't divide by 0 so we re-assign the step to 1 if it happens.\n var limitStep = step === 0 ? 1 : step; // In some cases the array to create has a decimal length.\n // We therefore need to round the value.\n // Example:\n // { start: 1, end: 5000, step: 500 }\n // => Array length = (5000 - 1) / 500 = 9.998\n\n var arrayLength = Math.round((end - start) / limitStep);\n return _toConsumableArray(Array(arrayLength)).map(function (_, current) {\n return start + current * limitStep;\n });\n}","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { range } from \"../../lib/utils/index.js\";\n\nvar Paginator = /*#__PURE__*/function () {\n function Paginator(params) {\n _classCallCheck(this, Paginator);\n\n _defineProperty(this, \"currentPage\", void 0);\n\n _defineProperty(this, \"total\", void 0);\n\n _defineProperty(this, \"padding\", void 0);\n\n this.currentPage = params.currentPage;\n this.total = params.total;\n this.padding = params.padding;\n }\n\n _createClass(Paginator, [{\n key: \"pages\",\n value: function pages() {\n var total = this.total,\n currentPage = this.currentPage,\n padding = this.padding;\n if (total === 0) return [0];\n var totalDisplayedPages = this.nbPagesDisplayed(padding, total);\n\n if (totalDisplayedPages === total) {\n return range({\n end: total\n });\n }\n\n var paddingLeft = this.calculatePaddingLeft(currentPage, padding, total, totalDisplayedPages);\n var paddingRight = totalDisplayedPages - paddingLeft;\n var first = currentPage - paddingLeft;\n var last = currentPage + paddingRight;\n return range({\n start: first,\n end: last\n });\n }\n }, {\n key: \"nbPagesDisplayed\",\n value: function nbPagesDisplayed(padding, total) {\n return Math.min(2 * padding + 1, total);\n }\n }, {\n key: \"calculatePaddingLeft\",\n value: function calculatePaddingLeft(current, padding, total, totalDisplayedPages) {\n if (current <= padding) {\n return current;\n }\n\n if (current >= total - padding) {\n return totalDisplayedPages - (total - current);\n }\n\n return padding;\n }\n }, {\n key: \"isLastPage\",\n value: function isLastPage() {\n return this.currentPage === this.total - 1 || this.total === 0;\n }\n }, {\n key: \"isFirstPage\",\n value: function isFirstPage() {\n return this.currentPage === 0;\n }\n }]);\n\n return Paginator;\n}();\n\nexport default Paginator;","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { checkRendering, createDocumentationMessageGenerator, noop } from \"../../lib/utils/index.js\";\nimport Paginator from \"./Paginator.js\";\nvar withUsage = createDocumentationMessageGenerator({\n name: 'pagination',\n connector: true\n});\n\n/**\n * **Pagination** connector provides the logic to build a widget that will let the user\n * choose the current page of the results.\n *\n * When using the pagination with Algolia, you should be aware that the engine won't provide you pages\n * beyond the 1000th hits by default. You can find more information on the [Algolia documentation](https://www.algolia.com/doc/guides/searching/pagination/#pagination-limitations).\n */\nvar connectPagination = function connectPagination(renderFn) {\n var unmountFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n checkRendering(renderFn, withUsage());\n return function (widgetParams) {\n var _ref = widgetParams || {},\n totalPages = _ref.totalPages,\n _ref$padding = _ref.padding,\n padding = _ref$padding === void 0 ? 3 : _ref$padding;\n\n var pager = new Paginator({\n currentPage: 0,\n total: 0,\n padding: padding\n });\n var connectorState = {};\n\n function getMaxPage(_ref2) {\n var nbPages = _ref2.nbPages;\n return totalPages !== undefined ? Math.min(totalPages, nbPages) : nbPages;\n }\n\n return {\n $$type: 'ais.pagination',\n init: function init(initOptions) {\n var instantSearchInstance = initOptions.instantSearchInstance;\n renderFn(_objectSpread(_objectSpread({}, this.getWidgetRenderState(initOptions)), {}, {\n instantSearchInstance: instantSearchInstance\n }), true);\n },\n render: function render(renderOptions) {\n var instantSearchInstance = renderOptions.instantSearchInstance;\n renderFn(_objectSpread(_objectSpread({}, this.getWidgetRenderState(renderOptions)), {}, {\n instantSearchInstance: instantSearchInstance\n }), false);\n },\n dispose: function dispose(_ref3) {\n var state = _ref3.state;\n unmountFn();\n return state.setQueryParameter('page', undefined);\n },\n getWidgetUiState: function getWidgetUiState(uiState, _ref4) {\n var searchParameters = _ref4.searchParameters;\n var page = searchParameters.page || 0;\n\n if (!page) {\n return uiState;\n }\n\n return _objectSpread(_objectSpread({}, uiState), {}, {\n page: page + 1\n });\n },\n getWidgetSearchParameters: function getWidgetSearchParameters(searchParameters, _ref5) {\n var uiState = _ref5.uiState;\n var page = uiState.page ? uiState.page - 1 : 0;\n return searchParameters.setQueryParameter('page', page);\n },\n getWidgetRenderState: function getWidgetRenderState(_ref6) {\n var results = _ref6.results,\n helper = _ref6.helper,\n state = _ref6.state,\n createURL = _ref6.createURL;\n\n if (!connectorState.refine) {\n connectorState.refine = function (page) {\n helper.setPage(page);\n helper.search();\n };\n }\n\n if (!connectorState.createURL) {\n connectorState.createURL = function (helperState) {\n return function (page) {\n return createURL(helperState.setPage(page));\n };\n };\n }\n\n var page = state.page || 0;\n var nbPages = getMaxPage(results || {\n nbPages: 0\n });\n pager.currentPage = page;\n pager.total = nbPages;\n return {\n createURL: connectorState.createURL(state),\n refine: connectorState.refine,\n canRefine: nbPages > 1,\n currentRefinement: page,\n nbHits: (results === null || results === void 0 ? void 0 : results.nbHits) || 0,\n nbPages: nbPages,\n pages: results ? pager.pages() : [],\n isFirstPage: pager.isFirstPage(),\n isLastPage: pager.isLastPage(),\n widgetParams: widgetParams\n };\n },\n getRenderState: function getRenderState(renderState, renderOptions) {\n return _objectSpread(_objectSpread({}, renderState), {}, {\n pagination: this.getWidgetRenderState(renderOptions)\n });\n }\n };\n };\n};\n\nexport default connectPagination;","export function cx() {\n for (var _len = arguments.length, classNames = new Array(_len), _key = 0; _key < _len; _key++) {\n classNames[_key] = arguments[_key];\n }\n\n return classNames.filter(Boolean).join(' ');\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"pages\", \"currentPage\", \"nbPages\", \"isFirstPage\", \"isLastPage\", \"showFirst\", \"showPrevious\", \"showNext\", \"showLast\", \"createURL\", \"onNavigate\", \"translations\", \"classNames\"],\n _excluded2 = [\"isDisabled\", \"className\", \"classNames\", \"href\", \"onClick\"];\nimport React from 'react';\nimport { cx } from \"./lib/cx.js\";\nimport { isModifierClick } from \"./lib/isModifierClick.js\";\nexport function Pagination(_ref) {\n var pages = _ref.pages,\n currentPage = _ref.currentPage,\n nbPages = _ref.nbPages,\n isFirstPage = _ref.isFirstPage,\n isLastPage = _ref.isLastPage,\n _ref$showFirst = _ref.showFirst,\n showFirst = _ref$showFirst === void 0 ? true : _ref$showFirst,\n _ref$showPrevious = _ref.showPrevious,\n showPrevious = _ref$showPrevious === void 0 ? true : _ref$showPrevious,\n _ref$showNext = _ref.showNext,\n showNext = _ref$showNext === void 0 ? true : _ref$showNext,\n _ref$showLast = _ref.showLast,\n showLast = _ref$showLast === void 0 ? true : _ref$showLast,\n createURL = _ref.createURL,\n onNavigate = _ref.onNavigate,\n translations = _ref.translations,\n _ref$classNames = _ref.classNames,\n classNames = _ref$classNames === void 0 ? {} : _ref$classNames,\n props = _objectWithoutProperties(_ref, _excluded);\n\n var firstPageIndex = 0;\n var previousPageIndex = currentPage - 1;\n var nextPageIndex = currentPage + 1;\n var lastPageIndex = nbPages - 1;\n return /*#__PURE__*/React.createElement(\"div\", _extends({}, props, {\n className: cx('ais-Pagination', classNames.root, nbPages <= 1 && cx('ais-Pagination--noRefinement', classNames.noRefinementRoot), props.className)\n }), /*#__PURE__*/React.createElement(\"ul\", {\n className: cx('ais-Pagination-list', classNames.list)\n }, showFirst && /*#__PURE__*/React.createElement(PaginationItem, {\n isDisabled: isFirstPage,\n className: cx('ais-Pagination-item--firstPage', classNames.firstPageItem),\n classNames: classNames,\n \"aria-label\": translations.firstPageItemAriaLabel,\n href: createURL(firstPageIndex),\n onClick: function onClick() {\n return onNavigate(firstPageIndex);\n }\n }, translations.firstPageItemText), showPrevious && /*#__PURE__*/React.createElement(PaginationItem, {\n isDisabled: isFirstPage,\n className: cx('ais-Pagination-item--previousPage', classNames.previousPageItem),\n classNames: classNames,\n \"aria-label\": translations.previousPageItemAriaLabel,\n href: createURL(previousPageIndex),\n onClick: function onClick() {\n return onNavigate(previousPageIndex);\n }\n }, translations.previousPageItemText), pages.map(function (page) {\n return /*#__PURE__*/React.createElement(PaginationItem, {\n key: page,\n isDisabled: false,\n className: cx('ais-Pagination-item--page', classNames.pageItem, page === currentPage && cx('ais-Pagination-item--selected', classNames.selectedItem)),\n classNames: classNames,\n \"aria-label\": translations.pageItemAriaLabel({\n currentPage: page + 1,\n nbPages: nbPages\n }),\n href: createURL(page),\n onClick: function onClick() {\n return onNavigate(page);\n }\n }, translations.pageItemText({\n currentPage: page + 1,\n nbPages: nbPages\n }));\n }), showNext && /*#__PURE__*/React.createElement(PaginationItem, {\n isDisabled: isLastPage,\n className: cx('ais-Pagination-item--nextPage', classNames.nextPageItem),\n classNames: classNames,\n \"aria-label\": translations.nextPageItemAriaLabel,\n href: createURL(nextPageIndex),\n onClick: function onClick() {\n return onNavigate(nextPageIndex);\n }\n }, translations.nextPageItemText), showLast && /*#__PURE__*/React.createElement(PaginationItem, {\n isDisabled: isLastPage,\n className: cx('ais-Pagination-item--lastPage', classNames.lastPageItem),\n classNames: classNames,\n \"aria-label\": translations.lastPageItemAriaLabel,\n href: createURL(lastPageIndex),\n onClick: function onClick() {\n return onNavigate(lastPageIndex);\n }\n }, translations.lastPageItemText)));\n}\n\nfunction PaginationItem(_ref2) {\n var isDisabled = _ref2.isDisabled,\n className = _ref2.className,\n classNames = _ref2.classNames,\n href = _ref2.href,\n _onClick = _ref2.onClick,\n props = _objectWithoutProperties(_ref2, _excluded2);\n\n if (isDisabled) {\n return /*#__PURE__*/React.createElement(\"li\", {\n className: cx('ais-Pagination-item', classNames.item, 'ais-Pagination-item--disabled', classNames.disabledItem, className)\n }, /*#__PURE__*/React.createElement(\"span\", _extends({\n className: cx('ais-Pagination-link', classNames.link)\n }, props)));\n }\n\n return /*#__PURE__*/React.createElement(\"li\", {\n className: cx('ais-Pagination-item', classNames.item, className)\n }, /*#__PURE__*/React.createElement(\"a\", _extends({\n className: cx('ais-Pagination-link', classNames.link),\n href: href,\n onClick: function onClick(event) {\n if (isModifierClick(event)) {\n return;\n }\n\n event.preventDefault();\n\n _onClick(event);\n }\n }, props)));\n}","export function isModifierClick(event) {\n var isMiddleClick = event.button === 1;\n return Boolean(isMiddleClick || event.altKey || event.ctrlKey || event.metaKey || event.shiftKey);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"showFirst\", \"showPrevious\", \"showNext\", \"showLast\", \"padding\", \"totalPages\", \"translations\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nimport React from 'react';\nimport { usePagination } from 'react-instantsearch-hooks';\nimport { Pagination as PaginationUiComponent } from \"../ui/Pagination.js\";\nexport function Pagination(_ref) {\n var showFirst = _ref.showFirst,\n showPrevious = _ref.showPrevious,\n showNext = _ref.showNext,\n showLast = _ref.showLast,\n padding = _ref.padding,\n totalPages = _ref.totalPages,\n translations = _ref.translations,\n props = _objectWithoutProperties(_ref, _excluded);\n\n var _usePagination = usePagination({\n padding: padding,\n totalPages: totalPages\n }, {\n $$widgetType: 'ais.pagination'\n }),\n pages = _usePagination.pages,\n currentRefinement = _usePagination.currentRefinement,\n isFirstPage = _usePagination.isFirstPage,\n isLastPage = _usePagination.isLastPage,\n nbPages = _usePagination.nbPages,\n createURL = _usePagination.createURL,\n refine = _usePagination.refine;\n\n var uiProps = {\n pages: pages,\n currentPage: currentRefinement,\n isFirstPage: isFirstPage,\n isLastPage: isLastPage,\n nbPages: nbPages,\n createURL: createURL,\n onNavigate: refine,\n translations: _objectSpread({\n firstPageItemText: '‹‹',\n previousPageItemText: '‹',\n nextPageItemText: '›',\n lastPageItemText: '››',\n pageItemText: function pageItemText(_ref2) {\n var currentPage = _ref2.currentPage;\n return String(currentPage);\n },\n firstPageItemAriaLabel: 'First',\n previousPageItemAriaLabel: 'Previous',\n nextPageItemAriaLabel: 'Next',\n lastPageItemAriaLabel: 'Last',\n pageItemAriaLabel: function pageItemAriaLabel(_ref3) {\n var currentPage = _ref3.currentPage;\n return \"Page \".concat(currentPage);\n }\n }, translations)\n };\n return /*#__PURE__*/React.createElement(PaginationUiComponent, _extends({}, props, uiProps, {\n showFirst: showFirst,\n showPrevious: showPrevious,\n showNext: showNext,\n showLast: showLast\n }));\n}","import connectPagination from \"instantsearch.js/es/connectors/pagination/connectPagination.js\";\nimport { useConnector } from \"../hooks/useConnector.js\";\nexport function usePagination(props, additionalWidgetProperties) {\n return useConnector(connectPagination, props, additionalWidgetProperties);\n}","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport algoliasearchHelper from 'algoliasearch-helper';\nimport { createDocumentationMessageGenerator, isPlainObject, mergeSearchParameters, noop } from \"../../lib/utils/index.js\";\n/**\n * Refine the given search parameters.\n */\n\nvar withUsage = createDocumentationMessageGenerator({\n name: 'configure',\n connector: true\n});\n\nfunction getInitialSearchParameters(state, widgetParams) {\n // We leverage the helper internals to remove the `widgetParams` from\n // the state. The function `setQueryParameters` omits the values that\n // are `undefined` on the next state.\n return state.setQueryParameters(Object.keys(widgetParams.searchParameters).reduce(function (acc, key) {\n return _objectSpread(_objectSpread({}, acc), {}, _defineProperty({}, key, undefined));\n }, {}));\n}\n\nvar connectConfigure = function connectConfigure() {\n var renderFn = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : noop;\n var unmountFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n return function (widgetParams) {\n if (!widgetParams || !isPlainObject(widgetParams.searchParameters)) {\n throw new Error(withUsage('The `searchParameters` option expects an object.'));\n }\n\n var connectorState = {};\n\n function refine(helper) {\n return function (searchParameters) {\n // Merge new `searchParameters` with the ones set from other widgets\n var actualState = getInitialSearchParameters(helper.state, widgetParams);\n var nextSearchParameters = mergeSearchParameters(actualState, new algoliasearchHelper.SearchParameters(searchParameters)); // Update original `widgetParams.searchParameters` to the new refined one\n\n widgetParams.searchParameters = searchParameters; // Trigger a search with the resolved search parameters\n\n helper.setState(nextSearchParameters).search();\n };\n }\n\n return {\n $$type: 'ais.configure',\n init: function init(initOptions) {\n var instantSearchInstance = initOptions.instantSearchInstance;\n renderFn(_objectSpread(_objectSpread({}, this.getWidgetRenderState(initOptions)), {}, {\n instantSearchInstance: instantSearchInstance\n }), true);\n },\n render: function render(renderOptions) {\n var instantSearchInstance = renderOptions.instantSearchInstance;\n renderFn(_objectSpread(_objectSpread({}, this.getWidgetRenderState(renderOptions)), {}, {\n instantSearchInstance: instantSearchInstance\n }), false);\n },\n dispose: function dispose(_ref) {\n var state = _ref.state;\n unmountFn();\n return getInitialSearchParameters(state, widgetParams);\n },\n getRenderState: function getRenderState(renderState, renderOptions) {\n var _renderState$configur;\n\n var widgetRenderState = this.getWidgetRenderState(renderOptions);\n return _objectSpread(_objectSpread({}, renderState), {}, {\n configure: _objectSpread(_objectSpread({}, widgetRenderState), {}, {\n widgetParams: _objectSpread(_objectSpread({}, widgetRenderState.widgetParams), {}, {\n searchParameters: mergeSearchParameters(new algoliasearchHelper.SearchParameters((_renderState$configur = renderState.configure) === null || _renderState$configur === void 0 ? void 0 : _renderState$configur.widgetParams.searchParameters), new algoliasearchHelper.SearchParameters(widgetRenderState.widgetParams.searchParameters)).getQueryParams()\n })\n })\n });\n },\n getWidgetRenderState: function getWidgetRenderState(_ref2) {\n var helper = _ref2.helper;\n\n if (!connectorState.refine) {\n connectorState.refine = refine(helper);\n }\n\n return {\n refine: connectorState.refine,\n widgetParams: widgetParams\n };\n },\n getWidgetSearchParameters: function getWidgetSearchParameters(state, _ref3) {\n var uiState = _ref3.uiState;\n return mergeSearchParameters(state, new algoliasearchHelper.SearchParameters(_objectSpread(_objectSpread({}, uiState.configure), widgetParams.searchParameters)));\n },\n getWidgetUiState: function getWidgetUiState(uiState) {\n return _objectSpread(_objectSpread({}, uiState), {}, {\n configure: _objectSpread(_objectSpread({}, uiState.configure), widgetParams.searchParameters)\n });\n }\n };\n };\n};\n\nexport default connectConfigure;","import { useConfigure } from \"../connectors/useConfigure.js\";\nexport function Configure(props) {\n useConfigure(props, {\n $$widgetType: 'ais.configure'\n });\n return null;\n}","import connectConfigure from \"instantsearch.js/es/connectors/configure/connectConfigure.js\";\nimport { useConnector } from \"../hooks/useConnector.js\";\nexport function useConfigure(props, additionalWidgetProperties) {\n return useConnector(connectConfigure, {\n searchParameters: props\n }, additionalWidgetProperties);\n}","export function isIndexWidget(widget) {\n return widget.$$type === 'ais.index';\n}","export function createInitArgs(instantSearchInstance, parent, uiState) {\n var helper = parent.getHelper();\n return {\n uiState: uiState,\n helper: helper,\n parent: parent,\n instantSearchInstance: instantSearchInstance,\n state: helper.state,\n renderState: instantSearchInstance.renderState,\n templatesConfig: instantSearchInstance.templatesConfig,\n createURL: parent.createURL,\n scopedResults: [],\n searchMetadata: {\n isSearchStalled: instantSearchInstance.status === 'stalled'\n },\n status: instantSearchInstance.status,\n error: instantSearchInstance.error\n };\n}\nexport function createRenderArgs(instantSearchInstance, parent) {\n var results = parent.getResults();\n return {\n helper: parent.getHelper(),\n parent: parent,\n instantSearchInstance: instantSearchInstance,\n results: results,\n scopedResults: parent.getScopedResults(),\n state: results._state,\n renderState: instantSearchInstance.renderState,\n templatesConfig: instantSearchInstance.templatesConfig,\n createURL: parent.createURL,\n searchMetadata: {\n isSearchStalled: instantSearchInstance.status === 'stalled'\n },\n status: instantSearchInstance.status,\n error: instantSearchInstance.error\n };\n}","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport algoliasearchHelper from 'algoliasearch-helper';\nimport { checkIndexUiState, createDocumentationMessageGenerator, resolveSearchParameters, mergeSearchParameters, warning, isIndexWidget, createInitArgs, createRenderArgs } from \"../../lib/utils/index.js\";\nvar withUsage = createDocumentationMessageGenerator({\n name: 'index-widget'\n});\n\n/**\n * This is the same content as helper._change / setState, but allowing for extra\n * UiState to be synchronized.\n * see: https://github.com/algolia/algoliasearch-helper-js/blob/6b835ffd07742f2d6b314022cce6848f5cfecd4a/src/algoliasearch.helper.js#L1311-L1324\n */\nfunction privateHelperSetState(helper, _ref) {\n var state = _ref.state,\n isPageReset = _ref.isPageReset,\n _uiState = _ref._uiState;\n\n if (state !== helper.state) {\n helper.state = state;\n helper.emit('change', {\n state: helper.state,\n results: helper.lastResults,\n isPageReset: isPageReset,\n _uiState: _uiState\n });\n }\n}\n\nfunction getLocalWidgetsUiState(widgets, widgetStateOptions) {\n var initialUiState = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return widgets.reduce(function (uiState, widget) {\n if (isIndexWidget(widget)) {\n return uiState;\n }\n\n if (!widget.getWidgetUiState && !widget.getWidgetState) {\n return uiState;\n }\n\n if (widget.getWidgetUiState) {\n return widget.getWidgetUiState(uiState, widgetStateOptions);\n }\n\n return widget.getWidgetState(uiState, widgetStateOptions);\n }, initialUiState);\n}\n\nfunction getLocalWidgetsSearchParameters(widgets, widgetSearchParametersOptions) {\n var initialSearchParameters = widgetSearchParametersOptions.initialSearchParameters,\n rest = _objectWithoutProperties(widgetSearchParametersOptions, [\"initialSearchParameters\"]);\n\n return widgets.filter(function (widget) {\n return !isIndexWidget(widget);\n }).reduce(function (state, widget) {\n if (!widget.getWidgetSearchParameters) {\n return state;\n }\n\n return widget.getWidgetSearchParameters(state, rest);\n }, initialSearchParameters);\n}\n\nfunction resetPageFromWidgets(widgets) {\n var indexWidgets = widgets.filter(isIndexWidget);\n\n if (indexWidgets.length === 0) {\n return;\n }\n\n indexWidgets.forEach(function (widget) {\n var widgetHelper = widget.getHelper();\n privateHelperSetState(widgetHelper, {\n state: widgetHelper.state.resetPage(),\n isPageReset: true\n });\n resetPageFromWidgets(widget.getWidgets());\n });\n}\n\nfunction resolveScopedResultsFromWidgets(widgets) {\n var indexWidgets = widgets.filter(isIndexWidget);\n return indexWidgets.reduce(function (scopedResults, current) {\n return scopedResults.concat.apply(scopedResults, [{\n indexId: current.getIndexId(),\n results: current.getResults(),\n helper: current.getHelper()\n }].concat(_toConsumableArray(resolveScopedResultsFromWidgets(current.getWidgets()))));\n }, []);\n}\n\nvar index = function index(widgetParams) {\n if (widgetParams === undefined || widgetParams.indexName === undefined) {\n throw new Error(withUsage('The `indexName` option is required.'));\n }\n\n var indexName = widgetParams.indexName,\n _widgetParams$indexId = widgetParams.indexId,\n indexId = _widgetParams$indexId === void 0 ? indexName : _widgetParams$indexId;\n var localWidgets = [];\n var localUiState = {};\n var localInstantSearchInstance = null;\n var localParent = null;\n var helper = null;\n var derivedHelper = null;\n return {\n $$type: 'ais.index',\n $$widgetType: 'ais.index',\n getIndexName: function getIndexName() {\n return indexName;\n },\n getIndexId: function getIndexId() {\n return indexId;\n },\n getHelper: function getHelper() {\n return helper;\n },\n getResults: function getResults() {\n return derivedHelper && derivedHelper.lastResults;\n },\n getScopedResults: function getScopedResults() {\n var widgetParent = this.getParent(); // If the widget is the root, we consider itself as the only sibling.\n\n var widgetSiblings = widgetParent ? widgetParent.getWidgets() : [this];\n return resolveScopedResultsFromWidgets(widgetSiblings);\n },\n getParent: function getParent() {\n return localParent;\n },\n createURL: function createURL(nextState) {\n return localInstantSearchInstance._createURL(_defineProperty({}, indexId, getLocalWidgetsUiState(localWidgets, {\n searchParameters: nextState,\n helper: helper\n })));\n },\n getWidgets: function getWidgets() {\n return localWidgets;\n },\n addWidgets: function addWidgets(widgets) {\n var _this = this;\n\n if (!Array.isArray(widgets)) {\n throw new Error(withUsage('The `addWidgets` method expects an array of widgets.'));\n }\n\n if (widgets.some(function (widget) {\n return typeof widget.init !== 'function' && typeof widget.render !== 'function';\n })) {\n throw new Error(withUsage('The widget definition expects a `render` and/or an `init` method.'));\n }\n\n localWidgets = localWidgets.concat(widgets);\n\n if (localInstantSearchInstance && Boolean(widgets.length)) {\n privateHelperSetState(helper, {\n state: getLocalWidgetsSearchParameters(localWidgets, {\n uiState: localUiState,\n initialSearchParameters: helper.state\n }),\n _uiState: localUiState\n }); // We compute the render state before calling `init` in a separate loop\n // to construct the whole render state object that is then passed to\n // `init`.\n\n widgets.forEach(function (widget) {\n if (widget.getRenderState) {\n var renderState = widget.getRenderState(localInstantSearchInstance.renderState[_this.getIndexId()] || {}, createInitArgs(localInstantSearchInstance, _this, localInstantSearchInstance._initialUiState));\n storeRenderState({\n renderState: renderState,\n instantSearchInstance: localInstantSearchInstance,\n parent: _this\n });\n }\n });\n widgets.forEach(function (widget) {\n if (widget.init) {\n widget.init(createInitArgs(localInstantSearchInstance, _this, localInstantSearchInstance._initialUiState));\n }\n });\n localInstantSearchInstance.scheduleSearch();\n }\n\n return this;\n },\n removeWidgets: function removeWidgets(widgets) {\n var _this2 = this;\n\n if (!Array.isArray(widgets)) {\n throw new Error(withUsage('The `removeWidgets` method expects an array of widgets.'));\n }\n\n if (widgets.some(function (widget) {\n return typeof widget.dispose !== 'function';\n })) {\n throw new Error(withUsage('The widget definition expects a `dispose` method.'));\n }\n\n localWidgets = localWidgets.filter(function (widget) {\n return widgets.indexOf(widget) === -1;\n });\n\n if (localInstantSearchInstance && Boolean(widgets.length)) {\n var nextState = widgets.reduce(function (state, widget) {\n // the `dispose` method exists at this point we already assert it\n var next = widget.dispose({\n helper: helper,\n state: state,\n parent: _this2\n });\n return next || state;\n }, helper.state);\n localUiState = getLocalWidgetsUiState(localWidgets, {\n searchParameters: nextState,\n helper: helper\n });\n helper.setState(getLocalWidgetsSearchParameters(localWidgets, {\n uiState: localUiState,\n initialSearchParameters: nextState\n }));\n\n if (localWidgets.length) {\n localInstantSearchInstance.scheduleSearch();\n }\n }\n\n return this;\n },\n init: function init(_ref2) {\n var _this3 = this,\n _instantSearchInstanc;\n\n var instantSearchInstance = _ref2.instantSearchInstance,\n parent = _ref2.parent,\n uiState = _ref2.uiState;\n\n if (helper !== null) {\n // helper is already initialized, therefore we do not need to set up\n // any listeners\n return;\n }\n\n localInstantSearchInstance = instantSearchInstance;\n localParent = parent;\n localUiState = uiState[indexId] || {}; // The `mainHelper` is already defined at this point. The instance is created\n // inside InstantSearch at the `start` method, which occurs before the `init`\n // step.\n\n var mainHelper = instantSearchInstance.mainHelper;\n var parameters = getLocalWidgetsSearchParameters(localWidgets, {\n uiState: localUiState,\n initialSearchParameters: new algoliasearchHelper.SearchParameters({\n index: indexName\n })\n }); // This Helper is only used for state management we do not care about the\n // `searchClient`. Only the \"main\" Helper created at the `InstantSearch`\n // level is aware of the client.\n\n helper = algoliasearchHelper({}, parameters.index, parameters); // We forward the call to `search` to the \"main\" instance of the Helper\n // which is responsible for managing the queries (it's the only one that is\n // aware of the `searchClient`).\n\n helper.search = function () {\n if (instantSearchInstance.onStateChange) {\n instantSearchInstance.onStateChange({\n uiState: instantSearchInstance.mainIndex.getWidgetUiState({}),\n setUiState: function setUiState(nextState) {\n return instantSearchInstance.setUiState(nextState, false);\n }\n }); // We don't trigger a search when controlled because it becomes the\n // responsibility of `setUiState`.\n\n return mainHelper;\n }\n\n return mainHelper.search();\n };\n\n helper.searchWithoutTriggeringOnStateChange = function () {\n return mainHelper.search();\n }; // We use the same pattern for the `searchForFacetValues`.\n\n\n helper.searchForFacetValues = function (facetName, facetValue, maxFacetHits, userState) {\n var state = helper.state.setQueryParameters(userState);\n return mainHelper.searchForFacetValues(facetName, facetValue, maxFacetHits, state);\n };\n\n derivedHelper = mainHelper.derive(function () {\n return mergeSearchParameters.apply(void 0, _toConsumableArray(resolveSearchParameters(_this3)));\n });\n var indexInitialResults = (_instantSearchInstanc = instantSearchInstance._initialResults) === null || _instantSearchInstanc === void 0 ? void 0 : _instantSearchInstanc[this.getIndexId()];\n\n if (indexInitialResults) {\n // We restore the shape of the results provided to the instance to respect\n // the helper's structure.\n var results = new algoliasearchHelper.SearchResults(new algoliasearchHelper.SearchParameters(indexInitialResults.state), indexInitialResults.results);\n derivedHelper.lastResults = results;\n helper.lastResults = results;\n } // Subscribe to the Helper state changes for the page before widgets\n // are initialized. This behavior mimics the original one of the Helper.\n // It makes sense to replicate it at the `init` step. We have another\n // listener on `change` below, once `init` is done.\n\n\n helper.on('change', function (_ref3) {\n var isPageReset = _ref3.isPageReset;\n\n if (isPageReset) {\n resetPageFromWidgets(localWidgets);\n }\n });\n derivedHelper.on('search', function () {\n // The index does not manage the \"staleness\" of the search. This is the\n // responsibility of the main instance. It does not make sense to manage\n // it at the index level because it's either: all of them or none of them\n // that are stalled. The queries are performed into a single network request.\n instantSearchInstance.scheduleStalledRender();\n\n if (process.env.NODE_ENV === 'development') {\n checkIndexUiState({\n index: _this3,\n indexUiState: localUiState\n });\n }\n });\n derivedHelper.on('result', function (_ref4) {\n var results = _ref4.results;\n // The index does not render the results it schedules a new render\n // to let all the other indices emit their own results. It allows us to\n // run the render process in one pass.\n instantSearchInstance.scheduleRender(); // the derived helper is the one which actually searches, but the helper\n // which is exposed e.g. via instance.helper, doesn't search, and thus\n // does not have access to lastResults, which it used to in pre-federated\n // search behavior.\n\n helper.lastResults = results;\n }); // We compute the render state before calling `init` in a separate loop\n // to construct the whole render state object that is then passed to\n // `init`.\n\n localWidgets.forEach(function (widget) {\n if (widget.getRenderState) {\n var renderState = widget.getRenderState(instantSearchInstance.renderState[_this3.getIndexId()] || {}, createInitArgs(instantSearchInstance, _this3, uiState));\n storeRenderState({\n renderState: renderState,\n instantSearchInstance: instantSearchInstance,\n parent: _this3\n });\n }\n });\n localWidgets.forEach(function (widget) {\n process.env.NODE_ENV === 'development' ? warning( // if it has NO getWidgetState or if it has getWidgetUiState, we don't warn\n // aka we warn if there's _only_ getWidgetState\n !widget.getWidgetState || Boolean(widget.getWidgetUiState), 'The `getWidgetState` method is renamed `getWidgetUiState` and will no longer exist under that name in InstantSearch.js 5.x. Please use `getWidgetUiState` instead.') : void 0;\n\n if (widget.init) {\n widget.init(createInitArgs(instantSearchInstance, _this3, uiState));\n }\n }); // Subscribe to the Helper state changes for the `uiState` once widgets\n // are initialized. Until the first render, state changes are part of the\n // configuration step. This is mainly for backward compatibility with custom\n // widgets. When the subscription happens before the `init` step, the (static)\n // configuration of the widget is pushed in the URL. That's what we want to avoid.\n // https://github.com/algolia/instantsearch.js/pull/994/commits/4a672ae3fd78809e213de0368549ef12e9dc9454\n\n helper.on('change', function (event) {\n var state = event.state;\n var _uiState = event._uiState;\n localUiState = getLocalWidgetsUiState(localWidgets, {\n searchParameters: state,\n helper: helper\n }, _uiState || {}); // We don't trigger an internal change when controlled because it\n // becomes the responsibility of `setUiState`.\n\n if (!instantSearchInstance.onStateChange) {\n instantSearchInstance.onInternalStateChange();\n }\n });\n\n if (indexInitialResults) {\n // If there are initial results, we're not notified of the next results\n // because we don't trigger an initial search. We therefore need to directly\n // schedule a render that will render the results injected on the helper.\n instantSearchInstance.scheduleRender();\n }\n },\n render: function render(_ref5) {\n var _this4 = this;\n\n var instantSearchInstance = _ref5.instantSearchInstance;\n\n if (!this.getResults()) {\n return;\n }\n\n localWidgets.forEach(function (widget) {\n if (widget.getRenderState) {\n var renderState = widget.getRenderState(instantSearchInstance.renderState[_this4.getIndexId()] || {}, createRenderArgs(instantSearchInstance, _this4));\n storeRenderState({\n renderState: renderState,\n instantSearchInstance: instantSearchInstance,\n parent: _this4\n });\n }\n });\n localWidgets.forEach(function (widget) {\n // At this point, all the variables used below are set. Both `helper`\n // and `derivedHelper` have been created at the `init` step. The attribute\n // `lastResults` might be `null` though. It's possible that a stalled render\n // happens before the result e.g with a dynamically added index the request might\n // be delayed. The render is triggered for the complete tree but some parts do\n // not have results yet.\n if (widget.render) {\n widget.render(createRenderArgs(instantSearchInstance, _this4));\n }\n });\n },\n dispose: function dispose() {\n var _this5 = this;\n\n localWidgets.forEach(function (widget) {\n if (widget.dispose) {\n // The dispose function is always called once the instance is started\n // (it's an effect of `removeWidgets`). The index is initialized and\n // the Helper is available. We don't care about the return value of\n // `dispose` because the index is removed. We can't call `removeWidgets`\n // because we want to keep the widgets on the instance, to allow idempotent\n // operations on `add` & `remove`.\n widget.dispose({\n helper: helper,\n state: helper.state,\n parent: _this5\n });\n }\n });\n localInstantSearchInstance = null;\n localParent = null;\n helper.removeAllListeners();\n helper = null;\n derivedHelper.detach();\n derivedHelper = null;\n },\n getWidgetUiState: function getWidgetUiState(uiState) {\n return localWidgets.filter(isIndexWidget).reduce(function (previousUiState, innerIndex) {\n return innerIndex.getWidgetUiState(previousUiState);\n }, _objectSpread(_objectSpread({}, uiState), {}, _defineProperty({}, this.getIndexId(), localUiState)));\n },\n getWidgetState: function getWidgetState(uiState) {\n process.env.NODE_ENV === 'development' ? warning(false, 'The `getWidgetState` method is renamed `getWidgetUiState` and will no longer exist under that name in InstantSearch.js 5.x. Please use `getWidgetUiState` instead.') : void 0;\n return this.getWidgetUiState(uiState);\n },\n getWidgetSearchParameters: function getWidgetSearchParameters(searchParameters, _ref6) {\n var uiState = _ref6.uiState;\n return getLocalWidgetsSearchParameters(localWidgets, {\n uiState: uiState,\n initialSearchParameters: searchParameters\n });\n },\n refreshUiState: function refreshUiState() {\n localUiState = getLocalWidgetsUiState(localWidgets, {\n searchParameters: this.getHelper().state,\n helper: this.getHelper()\n }, localUiState);\n }\n };\n};\n\nexport default index;\n\nfunction storeRenderState(_ref7) {\n var renderState = _ref7.renderState,\n instantSearchInstance = _ref7.instantSearchInstance,\n parent = _ref7.parent;\n var parentIndexName = parent ? parent.getIndexId() : instantSearchInstance.mainIndex.getIndexId();\n instantSearchInstance.renderState = _objectSpread(_objectSpread({}, instantSearchInstance.renderState), {}, _defineProperty({}, parentIndexName, _objectSpread(_objectSpread({}, instantSearchInstance.renderState[parentIndexName]), renderState)));\n}","export function resolveSearchParameters(current) {\n var parent = current.getParent();\n var states = [current.getHelper().state];\n\n while (parent !== null) {\n states = [parent.getHelper().state].concat(states);\n parent = parent.getParent();\n }\n\n return states;\n}","export default '4.47.0';","var NAMESPACE = 'ais';\nexport var component = function component(componentName) {\n return function () {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n descendantName = _ref.descendantName,\n modifierName = _ref.modifierName;\n\n var descendent = descendantName ? \"-\".concat(descendantName) : '';\n var modifier = modifierName ? \"--\".concat(modifierName) : '';\n return \"\".concat(NAMESPACE, \"-\").concat(componentName).concat(descendent).concat(modifier);\n };\n};","export function getPropertyByPath(object, path) {\n var parts = Array.isArray(path) ? path : path.split('.');\n return parts.reduce(function (current, key) {\n return current && current[key];\n }, object);\n}","import { component } from \"../lib/suit.js\";\nimport { getPropertyByPath, TAG_REPLACEMENT, warning } from \"../lib/utils/index.js\";\nvar suit = component('Highlight');\nexport default function highlight(_ref) {\n var attribute = _ref.attribute,\n _ref$highlightedTagNa = _ref.highlightedTagName,\n highlightedTagName = _ref$highlightedTagNa === void 0 ? 'mark' : _ref$highlightedTagNa,\n hit = _ref.hit,\n _ref$cssClasses = _ref.cssClasses,\n cssClasses = _ref$cssClasses === void 0 ? {} : _ref$cssClasses;\n var highlightAttributeResult = getPropertyByPath(hit._highlightResult, attribute); // @MAJOR fallback to attribute value if highlight is not found\n\n process.env.NODE_ENV === 'development' ? warning(highlightAttributeResult, \"Could not enable highlight for \\\"\".concat(attribute, \"\\\", will display an empty string.\\nPlease check whether this attribute exists and is either searchable or specified in `attributesToHighlight`.\\n\\nSee: https://alg.li/highlighting\\n\")) : void 0;\n\n var _ref2 = highlightAttributeResult || {},\n _ref2$value = _ref2.value,\n attributeValue = _ref2$value === void 0 ? '' : _ref2$value; // cx is not used, since it would be bundled as a dependency for Vue & Angular\n\n\n var className = suit({\n descendantName: 'highlighted'\n }) + (cssClasses.highlighted ? \" \".concat(cssClasses.highlighted) : '');\n return attributeValue.replace(new RegExp(TAG_REPLACEMENT.highlightPreTag, 'g'), \"<\".concat(highlightedTagName, \" class=\\\"\").concat(className, \"\\\">\")).replace(new RegExp(TAG_REPLACEMENT.highlightPostTag, 'g'), \"\"));\n}","import { TAG_REPLACEMENT } from \"./escape-highlight.js\";\nexport function concatHighlightedParts(parts) {\n var highlightPreTag = TAG_REPLACEMENT.highlightPreTag,\n highlightPostTag = TAG_REPLACEMENT.highlightPostTag;\n return parts.map(function (part) {\n return part.isHighlighted ? highlightPreTag + part.value + highlightPostTag : part.value;\n }).join('');\n}","import { unescape } from \"./escape-html.js\";\nvar hasAlphanumeric = new RegExp(/\\w/i);\nexport function getHighlightFromSiblings(parts, i) {\n var _parts, _parts2;\n\n var current = parts[i];\n var isNextHighlighted = ((_parts = parts[i + 1]) === null || _parts === void 0 ? void 0 : _parts.isHighlighted) || true;\n var isPreviousHighlighted = ((_parts2 = parts[i - 1]) === null || _parts2 === void 0 ? void 0 : _parts2.isHighlighted) || true;\n\n if (!hasAlphanumeric.test(unescape(current.value)) && isPreviousHighlighted === isNextHighlighted) {\n return isPreviousHighlighted;\n }\n\n return current.isHighlighted;\n}","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { getHighlightFromSiblings } from \"./getHighlightFromSiblings.js\";\nexport function reverseHighlightedParts(parts) {\n if (!parts.some(function (part) {\n return part.isHighlighted;\n })) {\n return parts.map(function (part) {\n return _objectSpread(_objectSpread({}, part), {}, {\n isHighlighted: false\n });\n });\n }\n\n return parts.map(function (part, i) {\n return _objectSpread(_objectSpread({}, part), {}, {\n isHighlighted: !getHighlightFromSiblings(parts, i)\n });\n });\n}","import { TAG_REPLACEMENT } from \"./escape-highlight.js\";\nexport function getHighlightedParts(highlightedValue) {\n var highlightPostTag = TAG_REPLACEMENT.highlightPostTag,\n highlightPreTag = TAG_REPLACEMENT.highlightPreTag;\n var splitByPreTag = highlightedValue.split(highlightPreTag);\n var firstValue = splitByPreTag.shift();\n var elements = !firstValue ? [] : [{\n value: firstValue,\n isHighlighted: false\n }];\n splitByPreTag.forEach(function (split) {\n var splitByPostTag = split.split(highlightPostTag);\n elements.push({\n value: splitByPostTag[0],\n isHighlighted: true\n });\n\n if (splitByPostTag[1] !== '') {\n elements.push({\n value: splitByPostTag[1],\n isHighlighted: false\n });\n }\n });\n return elements;\n}","import { TAG_REPLACEMENT, getPropertyByPath, getHighlightedParts, reverseHighlightedParts, concatHighlightedParts, warning } from \"../lib/utils/index.js\";\nimport { component } from \"../lib/suit.js\";\nvar suit = component('ReverseHighlight');\nexport default function reverseHighlight(_ref) {\n var attribute = _ref.attribute,\n _ref$highlightedTagNa = _ref.highlightedTagName,\n highlightedTagName = _ref$highlightedTagNa === void 0 ? 'mark' : _ref$highlightedTagNa,\n hit = _ref.hit,\n _ref$cssClasses = _ref.cssClasses,\n cssClasses = _ref$cssClasses === void 0 ? {} : _ref$cssClasses;\n var highlightAttributeResult = getPropertyByPath(hit._highlightResult, attribute); // @MAJOR fallback to attribute value if highlight is not found\n\n process.env.NODE_ENV === 'development' ? warning(highlightAttributeResult, \"Could not enable reverse highlight for \\\"\".concat(attribute, \"\\\", will display an empty string.\\nPlease check whether this attribute exists and is either searchable or specified in `attributesToHighlight`.\\n\\nSee: https://alg.li/highlighting\\n\")) : void 0;\n\n var _ref2 = highlightAttributeResult || {},\n _ref2$value = _ref2.value,\n attributeValue = _ref2$value === void 0 ? '' : _ref2$value; // cx is not used, since it would be bundled as a dependency for Vue & Angular\n\n\n var className = suit({\n descendantName: 'highlighted'\n }) + (cssClasses.highlighted ? \" \".concat(cssClasses.highlighted) : '');\n var reverseHighlightedValue = concatHighlightedParts(reverseHighlightedParts(getHighlightedParts(attributeValue)));\n return reverseHighlightedValue.replace(new RegExp(TAG_REPLACEMENT.highlightPreTag, 'g'), \"<\".concat(highlightedTagName, \" class=\\\"\").concat(className, \"\\\">\")).replace(new RegExp(TAG_REPLACEMENT.highlightPostTag, 'g'), \"\"));\n}","import { component } from \"../lib/suit.js\";\nimport { TAG_REPLACEMENT, getPropertyByPath, warning } from \"../lib/utils/index.js\";\nvar suit = component('Snippet');\nexport default function snippet(_ref) {\n var attribute = _ref.attribute,\n _ref$highlightedTagNa = _ref.highlightedTagName,\n highlightedTagName = _ref$highlightedTagNa === void 0 ? 'mark' : _ref$highlightedTagNa,\n hit = _ref.hit,\n _ref$cssClasses = _ref.cssClasses,\n cssClasses = _ref$cssClasses === void 0 ? {} : _ref$cssClasses;\n var snippetAttributeResult = getPropertyByPath(hit._snippetResult, attribute); // @MAJOR fallback to attribute value if snippet is not found\n\n process.env.NODE_ENV === 'development' ? warning(snippetAttributeResult, \"Could not enable snippet for \\\"\".concat(attribute, \"\\\", will display an empty string.\\nPlease check whether this attribute exists and is specified in `attributesToSnippet`.\\n\\nSee: https://alg.li/highlighting\\n\")) : void 0;\n\n var _ref2 = snippetAttributeResult || {},\n _ref2$value = _ref2.value,\n attributeValue = _ref2$value === void 0 ? '' : _ref2$value; // cx is not used, since it would be bundled as a dependency for Vue & Angular\n\n\n var className = suit({\n descendantName: 'highlighted'\n }) + (cssClasses.highlighted ? \" \".concat(cssClasses.highlighted) : '');\n return attributeValue.replace(new RegExp(TAG_REPLACEMENT.highlightPreTag, 'g'), \"<\".concat(highlightedTagName, \" class=\\\"\").concat(className, \"\\\">\")).replace(new RegExp(TAG_REPLACEMENT.highlightPostTag, 'g'), \"\"));\n}","import { TAG_REPLACEMENT, getPropertyByPath, getHighlightedParts, reverseHighlightedParts, concatHighlightedParts, warning } from \"../lib/utils/index.js\";\nimport { component } from \"../lib/suit.js\";\nvar suit = component('ReverseSnippet');\nexport default function reverseSnippet(_ref) {\n var attribute = _ref.attribute,\n _ref$highlightedTagNa = _ref.highlightedTagName,\n highlightedTagName = _ref$highlightedTagNa === void 0 ? 'mark' : _ref$highlightedTagNa,\n hit = _ref.hit,\n _ref$cssClasses = _ref.cssClasses,\n cssClasses = _ref$cssClasses === void 0 ? {} : _ref$cssClasses;\n var snippetAttributeResult = getPropertyByPath(hit._snippetResult, attribute); // @MAJOR fallback to attribute value if snippet is not found\n\n process.env.NODE_ENV === 'development' ? warning(snippetAttributeResult, \"Could not enable reverse snippet for \\\"\".concat(attribute, \"\\\", will display an empty string.\\nPlease check whether this attribute exists and is specified in `attributesToSnippet`.\\n\\nSee: https://alg.li/highlighting\\n\")) : void 0;\n\n var _ref2 = snippetAttributeResult || {},\n _ref2$value = _ref2.value,\n attributeValue = _ref2$value === void 0 ? '' : _ref2$value; // cx is not used, since it would be bundled as a dependency for Vue & Angular\n\n\n var className = suit({\n descendantName: 'highlighted'\n }) + (cssClasses.highlighted ? \" \".concat(cssClasses.highlighted) : '');\n var reverseHighlightedValue = concatHighlightedParts(reverseHighlightedParts(getHighlightedParts(attributeValue)));\n return reverseHighlightedValue.replace(new RegExp(TAG_REPLACEMENT.highlightPreTag, 'g'), \"<\".concat(highlightedTagName, \" class=\\\"\").concat(className, \"\\\">\")).replace(new RegExp(TAG_REPLACEMENT.highlightPostTag, 'g'), \"\"));\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport { warning, serializePayload, deserializePayload } from \"../lib/utils/index.js\";\nexport function readDataAttributes(domElement) {\n var method = domElement.getAttribute('data-insights-method');\n var serializedPayload = domElement.getAttribute('data-insights-payload');\n\n if (typeof serializedPayload !== 'string') {\n throw new Error('The insights helper expects `data-insights-payload` to be a base64-encoded JSON string.');\n }\n\n try {\n var payload = deserializePayload(serializedPayload);\n return {\n method: method,\n payload: payload\n };\n } catch (error) {\n throw new Error('The insights helper was unable to parse `data-insights-payload`.');\n }\n}\nexport function hasDataAttributes(domElement) {\n return domElement.hasAttribute('data-insights-method');\n}\nexport function writeDataAttributes(_ref) {\n var method = _ref.method,\n payload = _ref.payload;\n\n if (_typeof(payload) !== 'object') {\n throw new Error(\"The insights helper expects the payload to be an object.\");\n }\n\n var serializedPayload;\n\n try {\n serializedPayload = serializePayload(payload);\n } catch (error) {\n throw new Error(\"Could not JSON serialize the payload object.\");\n }\n\n return \"data-insights-method=\\\"\".concat(method, \"\\\" data-insights-payload=\\\"\").concat(serializedPayload, \"\\\"\");\n}\n/**\n * @deprecated This function will be still supported in 4.x releases, but not further. It is replaced by the `insights` middleware. For more information, visit https://www.algolia.com/doc/guides/getting-insights-and-analytics/search-analytics/click-through-and-conversions/how-to/send-click-and-conversion-events-with-instantsearch/js/\n */\n\nexport default function insights(method, payload) {\n process.env.NODE_ENV === 'development' ? warning(false, \"`insights` function has been deprecated. It is still supported in 4.x releases, but not further. It is replaced by the `insights` middleware.\\n\\nFor more information, visit https://www.algolia.com/doc/guides/getting-insights-and-analytics/search-analytics/click-through-and-conversions/how-to/send-click-and-conversion-events-with-instantsearch/js/\") : void 0;\n return writeDataAttributes({\n method: method,\n payload: payload\n });\n}","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { highlight as _highlight, reverseHighlight as _reverseHighlight, snippet as _snippet, reverseSnippet as _reverseSnippet, insights as _insights } from \"../helpers/index.js\";\nimport { formatNumber as _formatNumber } from \"./formatNumber.js\";\nexport default function hoganHelpers(_ref) {\n var numberLocale = _ref.numberLocale;\n return {\n formatNumber: function formatNumber(value, render) {\n return _formatNumber(Number(render(value)), numberLocale);\n },\n highlight: function highlight(options, render) {\n try {\n var highlightOptions = JSON.parse(options);\n return render(_highlight(_objectSpread(_objectSpread({}, highlightOptions), {}, {\n hit: this\n })));\n } catch (error) {\n throw new Error(\"\\nThe highlight helper expects a JSON object of the format:\\n{ \\\"attribute\\\": \\\"name\\\", \\\"highlightedTagName\\\": \\\"mark\\\" }\");\n }\n },\n reverseHighlight: function reverseHighlight(options, render) {\n try {\n var reverseHighlightOptions = JSON.parse(options);\n return render(_reverseHighlight(_objectSpread(_objectSpread({}, reverseHighlightOptions), {}, {\n hit: this\n })));\n } catch (error) {\n throw new Error(\"\\n The reverseHighlight helper expects a JSON object of the format:\\n { \\\"attribute\\\": \\\"name\\\", \\\"highlightedTagName\\\": \\\"mark\\\" }\");\n }\n },\n snippet: function snippet(options, render) {\n try {\n var snippetOptions = JSON.parse(options);\n return render(_snippet(_objectSpread(_objectSpread({}, snippetOptions), {}, {\n hit: this\n })));\n } catch (error) {\n throw new Error(\"\\nThe snippet helper expects a JSON object of the format:\\n{ \\\"attribute\\\": \\\"name\\\", \\\"highlightedTagName\\\": \\\"mark\\\" }\");\n }\n },\n reverseSnippet: function reverseSnippet(options, render) {\n try {\n var reverseSnippetOptions = JSON.parse(options);\n return render(_reverseSnippet(_objectSpread(_objectSpread({}, reverseSnippetOptions), {}, {\n hit: this\n })));\n } catch (error) {\n throw new Error(\"\\n The reverseSnippet helper expects a JSON object of the format:\\n { \\\"attribute\\\": \\\"name\\\", \\\"highlightedTagName\\\": \\\"mark\\\" }\");\n }\n },\n insights: function insights(options, render) {\n try {\n var _JSON$parse = JSON.parse(options),\n method = _JSON$parse.method,\n payload = _JSON$parse.payload;\n\n return render(_insights(method, _objectSpread({\n objectIDs: [this.objectID]\n }, payload)));\n } catch (error) {\n throw new Error(\"\\nThe insights helper expects a JSON object of the format:\\n{ \\\"method\\\": \\\"method-name\\\", \\\"payload\\\": { \\\"eventName\\\": \\\"name of the event\\\" } }\");\n }\n }\n };\n}","export function formatNumber(value, numberLocale) {\n return value.toLocaleString(numberLocale);\n}","var nextMicroTask = Promise.resolve();\nexport function defer(callback) {\n var progress = null;\n var cancelled = false;\n\n var fn = function fn() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (progress !== null) {\n return;\n }\n\n progress = nextMicroTask.then(function () {\n progress = null;\n\n if (cancelled) {\n cancelled = false;\n return;\n }\n\n callback.apply(void 0, args);\n });\n };\n\n fn.wait = function () {\n if (progress === null) {\n throw new Error('The deferred function should be called before calling `wait()`');\n }\n\n return progress;\n };\n\n fn.cancel = function () {\n if (progress === null) {\n return;\n }\n\n cancelled = true;\n };\n\n return fn;\n}","import { isIndexWidget } from \"./isIndexWidget.js\";\nimport { checkIndexUiState } from \"./checkIndexUiState.js\";\nexport function setIndexHelperState(finalUiState, indexWidget) {\n var nextIndexUiState = finalUiState[indexWidget.getIndexId()] || {};\n\n if (process.env.NODE_ENV === 'development') {\n checkIndexUiState({\n index: indexWidget,\n indexUiState: nextIndexUiState\n });\n }\n\n indexWidget.getHelper().setState(indexWidget.getWidgetSearchParameters(indexWidget.getHelper().state, {\n uiState: nextIndexUiState\n }));\n indexWidget.getWidgets().filter(isIndexWidget).forEach(function (widget) {\n return setIndexHelperState(finalUiState, widget);\n });\n}","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction getIndexStateWithoutConfigure(uiState) {\n var configure = uiState.configure,\n trackedUiState = _objectWithoutProperties(uiState, [\"configure\"]);\n\n return trackedUiState;\n} // technically a URL could contain any key, since users provide it,\n// which is why the input to this function is UiState, not something\n// which excludes \"configure\" as this function does.\n\n\nexport default function simpleStateMapping() {\n return {\n stateToRoute: function stateToRoute(uiState) {\n return Object.keys(uiState).reduce(function (state, indexId) {\n return _objectSpread(_objectSpread({}, state), {}, _defineProperty({}, indexId, getIndexStateWithoutConfigure(uiState[indexId])));\n }, {});\n },\n routeToState: function routeToState() {\n var routeState = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return Object.keys(routeState).reduce(function (state, indexId) {\n return _objectSpread(_objectSpread({}, state), {}, _defineProperty({}, indexId, getIndexStateWithoutConfigure(routeState[indexId])));\n }, {});\n }\n };\n}","function isPrimitive(obj) {\n return obj !== Object(obj);\n}\n\nexport function isEqual(first, second) {\n if (first === second) {\n return true;\n }\n\n if (isPrimitive(first) || isPrimitive(second) || typeof first === 'function' || typeof second === 'function') {\n return first === second;\n }\n\n if (Object.keys(first).length !== Object.keys(second).length) {\n return false;\n }\n\n for (var _i = 0, _Object$keys = Object.keys(first); _i < _Object$keys.length; _i++) {\n var key = _Object$keys[_i];\n\n if (!(key in second)) {\n return false;\n }\n\n if (!isEqual(first[key], second[key])) {\n return false;\n }\n }\n\n return true;\n}","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport simpleStateMapping from \"../lib/stateMappings/simple.js\";\nimport historyRouter from \"../lib/routers/history.js\";\nimport { isEqual } from \"../lib/utils/index.js\";\nexport var createRouterMiddleware = function createRouterMiddleware() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var _props$router = props.router,\n router = _props$router === void 0 ? historyRouter() : _props$router,\n _props$stateMapping = props.stateMapping,\n stateMapping = _props$stateMapping === void 0 ? simpleStateMapping() : _props$stateMapping;\n return function (_ref) {\n var instantSearchInstance = _ref.instantSearchInstance;\n\n function topLevelCreateURL(nextState) {\n var uiState = Object.keys(nextState).reduce(function (acc, indexId) {\n return _objectSpread(_objectSpread({}, acc), {}, _defineProperty({}, indexId, nextState[indexId]));\n }, instantSearchInstance.mainIndex.getWidgetUiState({}));\n var route = stateMapping.stateToRoute(uiState);\n return router.createURL(route);\n } // casting to UiState here to keep createURL unaware of custom UiState\n // (as long as it's an object, it's ok)\n\n\n instantSearchInstance._createURL = topLevelCreateURL;\n var lastRouteState = undefined;\n var initialUiState = instantSearchInstance._initialUiState;\n return {\n onStateChange: function onStateChange(_ref2) {\n var uiState = _ref2.uiState;\n var routeState = stateMapping.stateToRoute(uiState);\n\n if (lastRouteState === undefined || !isEqual(lastRouteState, routeState)) {\n router.write(routeState);\n lastRouteState = routeState;\n }\n },\n subscribe: function subscribe() {\n instantSearchInstance._initialUiState = _objectSpread(_objectSpread({}, initialUiState), stateMapping.routeToState(router.read()));\n router.onUpdate(function (route) {\n instantSearchInstance.setUiState(stateMapping.routeToState(route));\n });\n },\n started: function started() {},\n unsubscribe: function unsubscribe() {\n router.dispose();\n }\n };\n };\n};","import { createInitArgs, safelyRunOnBrowser } from \"../lib/utils/index.js\";\n\nfunction extractPayload(widgets, instantSearchInstance, payload) {\n var initOptions = createInitArgs(instantSearchInstance, instantSearchInstance.mainIndex, instantSearchInstance._initialUiState);\n widgets.forEach(function (widget) {\n var widgetParams = {};\n\n if (widget.getWidgetRenderState) {\n var renderState = widget.getWidgetRenderState(initOptions);\n\n if (renderState && renderState.widgetParams) {\n // casting, as we just earlier checked widgetParams exists, and thus an object\n widgetParams = renderState.widgetParams;\n }\n } // since we destructure in all widgets, the parameters with defaults are set to \"undefined\"\n\n\n var params = Object.keys(widgetParams).filter(function (key) {\n return widgetParams[key] !== undefined;\n });\n payload.widgets.push({\n type: widget.$$type,\n widgetType: widget.$$widgetType,\n params: params\n });\n\n if (widget.$$type === 'ais.index') {\n extractPayload(widget.getWidgets(), instantSearchInstance, payload);\n }\n });\n}\n\nexport function isMetadataEnabled() {\n return safelyRunOnBrowser(function (_ref) {\n var _window$navigator, _window$navigator$use;\n\n var window = _ref.window;\n return ((_window$navigator = window.navigator) === null || _window$navigator === void 0 ? void 0 : (_window$navigator$use = _window$navigator.userAgent) === null || _window$navigator$use === void 0 ? void 0 : _window$navigator$use.indexOf('Algolia Crawler')) > -1;\n }, {\n fallback: function fallback() {\n return false;\n }\n });\n}\n/**\n * Exposes the metadata of mounted widgets in a custom\n * `` tag. The metadata per widget is:\n * - applied parameters\n * - widget name\n * - connector name\n */\n\nexport function createMetadataMiddleware() {\n return function (_ref2) {\n var instantSearchInstance = _ref2.instantSearchInstance;\n var payload = {\n widgets: []\n };\n var payloadContainer = document.createElement('meta');\n var refNode = document.querySelector('head');\n payloadContainer.name = 'instantsearch:widgets';\n return {\n onStateChange: function onStateChange() {},\n subscribe: function subscribe() {\n // using setTimeout here to delay extraction until widgets have been added in a tick (e.g. Vue)\n setTimeout(function () {\n var client = instantSearchInstance.client;\n payload.ua = client.transporter && client.transporter.userAgent ? client.transporter.userAgent.value : client._ua;\n extractPayload(instantSearchInstance.mainIndex.getWidgets(), instantSearchInstance, payload);\n payloadContainer.content = JSON.stringify(payload);\n refNode.appendChild(payloadContainer);\n }, 0);\n },\n started: function started() {},\n unsubscribe: function unsubscribe() {\n payloadContainer.remove();\n }\n };\n };\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport algoliasearchHelper from 'algoliasearch-helper';\nimport EventEmitter from '@algolia/events';\nimport index from \"../widgets/index/index.js\";\nimport version from \"./version.js\";\nimport createHelpers from \"./createHelpers.js\";\nimport { createDocumentationMessageGenerator, createDocumentationLink, defer, noop, warning, setIndexHelperState } from \"./utils/index.js\";\nimport { createRouterMiddleware } from \"../middlewares/createRouterMiddleware.js\";\nimport { createMetadataMiddleware, isMetadataEnabled } from \"../middlewares/createMetadataMiddleware.js\";\nvar withUsage = createDocumentationMessageGenerator({\n name: 'instantsearch'\n});\n\nfunction defaultCreateURL() {\n return '#';\n} // this purposely breaks typescript's type inference to ensure it's not used\n// as it's used for a default parameter for example\n// source: https://github.com/Microsoft/TypeScript/issues/14829#issuecomment-504042546\n\n\n/**\n * The actual implementation of the InstantSearch. This is\n * created using the `instantsearch` factory function.\n * It emits the 'render' event every time a search is done\n */\nvar InstantSearch = /*#__PURE__*/function (_EventEmitter) {\n _inherits(InstantSearch, _EventEmitter);\n\n var _super = _createSuper(InstantSearch);\n\n function InstantSearch(options) {\n var _this;\n\n _classCallCheck(this, InstantSearch);\n\n _this = _super.call(this);\n\n _defineProperty(_assertThisInitialized(_this), \"client\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"indexName\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"insightsClient\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"onStateChange\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"helper\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"mainHelper\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"mainIndex\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"started\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"templatesConfig\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"renderState\", {});\n\n _defineProperty(_assertThisInitialized(_this), \"_stalledSearchDelay\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_searchStalledTimer\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_initialUiState\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_initialResults\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_createURL\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_searchFunction\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"_mainHelperSearch\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"middleware\", []);\n\n _defineProperty(_assertThisInitialized(_this), \"sendEventToInsights\", void 0);\n\n _defineProperty(_assertThisInitialized(_this), \"status\", 'idle');\n\n _defineProperty(_assertThisInitialized(_this), \"error\", undefined);\n\n _defineProperty(_assertThisInitialized(_this), \"scheduleSearch\", defer(function () {\n if (_this.started) {\n _this.mainHelper.search();\n }\n }));\n\n _defineProperty(_assertThisInitialized(_this), \"scheduleRender\", defer(function () {\n var shouldResetStatus = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n if (!_this.mainHelper.hasPendingRequests()) {\n clearTimeout(_this._searchStalledTimer);\n _this._searchStalledTimer = null;\n\n if (shouldResetStatus) {\n _this.status = 'idle';\n _this.error = undefined;\n }\n }\n\n _this.mainIndex.render({\n instantSearchInstance: _assertThisInitialized(_this)\n });\n\n _this.emit('render');\n }));\n\n _defineProperty(_assertThisInitialized(_this), \"onInternalStateChange\", defer(function () {\n var nextUiState = _this.mainIndex.getWidgetUiState({});\n\n _this.middleware.forEach(function (_ref) {\n var instance = _ref.instance;\n instance.onStateChange({\n uiState: nextUiState\n });\n });\n }));\n\n var _options$indexName = options.indexName,\n indexName = _options$indexName === void 0 ? null : _options$indexName,\n numberLocale = options.numberLocale,\n _options$initialUiSta = options.initialUiState,\n initialUiState = _options$initialUiSta === void 0 ? {} : _options$initialUiSta,\n _options$routing = options.routing,\n routing = _options$routing === void 0 ? null : _options$routing,\n searchFunction = options.searchFunction,\n _options$stalledSearc = options.stalledSearchDelay,\n stalledSearchDelay = _options$stalledSearc === void 0 ? 200 : _options$stalledSearc,\n _options$searchClient = options.searchClient,\n searchClient = _options$searchClient === void 0 ? null : _options$searchClient,\n _options$insightsClie = options.insightsClient,\n insightsClient = _options$insightsClie === void 0 ? null : _options$insightsClie,\n _options$onStateChang = options.onStateChange,\n onStateChange = _options$onStateChang === void 0 ? null : _options$onStateChang;\n\n if (indexName === null) {\n throw new Error(withUsage('The `indexName` option is required.'));\n }\n\n if (searchClient === null) {\n throw new Error(withUsage('The `searchClient` option is required.'));\n }\n\n if (typeof searchClient.search !== 'function') {\n throw new Error(\"The `searchClient` must implement a `search` method.\\n\\nSee: https://www.algolia.com/doc/guides/building-search-ui/going-further/backend-search/in-depth/backend-instantsearch/js/\");\n }\n\n if (typeof searchClient.addAlgoliaAgent === 'function') {\n searchClient.addAlgoliaAgent(\"instantsearch.js (\".concat(version, \")\"));\n }\n\n process.env.NODE_ENV === 'development' ? warning(insightsClient === null, \"`insightsClient` property has been deprecated. It is still supported in 4.x releases, but not further. It is replaced by the `insights` middleware.\\n\\nFor more information, visit https://www.algolia.com/doc/guides/getting-insights-and-analytics/search-analytics/click-through-and-conversions/how-to/send-click-and-conversion-events-with-instantsearch/js/\") : void 0;\n\n if (insightsClient && typeof insightsClient !== 'function') {\n throw new Error(withUsage('The `insightsClient` option should be a function.'));\n }\n\n process.env.NODE_ENV === 'development' ? warning(!options.searchParameters, \"The `searchParameters` option is deprecated and will not be supported in InstantSearch.js 4.x.\\n\\nYou can replace it with the `configure` widget:\\n\\n```\\nsearch.addWidgets([\\n configure(\".concat(JSON.stringify(options.searchParameters, null, 2), \")\\n]);\\n```\\n\\nSee \").concat(createDocumentationLink({\n name: 'configure'\n }))) : void 0;\n _this.client = searchClient;\n _this.insightsClient = insightsClient;\n _this.indexName = indexName;\n _this.helper = null;\n _this.mainHelper = null;\n _this.mainIndex = index({\n indexName: indexName\n });\n _this.onStateChange = onStateChange;\n _this.started = false;\n _this.templatesConfig = {\n helpers: createHelpers({\n numberLocale: numberLocale\n }),\n compileOptions: {}\n };\n _this._stalledSearchDelay = stalledSearchDelay;\n _this._searchStalledTimer = null;\n _this._createURL = defaultCreateURL;\n _this._initialUiState = initialUiState;\n _this._initialResults = null;\n\n if (searchFunction) {\n _this._searchFunction = searchFunction;\n }\n\n _this.sendEventToInsights = noop;\n\n if (routing) {\n var routerOptions = typeof routing === 'boolean' ? undefined : routing;\n\n _this.use(createRouterMiddleware(routerOptions));\n }\n\n if (isMetadataEnabled()) {\n _this.use(createMetadataMiddleware());\n }\n\n return _this;\n }\n /**\n * Hooks a middleware into the InstantSearch lifecycle.\n */\n\n\n _createClass(InstantSearch, [{\n key: \"_isSearchStalled\",\n get:\n /**\n * The status of the search. Can be \"idle\", \"loading\", \"stalled\", or \"error\".\n */\n\n /**\n * The last returned error from the Search API.\n * The error gets cleared when the next valid search response is rendered.\n */\n\n /**\n * @deprecated use `status === 'stalled'` instead\n */\n function get() {\n process.env.NODE_ENV === 'development' ? warning(false, \"`InstantSearch._isSearchStalled` is deprecated and will be removed in InstantSearch.js 5.0.\\n\\nUse `InstantSearch.status === \\\"stalled\\\"` instead.\") : void 0;\n return this.status === 'stalled';\n }\n }, {\n key: \"use\",\n value: function use() {\n var _this2 = this;\n\n for (var _len = arguments.length, middleware = new Array(_len), _key = 0; _key < _len; _key++) {\n middleware[_key] = arguments[_key];\n }\n\n var newMiddlewareList = middleware.map(function (fn) {\n var newMiddleware = _objectSpread({\n subscribe: noop,\n started: noop,\n unsubscribe: noop,\n onStateChange: noop\n }, fn({\n instantSearchInstance: _this2\n }));\n\n _this2.middleware.push({\n creator: fn,\n instance: newMiddleware\n });\n\n return newMiddleware;\n }); // If the instance has already started, we directly subscribe the\n // middleware so they're notified of changes.\n\n if (this.started) {\n newMiddlewareList.forEach(function (m) {\n m.subscribe();\n m.started();\n });\n }\n\n return this;\n }\n /**\n * Removes a middleware from the InstantSearch lifecycle.\n */\n\n }, {\n key: \"unuse\",\n value: function unuse() {\n for (var _len2 = arguments.length, middlewareToUnuse = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n middlewareToUnuse[_key2] = arguments[_key2];\n }\n\n this.middleware.filter(function (m) {\n return middlewareToUnuse.includes(m.creator);\n }).forEach(function (m) {\n return m.instance.unsubscribe();\n });\n this.middleware = this.middleware.filter(function (m) {\n return !middlewareToUnuse.includes(m.creator);\n });\n return this;\n } // @major we shipped with EXPERIMENTAL_use, but have changed that to just `use` now\n\n }, {\n key: \"EXPERIMENTAL_use\",\n value: function EXPERIMENTAL_use() {\n process.env.NODE_ENV === 'development' ? warning(false, 'The middleware API is now considered stable, so we recommend replacing `EXPERIMENTAL_use` with `use` before upgrading to the next major version.') : void 0;\n return this.use.apply(this, arguments);\n }\n /**\n * Adds a widget to the search instance.\n * A widget can be added either before or after InstantSearch has started.\n * @param widget The widget to add to InstantSearch.\n *\n * @deprecated This method will still be supported in 4.x releases, but not further. It is replaced by `addWidgets([widget])`.\n */\n\n }, {\n key: \"addWidget\",\n value: function addWidget(widget) {\n process.env.NODE_ENV === 'development' ? warning(false, 'addWidget will still be supported in 4.x releases, but not further. It is replaced by `addWidgets([widget])`') : void 0;\n return this.addWidgets([widget]);\n }\n /**\n * Adds multiple widgets to the search instance.\n * Widgets can be added either before or after InstantSearch has started.\n * @param widgets The array of widgets to add to InstantSearch.\n */\n\n }, {\n key: \"addWidgets\",\n value: function addWidgets(widgets) {\n if (!Array.isArray(widgets)) {\n throw new Error(withUsage('The `addWidgets` method expects an array of widgets. Please use `addWidget`.'));\n }\n\n if (widgets.some(function (widget) {\n return typeof widget.init !== 'function' && typeof widget.render !== 'function';\n })) {\n throw new Error(withUsage('The widget definition expects a `render` and/or an `init` method.'));\n }\n\n this.mainIndex.addWidgets(widgets);\n return this;\n }\n /**\n * Removes a widget from the search instance.\n * @deprecated This method will still be supported in 4.x releases, but not further. It is replaced by `removeWidgets([widget])`\n * @param widget The widget instance to remove from InstantSearch.\n *\n * The widget must implement a `dispose()` method to clear its state.\n */\n\n }, {\n key: \"removeWidget\",\n value: function removeWidget(widget) {\n process.env.NODE_ENV === 'development' ? warning(false, 'removeWidget will still be supported in 4.x releases, but not further. It is replaced by `removeWidgets([widget])`') : void 0;\n return this.removeWidgets([widget]);\n }\n /**\n * Removes multiple widgets from the search instance.\n * @param widgets Array of widgets instances to remove from InstantSearch.\n *\n * The widgets must implement a `dispose()` method to clear their states.\n */\n\n }, {\n key: \"removeWidgets\",\n value: function removeWidgets(widgets) {\n if (!Array.isArray(widgets)) {\n throw new Error(withUsage('The `removeWidgets` method expects an array of widgets. Please use `removeWidget`.'));\n }\n\n if (widgets.some(function (widget) {\n return typeof widget.dispose !== 'function';\n })) {\n throw new Error(withUsage('The widget definition expects a `dispose` method.'));\n }\n\n this.mainIndex.removeWidgets(widgets);\n return this;\n }\n /**\n * Ends the initialization of InstantSearch.js and triggers the\n * first search. This method should be called after all widgets have been added\n * to the instance of InstantSearch.js. InstantSearch.js also supports adding and removing\n * widgets after the start as an **EXPERIMENTAL** feature.\n */\n\n }, {\n key: \"start\",\n value: function start() {\n var _this3 = this;\n\n if (this.started) {\n throw new Error(withUsage('The `start` method has already been called once.'));\n } // This Helper is used for the queries, we don't care about its state. The\n // states are managed at the `index` level. We use this Helper to create\n // DerivedHelper scoped into the `index` widgets.\n // In Vue InstantSearch' hydrate, a main helper gets set before start, so\n // we need to respect this helper as a way to keep all listeners correct.\n\n\n var mainHelper = this.mainHelper || algoliasearchHelper(this.client, this.indexName);\n\n mainHelper.search = function () {\n _this3.status = 'loading'; // @MAJOR: use scheduleRender here\n // For now, widgets don't expect to be rendered at the start of `loading`,\n // so it would be a breaking change to add an extra render. We don't have\n // these guarantees about the render event, thus emitting it once more\n // isn't a breaking change.\n\n _this3.emit('render'); // This solution allows us to keep the exact same API for the users but\n // under the hood, we have a different implementation. It should be\n // completely transparent for the rest of the codebase. Only this module\n // is impacted.\n\n\n return mainHelper.searchOnlyWithDerivedHelpers();\n };\n\n if (this._searchFunction) {\n // this client isn't used to actually search, but required for the helper\n // to not throw errors\n var fakeClient = {\n search: function search() {\n return new Promise(noop);\n }\n };\n this._mainHelperSearch = mainHelper.search.bind(mainHelper);\n\n mainHelper.search = function () {\n var mainIndexHelper = _this3.mainIndex.getHelper();\n\n var searchFunctionHelper = algoliasearchHelper(fakeClient, mainIndexHelper.state.index, mainIndexHelper.state);\n searchFunctionHelper.once('search', function (_ref2) {\n var state = _ref2.state;\n mainIndexHelper.overrideStateWithoutTriggeringChangeEvent(state);\n\n _this3._mainHelperSearch();\n }); // Forward state changes from `searchFunctionHelper` to `mainIndexHelper`\n\n searchFunctionHelper.on('change', function (_ref3) {\n var state = _ref3.state;\n mainIndexHelper.setState(state);\n });\n\n _this3._searchFunction(searchFunctionHelper);\n\n return mainHelper;\n };\n } // Only the \"main\" Helper emits the `error` event vs the one for `search`\n // and `results` that are also emitted on the derived one.\n\n\n mainHelper.on('error', function (_ref4) {\n var error = _ref4.error;\n\n if (!(error instanceof Error)) {\n // typescript lies here, error is in some cases { name: string, message: string }\n var err = error;\n error = Object.keys(err).reduce(function (acc, key) {\n acc[key] = err[key];\n return acc;\n }, new Error(err.message));\n } // If an error is emitted, it is re-thrown by events. In previous versions\n // we emitted {error}, which is thrown as:\n // \"Uncaught, unspecified \\\"error\\\" event. ([object Object])\"\n // To avoid breaking changes, we make the error available in both\n // `error` and `error.error`\n // @MAJOR emit only error\n\n\n error.error = error;\n _this3.error = error;\n _this3.status = 'error';\n\n _this3.scheduleRender(false); // This needs to execute last because it throws the error.\n\n\n _this3.emit('error', error);\n });\n this.mainHelper = mainHelper;\n this.middleware.forEach(function (_ref5) {\n var instance = _ref5.instance;\n instance.subscribe();\n });\n this.mainIndex.init({\n instantSearchInstance: this,\n parent: null,\n uiState: this._initialUiState\n });\n\n if (this._initialResults) {\n var originalScheduleSearch = this.scheduleSearch; // We don't schedule a first search when initial results are provided\n // because we already have the results to render. This skips the initial\n // network request on the browser on `start`.\n\n this.scheduleSearch = defer(noop); // We also skip the initial network request when widgets are dynamically\n // added in the first tick (that's the case in all the framework-based flavors).\n // When we add a widget to `index`, it calls `scheduleSearch`. We can rely\n // on our `defer` util to restore the original `scheduleSearch` value once\n // widgets are added to hook back to the regular lifecycle.\n\n defer(function () {\n _this3.scheduleSearch = originalScheduleSearch;\n })();\n } // We only schedule a search when widgets have been added before `start()`\n // because there are listeners that can use these results.\n // This is especially useful in framework-based flavors that wait for\n // dynamically-added widgets to trigger a network request. It avoids\n // having to batch this initial network request with the one coming from\n // `addWidgets()`.\n // Later, we could also skip `index()` widgets and widgets that don't read\n // the results, but this is an optimization that has a very low impact for now.\n else if (this.mainIndex.getWidgets().length > 0) {\n this.scheduleSearch();\n } // Keep the previous reference for legacy purpose, some pattern use\n // the direct Helper access `search.helper` (e.g multi-index).\n\n\n this.helper = this.mainIndex.getHelper(); // track we started the search if we add more widgets,\n // to init them directly after add\n\n this.started = true;\n this.middleware.forEach(function (_ref6) {\n var instance = _ref6.instance;\n instance.started();\n });\n }\n /**\n * Removes all widgets without triggering a search afterwards. This is an **EXPERIMENTAL** feature,\n * if you find an issue with it, please\n * [open an issue](https://github.com/algolia/instantsearch.js/issues/new?title=Problem%20with%20dispose).\n * @return {undefined} This method does not return anything\n */\n\n }, {\n key: \"dispose\",\n value: function dispose() {\n this.scheduleSearch.cancel();\n this.scheduleRender.cancel();\n clearTimeout(this._searchStalledTimer);\n this.removeWidgets(this.mainIndex.getWidgets());\n this.mainIndex.dispose(); // You can not start an instance two times, therefore a disposed instance\n // needs to set started as false otherwise this can not be restarted at a\n // later point.\n\n this.started = false; // The helper needs to be reset to perform the next search from a fresh state.\n // If not reset, it would use the state stored before calling `dispose()`.\n\n this.removeAllListeners();\n this.mainHelper.removeAllListeners();\n this.mainHelper = null;\n this.helper = null;\n this.middleware.forEach(function (_ref7) {\n var instance = _ref7.instance;\n instance.unsubscribe();\n });\n }\n }, {\n key: \"scheduleStalledRender\",\n value: function scheduleStalledRender() {\n var _this4 = this;\n\n if (!this._searchStalledTimer) {\n this._searchStalledTimer = setTimeout(function () {\n _this4.status = 'stalled';\n\n _this4.scheduleRender();\n }, this._stalledSearchDelay);\n }\n }\n /**\n * Set the UI state and trigger a search.\n * @param uiState The next UI state or a function computing it from the current state\n * @param callOnStateChange private parameter used to know if the method is called from a state change\n */\n\n }, {\n key: \"setUiState\",\n value: function setUiState(uiState) {\n var _this5 = this;\n\n var callOnStateChange = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n if (!this.mainHelper) {\n throw new Error(withUsage('The `start` method needs to be called before `setUiState`.'));\n } // We refresh the index UI state to update the local UI state that the\n // main index passes to the function form of `setUiState`.\n\n\n this.mainIndex.refreshUiState();\n var nextUiState = typeof uiState === 'function' ? uiState(this.mainIndex.getWidgetUiState({})) : uiState;\n\n if (this.onStateChange && callOnStateChange) {\n this.onStateChange({\n uiState: nextUiState,\n setUiState: function setUiState(finalUiState) {\n setIndexHelperState(typeof finalUiState === 'function' ? finalUiState(nextUiState) : finalUiState, _this5.mainIndex);\n\n _this5.scheduleSearch();\n\n _this5.onInternalStateChange();\n }\n });\n } else {\n setIndexHelperState(nextUiState, this.mainIndex);\n this.scheduleSearch();\n this.onInternalStateChange();\n }\n }\n }, {\n key: \"getUiState\",\n value: function getUiState() {\n if (this.started) {\n // We refresh the index UI state to make sure changes from `refine` are taken in account\n this.mainIndex.refreshUiState();\n }\n\n return this.mainIndex.getWidgetUiState({});\n }\n }, {\n key: \"createURL\",\n value: function createURL() {\n var nextState = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (!this.started) {\n throw new Error(withUsage('The `start` method needs to be called before `createURL`.'));\n }\n\n return this._createURL(nextState);\n }\n }, {\n key: \"refresh\",\n value: function refresh() {\n if (!this.mainHelper) {\n throw new Error(withUsage('The `start` method needs to be called before `refresh`.'));\n }\n\n this.mainHelper.clearCache().search();\n }\n }]);\n\n return InstantSearch;\n}(EventEmitter);\n\nexport default InstantSearch;","import { createContext } from 'react';\nexport var InstantSearchSSRContext = /*#__PURE__*/createContext(null);\n\nif (process.env.NODE_ENV !== 'production') {\n InstantSearchSSRContext.displayName = 'InstantSearchSSR';\n}","export default '6.36.0';","import InstantSearch from \"instantsearch.js/es/lib/InstantSearch.js\";\nimport { useCallback, useRef, version as ReactVersion } from 'react';\nimport { useSyncExternalStore } from \"use-sync-external-store/shim/index.js\";\nimport { useInstantSearchServerContext } from \"./useInstantSearchServerContext.js\";\nimport { useInstantSearchSSRContext } from \"./useInstantSearchSSRContext.js\";\nimport version from \"../version.js\";\nimport { useForceUpdate } from \"./useForceUpdate.js\";\nvar defaultUserAgents = [\"react (\".concat(ReactVersion, \")\"), \"react-instantsearch (\".concat(version, \")\"), \"react-instantsearch-hooks (\".concat(version, \")\")];\nvar serverUserAgent = \"react-instantsearch-server (\".concat(version, \")\");\nexport function useInstantSearchApi(props) {\n var forceUpdate = useForceUpdate();\n var serverContext = useInstantSearchServerContext();\n var serverState = useInstantSearchSSRContext();\n var initialResults = serverState === null || serverState === void 0 ? void 0 : serverState.initialResults;\n var searchRef = useRef(null);\n var prevPropsRef = useRef(props);\n\n if (searchRef.current === null) {\n // We don't use the `instantsearch()` function because it comes with other\n // top-level APIs that we don't need.\n // See https://github.com/algolia/instantsearch.js/blob/5b529f43d8acc680f85837eaaa41f7fd03a3f833/src/index.es.ts#L63-L86\n var search = new InstantSearch(props);\n\n if (serverContext || initialResults) {\n // InstantSearch.js has a private Initial Results API that lets us inject\n // results on the search instance.\n // On the server, we default the initial results to an empty object so that\n // InstantSearch.js doesn't schedule a search that isn't used, leading to\n // an additional network request. (This is equivalent to monkey-patching\n // `scheduleSearch` to a noop.)\n search._initialResults = initialResults || {};\n }\n\n addAlgoliaAgents(props.searchClient, [].concat(defaultUserAgents, [serverContext && serverUserAgent])); // On the server, we start the search early to compute the search parameters.\n // On SSR, we start the search early to directly catch up with the lifecycle\n // and render.\n\n if (serverContext || initialResults) {\n search.start();\n }\n\n if (serverContext) {\n // We notify `getServerState()` of the InstantSearch internals to retrieve\n // the server state and pass it to the render on SSR.\n serverContext.notifyServer({\n search: search\n });\n }\n\n searchRef.current = search;\n }\n\n {\n var _search = searchRef.current;\n var prevProps = prevPropsRef.current;\n\n if (prevProps.indexName !== props.indexName) {\n _search.helper.setIndex(props.indexName).search();\n\n prevPropsRef.current = props;\n }\n\n if (prevProps.searchClient !== props.searchClient) {\n addAlgoliaAgents(props.searchClient, [].concat(defaultUserAgents, [serverContext && serverUserAgent]));\n\n _search.mainHelper.setClient(props.searchClient).search();\n\n prevPropsRef.current = props;\n }\n\n if (prevProps.onStateChange !== props.onStateChange) {\n _search.onStateChange = props.onStateChange;\n prevPropsRef.current = props;\n }\n\n if (prevProps.searchFunction !== props.searchFunction) {\n // Updating the `searchFunction` to `undefined` is not supported by\n // InstantSearch.js, so it will throw an error.\n // This is a fair behavior until we add an update API in InstantSearch.js.\n _search._searchFunction = props.searchFunction;\n prevPropsRef.current = props;\n }\n\n if (prevProps.stalledSearchDelay !== props.stalledSearchDelay) {\n var _props$stalledSearchD;\n\n // The default `stalledSearchDelay` in InstantSearch.js is 200ms.\n // We need to reset it when it's undefined to get back to the original value.\n _search._stalledSearchDelay = (_props$stalledSearchD = props.stalledSearchDelay) !== null && _props$stalledSearchD !== void 0 ? _props$stalledSearchD : 200;\n prevPropsRef.current = props;\n } // Updating the `routing` prop is not supported because InstantSearch.js\n // doesn't let us change it. This might not be a problem though, because `routing`\n // shouldn't need to be dynamic.\n // If we find scenarios where `routing` needs to change, we can always expose\n // it privately on the InstantSearch instance. Another way would be to\n // manually inject the routing middleware in this library, and not rely\n // on the provided `routing` prop.\n\n }\n var cleanupTimerRef = useRef(null);\n var store = useSyncExternalStore(useCallback(function () {\n var search = searchRef.current; // Scenario 1: the component mounts.\n\n if (cleanupTimerRef.current === null) {\n // On SSR, the instance is already started so we don't start it again.\n if (!search.started) {\n search.start();\n forceUpdate();\n }\n } // Scenario 2: the component updates.\n else {\n // We cancel the previous cleanup function because we don't want to\n // dispose the search during an update.\n clearTimeout(cleanupTimerRef.current);\n search._preventWidgetCleanup = false;\n }\n\n return function () {\n function cleanup() {\n search.dispose();\n } // We clean up only when the component that uses this subscription unmounts,\n // but not when it updates, because it would dispose the instance, which\n // would remove all the widgets and break routing.\n // Executing the cleanup function in a `setTimeout()` lets us cancel it\n // in the next effect.\n // (There might be better ways to do this.)\n\n\n cleanupTimerRef.current = setTimeout(cleanup); // We need to prevent the `useWidget` cleanup function so that widgets\n // are not removed before the instance is disposed, triggering\n // an unwanted search request.\n\n search._preventWidgetCleanup = true;\n };\n }, [forceUpdate]), function () {\n return searchRef.current;\n }, function () {\n return searchRef.current;\n });\n return store;\n}\n\nfunction addAlgoliaAgents(searchClient, userAgents) {\n if (typeof searchClient.addAlgoliaAgent !== 'function') {\n return;\n }\n\n userAgents.filter(Boolean).forEach(function (userAgent) {\n searchClient.addAlgoliaAgent(userAgent);\n });\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport { useReducer } from 'react';\n/**\n * Forces a React update that triggers a rerender.\n * @link https://reactjs.org/docs/hooks-faq.html#is-there-something-like-forceupdate\n */\n\nexport function useForceUpdate() {\n var _useReducer = useReducer(function (x) {\n return x + 1;\n }, 0),\n _useReducer2 = _slicedToArray(_useReducer, 2),\n forceUpdate = _useReducer2[1];\n\n return forceUpdate;\n}","import { useContext } from 'react';\nimport { InstantSearchSSRContext } from \"./InstantSearchSSRContext.js\";\nexport function useInstantSearchSSRContext() {\n return useContext(InstantSearchSSRContext);\n}","import _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"children\"];\nimport React from 'react';\nimport { IndexContext } from \"../lib/IndexContext.js\";\nimport { InstantSearchContext } from \"../lib/InstantSearchContext.js\";\nimport { useInstantSearchApi } from \"../lib/useInstantSearchApi.js\";\nexport function InstantSearch(_ref) {\n var children = _ref.children,\n props = _objectWithoutProperties(_ref, _excluded);\n\n var search = useInstantSearchApi(props);\n\n if (!search.started) {\n return null;\n }\n\n return /*#__PURE__*/React.createElement(InstantSearchContext.Provider, {\n value: search\n }, /*#__PURE__*/React.createElement(IndexContext.Provider, {\n value: search.mainIndex\n }, children));\n}","/**\n * Clears the refinements of a SearchParameters object based on rules provided.\n * The included attributes list is applied before the excluded attributes list. If the list\n * is not provided, this list of all the currently refined attributes is used as included attributes.\n * @returns search parameters with refinements cleared\n */\nexport function clearRefinements(_ref) {\n var helper = _ref.helper,\n _ref$attributesToClea = _ref.attributesToClear,\n attributesToClear = _ref$attributesToClea === void 0 ? [] : _ref$attributesToClea;\n var finalState = helper.state.setPage(0);\n finalState = attributesToClear.reduce(function (state, attribute) {\n if (finalState.isNumericRefined(attribute)) {\n return state.removeNumericRefinement(attribute);\n }\n\n if (finalState.isHierarchicalFacet(attribute)) {\n return state.removeHierarchicalFacetRefinement(attribute);\n }\n\n if (finalState.isDisjunctiveFacet(attribute)) {\n return state.removeDisjunctiveFacetRefinement(attribute);\n }\n\n if (finalState.isConjunctiveFacet(attribute)) {\n return state.removeFacetRefinement(attribute);\n }\n\n return state;\n }, finalState);\n\n if (attributesToClear.indexOf('query') !== -1) {\n finalState = finalState.setQuery('');\n }\n\n return finalState;\n}","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { checkRendering, clearRefinements, getRefinements, createDocumentationMessageGenerator, noop, uniq, mergeSearchParameters } from \"../../lib/utils/index.js\";\nvar withUsage = createDocumentationMessageGenerator({\n name: 'clear-refinements',\n connector: true\n});\n\nvar connectClearRefinements = function connectClearRefinements(renderFn) {\n var unmountFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n checkRendering(renderFn, withUsage());\n return function (widgetParams) {\n var _ref = widgetParams || {},\n _ref$includedAttribut = _ref.includedAttributes,\n includedAttributes = _ref$includedAttribut === void 0 ? [] : _ref$includedAttribut,\n _ref$excludedAttribut = _ref.excludedAttributes,\n excludedAttributes = _ref$excludedAttribut === void 0 ? ['query'] : _ref$excludedAttribut,\n _ref$transformItems = _ref.transformItems,\n transformItems = _ref$transformItems === void 0 ? function (items) {\n return items;\n } : _ref$transformItems;\n\n if (widgetParams && widgetParams.includedAttributes && widgetParams.excludedAttributes) {\n throw new Error(withUsage('The options `includedAttributes` and `excludedAttributes` cannot be used together.'));\n }\n\n var connectorState = {\n refine: noop,\n createURL: function createURL() {\n return '';\n },\n attributesToClear: []\n };\n\n var cachedRefine = function cachedRefine() {\n return connectorState.refine();\n };\n\n var cachedCreateURL = function cachedCreateURL() {\n return connectorState.createURL();\n };\n\n return {\n $$type: 'ais.clearRefinements',\n init: function init(initOptions) {\n var instantSearchInstance = initOptions.instantSearchInstance;\n renderFn(_objectSpread(_objectSpread({}, this.getWidgetRenderState(initOptions)), {}, {\n instantSearchInstance: instantSearchInstance\n }), true);\n },\n render: function render(renderOptions) {\n var instantSearchInstance = renderOptions.instantSearchInstance;\n renderFn(_objectSpread(_objectSpread({}, this.getWidgetRenderState(renderOptions)), {}, {\n instantSearchInstance: instantSearchInstance\n }), false);\n },\n dispose: function dispose() {\n unmountFn();\n },\n getRenderState: function getRenderState(renderState, renderOptions) {\n return _objectSpread(_objectSpread({}, renderState), {}, {\n clearRefinements: this.getWidgetRenderState(renderOptions)\n });\n },\n getWidgetRenderState: function getWidgetRenderState(_ref2) {\n var createURL = _ref2.createURL,\n scopedResults = _ref2.scopedResults,\n results = _ref2.results;\n connectorState.attributesToClear = scopedResults.reduce(function (attributesToClear, scopedResult) {\n return attributesToClear.concat(getAttributesToClear({\n scopedResult: scopedResult,\n includedAttributes: includedAttributes,\n excludedAttributes: excludedAttributes,\n transformItems: transformItems,\n results: results\n }));\n }, []);\n\n connectorState.refine = function () {\n connectorState.attributesToClear.forEach(function (_ref3) {\n var indexHelper = _ref3.helper,\n items = _ref3.items;\n indexHelper.setState(clearRefinements({\n helper: indexHelper,\n attributesToClear: items\n })).search();\n });\n };\n\n connectorState.createURL = function () {\n return createURL(mergeSearchParameters.apply(void 0, _toConsumableArray(connectorState.attributesToClear.map(function (_ref4) {\n var indexHelper = _ref4.helper,\n items = _ref4.items;\n return clearRefinements({\n helper: indexHelper,\n attributesToClear: items\n });\n }))));\n };\n\n var canRefine = connectorState.attributesToClear.some(function (attributeToClear) {\n return attributeToClear.items.length > 0;\n });\n return {\n canRefine: canRefine,\n hasRefinements: canRefine,\n refine: cachedRefine,\n createURL: cachedCreateURL,\n widgetParams: widgetParams\n };\n }\n };\n };\n};\n\nfunction getAttributesToClear(_ref5) {\n var scopedResult = _ref5.scopedResult,\n includedAttributes = _ref5.includedAttributes,\n excludedAttributes = _ref5.excludedAttributes,\n transformItems = _ref5.transformItems,\n results = _ref5.results;\n var includesQuery = includedAttributes.indexOf('query') !== -1 || excludedAttributes.indexOf('query') === -1;\n return {\n helper: scopedResult.helper,\n items: transformItems(uniq(getRefinements(scopedResult.results, scopedResult.helper.state, includesQuery).map(function (refinement) {\n return refinement.attribute;\n }).filter(function (attribute) {\n return (// If the array is empty (default case), we keep all the attributes\n includedAttributes.length === 0 || // Otherwise, only add the specified attributes\n includedAttributes.indexOf(attribute) !== -1\n );\n }).filter(function (attribute) {\n return (// If the query is included, we ignore the default `excludedAttributes = ['query']`\n attribute === 'query' && includesQuery || // Otherwise, ignore the excluded attributes\n excludedAttributes.indexOf(attribute) === -1\n );\n })), {\n results: results\n })\n };\n}\n\nexport default connectClearRefinements;","import connectClearRefinements from \"instantsearch.js/es/connectors/clear-refinements/connectClearRefinements.js\";\nimport { useConnector } from \"../hooks/useConnector.js\";\nexport function useClearRefinements(props, additionalWidgetProperties) {\n return useConnector(connectClearRefinements, props, additionalWidgetProperties);\n}","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { getRefinements, checkRendering, createDocumentationMessageGenerator, noop, warning } from \"../../lib/utils/index.js\";\nvar withUsage = createDocumentationMessageGenerator({\n name: 'current-refinements',\n connector: true\n});\n\nvar connectCurrentRefinements = function connectCurrentRefinements(renderFn) {\n var unmountFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n checkRendering(renderFn, withUsage());\n return function (widgetParams) {\n if ((widgetParams || {}).includedAttributes && (widgetParams || {}).excludedAttributes) {\n throw new Error(withUsage('The options `includedAttributes` and `excludedAttributes` cannot be used together.'));\n }\n\n var _ref = widgetParams || {},\n includedAttributes = _ref.includedAttributes,\n _ref$excludedAttribut = _ref.excludedAttributes,\n excludedAttributes = _ref$excludedAttribut === void 0 ? ['query'] : _ref$excludedAttribut,\n _ref$transformItems = _ref.transformItems,\n transformItems = _ref$transformItems === void 0 ? function (items) {\n return items;\n } : _ref$transformItems;\n\n return {\n $$type: 'ais.currentRefinements',\n init: function init(initOptions) {\n var instantSearchInstance = initOptions.instantSearchInstance;\n renderFn(_objectSpread(_objectSpread({}, this.getWidgetRenderState(initOptions)), {}, {\n instantSearchInstance: instantSearchInstance\n }), true);\n },\n render: function render(renderOptions) {\n var instantSearchInstance = renderOptions.instantSearchInstance;\n renderFn(_objectSpread(_objectSpread({}, this.getWidgetRenderState(renderOptions)), {}, {\n instantSearchInstance: instantSearchInstance\n }), false);\n },\n dispose: function dispose() {\n unmountFn();\n },\n getRenderState: function getRenderState(renderState, renderOptions) {\n return _objectSpread(_objectSpread({}, renderState), {}, {\n currentRefinements: this.getWidgetRenderState(renderOptions)\n });\n },\n getWidgetRenderState: function getWidgetRenderState(_ref2) {\n var results = _ref2.results,\n scopedResults = _ref2.scopedResults,\n _createURL = _ref2.createURL,\n helper = _ref2.helper;\n\n function getItems() {\n if (!results) {\n return transformItems(getRefinementsItems({\n results: {},\n helper: helper,\n includedAttributes: includedAttributes,\n excludedAttributes: excludedAttributes\n }), {\n results: results\n });\n }\n\n return scopedResults.reduce(function (accResults, scopedResult) {\n return accResults.concat(transformItems(getRefinementsItems({\n results: scopedResult.results,\n helper: scopedResult.helper,\n includedAttributes: includedAttributes,\n excludedAttributes: excludedAttributes\n }), {\n results: results\n }));\n }, []);\n }\n\n var items = getItems();\n return {\n items: items,\n canRefine: items.length > 0,\n refine: function refine(refinement) {\n return clearRefinement(helper, refinement);\n },\n createURL: function createURL(refinement) {\n return _createURL(clearRefinementFromState(helper.state, refinement));\n },\n widgetParams: widgetParams\n };\n }\n };\n };\n};\n\nfunction getRefinementsItems(_ref3) {\n var results = _ref3.results,\n helper = _ref3.helper,\n includedAttributes = _ref3.includedAttributes,\n excludedAttributes = _ref3.excludedAttributes;\n var includesQuery = (includedAttributes || []).indexOf('query') !== -1 || (excludedAttributes || []).indexOf('query') === -1;\n var filterFunction = includedAttributes ? function (item) {\n return includedAttributes.indexOf(item.attribute) !== -1;\n } : function (item) {\n return excludedAttributes.indexOf(item.attribute) === -1;\n };\n var items = getRefinements(results, helper.state, includesQuery).map(normalizeRefinement).filter(filterFunction);\n return items.reduce(function (allItems, currentItem) {\n return [].concat(_toConsumableArray(allItems.filter(function (item) {\n return item.attribute !== currentItem.attribute;\n })), [{\n indexName: helper.state.index,\n attribute: currentItem.attribute,\n label: currentItem.attribute,\n refinements: items.filter(function (result) {\n return result.attribute === currentItem.attribute;\n }) // We want to keep the order of refinements except the numeric ones.\n .sort(function (a, b) {\n return a.type === 'numeric' ? a.value - b.value : 0;\n }),\n refine: function refine(refinement) {\n return clearRefinement(helper, refinement);\n }\n }]);\n }, []);\n}\n\nfunction clearRefinementFromState(state, refinement) {\n switch (refinement.type) {\n case 'facet':\n return state.removeFacetRefinement(refinement.attribute, String(refinement.value));\n\n case 'disjunctive':\n return state.removeDisjunctiveFacetRefinement(refinement.attribute, String(refinement.value));\n\n case 'hierarchical':\n return state.removeHierarchicalFacetRefinement(refinement.attribute);\n\n case 'exclude':\n return state.removeExcludeRefinement(refinement.attribute, String(refinement.value));\n\n case 'numeric':\n return state.removeNumericRefinement(refinement.attribute, refinement.operator, String(refinement.value));\n\n case 'tag':\n return state.removeTagRefinement(String(refinement.value));\n\n case 'query':\n return state.setQueryParameter('query', '');\n\n default:\n process.env.NODE_ENV === 'development' ? warning(false, \"The refinement type \\\"\".concat(refinement.type, \"\\\" does not exist and cannot be cleared from the current refinements.\")) : void 0;\n return state;\n }\n}\n\nfunction clearRefinement(helper, refinement) {\n helper.setState(clearRefinementFromState(helper.state, refinement)).search();\n}\n\nfunction getOperatorSymbol(operator) {\n switch (operator) {\n case '>=':\n return '≥';\n\n case '<=':\n return '≤';\n\n default:\n return operator;\n }\n}\n\nfunction normalizeRefinement(refinement) {\n var value = getValue(refinement);\n var label = refinement.operator ? \"\".concat(getOperatorSymbol(refinement.operator), \" \").concat(refinement.name) : refinement.name;\n var normalizedRefinement = {\n attribute: refinement.attribute,\n type: refinement.type,\n value: value,\n label: label\n };\n\n if (refinement.operator !== undefined) {\n normalizedRefinement.operator = refinement.operator;\n }\n\n if (refinement.count !== undefined) {\n normalizedRefinement.count = refinement.count;\n }\n\n if (refinement.exhaustive !== undefined) {\n normalizedRefinement.exhaustive = refinement.exhaustive;\n }\n\n return normalizedRefinement;\n}\n\nfunction getValue(refinement) {\n if (refinement.type === 'numeric') {\n return Number(refinement.name);\n }\n\n if ('escapedValue' in refinement) {\n return refinement.escapedValue;\n }\n\n return refinement.name;\n}\n\nexport default connectCurrentRefinements;","import connectCurrentRefinements from \"instantsearch.js/es/connectors/current-refinements/connectCurrentRefinements.js\";\nimport { useConnector } from \"../hooks/useConnector.js\";\nexport function useCurrentRefinements(props, additionalWidgetProperties) {\n return useConnector(connectCurrentRefinements, props, additionalWidgetProperties);\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport { serializePayload } from \"./serializer.js\";\n\nfunction chunk(arr) {\n var chunkSize = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 20;\n var chunks = [];\n\n for (var i = 0; i < Math.ceil(arr.length / chunkSize); i++) {\n chunks.push(arr.slice(i * chunkSize, (i + 1) * chunkSize));\n }\n\n return chunks;\n}\n\nvar buildPayloads = function buildPayloads(_ref) {\n var index = _ref.index,\n widgetType = _ref.widgetType,\n methodName = _ref.methodName,\n args = _ref.args,\n isSearchStalled = _ref.isSearchStalled;\n\n // when there's only one argument, that means it's custom\n if (args.length === 1 && _typeof(args[0]) === 'object') {\n return [args[0]];\n }\n\n var eventType = args[0];\n var hits = args[1];\n var eventName = args[2];\n\n if (!hits) {\n if (process.env.NODE_ENV === 'development') {\n throw new Error(\"You need to pass hit or hits as the second argument like:\\n \".concat(methodName, \"(eventType, hit);\\n \"));\n } else {\n return [];\n }\n }\n\n if ((eventType === 'click' || eventType === 'conversion') && !eventName) {\n if (process.env.NODE_ENV === 'development') {\n throw new Error(\"You need to pass eventName as the third argument for 'click' or 'conversion' events like:\\n \".concat(methodName, \"('click', hit, 'Product Purchased');\\n\\n To learn more about event naming: https://www.algolia.com/doc/guides/getting-insights-and-analytics/search-analytics/click-through-and-conversions/in-depth/clicks-conversions-best-practices/\\n \"));\n } else {\n return [];\n }\n }\n\n var hitsArray = Array.isArray(hits) ? removeEscapedFromHits(hits) : [hits];\n\n if (hitsArray.length === 0) {\n return [];\n }\n\n var queryID = hitsArray[0].__queryID;\n var hitsChunks = chunk(hitsArray);\n var objectIDsByChunk = hitsChunks.map(function (batch) {\n return batch.map(function (hit) {\n return hit.objectID;\n });\n });\n var positionsByChunk = hitsChunks.map(function (batch) {\n return batch.map(function (hit) {\n return hit.__position;\n });\n });\n\n if (eventType === 'view') {\n if (isSearchStalled) {\n return [];\n }\n\n return hitsChunks.map(function (batch, i) {\n return {\n insightsMethod: 'viewedObjectIDs',\n widgetType: widgetType,\n eventType: eventType,\n payload: {\n eventName: eventName || 'Hits Viewed',\n index: index,\n objectIDs: objectIDsByChunk[i]\n },\n hits: batch\n };\n });\n } else if (eventType === 'click') {\n return hitsChunks.map(function (batch, i) {\n return {\n insightsMethod: 'clickedObjectIDsAfterSearch',\n widgetType: widgetType,\n eventType: eventType,\n payload: {\n eventName: eventName,\n index: index,\n queryID: queryID,\n objectIDs: objectIDsByChunk[i],\n positions: positionsByChunk[i]\n },\n hits: batch\n };\n });\n } else if (eventType === 'conversion') {\n return hitsChunks.map(function (batch, i) {\n return {\n insightsMethod: 'convertedObjectIDsAfterSearch',\n widgetType: widgetType,\n eventType: eventType,\n payload: {\n eventName: eventName,\n index: index,\n queryID: queryID,\n objectIDs: objectIDsByChunk[i]\n },\n hits: batch\n };\n });\n } else if (process.env.NODE_ENV === 'development') {\n throw new Error(\"eventType(\\\"\".concat(eventType, \"\\\") is not supported.\\n If you want to send a custom payload, you can pass one object: \").concat(methodName, \"(customPayload);\\n \"));\n } else {\n return [];\n }\n};\n\nfunction removeEscapedFromHits(hits) {\n // remove `hits.__escaped` without mutating\n return hits.slice();\n}\n\nexport function createSendEventForHits(_ref2) {\n var instantSearchInstance = _ref2.instantSearchInstance,\n index = _ref2.index,\n widgetType = _ref2.widgetType;\n\n var sendEventForHits = function sendEventForHits() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var payloads = buildPayloads({\n widgetType: widgetType,\n index: index,\n methodName: 'sendEvent',\n args: args,\n isSearchStalled: instantSearchInstance.status === 'stalled'\n });\n payloads.forEach(function (payload) {\n return instantSearchInstance.sendEventToInsights(payload);\n });\n };\n\n return sendEventForHits;\n}\nexport function createBindEventForHits(_ref3) {\n var index = _ref3.index,\n widgetType = _ref3.widgetType;\n\n var bindEventForHits = function bindEventForHits() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n var payloads = buildPayloads({\n widgetType: widgetType,\n index: index,\n methodName: 'bindEvent',\n args: args,\n isSearchStalled: false\n });\n return payloads.length ? \"data-insights-event=\".concat(serializePayload(payloads)) : '';\n };\n\n return bindEventForHits;\n}","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nexport function addAbsolutePosition(hits, page, hitsPerPage) {\n return hits.map(function (hit, idx) {\n return _objectSpread(_objectSpread({}, hit), {}, {\n __position: hitsPerPage * page + idx + 1\n });\n });\n}","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nexport function addQueryID(hits, queryID) {\n if (!queryID) {\n return hits;\n }\n\n return hits.map(function (hit) {\n return _objectSpread(_objectSpread({}, hit), {}, {\n __queryID: queryID\n });\n });\n}","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { escapeHits, TAG_PLACEHOLDER, checkRendering, createDocumentationMessageGenerator, addAbsolutePosition, addQueryID, createSendEventForHits, createBindEventForHits, noop } from \"../../lib/utils/index.js\";\nvar withUsage = createDocumentationMessageGenerator({\n name: 'hits',\n connector: true\n});\n\nvar connectHits = function connectHits(renderFn) {\n var unmountFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n checkRendering(renderFn, withUsage());\n return function (widgetParams) {\n var _ref = widgetParams || {},\n _ref$escapeHTML = _ref.escapeHTML,\n escapeHTML = _ref$escapeHTML === void 0 ? true : _ref$escapeHTML,\n _ref$transformItems = _ref.transformItems,\n transformItems = _ref$transformItems === void 0 ? function (items) {\n return items;\n } : _ref$transformItems;\n\n var sendEvent;\n var bindEvent;\n return {\n $$type: 'ais.hits',\n init: function init(initOptions) {\n renderFn(_objectSpread(_objectSpread({}, this.getWidgetRenderState(initOptions)), {}, {\n instantSearchInstance: initOptions.instantSearchInstance\n }), true);\n },\n render: function render(renderOptions) {\n var renderState = this.getWidgetRenderState(renderOptions);\n renderFn(_objectSpread(_objectSpread({}, renderState), {}, {\n instantSearchInstance: renderOptions.instantSearchInstance\n }), false);\n renderState.sendEvent('view', renderState.hits);\n },\n getRenderState: function getRenderState(renderState, renderOptions) {\n return _objectSpread(_objectSpread({}, renderState), {}, {\n hits: this.getWidgetRenderState(renderOptions)\n });\n },\n getWidgetRenderState: function getWidgetRenderState(_ref2) {\n var results = _ref2.results,\n helper = _ref2.helper,\n instantSearchInstance = _ref2.instantSearchInstance;\n\n if (!sendEvent) {\n sendEvent = createSendEventForHits({\n instantSearchInstance: instantSearchInstance,\n index: helper.getIndex(),\n widgetType: this.$$type\n });\n }\n\n if (!bindEvent) {\n bindEvent = createBindEventForHits({\n index: helper.getIndex(),\n widgetType: this.$$type\n });\n }\n\n if (!results) {\n return {\n hits: [],\n results: undefined,\n sendEvent: sendEvent,\n bindEvent: bindEvent,\n widgetParams: widgetParams\n };\n }\n\n if (escapeHTML && results.hits.length > 0) {\n results.hits = escapeHits(results.hits);\n }\n\n var hitsWithAbsolutePosition = addAbsolutePosition(results.hits, results.page, results.hitsPerPage);\n var hitsWithAbsolutePositionAndQueryID = addQueryID(hitsWithAbsolutePosition, results.queryID);\n var transformedHits = transformItems(hitsWithAbsolutePositionAndQueryID, {\n results: results\n });\n return {\n hits: transformedHits,\n results: results,\n sendEvent: sendEvent,\n bindEvent: bindEvent,\n widgetParams: widgetParams\n };\n },\n dispose: function dispose(_ref3) {\n var state = _ref3.state;\n unmountFn();\n\n if (!escapeHTML) {\n return state;\n }\n\n return state.setQueryParameters(Object.keys(TAG_PLACEHOLDER).reduce(function (acc, key) {\n return _objectSpread(_objectSpread({}, acc), {}, _defineProperty({}, key, undefined));\n }, {}));\n },\n getWidgetSearchParameters: function getWidgetSearchParameters(state) {\n if (!escapeHTML) {\n return state;\n }\n\n return state.setQueryParameters(TAG_PLACEHOLDER);\n }\n };\n };\n};\n\nexport default connectHits;","import connectHits from \"instantsearch.js/es/connectors/hits/connectHits.js\";\nimport { useConnector } from \"../hooks/useConnector.js\";\nexport function useHits(props, additionalWidgetProperties) {\n return useConnector(connectHits, props, additionalWidgetProperties);\n}","// This is the `Number.isFinite()` polyfill recommended by MDN.\n// We do not provide any tests for this function.\n// See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isFinite#Polyfill\n// @MAJOR Replace with the native `Number.isFinite` method\nexport function isFiniteNumber(value) {\n return typeof value === 'number' && isFinite(value);\n}","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport { checkRendering, createDocumentationMessageGenerator, isFiniteNumber, find, noop } from \"../../lib/utils/index.js\";\nvar withUsage = createDocumentationMessageGenerator({\n name: 'range-input',\n connector: true\n}, {\n name: 'range-slider',\n connector: true\n});\nvar $$type = 'ais.range';\n\nfunction toPrecision(_ref) {\n var min = _ref.min,\n max = _ref.max,\n precision = _ref.precision;\n var pow = Math.pow(10, precision);\n return {\n min: min ? Math.floor(min * pow) / pow : min,\n max: max ? Math.ceil(max * pow) / pow : max\n };\n}\n/**\n * **Range** connector provides the logic to create custom widget that will let\n * the user refine results using a numeric range.\n *\n * This connectors provides a `refine()` function that accepts bounds. It will also provide\n * information about the min and max bounds for the current result set.\n */\n\n\nvar connectRange = function connectRange(renderFn) {\n var unmountFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n checkRendering(renderFn, withUsage());\n return function (widgetParams) {\n var _ref2 = widgetParams || {},\n _ref2$attribute = _ref2.attribute,\n attribute = _ref2$attribute === void 0 ? '' : _ref2$attribute,\n minBound = _ref2.min,\n maxBound = _ref2.max,\n _ref2$precision = _ref2.precision,\n precision = _ref2$precision === void 0 ? 0 : _ref2$precision;\n\n if (!attribute) {\n throw new Error(withUsage('The `attribute` option is required.'));\n }\n\n if (isFiniteNumber(minBound) && isFiniteNumber(maxBound) && minBound > maxBound) {\n throw new Error(withUsage(\"The `max` option can't be lower than `min`.\"));\n }\n\n var formatToNumber = function formatToNumber(v) {\n return Number(Number(v).toFixed(precision));\n };\n\n var rangeFormatter = {\n from: function from(v) {\n return v.toLocaleString();\n },\n to: function to(v) {\n return formatToNumber(v).toLocaleString();\n }\n }; // eslint-disable-next-line complexity\n\n var getRefinedState = function getRefinedState(helper, currentRange, nextMin, nextMax) {\n var resolvedState = helper.state;\n var currentRangeMin = currentRange.min,\n currentRangeMax = currentRange.max;\n\n var _ref3 = resolvedState.getNumericRefinement(attribute, '>=') || [],\n _ref4 = _slicedToArray(_ref3, 1),\n min = _ref4[0];\n\n var _ref5 = resolvedState.getNumericRefinement(attribute, '<=') || [],\n _ref6 = _slicedToArray(_ref5, 1),\n max = _ref6[0];\n\n var isResetMin = nextMin === undefined || nextMin === '';\n var isResetMax = nextMax === undefined || nextMax === '';\n\n var _toPrecision = toPrecision({\n min: !isResetMin ? parseFloat(nextMin) : undefined,\n max: !isResetMax ? parseFloat(nextMax) : undefined,\n precision: precision\n }),\n nextMinAsNumber = _toPrecision.min,\n nextMaxAsNumber = _toPrecision.max;\n\n var newNextMin;\n\n if (!isFiniteNumber(minBound) && currentRangeMin === nextMinAsNumber) {\n newNextMin = undefined;\n } else if (isFiniteNumber(minBound) && isResetMin) {\n newNextMin = minBound;\n } else {\n newNextMin = nextMinAsNumber;\n }\n\n var newNextMax;\n\n if (!isFiniteNumber(maxBound) && currentRangeMax === nextMaxAsNumber) {\n newNextMax = undefined;\n } else if (isFiniteNumber(maxBound) && isResetMax) {\n newNextMax = maxBound;\n } else {\n newNextMax = nextMaxAsNumber;\n }\n\n var isResetNewNextMin = newNextMin === undefined;\n var isGreaterThanCurrentRange = isFiniteNumber(currentRangeMin) && currentRangeMin <= newNextMin;\n var isMinValid = isResetNewNextMin || isFiniteNumber(newNextMin) && (!isFiniteNumber(currentRangeMin) || isGreaterThanCurrentRange);\n var isResetNewNextMax = newNextMax === undefined;\n var isLowerThanRange = isFiniteNumber(newNextMax) && currentRangeMax >= newNextMax;\n var isMaxValid = isResetNewNextMax || isFiniteNumber(newNextMax) && (!isFiniteNumber(currentRangeMax) || isLowerThanRange);\n var hasMinChange = min !== newNextMin;\n var hasMaxChange = max !== newNextMax;\n\n if ((hasMinChange || hasMaxChange) && isMinValid && isMaxValid) {\n resolvedState = resolvedState.removeNumericRefinement(attribute);\n\n if (isFiniteNumber(newNextMin)) {\n resolvedState = resolvedState.addNumericRefinement(attribute, '>=', newNextMin);\n }\n\n if (isFiniteNumber(newNextMax)) {\n resolvedState = resolvedState.addNumericRefinement(attribute, '<=', newNextMax);\n }\n\n return resolvedState.resetPage();\n }\n\n return null;\n };\n\n var createSendEvent = function createSendEvent(instantSearchInstance) {\n return function () {\n if (arguments.length === 1) {\n instantSearchInstance.sendEventToInsights(arguments.length <= 0 ? undefined : arguments[0]);\n return;\n }\n };\n };\n\n function _getCurrentRange(stats) {\n var min;\n\n if (isFiniteNumber(minBound)) {\n min = minBound;\n } else if (isFiniteNumber(stats.min)) {\n min = stats.min;\n } else {\n min = 0;\n }\n\n var max;\n\n if (isFiniteNumber(maxBound)) {\n max = maxBound;\n } else if (isFiniteNumber(stats.max)) {\n max = stats.max;\n } else {\n max = 0;\n }\n\n return toPrecision({\n min: min,\n max: max,\n precision: precision\n });\n }\n\n function _getCurrentRefinement(helper) {\n var _ref7 = helper.getNumericRefinement(attribute, '>=') || [],\n _ref8 = _slicedToArray(_ref7, 1),\n minValue = _ref8[0];\n\n var _ref9 = helper.getNumericRefinement(attribute, '<=') || [],\n _ref10 = _slicedToArray(_ref9, 1),\n maxValue = _ref10[0];\n\n var min = isFiniteNumber(minValue) ? minValue : -Infinity;\n var max = isFiniteNumber(maxValue) ? maxValue : Infinity;\n return [min, max];\n }\n\n function _refine(helper, currentRange) {\n return function () {\n var _ref11 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [undefined, undefined],\n _ref12 = _slicedToArray(_ref11, 2),\n nextMin = _ref12[0],\n nextMax = _ref12[1];\n\n var refinedState = getRefinedState(helper, currentRange, nextMin, nextMax);\n\n if (refinedState) {\n helper.setState(refinedState).search();\n }\n };\n }\n\n return {\n $$type: $$type,\n init: function init(initOptions) {\n renderFn(_objectSpread(_objectSpread({}, this.getWidgetRenderState(initOptions)), {}, {\n instantSearchInstance: initOptions.instantSearchInstance\n }), true);\n },\n render: function render(renderOptions) {\n renderFn(_objectSpread(_objectSpread({}, this.getWidgetRenderState(renderOptions)), {}, {\n instantSearchInstance: renderOptions.instantSearchInstance\n }), false);\n },\n getRenderState: function getRenderState(renderState, renderOptions) {\n return _objectSpread(_objectSpread({}, renderState), {}, {\n range: _objectSpread(_objectSpread({}, renderState.range), {}, _defineProperty({}, attribute, this.getWidgetRenderState(renderOptions)))\n });\n },\n getWidgetRenderState: function getWidgetRenderState(_ref13) {\n var results = _ref13.results,\n helper = _ref13.helper,\n instantSearchInstance = _ref13.instantSearchInstance;\n var facetsFromResults = results && results.disjunctiveFacets || [];\n var facet = find(facetsFromResults, function (facetResult) {\n return facetResult.name === attribute;\n });\n var stats = facet && facet.stats || {\n min: undefined,\n max: undefined\n };\n\n var currentRange = _getCurrentRange(stats);\n\n var start = _getCurrentRefinement(helper);\n\n var refine;\n\n if (!results) {\n // On first render pass an empty range\n // to be able to bypass the validation\n // related to it\n refine = _refine(helper, {\n min: undefined,\n max: undefined\n });\n } else {\n refine = _refine(helper, currentRange);\n }\n\n return {\n refine: refine,\n canRefine: currentRange.min !== currentRange.max,\n format: rangeFormatter,\n range: currentRange,\n sendEvent: createSendEvent(instantSearchInstance),\n widgetParams: _objectSpread(_objectSpread({}, widgetParams), {}, {\n precision: precision\n }),\n start: start\n };\n },\n dispose: function dispose(_ref14) {\n var state = _ref14.state;\n unmountFn();\n return state.removeDisjunctiveFacet(attribute).removeNumericRefinement(attribute);\n },\n getWidgetUiState: function getWidgetUiState(uiState, _ref15) {\n var searchParameters = _ref15.searchParameters;\n\n var _searchParameters$get = searchParameters.getNumericRefinements(attribute),\n _searchParameters$get2 = _searchParameters$get['>='],\n min = _searchParameters$get2 === void 0 ? [] : _searchParameters$get2,\n _searchParameters$get3 = _searchParameters$get['<='],\n max = _searchParameters$get3 === void 0 ? [] : _searchParameters$get3;\n\n if (min.length === 0 && max.length === 0) {\n return uiState;\n }\n\n return _objectSpread(_objectSpread({}, uiState), {}, {\n range: _objectSpread(_objectSpread({}, uiState.range), {}, _defineProperty({}, attribute, \"\".concat(min, \":\").concat(max)))\n });\n },\n getWidgetSearchParameters: function getWidgetSearchParameters(searchParameters, _ref16) {\n var uiState = _ref16.uiState;\n var widgetSearchParameters = searchParameters.addDisjunctiveFacet(attribute).setQueryParameters({\n numericRefinements: _objectSpread(_objectSpread({}, searchParameters.numericRefinements), {}, _defineProperty({}, attribute, {}))\n });\n\n if (isFiniteNumber(minBound)) {\n widgetSearchParameters = widgetSearchParameters.addNumericRefinement(attribute, '>=', minBound);\n }\n\n if (isFiniteNumber(maxBound)) {\n widgetSearchParameters = widgetSearchParameters.addNumericRefinement(attribute, '<=', maxBound);\n }\n\n var value = uiState.range && uiState.range[attribute];\n\n if (!value || value.indexOf(':') === -1) {\n return widgetSearchParameters;\n }\n\n var _value$split$map = value.split(':').map(parseFloat),\n _value$split$map2 = _slicedToArray(_value$split$map, 2),\n lowerBound = _value$split$map2[0],\n upperBound = _value$split$map2[1];\n\n if (isFiniteNumber(lowerBound) && (!isFiniteNumber(minBound) || minBound < lowerBound)) {\n widgetSearchParameters = widgetSearchParameters.removeNumericRefinement(attribute, '>=');\n widgetSearchParameters = widgetSearchParameters.addNumericRefinement(attribute, '>=', lowerBound);\n }\n\n if (isFiniteNumber(upperBound) && (!isFiniteNumber(maxBound) || upperBound < maxBound)) {\n widgetSearchParameters = widgetSearchParameters.removeNumericRefinement(attribute, '<=');\n widgetSearchParameters = widgetSearchParameters.addNumericRefinement(attribute, '<=', upperBound);\n }\n\n return widgetSearchParameters;\n }\n };\n };\n};\n\nexport default connectRange;","import connectRange from \"instantsearch.js/es/connectors/range/connectRange.js\";\nimport { useConnector } from \"../hooks/useConnector.js\";\nexport function useRange(props, additionalWidgetProperties) {\n return useConnector(connectRange, props, additionalWidgetProperties);\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport { isFacetRefined } from \"./isFacetRefined.js\";\nexport function createSendEventForFacet(_ref) {\n var instantSearchInstance = _ref.instantSearchInstance,\n helper = _ref.helper,\n attr = _ref.attribute,\n widgetType = _ref.widgetType;\n\n var sendEventForFacet = function sendEventForFacet() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var eventType = args[0],\n facetValue = args[1],\n _args$ = args[2],\n eventName = _args$ === void 0 ? 'Filter Applied' : _args$;\n var attribute = typeof attr === 'string' ? attr : attr(facetValue);\n\n if (args.length === 1 && _typeof(args[0]) === 'object') {\n instantSearchInstance.sendEventToInsights(args[0]);\n } else if (eventType === 'click' && (args.length === 2 || args.length === 3)) {\n if (!isFacetRefined(helper, attribute, facetValue)) {\n // send event only when the facet is being checked \"ON\"\n instantSearchInstance.sendEventToInsights({\n insightsMethod: 'clickedFilters',\n widgetType: widgetType,\n eventType: eventType,\n payload: {\n eventName: eventName,\n index: helper.getIndex(),\n filters: [\"\".concat(attribute, \":\").concat(facetValue)]\n },\n attribute: attribute\n });\n }\n } else if (process.env.NODE_ENV === 'development') {\n throw new Error(\"You need to pass two arguments like:\\n sendEvent('click', facetValue);\\n\\nIf you want to send a custom payload, you can pass one object: sendEvent(customPayload);\\n\");\n }\n };\n\n return sendEventForFacet;\n}","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport { escapeFacets, TAG_PLACEHOLDER, TAG_REPLACEMENT, checkRendering, createDocumentationMessageGenerator, createSendEventForFacet, noop } from \"../../lib/utils/index.js\";\nvar withUsage = createDocumentationMessageGenerator({\n name: 'refinement-list',\n connector: true\n});\nvar DEFAULT_SORT = ['isRefined', 'count:desc', 'name:asc'];\n\n/**\n * **RefinementList** connector provides the logic to build a custom widget that\n * will let the user filter the results based on the values of a specific facet.\n *\n * **Requirement:** the attribute passed as `attribute` must be present in\n * attributesForFaceting of the searched index.\n *\n * This connector provides:\n * - a `refine()` function to select an item.\n * - a `toggleShowMore()` function to display more or less items\n * - a `searchForItems()` function to search within the items.\n */\nvar connectRefinementList = function connectRefinementList(renderFn) {\n var unmountFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n checkRendering(renderFn, withUsage());\n return function (widgetParams) {\n var _ref = widgetParams || {},\n attribute = _ref.attribute,\n _ref$operator = _ref.operator,\n operator = _ref$operator === void 0 ? 'or' : _ref$operator,\n _ref$limit = _ref.limit,\n limit = _ref$limit === void 0 ? 10 : _ref$limit,\n _ref$showMore = _ref.showMore,\n showMore = _ref$showMore === void 0 ? false : _ref$showMore,\n _ref$showMoreLimit = _ref.showMoreLimit,\n showMoreLimit = _ref$showMoreLimit === void 0 ? 20 : _ref$showMoreLimit,\n _ref$sortBy = _ref.sortBy,\n sortBy = _ref$sortBy === void 0 ? DEFAULT_SORT : _ref$sortBy,\n _ref$escapeFacetValue = _ref.escapeFacetValues,\n escapeFacetValues = _ref$escapeFacetValue === void 0 ? true : _ref$escapeFacetValue,\n _ref$transformItems = _ref.transformItems,\n transformItems = _ref$transformItems === void 0 ? function (items) {\n return items;\n } : _ref$transformItems;\n\n if (!attribute) {\n throw new Error(withUsage('The `attribute` option is required.'));\n }\n\n if (!/^(and|or)$/.test(operator)) {\n throw new Error(withUsage(\"The `operator` must one of: `\\\"and\\\"`, `\\\"or\\\"` (got \\\"\".concat(operator, \"\\\").\")));\n }\n\n if (showMore === true && showMoreLimit <= limit) {\n throw new Error(withUsage('`showMoreLimit` should be greater than `limit`.'));\n }\n\n var formatItems = function formatItems(_ref2) {\n var label = _ref2.name,\n value = _ref2.escapedValue,\n item = _objectWithoutProperties(_ref2, [\"name\", \"escapedValue\"]);\n\n return _objectSpread(_objectSpread({}, item), {}, {\n value: value,\n label: label,\n highlighted: label\n });\n };\n\n var lastResultsFromMainSearch;\n var lastItemsFromMainSearch = [];\n var hasExhaustiveItems = true;\n var triggerRefine;\n var sendEvent;\n var isShowingMore = false; // Provide the same function to the `renderFn` so that way the user\n // has to only bind it once when `isFirstRendering` for instance\n\n var toggleShowMore = function toggleShowMore() {};\n\n function cachedToggleShowMore() {\n toggleShowMore();\n }\n\n function createToggleShowMore(renderOptions, widget) {\n return function () {\n isShowingMore = !isShowingMore;\n widget.render(renderOptions);\n };\n }\n\n function getLimit() {\n return isShowingMore ? showMoreLimit : limit;\n }\n\n var searchForFacetValues = function searchForFacetValues() {\n return function () {};\n };\n\n var createSearchForFacetValues = function createSearchForFacetValues(helper, widget) {\n return function (renderOptions) {\n return function (query) {\n var instantSearchInstance = renderOptions.instantSearchInstance,\n searchResults = renderOptions.results;\n\n if (query === '' && lastItemsFromMainSearch) {\n // render with previous data from the helper.\n renderFn(_objectSpread(_objectSpread({}, widget.getWidgetRenderState(_objectSpread(_objectSpread({}, renderOptions), {}, {\n results: lastResultsFromMainSearch\n }))), {}, {\n instantSearchInstance: instantSearchInstance\n }), false);\n } else {\n var tags = {\n highlightPreTag: escapeFacetValues ? TAG_PLACEHOLDER.highlightPreTag : TAG_REPLACEMENT.highlightPreTag,\n highlightPostTag: escapeFacetValues ? TAG_PLACEHOLDER.highlightPostTag : TAG_REPLACEMENT.highlightPostTag\n };\n helper.searchForFacetValues(attribute, query, // We cap the `maxFacetHits` value to 100 because the Algolia API\n // doesn't support a greater number.\n // See https://www.algolia.com/doc/api-reference/api-parameters/maxFacetHits/\n Math.min(getLimit(), 100), tags).then(function (results) {\n var facetValues = escapeFacetValues ? escapeFacets(results.facetHits) : results.facetHits;\n var normalizedFacetValues = transformItems(facetValues.map(function (_ref3) {\n var escapedValue = _ref3.escapedValue,\n value = _ref3.value,\n item = _objectWithoutProperties(_ref3, [\"escapedValue\", \"value\"]);\n\n return _objectSpread(_objectSpread({}, item), {}, {\n value: escapedValue,\n label: value\n });\n }), {\n results: searchResults\n });\n renderFn(_objectSpread(_objectSpread({}, widget.getWidgetRenderState(_objectSpread(_objectSpread({}, renderOptions), {}, {\n results: lastResultsFromMainSearch\n }))), {}, {\n items: normalizedFacetValues,\n canToggleShowMore: false,\n canRefine: true,\n isFromSearch: true,\n instantSearchInstance: instantSearchInstance\n }), false);\n });\n }\n };\n };\n };\n\n return {\n $$type: 'ais.refinementList',\n init: function init(initOptions) {\n renderFn(_objectSpread(_objectSpread({}, this.getWidgetRenderState(initOptions)), {}, {\n instantSearchInstance: initOptions.instantSearchInstance\n }), true);\n },\n render: function render(renderOptions) {\n renderFn(_objectSpread(_objectSpread({}, this.getWidgetRenderState(renderOptions)), {}, {\n instantSearchInstance: renderOptions.instantSearchInstance\n }), false);\n },\n getRenderState: function getRenderState(renderState, renderOptions) {\n return _objectSpread(_objectSpread({}, renderState), {}, {\n refinementList: _objectSpread(_objectSpread({}, renderState.refinementList), {}, _defineProperty({}, attribute, this.getWidgetRenderState(renderOptions)))\n });\n },\n getWidgetRenderState: function getWidgetRenderState(renderOptions) {\n var results = renderOptions.results,\n state = renderOptions.state,\n _createURL = renderOptions.createURL,\n instantSearchInstance = renderOptions.instantSearchInstance,\n helper = renderOptions.helper;\n var items = [];\n var facetValues = [];\n\n if (!sendEvent || !triggerRefine || !searchForFacetValues) {\n sendEvent = createSendEventForFacet({\n instantSearchInstance: instantSearchInstance,\n helper: helper,\n attribute: attribute,\n widgetType: this.$$type\n });\n\n triggerRefine = function triggerRefine(facetValue) {\n sendEvent('click', facetValue);\n helper.toggleFacetRefinement(attribute, facetValue).search();\n };\n\n searchForFacetValues = createSearchForFacetValues(helper, this);\n }\n\n if (results) {\n var values = results.getFacetValues(attribute, {\n sortBy: sortBy,\n facetOrdering: sortBy === DEFAULT_SORT\n });\n facetValues = values && Array.isArray(values) ? values : [];\n items = transformItems(facetValues.slice(0, getLimit()).map(formatItems), {\n results: results\n });\n var maxValuesPerFacetConfig = state.maxValuesPerFacet;\n var currentLimit = getLimit(); // If the limit is the max number of facet retrieved it is impossible to know\n // if the facets are exhaustive. The only moment we are sure it is exhaustive\n // is when it is strictly under the number requested unless we know that another\n // widget has requested more values (maxValuesPerFacet > getLimit()).\n // Because this is used for making the search of facets unable or not, it is important\n // to be conservative here.\n\n hasExhaustiveItems = maxValuesPerFacetConfig > currentLimit ? facetValues.length <= currentLimit : facetValues.length < currentLimit;\n lastResultsFromMainSearch = results;\n lastItemsFromMainSearch = items;\n\n if (renderOptions.results) {\n toggleShowMore = createToggleShowMore(renderOptions, this);\n }\n } // Do not mistake searchForFacetValues and searchFacetValues which is the actual search\n // function\n\n\n var searchFacetValues = searchForFacetValues && searchForFacetValues(renderOptions);\n var canShowLess = isShowingMore && lastItemsFromMainSearch.length > limit;\n var canShowMore = showMore && !hasExhaustiveItems;\n var canToggleShowMore = canShowLess || canShowMore;\n return {\n createURL: function createURL(facetValue) {\n return _createURL(state.resetPage().toggleFacetRefinement(attribute, facetValue));\n },\n items: items,\n refine: triggerRefine,\n searchForItems: searchFacetValues,\n isFromSearch: false,\n canRefine: items.length > 0,\n widgetParams: widgetParams,\n isShowingMore: isShowingMore,\n canToggleShowMore: canToggleShowMore,\n toggleShowMore: cachedToggleShowMore,\n sendEvent: sendEvent,\n hasExhaustiveItems: hasExhaustiveItems\n };\n },\n dispose: function dispose(_ref4) {\n var state = _ref4.state;\n unmountFn();\n var withoutMaxValuesPerFacet = state.setQueryParameter('maxValuesPerFacet', undefined);\n\n if (operator === 'and') {\n return withoutMaxValuesPerFacet.removeFacet(attribute);\n }\n\n return withoutMaxValuesPerFacet.removeDisjunctiveFacet(attribute);\n },\n getWidgetUiState: function getWidgetUiState(uiState, _ref5) {\n var searchParameters = _ref5.searchParameters;\n var values = operator === 'or' ? searchParameters.getDisjunctiveRefinements(attribute) : searchParameters.getConjunctiveRefinements(attribute);\n\n if (!values.length) {\n return uiState;\n }\n\n return _objectSpread(_objectSpread({}, uiState), {}, {\n refinementList: _objectSpread(_objectSpread({}, uiState.refinementList), {}, _defineProperty({}, attribute, values))\n });\n },\n getWidgetSearchParameters: function getWidgetSearchParameters(searchParameters, _ref6) {\n var uiState = _ref6.uiState;\n var isDisjunctive = operator === 'or';\n var values = uiState.refinementList && uiState.refinementList[attribute];\n var withoutRefinements = searchParameters.clearRefinements(attribute);\n var withFacetConfiguration = isDisjunctive ? withoutRefinements.addDisjunctiveFacet(attribute) : withoutRefinements.addFacet(attribute);\n var currentMaxValuesPerFacet = withFacetConfiguration.maxValuesPerFacet || 0;\n var nextMaxValuesPerFacet = Math.max(currentMaxValuesPerFacet, showMore ? showMoreLimit : limit);\n var withMaxValuesPerFacet = withFacetConfiguration.setQueryParameter('maxValuesPerFacet', nextMaxValuesPerFacet);\n\n if (!values) {\n var key = isDisjunctive ? 'disjunctiveFacetsRefinements' : 'facetsRefinements';\n return withMaxValuesPerFacet.setQueryParameters(_defineProperty({}, key, _objectSpread(_objectSpread({}, withMaxValuesPerFacet[key]), {}, _defineProperty({}, attribute, []))));\n }\n\n return values.reduce(function (parameters, value) {\n return isDisjunctive ? parameters.addDisjunctiveFacetRefinement(attribute, value) : parameters.addFacetRefinement(attribute, value);\n }, withMaxValuesPerFacet);\n }\n };\n };\n};\n\nexport default connectRefinementList;","export function isFacetRefined(helper, facet, value) {\n if (helper.state.isHierarchicalFacet(facet)) {\n return helper.state.isHierarchicalFacetRefined(facet, value);\n } else if (helper.state.isConjunctiveFacet(facet)) {\n return helper.state.isFacetRefined(facet, value);\n } else {\n return helper.state.isDisjunctiveFacetRefined(facet, value);\n }\n}","import connectRefinementList from \"instantsearch.js/es/connectors/refinement-list/connectRefinementList.js\";\nimport { useConnector } from \"../hooks/useConnector.js\";\nexport function useRefinementList(props, additionalWidgetProperties) {\n return useConnector(connectRefinementList, props, additionalWidgetProperties);\n}","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { checkRendering, createDocumentationMessageGenerator, noop } from \"../../lib/utils/index.js\";\nvar withUsage = createDocumentationMessageGenerator({\n name: 'search-box',\n connector: true\n});\n\nvar defaultQueryHook = function defaultQueryHook(query, hook) {\n return hook(query);\n};\n/**\n * **SearchBox** connector provides the logic to build a widget that will let the user search for a query.\n *\n * The connector provides to the rendering: `refine()` to set the query. The behaviour of this function\n * may be impacted by the `queryHook` widget parameter.\n */\n\n\nvar connectSearchBox = function connectSearchBox(renderFn) {\n var unmountFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n checkRendering(renderFn, withUsage());\n return function (widgetParams) {\n var _ref = widgetParams || {},\n _ref$queryHook = _ref.queryHook,\n queryHook = _ref$queryHook === void 0 ? defaultQueryHook : _ref$queryHook;\n\n var _refine;\n\n var _clear;\n\n return {\n $$type: 'ais.searchBox',\n init: function init(initOptions) {\n var instantSearchInstance = initOptions.instantSearchInstance;\n renderFn(_objectSpread(_objectSpread({}, this.getWidgetRenderState(initOptions)), {}, {\n instantSearchInstance: instantSearchInstance\n }), true);\n },\n render: function render(renderOptions) {\n var instantSearchInstance = renderOptions.instantSearchInstance;\n renderFn(_objectSpread(_objectSpread({}, this.getWidgetRenderState(renderOptions)), {}, {\n instantSearchInstance: instantSearchInstance\n }), false);\n },\n dispose: function dispose(_ref2) {\n var state = _ref2.state;\n unmountFn();\n return state.setQueryParameter('query', undefined);\n },\n getRenderState: function getRenderState(renderState, renderOptions) {\n return _objectSpread(_objectSpread({}, renderState), {}, {\n searchBox: this.getWidgetRenderState(renderOptions)\n });\n },\n getWidgetRenderState: function getWidgetRenderState(_ref3) {\n var helper = _ref3.helper,\n searchMetadata = _ref3.searchMetadata,\n state = _ref3.state;\n\n if (!_refine) {\n _refine = function _refine(query) {\n queryHook(query, function (q) {\n return helper.setQuery(q).search();\n });\n };\n\n _clear = function _clear() {\n helper.setQuery('').search();\n };\n }\n\n return {\n query: state.query || '',\n refine: _refine,\n clear: _clear,\n widgetParams: widgetParams,\n isSearchStalled: searchMetadata.isSearchStalled\n };\n },\n getWidgetUiState: function getWidgetUiState(uiState, _ref4) {\n var searchParameters = _ref4.searchParameters;\n var query = searchParameters.query || '';\n\n if (query === '' || uiState && uiState.query === query) {\n return uiState;\n }\n\n return _objectSpread(_objectSpread({}, uiState), {}, {\n query: query\n });\n },\n getWidgetSearchParameters: function getWidgetSearchParameters(searchParameters, _ref5) {\n var uiState = _ref5.uiState;\n return searchParameters.setQueryParameter('query', uiState.query || '');\n }\n };\n };\n};\n\nexport default connectSearchBox;","import connectSearchBox from \"instantsearch.js/es/connectors/search-box/connectSearchBox.js\";\nimport { useConnector } from \"../hooks/useConnector.js\";\nexport function useSearchBox(props, additionalWidgetProperties) {\n return useConnector(connectSearchBox, props, additionalWidgetProperties);\n}","export function toArray(value) {\n return Array.isArray(value) ? value : [value];\n}","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { checkRendering, escapeFacetValue, createDocumentationMessageGenerator, find, noop, toArray } from \"../../lib/utils/index.js\";\nvar withUsage = createDocumentationMessageGenerator({\n name: 'toggle-refinement',\n connector: true\n});\nvar $$type = 'ais.toggleRefinement';\n\nvar createSendEvent = function createSendEvent(_ref) {\n var instantSearchInstance = _ref.instantSearchInstance,\n helper = _ref.helper,\n attribute = _ref.attribute,\n on = _ref.on;\n\n var sendEventForToggle = function sendEventForToggle() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (args.length === 1) {\n instantSearchInstance.sendEventToInsights(args[0]);\n return;\n }\n\n var eventType = args[0],\n isRefined = args[1],\n _args$ = args[2],\n eventName = _args$ === void 0 ? 'Filter Applied' : _args$;\n\n if (eventType !== 'click' || on === undefined) {\n return;\n } // only send an event when the refinement gets applied,\n // not when it gets removed\n\n\n if (!isRefined) {\n instantSearchInstance.sendEventToInsights({\n insightsMethod: 'clickedFilters',\n widgetType: $$type,\n eventType: eventType,\n payload: {\n eventName: eventName,\n index: helper.getIndex(),\n filters: on.map(function (value) {\n return \"\".concat(attribute, \":\").concat(value);\n })\n },\n attribute: attribute\n });\n }\n };\n\n return sendEventForToggle;\n};\n\n/**\n * **Toggle** connector provides the logic to build a custom widget that will provide\n * an on/off filtering feature based on an attribute value or values.\n *\n * Two modes are implemented in the custom widget:\n * - with or without the value filtered\n * - switch between two values.\n */\nvar connectToggleRefinement = function connectToggleRefinement(renderFn) {\n var unmountFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n checkRendering(renderFn, withUsage());\n return function (widgetParams) {\n var _ref2 = widgetParams || {},\n attribute = _ref2.attribute,\n _ref2$on = _ref2.on,\n userOn = _ref2$on === void 0 ? true : _ref2$on,\n userOff = _ref2.off;\n\n if (!attribute) {\n throw new Error(withUsage('The `attribute` option is required.'));\n }\n\n var hasAnOffValue = userOff !== undefined; // even though facet values can be numbers and boolean,\n // the helper methods only accept string in the type\n\n var on = toArray(userOn).map(escapeFacetValue);\n var off = hasAnOffValue ? toArray(userOff).map(escapeFacetValue) : undefined;\n var sendEvent;\n\n var toggleRefinementFactory = function toggleRefinementFactory(helper) {\n return function () {\n var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n isRefined: false\n },\n isRefined = _ref3.isRefined;\n\n if (!isRefined) {\n sendEvent('click', isRefined);\n\n if (hasAnOffValue) {\n off.forEach(function (v) {\n return helper.removeDisjunctiveFacetRefinement(attribute, v);\n });\n }\n\n on.forEach(function (v) {\n return helper.addDisjunctiveFacetRefinement(attribute, v);\n });\n } else {\n on.forEach(function (v) {\n return helper.removeDisjunctiveFacetRefinement(attribute, v);\n });\n\n if (hasAnOffValue) {\n off.forEach(function (v) {\n return helper.addDisjunctiveFacetRefinement(attribute, v);\n });\n }\n }\n\n helper.search();\n };\n };\n\n var connectorState = {\n createURLFactory: function createURLFactory(isRefined, _ref4) {\n var state = _ref4.state,\n createURL = _ref4.createURL;\n return function () {\n state = state.resetPage();\n var valuesToRemove = isRefined ? on : off;\n\n if (valuesToRemove) {\n valuesToRemove.forEach(function (v) {\n state = state.removeDisjunctiveFacetRefinement(attribute, v);\n });\n }\n\n var valuesToAdd = isRefined ? off : on;\n\n if (valuesToAdd) {\n valuesToAdd.forEach(function (v) {\n state = state.addDisjunctiveFacetRefinement(attribute, v);\n });\n }\n\n return createURL(state);\n };\n }\n };\n return {\n $$type: $$type,\n init: function init(initOptions) {\n var instantSearchInstance = initOptions.instantSearchInstance;\n renderFn(_objectSpread(_objectSpread({}, this.getWidgetRenderState(initOptions)), {}, {\n instantSearchInstance: instantSearchInstance\n }), true);\n },\n render: function render(renderOptions) {\n var instantSearchInstance = renderOptions.instantSearchInstance;\n renderFn(_objectSpread(_objectSpread({}, this.getWidgetRenderState(renderOptions)), {}, {\n instantSearchInstance: instantSearchInstance\n }), false);\n },\n dispose: function dispose(_ref5) {\n var state = _ref5.state;\n unmountFn();\n return state.removeDisjunctiveFacet(attribute);\n },\n getRenderState: function getRenderState(renderState, renderOptions) {\n return _objectSpread(_objectSpread({}, renderState), {}, {\n toggleRefinement: _objectSpread(_objectSpread({}, renderState.toggleRefinement), {}, _defineProperty({}, attribute, this.getWidgetRenderState(renderOptions)))\n });\n },\n getWidgetRenderState: function getWidgetRenderState(_ref6) {\n var state = _ref6.state,\n helper = _ref6.helper,\n results = _ref6.results,\n createURL = _ref6.createURL,\n instantSearchInstance = _ref6.instantSearchInstance;\n var isRefined = results ? on.every(function (v) {\n return state.isDisjunctiveFacetRefined(attribute, v);\n }) : on.every(function (v) {\n return state.isDisjunctiveFacetRefined(attribute, v);\n });\n var onFacetValue = {\n isRefined: isRefined,\n count: 0\n };\n var offFacetValue = {\n isRefined: hasAnOffValue && !isRefined,\n count: 0\n };\n\n if (results) {\n var offValue = toArray(off || false);\n var allFacetValues = results.getFacetValues(attribute, {}) || [];\n var onData = on.map(function (v) {\n return find(allFacetValues, function (_ref7) {\n var escapedValue = _ref7.escapedValue;\n return escapedValue === escapeFacetValue(String(v));\n });\n }).filter(function (v) {\n return v !== undefined;\n });\n var offData = hasAnOffValue ? offValue.map(function (v) {\n return find(allFacetValues, function (_ref8) {\n var escapedValue = _ref8.escapedValue;\n return escapedValue === escapeFacetValue(String(v));\n });\n }).filter(function (v) {\n return v !== undefined;\n }) : [];\n onFacetValue = {\n isRefined: onData.length ? onData.every(function (v) {\n return v.isRefined;\n }) : false,\n count: onData.reduce(function (acc, v) {\n return acc + v.count;\n }, 0) || null\n };\n offFacetValue = {\n isRefined: offData.length ? offData.every(function (v) {\n return v.isRefined;\n }) : false,\n count: offData.reduce(function (acc, v) {\n return acc + v.count;\n }, 0) || allFacetValues.reduce(function (total, _ref9) {\n var count = _ref9.count;\n return total + count;\n }, 0)\n };\n }\n\n if (!sendEvent) {\n sendEvent = createSendEvent({\n instantSearchInstance: instantSearchInstance,\n attribute: attribute,\n on: on,\n helper: helper\n });\n }\n\n var nextRefinement = isRefined ? offFacetValue : onFacetValue;\n return {\n value: {\n name: attribute,\n isRefined: isRefined,\n count: results ? nextRefinement.count : null,\n onFacetValue: onFacetValue,\n offFacetValue: offFacetValue\n },\n createURL: connectorState.createURLFactory(isRefined, {\n state: state,\n createURL: createURL\n }),\n sendEvent: sendEvent,\n canRefine: Boolean(results ? nextRefinement.count : null),\n refine: toggleRefinementFactory(helper),\n widgetParams: widgetParams\n };\n },\n getWidgetUiState: function getWidgetUiState(uiState, _ref10) {\n var searchParameters = _ref10.searchParameters;\n var isRefined = on && on.every(function (v) {\n return searchParameters.isDisjunctiveFacetRefined(attribute, v);\n });\n\n if (!isRefined) {\n return uiState;\n }\n\n return _objectSpread(_objectSpread({}, uiState), {}, {\n toggle: _objectSpread(_objectSpread({}, uiState.toggle), {}, _defineProperty({}, attribute, isRefined))\n });\n },\n getWidgetSearchParameters: function getWidgetSearchParameters(searchParameters, _ref11) {\n var uiState = _ref11.uiState;\n var withFacetConfiguration = searchParameters.clearRefinements(attribute).addDisjunctiveFacet(attribute);\n var isRefined = Boolean(uiState.toggle && uiState.toggle[attribute]);\n\n if (isRefined) {\n if (on) {\n on.forEach(function (v) {\n withFacetConfiguration = withFacetConfiguration.addDisjunctiveFacetRefinement(attribute, v);\n });\n }\n\n return withFacetConfiguration;\n } // It's not refined with an `off` value\n\n\n if (hasAnOffValue) {\n if (off) {\n off.forEach(function (v) {\n withFacetConfiguration = withFacetConfiguration.addDisjunctiveFacetRefinement(attribute, v);\n });\n }\n\n return withFacetConfiguration;\n } // It's not refined without an `off` value\n\n\n return withFacetConfiguration.setQueryParameters({\n disjunctiveFacetsRefinements: _objectSpread(_objectSpread({}, searchParameters.disjunctiveFacetsRefinements), {}, _defineProperty({}, attribute, []))\n });\n }\n };\n };\n};\n\nexport default connectToggleRefinement;","import connectToggleRefinement from \"instantsearch.js/es/connectors/toggle-refinement/connectToggleRefinement.js\";\nimport { useConnector } from \"../hooks/useConnector.js\";\nexport function useToggleRefinement(props, additionalWidgetProperties) {\n return useConnector(connectToggleRefinement, props, additionalWidgetProperties);\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\n\n/* eslint-disable complexity */\n\n/*\n * Code taken from dequal/lite v2.0.0\n * https://github.com/lukeed/dequal/blob/9aa73181ac7e081cd330cac67d313632ac04bb02/src/lite.js\n *\n * It adds a 3rd argument `compare(a, b)` that lets execute custom logic to\n * compare values.\n * We use it to skip comparing function references.\n */\nvar has = Object.prototype.hasOwnProperty;\nexport function dequal(foo, bar, compare) {\n // start of custom implementation\n if (compare !== null && compare !== void 0 && compare(foo, bar)) {\n return true;\n } // end of custom implementation\n\n\n var ctor;\n var len;\n if (foo === bar) return true;\n\n if (foo && bar && (ctor = foo.constructor) === bar.constructor) {\n if (ctor === Date) return foo.getTime() === bar.getTime();\n if (ctor === RegExp) return foo.toString() === bar.toString();\n\n if (ctor === Array) {\n if ((len = foo.length) === bar.length) {\n while (len-- && dequal(foo[len], bar[len], compare)) {\n ;\n }\n }\n\n return len === -1;\n }\n\n if (!ctor || _typeof(foo) === 'object') {\n len = 0; // eslint-disable-next-line guard-for-in, no-restricted-syntax\n\n for (ctor in foo) {\n if (has.call(foo, ctor) && ++len && !has.call(bar, ctor)) return false;\n if (!(ctor in bar) || !dequal(foo[ctor], bar[ctor], compare)) return false;\n }\n\n return Object.keys(bar).length === len;\n }\n } // eslint-disable-next-line no-self-compare\n\n\n return foo !== foo && bar !== bar;\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport { useEffect, useState } from 'react';\nimport { dequal } from \"./dequal.js\";\nexport function useStableValue(value) {\n var _useState = useState(function () {\n return value;\n }),\n _useState2 = _slicedToArray(_useState, 2),\n stableValue = _useState2[0],\n setStableValue = _useState2[1];\n\n useEffect(function () {\n if (!dequal(stableValue, value)) {\n setStableValue(value);\n } // eslint-disable-next-line react-hooks/exhaustive-deps\n\n }, [value]);\n return stableValue;\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nvar _excluded = [\"instantSearchInstance\", \"widgetParams\"],\n _excluded2 = [\"widgetParams\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nimport { useMemo, useRef, useState } from 'react';\nimport { dequal } from \"../lib/dequal.js\";\nimport { getIndexSearchResults } from \"../lib/getIndexSearchResults.js\";\nimport { useIndexContext } from \"../lib/useIndexContext.js\";\nimport { useInstantSearchContext } from \"../lib/useInstantSearchContext.js\";\nimport { useInstantSearchServerContext } from \"../lib/useInstantSearchServerContext.js\";\nimport { useStableValue } from \"../lib/useStableValue.js\";\nimport { useWidget } from \"../lib/useWidget.js\";\nexport function useConnector(connector) {\n var props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var additionalWidgetProperties = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var serverContext = useInstantSearchServerContext();\n var search = useInstantSearchContext();\n var parentIndex = useIndexContext();\n var stableProps = useStableValue(props);\n var stableAdditionalWidgetProperties = useStableValue(additionalWidgetProperties);\n var shouldSetStateRef = useRef(true);\n var previousRenderStateRef = useRef(null);\n var widget = useMemo(function () {\n var createWidget = connector(function (connectorState, isFirstRender) {\n // We skip the `init` widget render because:\n // - We rely on `getWidgetRenderState` to compute the initial state before\n // the InstantSearch.js lifecycle starts.\n // - It prevents UI flashes when updating the widget props.\n if (isFirstRender) {\n shouldSetStateRef.current = true;\n return;\n } // There are situations where InstantSearch.js may render widgets slightly\n // after they're removed by React, and thus try to update the React state\n // on unmounted components. React 16 and 17 consider them as memory leaks\n // and display a warning.\n // This happens in when `attributesToRender` contains a\n // value without an attribute previously mounted. React will unmount the\n // component controlled by that attribute, but InstantSearch.js will stay\n // unaware of this change until the render pass finishes, and therefore\n // notifies of a state change.\n // This ref lets us track this situation and ignore these state updates.\n\n\n if (shouldSetStateRef.current) {\n var instantSearchInstance = connectorState.instantSearchInstance,\n widgetParams = connectorState.widgetParams,\n renderState = _objectWithoutProperties(connectorState, _excluded); // We only update the state when a widget render state param changes,\n // except for functions. We ignore function reference changes to avoid\n // infinite loops. It's safe to omit them because they get updated\n // every time another render param changes.\n\n\n if (!dequal(renderState, previousRenderStateRef.current, function (a, b) {\n return (a === null || a === void 0 ? void 0 : a.constructor) === Function && (b === null || b === void 0 ? void 0 : b.constructor) === Function;\n })) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n setState(renderState);\n previousRenderStateRef.current = renderState;\n }\n }\n }, function () {\n // We'll ignore the next state update until we know for sure that\n // InstantSearch.js re-inits the component.\n shouldSetStateRef.current = false;\n });\n return _objectSpread(_objectSpread({}, createWidget(stableProps)), stableAdditionalWidgetProperties);\n }, [connector, stableProps, stableAdditionalWidgetProperties]);\n\n var _useState = useState(function () {\n if (widget.getWidgetRenderState) {\n var _widget$getWidgetSear;\n\n // The helper exists because we've started InstantSearch.\n var helper = parentIndex.getHelper();\n var uiState = parentIndex.getWidgetUiState({})[parentIndex.getIndexId()];\n helper.state = ((_widget$getWidgetSear = widget.getWidgetSearchParameters) === null || _widget$getWidgetSear === void 0 ? void 0 : _widget$getWidgetSear.call(widget, helper.state, {\n uiState: uiState\n })) || helper.state;\n\n var _getIndexSearchResult = getIndexSearchResults(parentIndex),\n results = _getIndexSearchResult.results,\n scopedResults = _getIndexSearchResult.scopedResults; // We get the widget render state by providing the same parameters as\n // InstantSearch provides to the widget's `render` method.\n // See https://github.com/algolia/instantsearch.js/blob/019cd18d0de6dd320284aa4890541b7fe2198c65/src/widgets/index/index.ts#L604-L617\n\n\n // We get the widget render state by providing the same parameters as\n // InstantSearch provides to the widget's `render` method.\n // See https://github.com/algolia/instantsearch.js/blob/019cd18d0de6dd320284aa4890541b7fe2198c65/src/widgets/index/index.ts#L604-L617\n var _widget$getWidgetRend = widget.getWidgetRenderState({\n helper: helper,\n parent: parentIndex,\n instantSearchInstance: search,\n results: results,\n scopedResults: scopedResults,\n state: helper.state,\n renderState: search.renderState,\n templatesConfig: search.templatesConfig,\n createURL: parentIndex.createURL,\n searchMetadata: {\n isSearchStalled: search.status === 'stalled'\n },\n status: search.status,\n error: search.error\n }),\n widgetParams = _widget$getWidgetRend.widgetParams,\n renderState = _objectWithoutProperties(_widget$getWidgetRend, _excluded2);\n\n return renderState;\n }\n\n return {};\n }),\n _useState2 = _slicedToArray(_useState, 2),\n state = _useState2[0],\n setState = _useState2[1];\n\n useWidget({\n widget: widget,\n parentIndex: parentIndex,\n props: stableProps,\n shouldSsr: Boolean(serverContext)\n });\n return state;\n}","import { useEffect, useRef } from 'react';\nimport { dequal } from \"./dequal.js\";\nimport { useInstantSearchContext } from \"./useInstantSearchContext.js\";\nimport { useIsomorphicLayoutEffect } from \"./useIsomorphicLayoutEffect.js\";\nexport function useWidget(_ref) {\n var widget = _ref.widget,\n parentIndex = _ref.parentIndex,\n props = _ref.props,\n shouldSsr = _ref.shouldSsr;\n var prevPropsRef = useRef(props);\n useEffect(function () {\n prevPropsRef.current = props;\n }, [props]);\n var prevWidgetRef = useRef(widget);\n useEffect(function () {\n prevWidgetRef.current = widget;\n }, [widget]);\n var cleanupTimerRef = useRef(null);\n var shouldAddWidgetEarly = shouldSsr && !parentIndex.getWidgets().includes(widget);\n var search = useInstantSearchContext(); // This effect is responsible for adding, removing, and updating the widget.\n // We need to support scenarios where the widget is remounted quickly, like in\n // Strict Mode, so that we don't lose its state, and therefore that we don't\n // break routing.\n\n useIsomorphicLayoutEffect(function () {\n var previousWidget = prevWidgetRef.current;\n\n function cleanup() {\n if (search._preventWidgetCleanup) return;\n parentIndex.removeWidgets([previousWidget]);\n } // Scenario 1: the widget is added for the first time.\n\n\n if (cleanupTimerRef.current === null) {\n if (!shouldAddWidgetEarly) {\n parentIndex.addWidgets([widget]);\n }\n } // Scenario 2: the widget is rerendered or updated.\n else {\n // We cancel the original effect cleanup because it may not be necessary if\n // props haven't changed. (We manually call it if it is below.)\n clearTimeout(cleanupTimerRef.current); // Warning: if an unstable function prop is provided, `dequal` is not able\n // to keep its reference and therefore will consider that props did change.\n // This could unsollicitely remove/add the widget, therefore forget its state,\n // and could be a source of confusion.\n // If users face this issue, we should advise them to provide stable function\n // references.\n\n var arePropsEqual = dequal(props, prevPropsRef.current); // If props did change, then we execute the cleanup function instantly\n // and then add the widget back. This lets us add the widget without\n // waiting for the scheduled cleanup function to finish (that we canceled\n // above).\n\n if (!arePropsEqual) {\n cleanup();\n parentIndex.addWidgets([widget]);\n }\n }\n\n return function () {\n // We don't remove the widget right away, but rather schedule it so that\n // we're able to cancel it in the next effect.\n cleanupTimerRef.current = setTimeout(cleanup);\n };\n }, [parentIndex, widget, shouldAddWidgetEarly, search, props]);\n\n if (shouldAddWidgetEarly) {\n parentIndex.addWidgets([widget]);\n }\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nimport { useCallback, useEffect, useState } from 'react';\nimport { useIndexContext } from \"./useIndexContext.js\";\nimport { useInstantSearchContext } from \"./useInstantSearchContext.js\";\nexport function useSearchState() {\n var search = useInstantSearchContext();\n var searchIndex = useIndexContext();\n var indexId = searchIndex.getIndexId();\n\n var _useState = useState(function () {\n return search.getUiState();\n }),\n _useState2 = _slicedToArray(_useState, 2),\n uiState = _useState2[0],\n setLocalUiState = _useState2[1];\n\n var indexUiState = uiState[indexId];\n var setUiState = useCallback(function (nextUiState) {\n search.setUiState(nextUiState);\n }, [search]);\n var setIndexUiState = useCallback(function (nextUiState) {\n setUiState(function (prevUiState) {\n return _objectSpread(_objectSpread({}, prevUiState), {}, _defineProperty({}, indexId, typeof nextUiState === 'function' ? nextUiState(prevUiState[indexId]) : nextUiState));\n });\n }, [setUiState, indexId]);\n useEffect(function () {\n function handleRender() {\n setLocalUiState(search.getUiState());\n }\n\n search.addListener('render', handleRender);\n return function () {\n search.removeListener('render', handleRender);\n };\n }, [search, indexId]);\n return {\n uiState: uiState,\n setUiState: setUiState,\n indexUiState: indexUiState,\n setIndexUiState: setIndexUiState\n };\n}","import { useCallback } from 'react';\nimport { useInstantSearchContext } from \"../lib/useInstantSearchContext.js\";\nimport { useIsomorphicLayoutEffect } from \"../lib/useIsomorphicLayoutEffect.js\";\nimport { useSearchResults } from \"../lib/useSearchResults.js\";\nimport { useSearchState } from \"../lib/useSearchState.js\";\nexport function useInstantSearch() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n catchError = _ref.catchError;\n\n var search = useInstantSearchContext();\n\n var _useSearchState = useSearchState(),\n uiState = _useSearchState.uiState,\n setUiState = _useSearchState.setUiState,\n indexUiState = _useSearchState.indexUiState,\n setIndexUiState = _useSearchState.setIndexUiState;\n\n var _useSearchResults = useSearchResults(),\n results = _useSearchResults.results,\n scopedResults = _useSearchResults.scopedResults;\n\n var use = useCallback(function () {\n for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n search.use.apply(search, middlewares);\n return function () {\n search.unuse.apply(search, middlewares);\n };\n }, [search]);\n var refresh = useCallback(function () {\n search.refresh();\n }, [search]);\n useIsomorphicLayoutEffect(function () {\n if (catchError) {\n var onError = function onError() {};\n\n search.addListener('error', onError);\n return function () {\n return search.removeListener('error', onError);\n };\n }\n\n return function () {};\n }, [search, catchError]);\n return {\n results: results,\n scopedResults: scopedResults,\n uiState: uiState,\n setUiState: setUiState,\n indexUiState: indexUiState,\n setIndexUiState: setIndexUiState,\n use: use,\n refresh: refresh,\n status: search.status,\n error: search.error\n };\n}","import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport { useEffect, useState } from 'react';\nimport { getIndexSearchResults } from \"./getIndexSearchResults.js\";\nimport { useIndexContext } from \"./useIndexContext.js\";\nimport { useInstantSearchContext } from \"./useInstantSearchContext.js\";\nexport function useSearchResults() {\n var search = useInstantSearchContext();\n var searchIndex = useIndexContext();\n\n var _useState = useState(function () {\n return getIndexSearchResults(searchIndex);\n }),\n _useState2 = _slicedToArray(_useState, 2),\n searchResults = _useState2[0],\n setSearchResults = _useState2[1];\n\n useEffect(function () {\n function handleRender() {\n var results = searchIndex.getResults(); // Results can be `null` when the first search is stalled.\n // In this case, we skip the update.\n // See: https://github.com/algolia/instantsearch.js/blob/20996c7a159988c58e00ff24d2d2dc98af8b980f/src/widgets/index/index.ts#L652-L657\n\n if (results !== null) {\n setSearchResults({\n results: results,\n scopedResults: searchIndex.getScopedResults()\n });\n }\n }\n\n search.addListener('render', handleRender);\n return function () {\n search.removeListener('render', handleRender);\n };\n }, [search, searchIndex]);\n return searchResults;\n}","import { createContext } from 'react';\nexport var IndexContext = /*#__PURE__*/createContext(null);\n\nif (process.env.NODE_ENV !== 'production') {\n IndexContext.displayName = 'Index';\n}","import { createContext } from 'react';\nexport var InstantSearchContext = /*#__PURE__*/createContext(null);\n\nif (process.env.NODE_ENV !== 'production') {\n InstantSearchContext.displayName = 'InstantSearch';\n}","import algoliasearchHelper from 'algoliasearch-helper';\nexport function createSearchResults(state) {\n var _state$query, _state$page, _state$hitsPerPage;\n\n return new algoliasearchHelper.SearchResults(state, [{\n query: (_state$query = state.query) !== null && _state$query !== void 0 ? _state$query : '',\n page: (_state$page = state.page) !== null && _state$page !== void 0 ? _state$page : 0,\n hitsPerPage: (_state$hitsPerPage = state.hitsPerPage) !== null && _state$hitsPerPage !== void 0 ? _state$hitsPerPage : 20,\n hits: [],\n nbHits: 0,\n nbPages: 0,\n params: '',\n exhaustiveNbHits: true,\n exhaustiveFacetsCount: true,\n processingTimeMS: 0,\n index: state.index\n }], {\n /** used by connectors to prevent persisting these results */\n __isArtificial: true\n });\n}","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n\nimport { createSearchResults } from \"./createSearchResults.js\";\nexport function getIndexSearchResults(indexWidget) {\n var helper = indexWidget.getHelper();\n var results = // On SSR, we get the results injected on the Index.\n indexWidget.getResults() || // On the browser, we create fallback results based on the helper state.\n createSearchResults(helper.state);\n var scopedResults = indexWidget.getScopedResults().map(function (scopedResult) {\n var fallbackResults = scopedResult.indexId === indexWidget.getIndexId() ? results : createSearchResults(scopedResult.helper.state);\n return _objectSpread(_objectSpread({}, scopedResult), {}, {\n // We keep `results` from being `null`.\n results: scopedResult.results || fallbackResults\n });\n });\n return {\n results: results,\n scopedResults: scopedResults\n };\n}","/**\n * Throws an error if the condition is not met.\n *\n * The error is exhaustive in development, and becomes generic in production.\n *\n * This is used to make development a better experience to provide guidance as\n * to where the error comes from.\n */\nexport function invariant(condition, message) {\n if (condition) {\n return;\n }\n\n if (!(process.env.NODE_ENV !== 'production')) {\n throw new Error('Invariant failed');\n }\n\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(\"[InstantSearch] \".concat(typeof message === 'function' ? message() : message));\n }\n}","import { useContext } from 'react';\nimport { invariant } from \"./invariant.js\";\nimport { IndexContext } from \"./IndexContext.js\";\nexport function useIndexContext() {\n var context = useContext(IndexContext);\n invariant(context !== null, 'The component must be used within .');\n return context;\n}","import { useContext } from 'react';\nimport { invariant } from \"./invariant.js\";\nimport { InstantSearchContext } from \"./InstantSearchContext.js\";\nexport function useInstantSearchContext() {\n var search = useContext(InstantSearchContext);\n invariant(search !== null, 'Hooks must be used inside the component.\\n\\n' + 'They are not compatible with the `react-instantsearch-core` and `react-instantsearch-dom` packages, so make sure to use the component from `react-instantsearch-hooks`.');\n return search;\n}","import { createContext } from 'react';\nexport var InstantSearchServerContext = /*#__PURE__*/createContext(null);\n\nif (process.env.NODE_ENV !== 'production') {\n InstantSearchServerContext.displayName = 'InstantSearchServer';\n}","import { useContext } from 'react';\nimport { InstantSearchServerContext } from \"../components/InstantSearchServerContext.js\";\nexport function useInstantSearchServerContext() {\n return useContext(InstantSearchServerContext);\n}","import { useEffect, useLayoutEffect } from 'react';\n/**\n * `useLayoutEffect` that doesn't show a warning when server-side rendering.\n *\n * It uses `useEffect` on the server (no-op), and `useLayoutEffect` on the browser.\n */\n\nexport var useIsomorphicLayoutEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect;","function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\n// === Symbol Support ===\nvar hasSymbols = function () {\n return typeof Symbol === 'function';\n};\n\nvar hasSymbol = function (name) {\n return hasSymbols() && Boolean(Symbol[name]);\n};\n\nvar getSymbol = function (name) {\n return hasSymbol(name) ? Symbol[name] : '@@' + name;\n};\n\nif (hasSymbols() && !hasSymbol('observable')) {\n Symbol.observable = Symbol('observable');\n}\n\nvar SymbolIterator = getSymbol('iterator');\nvar SymbolObservable = getSymbol('observable');\nvar SymbolSpecies = getSymbol('species'); // === Abstract Operations ===\n\nfunction getMethod(obj, key) {\n var value = obj[key];\n if (value == null) return undefined;\n if (typeof value !== 'function') throw new TypeError(value + ' is not a function');\n return value;\n}\n\nfunction getSpecies(obj) {\n var ctor = obj.constructor;\n\n if (ctor !== undefined) {\n ctor = ctor[SymbolSpecies];\n\n if (ctor === null) {\n ctor = undefined;\n }\n }\n\n return ctor !== undefined ? ctor : Observable;\n}\n\nfunction isObservable(x) {\n return x instanceof Observable; // SPEC: Brand check\n}\n\nfunction hostReportError(e) {\n if (hostReportError.log) {\n hostReportError.log(e);\n } else {\n setTimeout(function () {\n throw e;\n });\n }\n}\n\nfunction enqueue(fn) {\n Promise.resolve().then(function () {\n try {\n fn();\n } catch (e) {\n hostReportError(e);\n }\n });\n}\n\nfunction cleanupSubscription(subscription) {\n var cleanup = subscription._cleanup;\n if (cleanup === undefined) return;\n subscription._cleanup = undefined;\n\n if (!cleanup) {\n return;\n }\n\n try {\n if (typeof cleanup === 'function') {\n cleanup();\n } else {\n var unsubscribe = getMethod(cleanup, 'unsubscribe');\n\n if (unsubscribe) {\n unsubscribe.call(cleanup);\n }\n }\n } catch (e) {\n hostReportError(e);\n }\n}\n\nfunction closeSubscription(subscription) {\n subscription._observer = undefined;\n subscription._queue = undefined;\n subscription._state = 'closed';\n}\n\nfunction flushSubscription(subscription) {\n var queue = subscription._queue;\n\n if (!queue) {\n return;\n }\n\n subscription._queue = undefined;\n subscription._state = 'ready';\n\n for (var i = 0; i < queue.length; ++i) {\n notifySubscription(subscription, queue[i].type, queue[i].value);\n if (subscription._state === 'closed') break;\n }\n}\n\nfunction notifySubscription(subscription, type, value) {\n subscription._state = 'running';\n var observer = subscription._observer;\n\n try {\n var m = getMethod(observer, type);\n\n switch (type) {\n case 'next':\n if (m) m.call(observer, value);\n break;\n\n case 'error':\n closeSubscription(subscription);\n if (m) m.call(observer, value);else throw value;\n break;\n\n case 'complete':\n closeSubscription(subscription);\n if (m) m.call(observer);\n break;\n }\n } catch (e) {\n hostReportError(e);\n }\n\n if (subscription._state === 'closed') cleanupSubscription(subscription);else if (subscription._state === 'running') subscription._state = 'ready';\n}\n\nfunction onNotify(subscription, type, value) {\n if (subscription._state === 'closed') return;\n\n if (subscription._state === 'buffering') {\n subscription._queue.push({\n type: type,\n value: value\n });\n\n return;\n }\n\n if (subscription._state !== 'ready') {\n subscription._state = 'buffering';\n subscription._queue = [{\n type: type,\n value: value\n }];\n enqueue(function () {\n return flushSubscription(subscription);\n });\n return;\n }\n\n notifySubscription(subscription, type, value);\n}\n\nvar Subscription = /*#__PURE__*/function () {\n function Subscription(observer, subscriber) {\n // ASSERT: observer is an object\n // ASSERT: subscriber is callable\n this._cleanup = undefined;\n this._observer = observer;\n this._queue = undefined;\n this._state = 'initializing';\n var subscriptionObserver = new SubscriptionObserver(this);\n\n try {\n this._cleanup = subscriber.call(undefined, subscriptionObserver);\n } catch (e) {\n subscriptionObserver.error(e);\n }\n\n if (this._state === 'initializing') this._state = 'ready';\n }\n\n var _proto = Subscription.prototype;\n\n _proto.unsubscribe = function unsubscribe() {\n if (this._state !== 'closed') {\n closeSubscription(this);\n cleanupSubscription(this);\n }\n };\n\n _createClass(Subscription, [{\n key: \"closed\",\n get: function () {\n return this._state === 'closed';\n }\n }]);\n\n return Subscription;\n}();\n\nvar SubscriptionObserver = /*#__PURE__*/function () {\n function SubscriptionObserver(subscription) {\n this._subscription = subscription;\n }\n\n var _proto2 = SubscriptionObserver.prototype;\n\n _proto2.next = function next(value) {\n onNotify(this._subscription, 'next', value);\n };\n\n _proto2.error = function error(value) {\n onNotify(this._subscription, 'error', value);\n };\n\n _proto2.complete = function complete() {\n onNotify(this._subscription, 'complete');\n };\n\n _createClass(SubscriptionObserver, [{\n key: \"closed\",\n get: function () {\n return this._subscription._state === 'closed';\n }\n }]);\n\n return SubscriptionObserver;\n}();\n\nvar Observable = /*#__PURE__*/function () {\n function Observable(subscriber) {\n if (!(this instanceof Observable)) throw new TypeError('Observable cannot be called as a function');\n if (typeof subscriber !== 'function') throw new TypeError('Observable initializer must be a function');\n this._subscriber = subscriber;\n }\n\n var _proto3 = Observable.prototype;\n\n _proto3.subscribe = function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n observer = {\n next: observer,\n error: arguments[1],\n complete: arguments[2]\n };\n }\n\n return new Subscription(observer, this._subscriber);\n };\n\n _proto3.forEach = function forEach(fn) {\n var _this = this;\n\n return new Promise(function (resolve, reject) {\n if (typeof fn !== 'function') {\n reject(new TypeError(fn + ' is not a function'));\n return;\n }\n\n function done() {\n subscription.unsubscribe();\n resolve();\n }\n\n var subscription = _this.subscribe({\n next: function (value) {\n try {\n fn(value, done);\n } catch (e) {\n reject(e);\n subscription.unsubscribe();\n }\n },\n error: reject,\n complete: resolve\n });\n });\n };\n\n _proto3.map = function map(fn) {\n var _this2 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n var C = getSpecies(this);\n return new C(function (observer) {\n return _this2.subscribe({\n next: function (value) {\n try {\n value = fn(value);\n } catch (e) {\n return observer.error(e);\n }\n\n observer.next(value);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n observer.complete();\n }\n });\n });\n };\n\n _proto3.filter = function filter(fn) {\n var _this3 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n var C = getSpecies(this);\n return new C(function (observer) {\n return _this3.subscribe({\n next: function (value) {\n try {\n if (!fn(value)) return;\n } catch (e) {\n return observer.error(e);\n }\n\n observer.next(value);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n observer.complete();\n }\n });\n });\n };\n\n _proto3.reduce = function reduce(fn) {\n var _this4 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n var C = getSpecies(this);\n var hasSeed = arguments.length > 1;\n var hasValue = false;\n var seed = arguments[1];\n var acc = seed;\n return new C(function (observer) {\n return _this4.subscribe({\n next: function (value) {\n var first = !hasValue;\n hasValue = true;\n\n if (!first || hasSeed) {\n try {\n acc = fn(acc, value);\n } catch (e) {\n return observer.error(e);\n }\n } else {\n acc = value;\n }\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n if (!hasValue && !hasSeed) return observer.error(new TypeError('Cannot reduce an empty sequence'));\n observer.next(acc);\n observer.complete();\n }\n });\n });\n };\n\n _proto3.concat = function concat() {\n var _this5 = this;\n\n for (var _len = arguments.length, sources = new Array(_len), _key = 0; _key < _len; _key++) {\n sources[_key] = arguments[_key];\n }\n\n var C = getSpecies(this);\n return new C(function (observer) {\n var subscription;\n var index = 0;\n\n function startNext(next) {\n subscription = next.subscribe({\n next: function (v) {\n observer.next(v);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n if (index === sources.length) {\n subscription = undefined;\n observer.complete();\n } else {\n startNext(C.from(sources[index++]));\n }\n }\n });\n }\n\n startNext(_this5);\n return function () {\n if (subscription) {\n subscription.unsubscribe();\n subscription = undefined;\n }\n };\n });\n };\n\n _proto3.flatMap = function flatMap(fn) {\n var _this6 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n var C = getSpecies(this);\n return new C(function (observer) {\n var subscriptions = [];\n\n var outer = _this6.subscribe({\n next: function (value) {\n if (fn) {\n try {\n value = fn(value);\n } catch (e) {\n return observer.error(e);\n }\n }\n\n var inner = C.from(value).subscribe({\n next: function (value) {\n observer.next(value);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n var i = subscriptions.indexOf(inner);\n if (i >= 0) subscriptions.splice(i, 1);\n completeIfDone();\n }\n });\n subscriptions.push(inner);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\n completeIfDone();\n }\n });\n\n function completeIfDone() {\n if (outer.closed && subscriptions.length === 0) observer.complete();\n }\n\n return function () {\n subscriptions.forEach(function (s) {\n return s.unsubscribe();\n });\n outer.unsubscribe();\n };\n });\n };\n\n _proto3[SymbolObservable] = function () {\n return this;\n };\n\n Observable.from = function from(x) {\n var C = typeof this === 'function' ? this : Observable;\n if (x == null) throw new TypeError(x + ' is not an object');\n var method = getMethod(x, SymbolObservable);\n\n if (method) {\n var observable = method.call(x);\n if (Object(observable) !== observable) throw new TypeError(observable + ' is not an object');\n if (isObservable(observable) && observable.constructor === C) return observable;\n return new C(function (observer) {\n return observable.subscribe(observer);\n });\n }\n\n if (hasSymbol('iterator')) {\n method = getMethod(x, SymbolIterator);\n\n if (method) {\n return new C(function (observer) {\n enqueue(function () {\n if (observer.closed) return;\n\n for (var _iterator = _createForOfIteratorHelperLoose(method.call(x)), _step; !(_step = _iterator()).done;) {\n var item = _step.value;\n observer.next(item);\n if (observer.closed) return;\n }\n\n observer.complete();\n });\n });\n }\n }\n\n if (Array.isArray(x)) {\n return new C(function (observer) {\n enqueue(function () {\n if (observer.closed) return;\n\n for (var i = 0; i < x.length; ++i) {\n observer.next(x[i]);\n if (observer.closed) return;\n }\n\n observer.complete();\n });\n });\n }\n\n throw new TypeError(x + ' is not observable');\n };\n\n Observable.of = function of() {\n for (var _len2 = arguments.length, items = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n items[_key2] = arguments[_key2];\n }\n\n var C = typeof this === 'function' ? this : Observable;\n return new C(function (observer) {\n enqueue(function () {\n if (observer.closed) return;\n\n for (var i = 0; i < items.length; ++i) {\n observer.next(items[i]);\n if (observer.closed) return;\n }\n\n observer.complete();\n });\n });\n };\n\n _createClass(Observable, null, [{\n key: SymbolSpecies,\n get: function () {\n return this;\n }\n }]);\n\n return Observable;\n}();\n\nif (hasSymbols()) {\n Object.defineProperty(Observable, Symbol('extensions'), {\n value: {\n symbol: SymbolObservable,\n hostReportError: hostReportError\n },\n configurable: true\n });\n}\n\nexport { Observable };\n","const createStoreImpl = (createState) => {\n let state;\n const listeners = /* @__PURE__ */ new Set();\n const setState = (partial, replace) => {\n const nextState = typeof partial === \"function\" ? partial(state) : partial;\n if (!Object.is(nextState, state)) {\n const previousState = state;\n state = (replace != null ? replace : typeof nextState !== \"object\") ? nextState : Object.assign({}, state, nextState);\n listeners.forEach((listener) => listener(state, previousState));\n }\n };\n const getState = () => state;\n const subscribe = (listener) => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n };\n const destroy = () => listeners.clear();\n const api = { setState, getState, subscribe, destroy };\n state = createState(setState, getState, api);\n return api;\n};\nconst createStore = (createState) => createState ? createStoreImpl(createState) : createStoreImpl;\n\nexport { createStore as default };\n","import createStore__default from 'zustand/vanilla';\nexport * from 'zustand/vanilla';\nexport { default as createStore } from 'zustand/vanilla';\nimport { useDebugValue } from 'react';\nimport useSyncExternalStoreExports from 'use-sync-external-store/shim/with-selector.js';\n\nconst { useSyncExternalStoreWithSelector } = useSyncExternalStoreExports;\nfunction useStore(api, selector = api.getState, equalityFn) {\n const slice = useSyncExternalStoreWithSelector(\n api.subscribe,\n api.getState,\n api.getServerState || api.getState,\n selector,\n equalityFn\n );\n useDebugValue(slice);\n return slice;\n}\nconst createImpl = (createState) => {\n const api = typeof createState === \"function\" ? createStore__default(createState) : createState;\n const useBoundStore = (selector, equalityFn) => useStore(api, selector, equalityFn);\n Object.assign(useBoundStore, api);\n return useBoundStore;\n};\nconst create = (createState) => createState ? createImpl(createState) : createImpl;\n\nexport { create as default, useStore };\n","const reduxImpl = (reducer, initial) => (set, _get, api) => {\n api.dispatch = (action) => {\n set((state) => reducer(state, action), false, action);\n return action;\n };\n api.dispatchFromDevtools = true;\n return { dispatch: (...a) => api.dispatch(...a), ...initial };\n};\nconst redux = reduxImpl;\n\nconst devtoolsImpl = (fn, devtoolsOptions = {}) => (set, get, api) => {\n const { enabled, anonymousActionType, ...options } = devtoolsOptions;\n let extensionConnector;\n try {\n extensionConnector = (enabled != null ? enabled : (import.meta.env && import.meta.env.MODE) !== \"production\") && window.__REDUX_DEVTOOLS_EXTENSION__;\n } catch {\n }\n if (!extensionConnector) {\n if ((import.meta.env && import.meta.env.MODE) !== \"production\" && enabled) {\n console.warn(\n \"[zustand devtools middleware] Please install/enable Redux devtools extension\"\n );\n }\n return fn(set, get, api);\n }\n const extension = extensionConnector.connect(options);\n let isRecording = true;\n api.setState = (state, replace, nameOrAction) => {\n const r = set(state, replace);\n if (!isRecording)\n return r;\n extension.send(\n nameOrAction === void 0 ? { type: anonymousActionType || \"anonymous\" } : typeof nameOrAction === \"string\" ? { type: nameOrAction } : nameOrAction,\n get()\n );\n return r;\n };\n const setStateFromDevtools = (...a) => {\n const originalIsRecording = isRecording;\n isRecording = false;\n set(...a);\n isRecording = originalIsRecording;\n };\n const initialState = fn(api.setState, get, api);\n extension.init(initialState);\n if (api.dispatchFromDevtools && typeof api.dispatch === \"function\") {\n let didWarnAboutReservedActionType = false;\n const originalDispatch = api.dispatch;\n api.dispatch = (...a) => {\n if ((import.meta.env && import.meta.env.MODE) !== \"production\" && a[0].type === \"__setState\" && !didWarnAboutReservedActionType) {\n console.warn(\n '[zustand devtools middleware] \"__setState\" action type is reserved to set state from the devtools. Avoid using it.'\n );\n didWarnAboutReservedActionType = true;\n }\n originalDispatch(...a);\n };\n }\n extension.subscribe((message) => {\n var _a;\n switch (message.type) {\n case \"ACTION\":\n if (typeof message.payload !== \"string\") {\n console.error(\n \"[zustand devtools middleware] Unsupported action format\"\n );\n return;\n }\n return parseJsonThen(\n message.payload,\n (action) => {\n if (action.type === \"__setState\") {\n setStateFromDevtools(action.state);\n return;\n }\n if (!api.dispatchFromDevtools)\n return;\n if (typeof api.dispatch !== \"function\")\n return;\n api.dispatch(action);\n }\n );\n case \"DISPATCH\":\n switch (message.payload.type) {\n case \"RESET\":\n setStateFromDevtools(initialState);\n return extension.init(api.getState());\n case \"COMMIT\":\n return extension.init(api.getState());\n case \"ROLLBACK\":\n return parseJsonThen(message.state, (state) => {\n setStateFromDevtools(state);\n extension.init(api.getState());\n });\n case \"JUMP_TO_STATE\":\n case \"JUMP_TO_ACTION\":\n return parseJsonThen(message.state, (state) => {\n setStateFromDevtools(state);\n });\n case \"IMPORT_STATE\": {\n const { nextLiftedState } = message.payload;\n const lastComputedState = (_a = nextLiftedState.computedStates.slice(-1)[0]) == null ? void 0 : _a.state;\n if (!lastComputedState)\n return;\n setStateFromDevtools(lastComputedState);\n extension.send(\n null,\n nextLiftedState\n );\n return;\n }\n case \"PAUSE_RECORDING\":\n return isRecording = !isRecording;\n }\n return;\n }\n });\n return initialState;\n};\nconst devtools = devtoolsImpl;\nconst parseJsonThen = (stringified, f) => {\n let parsed;\n try {\n parsed = JSON.parse(stringified);\n } catch (e) {\n console.error(\n \"[zustand devtools middleware] Could not parse the received json\",\n e\n );\n }\n if (parsed !== void 0)\n f(parsed);\n};\n\nconst subscribeWithSelectorImpl = (fn) => (set, get, api) => {\n const origSubscribe = api.subscribe;\n api.subscribe = (selector, optListener, options) => {\n let listener = selector;\n if (optListener) {\n const equalityFn = (options == null ? void 0 : options.equalityFn) || Object.is;\n let currentSlice = selector(api.getState());\n listener = (state) => {\n const nextSlice = selector(state);\n if (!equalityFn(currentSlice, nextSlice)) {\n const previousSlice = currentSlice;\n optListener(currentSlice = nextSlice, previousSlice);\n }\n };\n if (options == null ? void 0 : options.fireImmediately) {\n optListener(currentSlice, currentSlice);\n }\n }\n return origSubscribe(listener);\n };\n const initialState = fn(set, get, api);\n return initialState;\n};\nconst subscribeWithSelector = subscribeWithSelectorImpl;\n\nconst combine = (initialState, create) => (...a) => Object.assign({}, initialState, create(...a));\n\nconst toThenable = (fn) => (input) => {\n try {\n const result = fn(input);\n if (result instanceof Promise) {\n return result;\n }\n return {\n then(onFulfilled) {\n return toThenable(onFulfilled)(result);\n },\n catch(_onRejected) {\n return this;\n }\n };\n } catch (e) {\n return {\n then(_onFulfilled) {\n return this;\n },\n catch(onRejected) {\n return toThenable(onRejected)(e);\n }\n };\n }\n};\nconst persistImpl = (config, baseOptions) => (set, get, api) => {\n let options = {\n getStorage: () => localStorage,\n serialize: JSON.stringify,\n deserialize: JSON.parse,\n partialize: (state) => state,\n version: 0,\n merge: (persistedState, currentState) => ({\n ...currentState,\n ...persistedState\n }),\n ...baseOptions\n };\n let hasHydrated = false;\n const hydrationListeners = /* @__PURE__ */ new Set();\n const finishHydrationListeners = /* @__PURE__ */ new Set();\n let storage;\n try {\n storage = options.getStorage();\n } catch (e) {\n }\n if (!storage) {\n return config(\n (...args) => {\n console.warn(\n `[zustand persist middleware] Unable to update item '${options.name}', the given storage is currently unavailable.`\n );\n set(...args);\n },\n get,\n api\n );\n }\n const thenableSerialize = toThenable(options.serialize);\n const setItem = () => {\n const state = options.partialize({ ...get() });\n let errorInSync;\n const thenable = thenableSerialize({ state, version: options.version }).then(\n (serializedValue) => storage.setItem(options.name, serializedValue)\n ).catch((e) => {\n errorInSync = e;\n });\n if (errorInSync) {\n throw errorInSync;\n }\n return thenable;\n };\n const savedSetState = api.setState;\n api.setState = (state, replace) => {\n savedSetState(state, replace);\n void setItem();\n };\n const configResult = config(\n (...args) => {\n set(...args);\n void setItem();\n },\n get,\n api\n );\n let stateFromStorage;\n const hydrate = () => {\n var _a;\n if (!storage)\n return;\n hasHydrated = false;\n hydrationListeners.forEach((cb) => cb(get()));\n const postRehydrationCallback = ((_a = options.onRehydrateStorage) == null ? void 0 : _a.call(options, get())) || void 0;\n return toThenable(storage.getItem.bind(storage))(options.name).then((storageValue) => {\n if (storageValue) {\n return options.deserialize(storageValue);\n }\n }).then((deserializedStorageValue) => {\n if (deserializedStorageValue) {\n if (typeof deserializedStorageValue.version === \"number\" && deserializedStorageValue.version !== options.version) {\n if (options.migrate) {\n return options.migrate(\n deserializedStorageValue.state,\n deserializedStorageValue.version\n );\n }\n console.error(\n `State loaded from storage couldn't be migrated since no migrate function was provided`\n );\n } else {\n return deserializedStorageValue.state;\n }\n }\n }).then((migratedState) => {\n var _a2;\n stateFromStorage = options.merge(\n migratedState,\n (_a2 = get()) != null ? _a2 : configResult\n );\n set(stateFromStorage, true);\n return setItem();\n }).then(() => {\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(stateFromStorage, void 0);\n hasHydrated = true;\n finishHydrationListeners.forEach((cb) => cb(stateFromStorage));\n }).catch((e) => {\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(void 0, e);\n });\n };\n api.persist = {\n setOptions: (newOptions) => {\n options = {\n ...options,\n ...newOptions\n };\n if (newOptions.getStorage) {\n storage = newOptions.getStorage();\n }\n },\n clearStorage: () => {\n storage == null ? void 0 : storage.removeItem(options.name);\n },\n getOptions: () => options,\n rehydrate: () => hydrate(),\n hasHydrated: () => hasHydrated,\n onHydrate: (cb) => {\n hydrationListeners.add(cb);\n return () => {\n hydrationListeners.delete(cb);\n };\n },\n onFinishHydration: (cb) => {\n finishHydrationListeners.add(cb);\n return () => {\n finishHydrationListeners.delete(cb);\n };\n }\n };\n hydrate();\n return stateFromStorage || configResult;\n};\nconst persist = persistImpl;\n\nexport { combine, devtools, persist, redux, subscribeWithSelector };\n"],"names":["EventEmitter","this","_events","_maxListeners","undefined","isFunction","arg","isObject","isUndefined","module","exports","prototype","defaultMaxListeners","setMaxListeners","n","isNaN","TypeError","emit","type","er","handler","len","args","i","listeners","error","length","arguments","Error","err","context","call","Array","slice","apply","addListener","listener","m","newListener","push","warned","console","trace","on","once","fired","g","removeListener","list","position","splice","removeAllListeners","key","listenerCount","evlistener","emitter","uuid","toString","createTreeNode","node","children","text","createTextTreeNode","span","spans","prepareNodes","nodes","mutNodes","listItem","oListItem","items","oList","nodeToTreeNode","textNodeSpansToTreeNodeChildren","parentSpan","mutSpans","sort","a","b","start","end","parentSpanStart","spanStart","spanEnd","childSpans","j","siblingSpan","spanWithText","serialize","richTextField","serializer","serializeTreeNodes","preparedNodes","asTree","serializedTreeNodes","treeNode","serializedTreeNode","RichTextReversedNodeType","wrapMapSerializer","mapSerializer","tagSerializer","PrismicContext","usePrismicContext","process","globalThis","env","_PrismicLink","props","ref","linkResolver","href","document","field","isInternal","url","test","isSpecialLink","isInternalURL","target","rel","InternalComponent","internalComponent","internalLinkComponent","ExternalComponent","externalComponent","externalLinkComponent","Component","passthroughProps","Object","assign","PrismicLink","PrismicRichText","richText","serializers","res","components","richTextComponents","heading1","heading2","heading3","heading4","heading5","heading6","paragraph","preformatted","strong","em","image","_a","img","src","alt","copyright","className","linkTo","embed","oembed","embed_url","provider_name","dangerouslySetInnerHTML","__html","html","hyperlink","data","label","result","line","split","serialized","fallback","_PrismicImage","fallbackAlt","imgixParams","widths","pixelDensities","restProps","imageThumbnail","srcSet","srcset","hasOwnProperty","fnToStr","Function","previousComparisons","Map","equal","check","clear","full","suffix","fromIndex","aTag","previouslyCompared","aKeys","definedKeys","bKeys","keyCount","k","name","message","concat","size","aIterator","entries","isMap","info","next","done","value","aKey","aValue","has","get","Uint8Array","byteLength","aCode","nativeCodeSuffix","indexOf","obj","keys","filter","isDefinedKey","bSet","set","Set","add","defaultMakeData","create","forEach","Trie","weakness","makeData","lookup","array","_i","lookupArray","getChildTrie","map","isObjRef","weak","WeakMap","child","root","lib","currency","symbol","format","decimal","thousand","precision","grouping","number","nativeMap","nativeIsArray","isArray","isString","charCodeAt","substr","defaults","object","defs","iterator","results","checkPrecision","val","base","Math","round","abs","checkCurrencyFormat","settings","match","pos","neg","replace","zero","unformat","parse","regex","RegExp","unformatted","parseFloat","toFixed","power","pow","formatNumber","opts","usePrecision","negative","parseInt","mod","formatMoney","formats","formatColumn","padAfterSymbol","maxLength","formatted","fVal","join","accounting","AlgoliaSearchHelper","SearchParameters","SearchResults","algoliasearchHelper","client","index","version","DerivedHelper","mainHelper","fn","main","lastResults","inherits","detach","detachDerivedHelper","getModifiedState","parameters","defaultsPure","omit","objectHasKeys","addRefinement","refinementList","attribute","isRefined","valueAsString","facetRefinement","removeRefinement","clearRefinement","v","f","toggleRefinement","refinementType","hasChanged","newRefinementList","reduce","memo","values","facetList","refinementValue","containsRefinements","refinementValueAsString","merge","intersection","find","valToNumber","isValidUserToken","RefinementList","isEqualNumericRefinement","every","el","newParameters","params","_parseNumbers","userToken","warn","facets","disjunctiveFacets","hierarchicalFacets","facetsRefinements","facetsExcludes","disjunctiveFacetsRefinements","numericRefinements","tagRefinements","hierarchicalFacetsRefinements","self","paramName","isKeyKnown","PARAMETERS","isValueDefined","partialState","numbers","parsedValue","insideBoundingBox","geoRect","operators","operator","parsedValues","vPrime","make","instance","facet","rootPath","currentRefinement","getHierarchicalRefinement","clearRefinements","toggleHierarchicalFacetRefinement","validate","currentState","tagFilters","numericFilters","constructor","patch","_clearNumericRefinements","setQueryParameters","clearTags","setIndex","setQuery","newQuery","query","setPage","newPage","page","setFacets","setDisjunctiveFacets","setHitsPerPage","hitsPerPage","setTypoTolerance","typoTolerance","addNumericRefinement","isNumericRefined","getConjunctiveRefinements","facetName","isConjunctiveFacet","getDisjunctiveRefinements","isDisjunctiveFacet","getExcludeRefinements","removeNumericRefinement","paramValue","op","getNumericRefinements","getNumericRefinement","newNumericRefinements","operatorList","outValues","addFacet","addDisjunctiveFacet","addHierarchicalFacet","hierarchicalFacet","isHierarchicalFacet","addFacetRefinement","addExcludeRefinement","addDisjunctiveFacetRefinement","addTagRefinement","tag","isTagRefined","modification","removeFacet","removeDisjunctiveFacet","removeHierarchicalFacet","removeFacetRefinement","removeExcludeRefinement","removeDisjunctiveFacetRefinement","removeTagRefinement","t","toggleFacetRefinement","toggleConjunctiveFacetRefinement","toggleDisjunctiveFacetRefinement","toggleExcludeFacetRefinement","separator","_getHierarchicalFacetSeparator","getHierarchicalFacetByName","lastIndexOf","addHierarchicalFacetRefinement","path","isHierarchicalFacetRefined","removeHierarchicalFacetRefinement","toggleTagRefinement","isFacetRefined","isExcludeRefined","isDisjunctiveFacetRefined","refinements","isOperatorDefined","searchedValue","isAttributeValueDefined","currentValue","getRefinedDisjunctiveFacets","disjunctiveNumericRefinedFacets","getRefinedHierarchicalFacets","getUnrefinedDisjunctiveFacets","refinedFacets","managedParameters","getQueryParams","queryParams","setQueryParameter","parameter","nextWithNumbers","previousPlainObject","acc","nextPlainObject","previous","isPreviousValueDefined","isNextValueDefined","resetPage","_getHierarchicalFacetSortBy","sortBy","_getHierarchicalRootPath","_getHierarchicalShowParentLevel","showParentLevel","hierarchicalFacetName","getHierarchicalFacetBreadcrumb","refinement","part","trim","JSON","stringify","state","hierarchicalFacetResult","hierarchicalFacetIndex","hierarchicalFacetRefinement","hierarchicalSeparator","hierarchicalRootPath","hierarchicalShowParentLevel","prepareHierarchicalFacetSortBy","rootExhaustive","facetResult","exhaustive","generateTreeFn","hierarchicalTree","currentHierarchicalLevel","parent","level","subtree","picked","facetValue","tuple","parentPath","onlyMatchingTree","orderBy","facetCount","parts","escapedValue","escapeFacetValue","count","unescapeFacetValue","generateHierarchicalTree","fv","compact","findIndex","formatSort","getIndices","attributes","indices","idx","assignFacetStats","dest","facetStats","stats","options","mainSubResponse","_rawResults","processingTimeMS","sum","facetsIndices","disjunctiveFacetsIndices","nextDisjunctiveResult","mainFacets","facetKey","hierarchicalAttributeName","facetValueObject","facetIndex","idxAttributeName","exhaustiveFacetsCount","isFacetDisjunctive","isFacetConjunctive","facets_stats","disjunctiveFacet","dfacet","facetResults","attributeIndex","dataFromMainRequest","refinedFacet","defaultData","excludes","_state","recSort","sortFn","names","childNode","sortedChildren","getFacetStatsIfAvailable","getRefinement","attributeName","resultsFacets","getFacetByName","predicate","DEFAULT_SORT","getFacetValues","facetValues","isExcluded","extractNormalizedFacetValues","facetOrdering","renderingContent","getFacetOrdering","Boolean","orderedFacets","remainingFacets","reverseOrder","order","item","ordering","sortRemainingBy","sortViaFacetOrdering","vanillaSortFn","getFacetStats","getRefinements","facetDeclaration","rootFacet","intermediateFacet","newFacet","numericValue","requestBuilder","addAlgoliaAgent","setClient","_queryId","_lastQueryIdReceived","derivedHelpers","_currentNbQueries","setCurrentPage","_change","isPageReset","getCurrentPage","search","_search","onlyWithDerivedHelpers","searchOnlyWithDerivedHelpers","getQuery","_getHitsSearchParams","searchOnce","cb","tempState","queries","_getQueries","then","content","_originalResponse","e","catch","findAnswers","derivedHelper","Promise","resolve","derivedState","attributesForPrediction","nbHits","errorMessage","initIndex","queryLanguages","searchForFacetValues","maxFacetHits","userState","clientHasSFFV","clientHasInitIndex","isDisjunctive","algoliaQuery","getSearchForFacetQuery","searchForFacetValuesPromise","indexName","response","facetHits","q","addDisjunctiveRefine","addRefine","addFacetExclusion","addExclude","addTag","removeDisjunctiveRefine","removeRefine","removeFacetExclusion","removeExclude","removeTag","toggleFacetExclusion","toggleExclude","toggleRefine","toggleTag","nextPage","previousPage","setState","newState","overrideStateWithoutTriggeringChangeEvent","hasRefinements","isDisjunctiveRefined","hasTag","hasTagRefinements","getIndex","getPage","getTags","r","states","mainQueries","queriesCount","helper","derivedQueries","derivedStateQueries","queryId","_dispatchAlgoliaResponse","bind","_dispatchAlgoliaError","s","specificResults","formattedResponse","containsRefinement","facetFilters","_hasDisjunctiveRefinements","disjunctiveRefinements","event","clearCache","newClient","getClient","derive","hasPendingRequests","reduceRight","source","String","comparator","defaultInstructions","out","sortInstruction","matchingDefault","defaultInstruction","ctor","superCtor","enumerable","writable","configurable","arr1","arr2","isObjectOrArrayOrFunction","_merge","sourceVal","targetVal","l","excluded","sourceKeys","compareAscending","other","valIsDefined","valIsNull","othIsDefined","othIsNull","collection","iteratees","orders","criteria","iteratee","sortObject","localeCompare","curr","_getDisjunctiveFacetSearchParams","filtersMap","segment","hasHierarchicalFacetFilter","some","filteredFacetFilters","facetFilter","filtered","filterValue","_getHitsHierarchicalFacetsAttributes","_getFacetFilters","_getNumericFilters","_getTagFilters","additionalParams","hierarchicalRootLevel","analytics","clickAnalytics","_getDisjunctiveHierarchicalFacetAttribute","vs","orFilters","attributeToRefine","attributesIndex","allAttributes","hierarchicalRefinement","newAttributes","rootLevel","parentLevel","stateForSearchForFacetValues","searchForFacetSearchParameters","facetQuery","defineProperty","getOwnPropertySymbols","getOwnPropertyDescriptor","o","getOwnPropertyDescriptors","defineProperties","propertyIsEnumerable","Symbol","u","return","from","localStorage","window","getItem","miss","all","setItem","delete","removeItem","caches","shift","serializable","c","floor","random","encodeURIComponent","h","WithinQueryParameters","WithinHeaders","d","timeout","headers","queryParameters","cacheable","Read","Write","Any","p","y","status","lastUpdate","Date","now","protocol","accept","O","P","getTimeout","statelessHosts","w","method","toLowerCase","userAgent","pop","transporterStackTrace","A","S","connectTimeout","timeouts","connect","responseTimeout","request","host","triesLeft","onSuccess","onRetry","isTimedOut","logger","x","hostsCache","onFail","requester","send","reverse","T","charAt","N","appId","authMode","apiKey","requestsCache","responsesCache","hosts","read","mappedRequestOptions","transporter","reject","write","methods","C","J","requests","E","R","I","F","D","W","H","Q","XMLHttpRequest","open","setRequestHeader","setTimeout","abort","onreadystatechange","readyState","OPENED","clearTimeout","onerror","responseText","onload","debug","multipleQueries","multipleSearchForFacetValues","customRequest","defaultInstanceSettings","update","begin","loopBegin","changeBegin","change","changeComplete","loopComplete","complete","loop","direction","autoplay","timelineOffset","defaultTweenSettings","duration","delay","endDelay","easing","validTransforms","cache","CSS","springs","minMax","min","max","stringContains","str","applyArguments","func","is","arr","pth","svg","SVGElement","inp","HTMLInputElement","dom","nodeType","fnc","und","nil","hex","rgb","hsl","col","parseEasingParameters","string","exec","spring","mass","stiffness","damping","velocity","w0","sqrt","zeta","wd","solver","progress","exp","cos","sin","cached","frame","elapsed","rest","steps","ceil","eases","functionEasings","bezier","kSampleStepSize","aA1","aA2","B","calcBezier","aT","getSlope","mX1","mY1","mX2","mY2","sampleValues","Float32Array","getTForX","aX","intervalStart","currentSample","kSplineTableSize","guessForT","initialSlope","aGuessT","currentSlope","newtonRaphsonIterate","aA","aB","currentX","currentT","binarySubdivide","penner","linear","Sine","PI","Expo","Circ","Back","Bounce","pow2","Elastic","amplitude","period","asin","easeIn","parseEasings","ease","selectString","querySelectorAll","filterArray","callback","thisArg","flattenArray","toArray","NodeList","HTMLCollection","arrayContains","cloneObject","clone","replaceObjectProps","o1","o2","mergeObjects","colorToRgb","rgbValue","hexValue","hexToRgba","hslValue","hue2rgb","hslToRgba","getUnit","getFunctionValue","animatable","id","total","getAttribute","prop","convertPxToUnit","unit","tempEl","createElement","tagName","parentEl","parentNode","body","appendChild","style","width","factor","offsetWidth","removeChild","convertedUnit","getCSSValue","uppercasePropName","getComputedStyle","getPropertyValue","getAnimationType","getElementTransforms","transform","reg","transforms","getTransformValue","propName","defaultVal","getTransformUnit","getOriginalTargetValue","getRelativeValue","to","validateValue","originalUnit","unitLess","getDistance","p1","p2","getPolylineLength","previousPos","points","totalLength","numberOfItems","currentPos","getTotalLength","getCircleLength","getRectLength","getLineLength","getPolygonLength","getParentSvg","pathEl","svgData","parentSvgEl","getParentSvgEl","rect","getBoundingClientRect","viewBoxAttr","height","viewBox","vW","vH","getPathProgress","isPathTargetInsideSVG","point","offset","getPointAtLength","p0","scaleX","scaleY","property","atan2","decomposeValue","rgx","original","Number","strings","parseTargets","targets","getAnimatables","parsed","normalizePropertyTweens","tweenSettings","propArray","getProperties","properties","keyframes","propertyNames","newKey","flattenKeyframes","tweens","normalizeTweens","previousTween","tween","normalizeTweenValues","tweenValue","toUnit","originalValue","previousValue","fromUnit","isPath","isColor","setProgressValue","css","setAttribute","manual","last","setTargetsValue","valueUnit","animType","getAnimations","animatables","lastTween","createAnimation","getInstanceTimings","animations","animLength","getTlOffset","anim","timings","instanceID","activeInstances","engine","raf","step","activeInstancesLength","activeInstance","paused","tick","requestAnimationFrame","addEventListener","anime","suspendWhenDocumentHidden","isDocumentHidden","cancelAnimationFrame","_onDocumentVisibility","hidden","startTime","lastTime","childrenLength","makePromise","promise","_resolve","finished","instanceSettings","createNewInstance","toggleInstanceDirection","reversed","adjustTime","time","resetTime","currentTime","speed","seekChild","seek","setAnimationsProgress","insTime","animationsLength","tweenLength","eased","toNumbersLength","toNumber","fromNumber","stringsLength","n$1","setCallback","passThrough","setInstanceProgress","engineTime","insDuration","insDelay","insEndDelay","reversePlayback","i$1","syncInstanceChildren","began","loopBegan","changeBegan","changeCompleted","remaining","completed","reset","pause","play","restart","remove","removeTargetsFromInstance","removeTargetsFromAnimations","targetsArray","childAnimations","running","convertPx","percent","setDashoffset","pathLength","stagger","grid","axis","fromFirst","fromCenter","fromLast","isRange","val1","val2","maxValue","fromX","fromY","distanceX","distanceY","timeline","tl","instanceParams","tlIndex","ins","insParams","tlDuration","expirationDate","expirationMonth","expirationYear","cvv","postalCode","creditCardType","luhn10","getCardTypes","verification","card","isPotentiallyValid","isValid","potentialTypes","cardType","types","UNIONPAY","luhnValidateUnionPay","lengths","DEFAULT_LENGTH","thing","includes","maximum","parseDate","month","year","maxElapsedYear","date","monthValid","yearValid","isValidForThisYear","isCurrentYear","currentMonth","getMonth","currentYear","twoDigitYear","valid","getFullYear","identifier","num","numberOfDigitsInMonth","dateString","assumedYear","firstCharacter","minLength","factory","__WEBPACK_EXTERNAL_MODULE_1__","modules","installedModules","moduleId","loaded","_extends","React","CreateReactClass","NumeralFormatter","DateFormatter","TimeFormatter","PhoneFormatter","CreditCardDetector","Util","DefaultProperties","cleaveReactClass","componentDidMount","init","componentDidUpdate","prevProps","owner","phoneRegionCode","newValue","pps","updateRegisteredEvents","initValue","onInput","initPhoneFormatter","setSelection","element","cursorPosition","_owner$registeredEven","registeredEvents","onKeyDown","onChange","onFocus","onBlur","onInit","getInitialState","_owner$props","noop","numeral","phone","creditCard","blocksLength","prefix","getMaxLength","blocks","isAndroid","initDateFormatter","initTimeFormatter","initNumeralFormatter","noImmediatePrefix","numeralFormatter","numeralDecimalMark","numeralIntegerScale","numeralDecimalScale","numeralThousandsGroupStyle","numeralPositiveOnly","stripLeadingZeroes","signBeforePrefix","tailPrefix","delimiter","timeFormatter","timePattern","timeFormat","getBlocks","dateFormatter","datePattern","dateMin","dateMax","phoneFormatter","Cleave","AsYouTypeFormatter","ex","setRawValue","postDelimiterBackspace","stopPropagation","preventDefault","persist","getRawValue","rawValue","rawValueTrimPrefix","getPrefixStrippedValue","prefixLength","delimiters","stripDelimiters","getISOFormatDate","getISOFormatTime","charCode","which","keyCode","lastInputValue","isBackward","fixPrefixCursor","inputType","postDelimiter","getPostDelimiter","fromProps","postDelimiterAfter","headStr","updateValueState","getValidatedDate","getValidatedTime","numericOnly","strip","uppercase","toUpperCase","lowercase","updateCreditCardPropsByValue","getFormattedValue","delimiterLazyShow","creditCardInfo","getInfo","creditCardStrictMode","onCreditCardTypeChanged","endPos","selectionEnd","oldValue","getNextCursorPosition","render","_owner$props2","htmlRef","propsToTransfer","_objectWithoutProperties","_ref","ReactNoopUpdateQueue","updater","isValidElement","_assign","emptyObject","_invariant","MIXINS_KEY","ReactComponent","injectedMixins","ReactClassInterface","mixins","statics","propTypes","contextTypes","childContextTypes","getDefaultProps","getChildContext","componentWillMount","componentWillReceiveProps","shouldComponentUpdate","componentWillUpdate","componentWillUnmount","UNSAFE_componentWillMount","UNSAFE_componentWillReceiveProps","UNSAFE_componentWillUpdate","updateComponent","ReactClassStaticInterface","getDerivedStateFromProps","RESERVED_SPEC_KEYS","displayName","Constructor","mixSpecIntoComponent","createMergedResultFunction","specPolicy","mixStaticSpecIntoComponent","autobind","validateMethodOverride","isAlreadyDefined","ReactClassMixin","spec","proto","autoBindPairs","__reactAutoBindPairs","isReactClassMethod","createChainedFunction","mergeIntoWithNoDuplicateKeys","one","two","bindAutoBindMethod","component","IsMountedPreMixin","__isMounted","IsMountedPostMixin","replaceState","enqueueReplaceState","isMounted","ReactClassComponent","pairs","autoBindKey","bindAutoBindMethods","refs","initialState","methodName","defaultProps","propIsEnumerable","test1","getOwnPropertyNames","test2","fromCharCode","test3","letter","shouldUseNative","symbols","toObject","condition","argIndex","framesToPop","warning","makeEmptyFunction","emptyFunction","thatReturns","thatReturnsFalse","thatReturnsTrue","thatReturnsNull","thatReturnsThis","thatReturnsArgument","groupStyle","delimiterRE","lakh","wan","none","partSign","partSignAndPrefix","partInteger","partDecimal","unshift","initBlocks","addLeadingZero","sub","sub0","getFixedDateString","day","dayIndex","monthIndex","yearIndex","dayStartIndex","monthStartIndex","yearStartIndex","fullYearDone","getFixedDate","getRangeFixedDate","current","addLeadingZeroForYear","isLeapYear","fullYearMode","getTimeFormatOptions","maxHourFirstDigit","maxHours","maxMinutesFirstDigit","maxMinutes","timeFormatOptions","getFixedTimeString","second","minute","hour","secondIndex","minuteIndex","hourIndex","secondStartIndex","minuteStartIndex","hourStartIndex","getFixedTime","formatter","setFormatter","phoneNumber","validated","iMax","inputDigit","uatp","amex","diners","discover","mastercard","dankort","instapayment","jcb15","jcb","maestro","visa","mir","unionPay","general","re","getStrictBlocks","block","prev","strictMode","matchedBlocks","matchedDelimiter","getDelimiterREByDelimiter","prevPos","getPositionOffset","oldRawValue","newRawValue","lengthOffset","prevResult","prevValue","getFirstDiffIndex","multipleDelimiters","currentDelimiter","appendix","setSelectionRange","checkFullSelection","getSelection","doc","getActiveElement","createTextRange","range","move","select","activeElement","shadowRoot","navigator","isAndroidBackspaceKeydown","currentInputValue","_typeof","swapHiddenInput","copyDelimiter","delimiterLength","backspace","onValueChanged","testOrder","findBestMatch","isValidInputType","addMatchingCardsToResults","customCards","cardNames","VISA","MASTERCARD","AMERICAN_EXPRESS","DINERS_CLUB","DISCOVER","JCB","MAESTRO","ELO","MIR","HIPER","HIPERCARD","ORIGINAL_TEST_ORDER","findType","getCardPosition","ignoreErrorForNotExisting","cardNumber","bestMatch","cardConfiguration","getTypeInfo","removeCard","addCard","config","existingCardPosition","updateCard","updates","clonedCard","originalObject","changeOrder","currentPosition","resetModifications","matches","pattern","patternLength","clonedCardConfiguration","patterns","matchStrength","niceType","gaps","code","unionpay","elo","hiper","hipercard","numberOfResultsWithMaxStrengthProperty","hasEnoughResultsToDetermineBestMatch","maxLengthToCheck","integerRepresentationOfCardNumber","matchesRange","substring","matchesPattern","matchHtmlRegExp","escape","lastIndex","getLocation","lineRegexp","column","printLocation","location","printSourceLocation","sourceLocation","firstLineColumnOffset","locationOffset","whitespace","lineIndex","lineOffset","lineNum","columnOffset","columnNum","locationStr","lines","locationLine","subLineIndex","subLineColumnNum","subLines","printPrefixedLines","subLine","existingLines","padLen","_ref2","_ref3","ownKeys","enumerableOnly","sym","_defineProperty","_defineProperties","descriptor","_possibleConstructorReturn","_assertThisInitialized","ReferenceError","_wrapNativeSuper","Class","_cache","Wrapper","_construct","_getPrototypeOf","_setPrototypeOf","Parent","_isNativeReflectConstruct","Reflect","construct","sham","Proxy","setPrototypeOf","__proto__","getPrototypeOf","GraphQLError","_Error","subClass","superClass","_inherits","Derived","hasNativeReflectConstruct","protoProps","staticProps","_super","Super","NewTarget","positions","originalError","extensions","_nodeLocations","_nodeLocations2","_nodeLocations3","_this","_classCallCheck","undefinedIfEmpty","nodeLocations","_i2","_this$nodes","loc","locations","originalExtensions","_objectSpread","stack","captureStackTrace","output","_i4","_error$nodes2","_i6","_error$locations2","printError","syntaxError","description","freeze","SOF","EOF","BANG","DOLLAR","AMP","PAREN_L","PAREN_R","SPREAD","COLON","EQUALS","AT","BRACKET_L","BRACKET_R","BRACE_L","PIPE","BRACE_R","NAME","INT","FLOAT","STRING","BLOCK_STRING","COMMENT","DirectiveLocation","QUERY","MUTATION","SUBSCRIPTION","FIELD","FRAGMENT_DEFINITION","FRAGMENT_SPREAD","INLINE_FRAGMENT","VARIABLE_DEFINITION","SCHEMA","SCALAR","OBJECT","FIELD_DEFINITION","ARGUMENT_DEFINITION","INTERFACE","UNION","ENUM","ENUM_VALUE","INPUT_OBJECT","INPUT_FIELD_DEFINITION","Lexer","startOfFileToken","lastToken","token","lineStart","_proto","advance","lookahead","kind","_token$next","readToken","printCharCode","lexer","bodyLength","_line","_col","readComment","readBlockString","readString","readNumber","readName","unexpectedCharacterMessage","firstCode","isFloat","readDigits","isNameStart","chunkStart","char2hex","invalidSequence","Parser","sourceObj","_lexer","_options","parseName","expectToken","parseDocument","DOCUMENT","definitions","many","parseDefinition","peek","parseOperationDefinition","parseFragmentDefinition","parseTypeSystemDefinition","parseTypeSystemExtension","peekDescription","unexpected","OPERATION_DEFINITION","operation","variableDefinitions","directives","selectionSet","parseSelectionSet","parseOperationType","parseVariableDefinitions","parseDirectives","operationToken","optionalMany","parseVariableDefinition","variable","parseVariable","parseTypeReference","defaultValue","expectOptionalToken","parseValueLiteral","VARIABLE","SELECTION_SET","selections","parseSelection","parseFragment","parseField","alias","nameOrAlias","parseArguments","isConst","parseConstArgument","parseArgument","ARGUMENT","hasTypeCondition","expectOptionalKeyword","parseFragmentName","typeCondition","parseNamedType","_this$_options","expectKeyword","experimentalFragmentVariables","parseList","parseObject","parseStringLiteral","BOOLEAN","NULL","LIST","any","_this2","fields","parseObjectField","OBJECT_FIELD","parseDirective","DIRECTIVE","LIST_TYPE","NON_NULL_TYPE","NAMED_TYPE","keywordToken","parseSchemaDefinition","parseScalarTypeDefinition","parseObjectTypeDefinition","parseInterfaceTypeDefinition","parseUnionTypeDefinition","parseEnumTypeDefinition","parseInputObjectTypeDefinition","parseDirectiveDefinition","parseDescription","operationTypes","parseOperationTypeDefinition","SCHEMA_DEFINITION","OPERATION_TYPE_DEFINITION","SCALAR_TYPE_DEFINITION","interfaces","parseImplementsInterfaces","parseFieldsDefinition","OBJECT_TYPE_DEFINITION","_this$_options2","allowLegacySDLImplementsInterfaces","delimitedMany","_this$_options3","allowLegacySDLEmptyFields","parseFieldDefinition","parseArgumentDefs","parseInputValueDef","INPUT_VALUE_DEFINITION","INTERFACE_TYPE_DEFINITION","parseUnionMemberTypes","UNION_TYPE_DEFINITION","parseEnumValuesDefinition","ENUM_TYPE_DEFINITION","parseEnumValueDefinition","ENUM_VALUE_DEFINITION","parseInputFieldsDefinition","INPUT_OBJECT_TYPE_DEFINITION","parseSchemaExtension","parseScalarTypeExtension","parseObjectTypeExtension","parseInterfaceTypeExtension","parseUnionTypeExtension","parseEnumTypeExtension","parseInputObjectTypeExtension","SCHEMA_EXTENSION","SCALAR_TYPE_EXTENSION","OBJECT_TYPE_EXTENSION","INTERFACE_TYPE_EXTENSION","UNION_TYPE_EXTENSION","ENUM_TYPE_EXTENSION","INPUT_OBJECT_TYPE_EXTENSION","repeatable","parseDirectiveLocations","DIRECTIVE_DEFINITION","parseDirectiveLocation","startToken","_this$_options4","noLocation","getTokenKindDesc","getTokenDesc","atToken","openKind","parseFn","closeKind","delimiterKind","isPunctuatorTokenKind","docCache","fragmentSourceMap","printFragmentWarnings","normalize","processFragments","ast","seenKeys","fragmentDefinition","fragmentName","sourceKey","sourceKeySet","cacheKey","allowLegacyFragmentVariables","workSet","endToken","stripLoc","gql","literals","gql_1","extras","resetCaches","disableFragmentWarnings","enableExperimentalFragmentVariables","disableExperimentalFragmentVariables","percentTwenties","formatters","RFC1738","RFC3986","utils","allowDots","allowPrototypes","arrayLimit","decoder","decode","depth","parameterLimit","plainObjects","strictNullHandling","parseKeys","givenKey","chain","leaf","parseArrays","cleanRoot","ignoreQueryPrefix","isRegExp","tempObj","cleanStr","limit","Infinity","bracketEqualsPos","parseValues","newObj","arrayPrefixGenerators","brackets","repeat","pushToArray","valueOrArray","toISO","toISOString","encode","encoder","encodeValuesOnly","serializeDate","skipNulls","generateArrayPrefix","isBuffer","objKeys","arrayFormat","joined","addQueryPrefix","hexTable","arrayToObject","queue","compacted","compactQueue","decodeURIComponent","mergeTarget","targetItem","currentContext","MISSING_VALUE","idCounter","globalKey","Slot","hasValue","context_1","slots","getValue","withValue","saved","noContext","defaultDispose","Cache","dispose","newest","oldest","getNode","older","newer","clean","parentEntrySlot","maybeUnsubscribe","entryOrDep","unsubscribe","emptySetPool","POOL_TARGET_SIZE","assert","optionalMessage","valueGet","Entry","parents","childValues","dirtyChildren","dirty","recomputing","deps","mightBeDirty","rememberParent","recompute","entry","forgetChildren","recomputeNewValue","subscribe","setDirty","maybeSubscribe","reportClean","setClean","reallyRecompute","reportDirty","eachParent","forgetChild","forget","dependOn","dep","forgetDeps","reportDirtyChild","reportCleanChild","parentCount","parentWasClean","childValue","removeDirtyChild","dc","_value","EntryMethods","depsByKey","depend","dep_1","entryMethodName","m_1","makeDefaultMakeCacheKeyFunction","keyTrie","wrap","originalFunction","keyArgs","makeCacheKey","optimistic","dirtyKey","peekKey","forgetKey","getKey","_inheritsLoose","_objectSpread2","formatProdErrorMessage","$$observable","observable","randomString","ActionTypes","INIT","REPLACE","PROBE_UNKNOWN_ACTION","isPlainObject","createStore","reducer","preloadedState","enhancer","currentReducer","currentListeners","nextListeners","isDispatching","ensureCanMutateNextListeners","getState","isSubscribed","dispatch","action","replaceReducer","nextReducer","outerSubscribe","observer","observeState","bindActionCreator","actionCreator","bindActionCreators","actionCreators","boundActionCreators","compose","_len","funcs","_key","batch","getBatch","nullListeners","notify","store","parentSub","handleChangeWrapper","subscription","onStateChange","trySubscribe","addNestedSub","first","createListenerCollection","notifyNestedSubs","tryUnsubscribe","getListeners","useLayoutEffect","useEffect","contextValue","useMemo","previousState","Context","Provider","_excluded","_excluded2","EMPTY_ARRAY","NO_SUBSCRIPTION_ARRAY","storeStateUpdatesReducer","updateCount","payload","useIsomorphicLayoutEffectWithArgs","effectFunc","effectArgs","dependencies","captureWrapperProps","lastWrapperProps","lastChildProps","renderIsScheduled","wrapperProps","actualChildProps","childPropsFromStoreUpdate","subscribeUpdates","shouldHandleStateChanges","childPropsSelector","forceComponentUpdateDispatch","didUnsubscribe","lastThrownError","checkForUpdates","newChildProps","latestStoreState","initStateUpdates","connectAdvanced","selectorFactory","_ref2$getDisplayName","getDisplayName","_ref2$methodName","_ref2$renderCountProp","renderCountProp","_ref2$shouldHandleSta","_ref2$storeKey","storeKey","_ref2$forwardRef","withRef","forwardRef","_ref2$context","connectOptions","WrappedComponent","wrappedComponentName","selectorFactoryOptions","pure","usePureOnlyMemo","ConnectFunction","_useMemo","reactReduxForwardedRef","propsContext","ContextToUse","Consumer","isContextConsumer","useContext","didStoreComeFromProps","createChildSelector","_useMemo2","overriddenContextValue","_useReducer","useReducer","previousStateUpdateResult","useRef","renderedWrappedComponent","Connect","forwarded","shallowEqual","objA","objB","keysA","keysB","wrapMapToPropsConstant","getConstant","constant","constantSelector","dependsOnOwnProps","getDependsOnOwnProps","mapToProps","wrapMapToPropsFunc","proxy","stateOrDispatch","ownProps","mapDispatchToProps","_loop","mapStateToProps","defaultMergeProps","stateProps","dispatchProps","mergeProps","mergedProps","areMergedPropsEqual","hasRunOnce","nextMergedProps","wrapMergePropsFunc","impureFinalPropsSelectorFactory","pureFinalPropsSelectorFactory","areStatesEqual","areOwnPropsEqual","areStatePropsEqual","hasRunAtLeastOnce","handleSubsequentCalls","nextState","nextOwnProps","nextStateProps","statePropsChanged","propsChanged","stateChanged","finalPropsSelectorFactory","initMapStateToProps","initMapDispatchToProps","initMergeProps","factories","strictEqual","createConnect","_temp","_ref$connectHOC","connectHOC","_ref$mapStateToPropsF","mapStateToPropsFactories","_ref$mapDispatchToPro","mapDispatchToPropsFactories","_ref$mergePropsFactor","mergePropsFactories","_ref$selectorFactory","_ref3$pure","_ref3$areStatesEqual","_ref3$areOwnPropsEqua","_ref3$areStatePropsEq","_ref3$areMergedPropsE","extraOptions","newBatch","useMemoOne","getResult","inputs","initial","useState","isFirstRun","committed","newInputs","lastInputs","areInputsEqual","useCallback","getRect","top","right","bottom","left","center","expand","expandBy","shrink","shrinkBy","noSpacing","createBox","borderBox","_ref2$margin","margin","_ref2$border","border","_ref2$padding","padding","marginBox","paddingBox","contentBox","raw","invariant","shiftBy","shifted","withScroll","scroll","pageXOffset","pageYOffset","calculateBox","styles","marginTop","marginRight","marginBottom","marginLeft","paddingTop","paddingRight","paddingBottom","paddingLeft","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","getBox","lastArgs","frameId","wrapperFn","cancel","log","bindEvents","bindings","sharedOptions","unbindings","binding","shared","fromBinding","getOptions","eventName","removeEventListener","unbind","isProduction$1","RbdInvariant","ErrorBoundary","_React$Component","callbacks","onWindowError","getCallbacks","isDragging","tryAbort","setCallbacks","componentDidCatch","withLocation","destination","isInHomeList","droppableId","startPosition","endPosition","withCombine","combine","draggableId","returnedToStart","preset","dragHandleUsageInstructions","onDragStart","onDragUpdate","onDragEnd","reason","origin","point1","point2","subtract","isEqual","negate","otherValue","distance","closest","offsetByPosition","spacing","getCorners","clip","shouldClipSubject","subject","executeClip","pageMarginBox","getSubject","withPlaceholder","scrolled","diff","displacement","increased","_extends2","increasedBy","increase","active","scrollDroppable","droppable","newScroll","scrollable","scrollDiff","scrollDisplacement","toDroppableMap","droppables","toDraggableMap","draggables","toDroppableList","toDraggableList","getDraggablesInsideDroppable","draggable","tryGetDestination","impact","at","tryGetCombine","removeDraggableFromList","isHomeOf","noDisplacedBy","emptyGroups","invisible","visible","noImpact","displaced","displacedBy","isWithin","lowerBound","upperBound","isPartiallyVisibleThroughFrame","isWithinVertical","isWithinHorizontal","isPartiallyVisibleVertically","isPartiallyVisibleHorizontally","isBiggerVertically","isBiggerHorizontally","isTotallyVisibleThroughFrame","vertical","crossAxisLine","crossAxisStart","crossAxisEnd","crossAxisSize","horizontal","isVisible","toBeDisplaced","viewport","withDroppableDisplacement","isVisibleThroughFrameFn","displacedTarget","getDroppableDisplaced","isVisibleInDroppable","isVisibleInViewport","isPartiallyVisible","isTotallyVisible","getShouldAnimate","forceShouldAnimate","shouldAnimate","getDisplacementGroups","afterDragging","groups","getTarget","goAtEnd","insideDestination","inHomeList","newIndex","indexOfLastItem","getIndexOfLastItem","calculateReorderImpact","withoutDragging","sliceFrom","didStartAfterCritical","afterCritical","effected","moveToNextIndex","isMovingForward","previousImpact","wasAt","_newIndex","currentIndex","proposedIndex","firstIndex","fromReorder","isCombineEnabled","combineId","combineWithIndex","fromCombine","whenCombining","combineWith","displaceBy","isDisplaced","getCombinedItemDisplacement","distanceFromStartToBorderBoxCenter","box","getCrossAxisBorderBoxCenter","isMoving","goAfter","moveRelativeTo","goBefore","distanceFromEndToBorderBoxCenter","whenReordering","draggablePage","moveInto","goIntoStart","closestAfter","withDisplacement","getPageBorderBoxCenterFromImpact","withoutDisplacement","getResultWithoutDroppableDisplacement","scrollViewport","getDraggables","ids","getClientFromPageBorderBoxCenter","pageBorderBoxCenter","withoutPageScrollChange","withViewportDisplacement","isTotallyVisibleInNewLocation","newPageBorderBoxCenter","_ref$onlyOnMainAxis","onlyOnMainAxis","changeNeeded","isTotallyVisibleOnAxis","moveToNextPlace","previousPageBorderBoxCenter","previousClientSelection","isEnabled","getImpact","closestId","withoutDraggable","indexOfClosest","moveToNextCombine","clientSelection","scrollJumpRequest","cautious","maxScrollChange","scrolledViewport","scrolledDroppable","withViewportScroll","withDroppableScroll","tryGetVisible","speculativelyIncrease","getKnownActive","getCurrentPageBorderBoxCenter","getCurrentPageBorderBox","getDisplacedBy","withMaxScroll","addPlaceholder","placeholderSize","requiredGrowth","mode","availableSpace","needsToGrowBy","dimension","getRequiredGrowthForPlaceholder","added","oldFrameMaxScroll","_subject","maxScroll","newFrame","moveCrossAxis","isOver","isBetweenSourceClipped","candidates","activeOfTarget","isBetweenDestinationClipped","contains","isWithinDroppable","getBestCrossAxisDroppable","sorted","distanceToA","distanceToB","getClosestDraggable","proposed","proposedPageBorderBoxCenter","relativeTo","isGoingBeforeTarget","moveToNewDroppable","whatIsDraggedOver","moveInDirection","isActuallyOver","getDroppableOver","dimensions","isMainAxisMovementAllowed","home","critical","isMovingOnMainAxis","borderBoxCenter","_state$dimensions","selection","isMovementAllowed","phase","isPositionInFrame","getDroppableOver$1","pageBorderBox","childCenter","isContained","isStartContained","isEndContained","startCenter","candidate","getFurthestAway","offsetRectByPosition","getIsDisplaced","getDragImpact","pageOffset","destinationId","pageBorderBoxWithDroppableScroll","area","targetRect","targetStart","targetEnd","childRect","threshold","didStartAfterCritical$1","getCombineImpact","atIndex","getReorderImpact","patchDroppableMap","updated","clearUnusedPlaceholder","lastDroppable","_subject2","oldMaxScroll","removePlaceholder","forcedClientSelection","forcedDimensions","forcedViewport","forcedImpact","newImpact","withUpdatedPlaceholders","cleaned","patched","recomputePlaceholders","getDraggables$1","getClientBorderBoxCenter","refreshSnap","movementMode","needsVisibilityCheck","getLiftEffect","insideHome","rawIndex","inVirtualList","finish","adjustAdditionsForScrollChanges","additions","updatedDroppables","windowScrollChange","getFrame","droppableScrollChange","moved","offset$1","initialWindowScroll","placeholder","offsetDraggable","isSnapping","postDroppableChange","isEnabledChanging","patchDimensionMap","removeScrollJumpRequest","idle","shouldFlush","_action$payload","isWindowScrollAllowed","isFixedOnPage","_getLiftEffect","onLiftImpact","published","withScrollChange","modified","existing","updatedAdditions","removals","wasOverId","wasOver","draggingState","isWaiting","publishWhileDraggingInVirtual","_clientSelection","_action$payload2","_action$payload3","_id","_target","_action$payload4","_id2","_target2","_updated","_newScroll","_viewport","_result2","_action$payload5","dropDuration","newHomeClientOffset","lift","publishWhileDragging","collectionStarting","updateDroppableScroll","updateDroppableIsEnabled","updateDroppableIsCombineEnabled","moveUp","moveDown","moveRight","moveLeft","flush","completeDrop","drop","dropAnimationFinished","curves","combining","outOfTheWayTiming","transitions","fluid","snap","timing","outOfTheWay","moveTo","isCombining","translate","minDropTime","maxDropTime","dropTimeRange","drop$1","_getDropImpact","lastImpact","didDropInsideDroppable","getDropImpact","newClientCenter","getNewHomeClientOffset","distance$1","getDropDuration","animateDrop","dropPending","getScrollListener","onWindowScroll","scheduled","passive","capture","getWindowScrollBinding","isActive","stop","scrollListener","shouldEnd","getAsyncMarshal","timerId","execute","shallow","withTimings","getDragStart","responder","announce","getDefaultMessage","willExpire","wasCalled","isExpired","timeoutId","getExpiringAnnounce","responders","getResponders","publisher","asyncMarshal","dragging","beforeCapture","onBeforeCapture","beforeStart","onBeforeDragStart","lastCritical","lastLocation","lastCombine","hasCriticalChanged","isDraggableEqual","isDroppableEqual","isCriticalEqual","hasLocationChanged","hasGroupingChanged","isCombineEqual","getPublisher","dropAnimationFinish","dropAnimationFlushOnScroll","pendingDrop","postActionState","composeEnhancers","marshal","dimensionMarshal","focusMarshal","styleMarshal","autoScroller","middlewares","_dispatch","middlewareAPI","middleware","applyMiddleware","dropping","resting","stopPublishing","dimensionMarshalStopper","scrollOptions","shouldPublishImmediately","_marshal$startPublish","startPublishing","lift$1","shouldStop","autoScroll","isWatching","tryRecordFocus","tryRestoreFocusRecorded","tryShiftRecord","getMaxScroll","scrollHeight","scrollWidth","getDocumentElement","documentElement","getMaxWindowScroll","clientWidth","clientHeight","getInitialPublish","registry","windowScroll","getAllByType","getDimensionAndWatchScroll","getDimension","shouldPublishUpdate","getById","getRemainder","createDimensionMarshal","staging","collect","_staging","getScrollWhileDragging","publish","createPublisher","subscriber","exists","dragStopped","canStartDrag","scrollWindow","scrollBy","getScrollableDroppables","getBestScrollableDroppable","_dimension","maybe","getScrollableDroppableOver","percentage","stopDampeningAt","accelerateAt","getPercentage","startOfRange","endOfRange","stopAt","distanceToEdge","thresholds","dragStartTime","shouldUseTimeDampening","startScrollingFrom","maxScrollValueAt","percentageFromMaxScrollValueAt","getValueFromDistance","proposedScroll","runTime","betweenAccelerateAtAndStopAtPercentage","dampenValueByTime","getScrollOnAxis","container","distanceToEdges","getDistanceThresholds","clean$2","getScroll","required","limited","isTooBigVertically","isTooBigHorizontally","adjustForSizeLimits","smallestSigned","getOverlap","targetScroll","overlap","canPartiallyScroll","rawMax","smallestChange","canScrollWindow","canScrollDroppable","scroll$1","getWindowScrollChange","getDroppableScrollChange","createJumpScroller","scrollDroppableAsMuchAsItCan","getDroppableOverlap","whatTheDroppableCanScroll","scrollWindowAsMuchAsItCan","getWindowOverlap","whatTheWindowCanScroll","droppableRemainder","windowRemainder","moveByOffset","createAutoScroller","fluidScroller","scheduleWindowScroll","scheduleDroppableScroll","tryScroll","_dragging","wasScrollNeeded","fakeScrollCallback","createFluidScroller","jumpScroll","prefix$1","dragHandle","contextId","scrollContainer","getStyles","rules","rule","selector","getStyles$1","grabCursor","transition","getSelector","dragHandle$1","always","dropAnimating","userCancel","getHead","head","querySelector","createStyleEl","nonce","getWindowFromEl","ownerDocument","defaultView","isHtmlElement","HTMLElement","findDragHandle","possible","handle","createRegistry","subscribers","findDraggableById","findDroppableById","register","uniqueId","unregister","findById","StoreContext","getBodyElement","visuallyHidden","overflow","getId","useUniqueId","AppContext","useDev","useHook","useDevSetupWarning","usePrevious","_preventedKeys","space","arrowLeft","arrowUp","arrowRight","arrowDown","preventedKeys","preventStandardKeyEvents","supportedEventName","primaryButton","sloppyClickThreshold","_scrollJumpKeys","idle$1","getCaptureBindings","getPhase","setPhase","button","clientX","clientY","actions","pending","fluidLift","shouldBlockNextClick","shouldRespectForcePress","noop$1","scrollJumpKeys","getDraggingBindings","idle$2","forcePressThreshold","interactiveTagNames","input","textarea","option","optgroup","video","audio","isAnInteractiveElement","parentElement","isEventInInteractiveElement","getBorderBoxCenterPosition","supportedMatchesName","Element","closestPonyfill","closest$1","findClosestDragHandleFromEvent","_isActive","expected","isLockActive","shouldWarn","canStart","lockAPI","isClaimed","tryStart","forceSensorStop","sourceEvent","draggable$1","findDraggable","canDragInteractiveElements","lock","claim","getShouldRespectForcePress","tryDispatchWhenDragging","getAction","release","cleanup","liftActionArgs","move$1","api","snapLift","defaultSensors","phaseRef","unbindEventsRef","startCaptureBinding","defaultPrevented","ctrlKey","metaKey","shiftKey","altKey","findClosestDraggableId","tryGetLock","startPendingDrag","preventForcePressBinding","findOptionsForDraggable","canGetLock","listenForCapture","bindCapturingEvents","preDrag","isCapturing","touch","touches","longPressTimerId","unbindTarget","hasMoved","_event$touches$","force","shouldRespect","getHandleBindings","unbindWindow","getWindowBindings","startDragging","useSensorMarshal","_ref4","customSensors","enableDefaultSensors","useSensors","abandon","newLock","tryAbandon","tryAbandonLock","forceStop","tryGetClosestDraggableIdFromEvent","tryReleaseLock","isLockClaimed","createResponders","getStore","lazyRef","App","sensors","lazyStoreRef","lastPropsRef","textContent","useAnnouncer","dragHandleUsageInstructionsId","display","useHiddenTextElement","alwaysRef","dynamicRef","setDynamicStyle","setAlwaysStyle","dynamic","useStyleMarshal","lazyDispatch","marshalCallbacks","useRegistry","entriesRef","recordRef","restoreFocusFrameRef","isMountedRef","focus","tryGiveFocus","tryGiveFocusTo","redirectTo","record","focused","useFocusMarshal","tryResetStore","getCanLift","getIsMovementAllowed","appContext","canLift","count$1","DragDropContext","isEqual$1","isScroll","isAuto","isEither","overflowX","overflowY","isElementScrollable","getClosestScrollable","getScroll$1","scrollLeft","scrollTop","getIsFixed","getEnv","closestScrollable","isDropDisabled","targetRef","frameClient","scrollSize","getDroppableDimension","immediate","delayed","getListenerOptions","useRequiredContext","getClosestScrollableFromDrag","noop$2","empty","getStyle","isAnimatingOpenOnMount","animate","getSize","boxSizing","flexShrink","flexGrow","pointerEvents","Placeholder$1","animateOpenTimerRef","tryClearAnimateOpenTimer","onTransitionEnd","onClose","_useState","setIsAnimatingOpenOnMount","onSizeChangeEnd","propertyName","innerRef","DroppableContext","AnimateInOut","_React$PureComponent","provided","zIndexOptions","getDraggingTransition","shouldAnimateDragMovement","getDraggingOpacity","isDropAnimating","getShouldDraggingAnimate","getStyle$1","mapped","opacity","zIndex","getDraggingStyle","secondary","shouldAnimateDisplacement","useDraggablePublisher","getDraggableRef","computedStyles","getDimension$1","publishedRef","isFirstPublishRef","useValidation$1","getRef","preventHtml5Dnd","isStrictEqual","whatIsDraggedOverFromResult","getSecondarySnapshot","combineTargetFor","isClone","dropAnimation","draggingOver","atRest","snapshot","ConnectedDraggable","memoizedOffset","getMemoizedSnapshot","getMemoizedProps","draggingSelector","_draggingOver","_combineWith","getCombineWithFromResult","curve","scale","secondarySelector","getFallback","getProps","ownId","draggingId","visualDisplacement","isAfterCriticalInVirtualList","_offset","getSecondarySelector","setRef","_useRequiredContext","_useRequiredContext2","dropAnimationFinishedAction","dragHandleProps","tabIndex","role","onMoveEnd","draggableProps","rubric","PrivateDraggable","isUsingCloneFor","PublicDraggable","isDragDisabled","disableInteractiveElementBlocking","isMatchingType","getDraggable","ignoreContainerClipping","renderClone","getContainerForClone","ConnectedDroppable","idleWithAnimation","shouldAnimatePlaceholder","isDraggingOver","draggingOverWith","draggingFromThisWith","isUsingPlaceholder","useClone","idleWithoutAnimation","getDraggableRubric","getMapProps","isDraggingOverForConsumer","isDraggingOverForImpact","_snapshot","_completed","wasCombining","isHome","updateViewportMaxScroll","droppableRef","placeholderRef","getDroppableRef","setDroppableRef","setPlaceholderRef","onPlaceholderTransitionEnd","whileDraggingRef","previousRef","publishedDescriptorRef","memoizedUpdateScroll","getClosestScroll","updateScroll","scheduleScrollUpdate","onClosestScroll","removeAttribute","useDroppablePublisher","droppableProps","droppableContext","draggableProvided","draggableSnapshot","getClone","for","$$typeof","toStringTag","__esModule","default","INITIALISE","UPDATE_VIA_PROPS","SET_IS_DRAGGING","SET_OPTIONS_PANEL_OPEN","SET_OPTIONS_PANEL_CLOSED","SET_SINGLESELECT_OPTIONS","SET_MULTISELECT_OPTIONS","SET_OPTIONS_PANEL_CLOSED_NO_SELECTION","SET_OPTIONS_PANEL_CLOSED_ONBLUR","SET_NEXT_SELECTED_INDEX","SET_NEXT_SELECTED_INDEX_ALPHA_NUMERIC","ReactResponsiveSelectProps","MultiSelectProps","MultiSelectOptionProps","SingleSelectProps","SingleSelectOptionProps","nextValidIndex","optHeader","multiselect","isOptionsPanelOpen","altered","singleSelectInitialIndex","singleSelectSelectedIndex","singleSelectSelectedOption","nextPotentialSelectionIndex","multiSelectInitialSelectedIndexes","multiSelectSelectedOptions","multiSelectSelectedIndexes","ReactResponsiveSelectClassRef","disabled","hasOptHeaders","updateState","optionIndex","onSubmit","focusButton","singleSelectBroadcastChange","multiSelectBroadcastChange","optionRef","createRef","optionsContainerRef","optHeaderLabel","scrollOffset","isDisabled","markup","textNode","optionsButton","optionsContainer","selectBoxRef","caretIcon","customLabelText","noSelectionLabel","getCustomLabel","getDefaultLabel","_","getAriaLabel","isAltered","selectedValues","selectedValue","resetMultiSelectState","getSingleSelectSelectedOption","getInitialMultiSelectOption","mergeIsAlteredState","removeMultiSelectOption","addMultiSelectOption","removeMultiSelectIndex","addMultiSelectIndex","getMultiSelectInitialSelectedOptions","getMultiSelectSelectedValueIndexes","getSelectedValueIndex","customLabelRenderer","isRequired","bool","shape","oneOfType","arrayOf","instanceOf","objectOf","oneOf","exact","checkPropTypes","PropTypes","TAB","ENTER","SPACE","ESCAPE","UP","DOWN","selectBox","handleTouchStart","handleTouchMove","handleKeyUpOrDownPressed","handleKeyEvent","handleEnterPressed","handleClick","handleBlur","handleAlphaNumerical","onTouchStart","onTouchMove","onTouchEnd","onMouseDown","multiLineString","extendStatics","__extends","__","__assign","__rest","__awaiter","_arguments","generator","fulfilled","rejected","__generator","sent","trys","ops","verb","__spreadArray","pack","ar","useDebugValue","getSnapshot","inst","useSyncExternalStore","useSyncExternalStoreWithSelector","makeBuiltIn","getter","setter","anObject","that","hasIndices","global","ignoreCase","multiline","dotAll","unicode","unicodeSets","sticky","DESCRIPTORS","defineBuiltInAccessor","regExpFlags","fails","RegExpPrototype","INDICES_SUPPORT","calls","addGetter","chr","hasOwn","isNullish","defaultDataIdFromObject","__typename","keyObject","defaultConfig","dataIdFromObject","addTypename","resultCaching","canonizeResults","normalizeConfig","shouldCanonizeResults","getTypenameFromStoreObject","objectOrReference","__ref","TypeOrFieldNameRegExp","fieldNameFromStoreName","storeFieldName","selectionSetMatchesResult","variables","storeValueIsStoreObject","makeProcessedFieldsMerger","extractFragmentContext","fragments","fragmentMap","lookupFragment","def","ApolloCache","getFragmentDoc","updateResult","optimisticId","performTransaction","recordOptimisticTransaction","transaction","transformDocument","transformForLink","identify","gc","modify","readQuery","rootId","readFragment","fragment","writeQuery","dataId","writeFragment","updateQuery","updateFragment","MissingFieldError","missing","DELETE","delModifier","INVALIDATE","EntityStore","policies","group","rootIds","getFieldValue","maybeDeepFreeze","canRead","objOrRef","toReference","objOrIdOrRef","mergeIntoStore","fieldName","storeObject","rootTypenamesById","Layer","dependOnExistence","incoming","__DEV__","merged","storeObjectReconciler","caching","fieldsToDirty_1","__exists","hasKeyArgs","changedFields_1","needToMerge_1","allDeleted_1","sharedDetails_1","isReference","readField","fieldNameOrOptions","fieldValue","storage","getStorage","typename","getStoreFieldName","evict","evicted","extract","extraRootIds","getRootIdSet","__META","newData","rest_1","retain","findChildRefIds","idsToRemove","root_1","found_1","workSet_1","keyMaker","CacheGroup","resetCaching","canUse","makeDepKey","maybeDependOnExistenceOfEntity","entityId","supportsResultCaching","Root","_b","seed","stump","Stump","storageTrie","addLayer","layerId","replay","removeLayer","ownStoreObject","parentStoreObject","fromParent","existingObject","incomingObject","existingValue","incomingValue","execSelectionSetKeyArgs","StoreReader","knownResults","canon","executeSelectionSet","peekArgs","admit","enclosingRef","execSelectionSetImpl","resultCacheMaxSize","varString","executeSubSelectedArray","execSubSelectedArrayImpl","resetCanon","diffQueryAgainstStore","_c","returnPartialData","_d","rootRef","execResult","firstMissing","isFresh","latest","isKnown","objectsToMerge","missingMerger","handleMissing","resultName","rootIdsByTypename","pass","fragmentMatches","finalResult","mergeDeep","frozen","childResult","assertSelectionSetForIdValue","tree","specifierInfoCache","lookupSpecifierInfo","keyFieldsFnFromSpecifier","specifier","keyFieldsFn","collectSpecifierPaths","schemaKeyPath","extracted","extractKeyPath","extractKey","keyArgsFnFromSpecifier","keyArgsFn","collected","keyPath","firstKey","firstChar","variableName","varKeyPath","directiveName_1","directiveArgs","extractor","merger","getSpecifierPaths","toMerge","paths","paths_1","currentPath_1","argsFromFieldSpecifier","setStringify","nullKeyFieldsFn","simpleKeyArgsFn","_args","mergeTrueFn","mergeFalseFn","Policies","typePolicies","toBeAdded","supertypeMap","fuzzySubtypes","usingPossibleTypes","setRootTypename","possibleTypes","addPossibleTypes","addTypePolicies","partialContext","ROOT_QUERY","normalizeReadFieldOptions","policy","getTypePolicy","keyFn","specifierOrId","queryType","mutationType","subscriptionType","updateTypePolicy","keyFields","setMerge","getFieldPolicy","old","supertype","getSupertypeSet","subtype","policy_1","supertypes","inbox","createIfMissing","fieldPolicies","supertypeSet","typenameSupertypeSet","workQueue_1","maybeEnqueue_1","needToCheckFuzzySubtypes","checkingFuzzySubtypes","regExp","fuzzyString","fieldSpec","specifierOrString","readOptions","makeFieldFunctionOptions","getReadFunction","getMergeFunction","parentTypename","childTypename","runMergeFunction","makeMergeObjectsFunction","overwrite","readFieldArgs","undefId","argc","makeUniqueId","eType","iType","getContextFlavor","clientOnly","deferred","flavored","flavors","StoreWriter","reader","writeToStore","operationDefinition","written","incomingById","processSelectionSet","mergeTree","fieldNodeSet","entityRef","applied","applyMerges","fieldsWithSelectionSets_1","hasSelectionSet_1","childTree","hasMergeFunction_1","existingRef","incomingObj","getChild","parentType","typeDotName","warnings","childTypenames","warnAboutDataLoss","result_1","flattenFields","resultFieldKey","getChildMergeTree","processFieldValue","maybeRecycleChildMergeTree","dataRef","sets","previous_1","mergeMergeTrees","mergeTreeIsEmpty","cloneDeep","fieldMap","limitingTrie","flatten","inheritedContext","visitedNode","visited","dir","if","getStorageArgs","e_1","i_1","getValue_1","eVal","iVal","aVal","emptyMergeTreePool","needToMergeMaps","remainingRightKeys_1","leftTree","InMemoryCache","watches","typenameDocumentCache","makeVar","txCount","rootStore","optimisticData","resetResultCache","resetResultIdentities","previousReader","storeReader","storeWriter","maybeBroadcastWatch","broadcastWatch","restore","broadcast","broadcastWatches","watch","discardWatches","removeOptimistic","idToRemove","newOptimisticData","onWatchUpdated","perform","layer","alreadyDirty","lastDiff","fromOptimisticTransaction","stringifyCanon","stringifyCache","ObjectCanon","known","WeakSet","pool","passes","keysByJSON","copy","shallowCopy","proto_1","array_1","sortedKeys","json","firstValueIndex_1","obj_1","canonicalStringify","resetCanonicalStringify","canonical","ignored","globalHost","cacheSlot","cacheInfoMap","getCacheInfo","vars","forgetCache","rv","recallCache","attachCache","oldListeners","attach","onNextChange","ApolloLink","HttpLink","createHttpLink","asyncMap","mapFn","catchFn","activeCallbackCount","promiseQueue","makeCallback","examiner","delegate","both","caught","graphQLResultHasError","errors","iterateObserversSafely","observers","argument","observersWithMethod","obs","fixObservableSubclass","subclass","species","isPromiseLike","Concast","sources","addObserver","removeObserver","handlers","nextResultListeners","iterable","deliverLastMessage","nextOrError","beforeNext","called","ObservableQuery","queryManager","queryInfo","subObserver","_subscription","_observer","defaultSubscriptionObserverErrorCallback","reobserve","tearDownQuery","subscriptions","isTornDown","defaultOptions","watchQuery","fetchPolicy","defaultFetchPolicy","_e","_f","initialFetchPolicy","generateQueryId","opDef","queryName","removeQuery","getCurrentResult","saveAsLastResult","lastResult","getLastResult","networkStatus","ready","loading","hasForcedResolvers","getDiff","partial","partialRefetch","logMissingFieldErrors","updateLastResult","isDifferentFromLastResult","newResult","getLast","variablesMustMatch","getLastError","resetLastResults","resetQueryStoreErrors","resetErrors","refetch","reobserveOptions","pollInterval","queryDef","resetLastWrite","fetchMore","fetchMoreOptions","combinedOptions","qid","originalNetworkStatus","notifyOnNetworkStatusChange","observe","updatedQuerySet","fetchQuery","fetchMoreResult","finally","reobserveCacheFirst","subscribeToMore","startGraphQLSubscription","subscriptionData","onError","setOptions","newOptions","setVariables","broadcastQueries","startPolling","updatePolling","stopPolling","applyNextFetchPolicy","nextFetchPolicy","fetch","newNetworkStatus","setObservableQuery","fetchQueryObservable","ssrMode","pollingInfo","interval","maybeFetch","poll","assumeImmutableResults","useDisposableConcast","oldVariables","oldFetchPolicy","mergedOptions","concast","reportResult","reportError","lastError","errorResult","graphQLErrors","hasObservers","stopQuery","obsQuery","LocalState","resolvers","fragmentMatcher","addResolvers","setFragmentMatcher","resolverGroup","setResolvers","getResolvers","runResolvers","remoteResult","onlyRunForcedResolvers","resolveDocument","localResult","getFragmentMatcher","clientQuery","serverQuery","prepareContext","getCacheKey","addExportedVariables","buildRootValueFromCache","exportedVariables","shouldForceResolvers","forceResolvers","Directive","enter","rootValue","mainDefinition","definitionOperation","defaultOperationType","execContext","resolveSelectionSet","resultsToMerge","resolveField","fieldResult","fragmentResult","aliasedFieldName","aliasUsed","defaultResult","resultPromise","resolverType","resolverMap","directive","resolveSubSelectedArray","destructiveMethodCounts","wrapDestructiveCacheMethod","cancelNotifyTimeout","QueryInfo","lastRequestId","stopped","observableQuery","networkError","getDiffOptions","updateWatch","oq","updateLastDiff","setDiff","oldDiff","notifyTimeout","oqListener","shouldNotify","watchOptions","watcher","lastWatch","lastWrite","shouldWrite","dmCount","markResult","cacheWriteBehavior","incremental","mergedData_1","merger_1","parent_1","shouldWriteResult","errorPolicy","diffOptions","markReady","markError","ignoreErrors","writeWithErrors","QueryManager","link","queryDeduplication","onBroadcast","clientAwareness","localState","fetchCancelFns","transformCache","queryIdCounter","requestIdCounter","mutationIdCounter","inFlightLinkObservables","mutationStore","_info","stopQueryNoBroadcast","cancelPendingFetches","mutate","mutation","optimisticResponse","updateQueries","refetchQueries","awaitRefetchQueries","updateWithProxyFn","onQueryUpdated","_g","keepRootFields","mutationId","_h","hasClientExports","mutationStoreValue","_j","generateMutationId","getVariables","markMutationOptimistic","getObservableFromLink","storeResult","markMutationResult","cacheWrites","skipCache","updateQueries_1","currentQueryResult","nextQueryResult","mutationResult","queryVariables","results_1","updateCache","asQuery","include","getQueryStore","transformed","noConnection","cacheEntry_1","defaultVars","generateRequestId","stopQueryInStore","stopQueryInStoreNoBroadcast","clearStore","getObservableQueries","queryNamesAndDocs","legacyQueryOptions","desc","included","nameOrDoc","reFetchObservableQueries","includeStandby","observableQueryPromises","makeObservable","observablePromise_1","getLocalState","deduplication","inFlightLinkObservables_1","operationName","forceFetch","byVariables_1","varJson_1","of","getResultsFromLink","requestId","linkDocument","incrementalResult","hasErrors","aqr","normalized","fromVariables","concastSources","fetchQueryByPolicy","cleanupCancelFn","includedQueriesById","refetchWritePolicy","oldNetworkStatus","readCache","resultsFromCache","fromData","resolved","resultsFromLink","newContext","hasSuggestedDevtools","ApolloClient","resetStoreCallbacks","clearStoreCallbacks","uri","credentials","ssrForceFetchDelay","connectToDevTools","__APOLLO_CLIENT__","typeDefs","clientAwarenessName","clientAwarenessVersion","disableNetworkFetches","resetStore","__APOLLO_DEVTOOLS_GLOBAL_HOOK__","nav","ua","devToolsHookCb","mutations","dataWithOptimisticResults","mergeOptions","__actionHookForDevTools","__requestRaw","onResetStore","onClearStore","serializedState","setLocalStateFragmentMatcher","setLink","newLink","NetworkStatus","isNetworkRequestInFlight","isApolloError","ApolloError","clientErrors","extraInfo","passthrough","forward","toLink","isTerminating","LinkError","links","leftLink","rightLink","starting","createOperation","transformedOperation","transformOperation","OPERATION_FIELDS","validateOperation","firstLink","nextLink","setOnError","serializeFetchParameter","parseError","nodeStreamIterator","stream","waiting","onData","chunk","shiftedArr","pair","onEnd","asyncIterator","readerIterator","responseIterator","isAsyncIterableIterator","getReader","isReadableStream","isStreamableBlob","arrayBuffer","isBlob","promiseIterator","pipe","isNodeReadableStream","throwServerError","statusCode","parseHeaders","headerText","headersInit","name_1","parseJsonBody","bodyText","handleError","readJsonBody","operations","print","leave","printDocASTReducer","Name","Variable","Document","OperationDefinition","varDefs","VariableDefinition","SelectionSet","Field","argsLine","indent","Argument","FragmentSpread","_ref5","InlineFragment","_ref6","FragmentDefinition","_ref7","IntValue","_ref8","FloatValue","_ref9","StringValue","_ref10","BooleanValue","_ref11","NullValue","EnumValue","_ref12","ListValue","_ref13","ObjectValue","_ref14","ObjectField","_ref15","_ref16","NamedType","_ref17","ListType","_ref18","NonNullType","_ref19","SchemaDefinition","addDescription","_ref20","OperationTypeDefinition","_ref21","ScalarTypeDefinition","_ref22","ObjectTypeDefinition","_ref23","FieldDefinition","_ref24","hasMultilineItems","InputValueDefinition","_ref25","InterfaceTypeDefinition","_ref26","UnionTypeDefinition","_ref27","EnumTypeDefinition","_ref28","EnumValueDefinition","_ref29","InputObjectTypeDefinition","_ref30","DirectiveDefinition","_ref31","SchemaExtension","_ref32","ScalarTypeExtension","_ref33","ObjectTypeExtension","_ref34","InterfaceTypeExtension","_ref35","UnionTypeExtension","_ref36","EnumTypeExtension","_ref37","InputObjectTypeExtension","_ref38","maybeArray","_maybeArray$filter$jo","maybeString","isMultiline","fallbackHttpConfig","http","includeQuery","includeExtensions","preserveHeaderCase","defaultPrinter","printer","selectHttpOptionsAndBodyInternal","configs","normalizedHeaders_1","headerData","originalName","normalizedHeaders","removeDuplicateHeaders","fromError","errorValue","backupFetch","linkOptions","preferredFetch","useGETForQueries","includeUnusedVariables","requestOptions","fetcher","checkFetcher","linkConfig","fetchOptions","chosenURI","fallbackURI","contextURI","getContext","selectURI","clientAwarenessHeaders","controller","contextHeaders","contextConfig","unusedNames_1","signal","AbortController","createSignalIfSupported","_controller","addQueryParam","serializedVariables","serializedExtensions","preFragment","fragmentStart","queryParamsPrefix","newURI","rewriteURIForGET","setContext","ctype","contentType","boundaryVal","boundary","buffer","bi","contentType_1","TextDecoder","readMultipartBody","contextKey","getApolloContext","ApolloProvider","ApolloContext","useApolloClient","override","EAGER_METHODS","useLazyQuery","internalState","execOptionsRef","useQueryResult","useQuery","skip","getDefaultFetchPolicy","eagerMethods","_loop_1","forceUpdate","EAGER_METHODS_1","executeOptions","asyncUpdate","queryResult","useMutation","Mutation","setResult","baseOptions","ignoreResults","clientOptions","onCompleted","result_2","didWarnUncachedGetSnapshot","getServerSnapshot","checkIfSnapshotChanged","useInternalState","stateRef","InternalState","setTick","asyncResolveFns","optionsToIgnoreOnce","ssrDisabledResult","skipStandbyResult","toQueryResultCache","Query","previousResult","previousData","watchQueryOptions","renderPromises","useOptions","useObservableQuery","onNext","unsafeHandlePartialRefetch","toQueryResult","createWatchQueryOptions","queryHookOptions","currentWatchQueryOptions","getObsQueryOptions","ssr","globalDefaults","otherOptions","getSSRObservable","obsQueryFields","ssrAllowed","registerSSRObservable","addObservableQueryPromise","nextResult","handleErrorOrCompleted","resultWithoutPartial","DocumentType","Subscription","verifyDocumentType","definition","parser","requiredOperationName","usedOperationName","isNonEmptyArray","canUseWeakMap","product","canUseWeakSet","canUseSymbol","canUseAsyncIteratorSymbol","canUseDOM","usingJSDOM","canUseLayoutEffect","cloneDeepHelper","seen","copy_1","copy_2","objects","prefixCounts","deepFreeze","isFrozen","shallowFreeze","mergeDeepArray","DeepMerger","defaultReconciler","reconciler","pastCopies","targetValue","shallowCopyForMerge","isNonNullObject","genericMessage","InvariantError","verbosityLevels","verbosityLevel","wrapConsoleMethod","thunk","GLOBAL_KEY","safeGlobal","needToRemove","NODE_ENV","DEV","shouldInclude","isInclusionDirective","directiveArguments","directiveName","ifArgument","ifValue","getInclusionDirectives","evaledValue","hasDirectives","nameSet","uniqueCount","getFragmentQueryDocument","actualFragmentName","createFragmentMap","symTable","getFragmentFromSelection","checkDocument","getOperationDefinition","getOperationName","getFragmentDefinitions","getQueryDefinition","getFragmentDefinition","fragmentDef","getMainDefinition","queryDoc","getDefaultValues","defaultValues","makeReference","isDocumentNode","valueToObjectRepresentation","argObj","isIntValue","isFloatValue","isBooleanValue","isStringValue","isObjectValue","nestedArgObj_1","isVariable","variableValue","isListValue","listValue","nestedArgArrayObj","isEnumValue","isNullValue","storeKeyNameFromField","directivesObj","getStoreKeyName","KNOWN_DIRECTIVES","filterKeys","filteredArgs_1","completeFieldName","stringifiedArgs","stringifyReplacer","argumentsObjectFromField","argObj_1","resultKeyNameFromField","getTypenameFromResult","isField","isInlineFragment","filterInPlace","elem","TYPENAME_FIELD","isEmpty","nullIfDocIsEmpty","getDirectiveMatcher","removeDirectivesFromDocument","variablesInUse","variablesToRemove","fragmentSpreadsInUse","fragmentSpreadsToRemove","modifiedDoc","getAllFragmentSpreadsFromSelectionSet","frag","argMatcher","aConfig","getArgumentMatcher","varDef","argConfig","argMatchCount_1","removeArgumentsFromDocument","fs","removeFragmentSpreadFromDocument","addTypenameToDocument","connectionRemoveConfig","willRemove","removeConnectionDirectiveFromDocument","allFragments","buildQueryFromSelectionSet","removeClientSetsFromDocument","isRepositoryName","PrismicError","super","getRepositoryEndpoint","repositoryName","castArray","RENAMED_PARAMS","accessToken","castOrderingToString","appendPredicates","objWithPredicates","predicates","findRef","ref2","findMasterRef","isMasterRef","findRefByID","findRefByLabel","preview","readValue","ForbiddenError","NotFoundError","ParsingError","formatValue","getTime","pathWithArgsPredicate","formattedArgs","joiner","pathPredicate","predicateFn","not","in","fulltext","similar","argsPredicate","geopointNear","numberLessThan","numberGreaterThan","numberInRange","dateAfter","dateBefore","dateBetween","dateDayOfMonth","dateDayOfMonthAfter","dateDayOfMonthBefore","dateDayOfWeek","dateDayOfWeekAfter","dateDayOfWeekBefore","dateMonth","dateMonthAfter","dateMonthBefore","dateYear","dateHour","dateHourAfter","dateHourBefore","typePredicate","documentType","everyTagPredicate","tags","someTagsPredicate","createClient","repositoryNameOrEndpoint","Client","refState","autoPreviewsEnabled","cachedRepositoryExpiration","graphqlFetch","graphQLFetch","URL","isRepositoryEndpoint","endpoint","routes","brokenRoute","defaultParams","queryContentFromRef","fetchFn","enableAutoPreviews","enableAutoPreviewsFromReq","req","httpRequest","disableAutoPreviews","buildQueryURL","getFirst","actualParams","pageSize","firstResult","dangerouslyGetAll","resolvedParams","documents","latestResult","next_page","getByID","getByIDs","getAllByIDs","getByUID","uid","getByUIDs","uids","getAllByUIDs","getSingle","getByType","getByTag","getAllByTag","getByEveryTag","getAllByEveryTag","getBySomeTags","getAllBySomeTags","getRepository","searchParams","getRefs","getRefByID","getRefByLabel","getMasterRef","getReleases","getReleaseByID","releases","getReleaseByLabel","tagsForm","getCachedRepositoryForm","getResolvedRefString","integrationFieldsRef","getCachedRepository","append","scopedValue","resolvePreviewURL","documentID","previewToken","URLSearchParams","documentId","lang","defaultURL","queryLatestContent","queryContentFromReleaseByID","releaseID","queryContentFromReleaseByLabel","releaseLabel","cachedRepository","unsanitizedHeaders","Authorization","_chars","_spaces","minifyGraphQLQuery","form","forms","previewRef","cookieJar","cookie","cookies","getPreviewCookie","refModeType","camelCasedParamKey","paramKey","buildPixelDensitySrcSet","dpr","buildWidthSrcSet","asLink","linkFieldOrDocument","linkField","prismicDocument","link_type","slug","slugs","Media","Web","resolvedURL","isNonNullish","title","thumbnail","linkToMedia","contentRelationship","timestamp","color","keyText","integrationFields","isFilled","geoPoint","group2","sliceZone","slices","DEFAULT_WIDTHS","asImageWidthSrcSet","_alt","_copyright","responsiveViews","responsiveViewObjects","DEFAULT_PIXEL_DENSITIES","asImagePixelDensitySrcSet","RichTextNodeType","LinkType","MAX_ARRAY_LENGTH","MAX_RECURSIVE_DEPTH","inspect","seenValues","previouslySeenValues","customInspectFn","getCustomFn","customValue","formatArray","getObjectTag","formatObject","formatObjectValue","nodejsCustomInspectSymbol","defineInspect","classObject","toJSON","Location","Token","isNode","maybeNode","dedentBlockStringValue","rawString","commonIndent","_commonIndent","isFirstLine","isEmptyLine","getBlockStringIndentation","startLine","isBlank","endLine","printBlockString","indentation","preferMultipleLines","isSingleLine","hasLeadingSpace","hasTrailingQuote","hasTrailingSlash","printAsMultipleLines","Kind","devAssert","Source","isSource","QueryDocumentKeys","BREAK","visit","visitor","visitorKeys","inArray","edits","ancestors","newRoot","isLeaving","isEdited","_Object$keys2","editOffset","ii","editKey","editValue","_visitorKeys$node$kin","visitFn","getVisitFn","kindVisitor","kindSpecificVisitor","specificVisitor","specificKindVisitor","SYMBOL_TO_STRING_TAG","setWindowTitle","BrowserHistory","windowTitle","_ref$writeDelay","writeDelay","createURL","parseURL","writeTimer","_createURL","latestAcknowledgedHistory","history","qsModule","routeState","pushState","inPopState","_this3","_onPopState","_this4","isDisposed","_this5","lastPushWasByISAfterDispose","historyRouter","_ref7$createURL","hostname","_location$port","port","pathname","hash","queryString","portWithPrefix","_ref7$parseURL","_ref7$writeDelay","_ref7$getLocation","checkRendering","rendering","usage","createDocumentationMessageGenerator","widgets","widget","_ref$connector","connector","TAG_PLACEHOLDER","highlightPreTag","highlightPostTag","TAG_REPLACEMENT","replaceTagsAndEscape","recursiveEscape","escapeHits","hits","__escaped","hit","_highlightResult","_snippetResult","escapeFacets","highlighted","htmlEntities","regexUnescapedHtml","regexHasUnescapedHtml","character","htmlCharacters","regexEscapedHtml","regexHasEscapedHtml","unescape","resultsFacet","nameParts","facetData","refinementKey","includesQuery","_state$facetsRefineme","_state$facetsExcludes","_state$disjunctiveFac","_state$hierarchicalFa","_state$numericRefinem","_state$tagRefinements","refinementName","exclude","operatorOriginal","valueOrValues","isObjectLike","getTag","_objectWithoutPropertiesLoose","sourceSymbolKeys","mergeHierarchicalFacets","nextFacets","mergeSearchParameters","hierarchicalFacetsRefinementsMerged","mergeHierarchicalFacetsRefinements","tagRefinementsMerged","mergeTagRefinements","numericRefinementsMerged","mergeNumericRefinements","disjunctiveFacetsRefinementsMerged","mergeDisjunctiveFacetsRefinements","facetsExcludesMerged","mergeFacetsExcludes","facetRefinementsMerged","mergeFacetRefinements","disjunctiveFacetsMerged","mergeDisjunctiveFacets","ruleContextsMerged","ruleContexts","uniq","mergeRuleContexts","facetsMerged","mergeFacets","mergeWithRest","safelyRunOnBrowser","serializePayload","btoa","_toConsumableArray","_arrayLikeToArray","_arrayWithoutHoles","iter","_iterableToArray","minLen","_unsupportedIterableToArray","_nonIterableSpread","_ref$start","_ref$step","limitStep","arrayLength","Paginator","currentPage","totalDisplayedPages","nbPagesDisplayed","calculatePaddingLeft","withUsage","renderFn","unmountFn","widgetParams","totalPages","_ref$padding","pager","connectorState","$$type","initOptions","instantSearchInstance","getWidgetRenderState","renderOptions","getWidgetUiState","uiState","searchParameters","getWidgetSearchParameters","refine","helperState","nbPages","getMaxPage","canRefine","pages","isFirstPage","isLastPage","getRenderState","renderState","pagination","cx","classNames","Pagination","_ref$showFirst","showFirst","_ref$showPrevious","showPrevious","_ref$showNext","showNext","_ref$showLast","showLast","onNavigate","translations","_ref$classNames","previousPageIndex","nextPageIndex","lastPageIndex","noRefinementRoot","PaginationItem","firstPageItem","firstPageItemAriaLabel","onClick","firstPageItemText","previousPageItem","previousPageItemAriaLabel","previousPageItemText","pageItem","selectedItem","pageItemAriaLabel","pageItemText","nextPageItem","nextPageItemAriaLabel","nextPageItemText","lastPageItem","lastPageItemAriaLabel","lastPageItemText","_onClick","disabledItem","isMiddleClick","isModifierClick","_usePagination","additionalWidgetProperties","useConnector","usePagination","$$widgetType","uiProps","getInitialSearchParameters","_renderState$configur","widgetRenderState","configure","actualState","nextSearchParameters","Configure","useConfigure","isIndexWidget","createInitArgs","getHelper","templatesConfig","scopedResults","searchMetadata","isSearchStalled","createRenderArgs","getResults","getScopedResults","privateHelperSetState","_uiState","getLocalWidgetsUiState","widgetStateOptions","initialUiState","getWidgetState","getLocalWidgetsSearchParameters","widgetSearchParametersOptions","initialSearchParameters","resetPageFromWidgets","indexWidgets","widgetHelper","getWidgets","resolveScopedResultsFromWidgets","indexId","getIndexId","_widgetParams$indexId","localWidgets","localUiState","localInstantSearchInstance","localParent","getIndexName","widgetParent","getParent","addWidgets","storeRenderState","_initialUiState","scheduleSearch","removeWidgets","_instantSearchInstanc","mainIndex","setUiState","searchWithoutTriggeringOnStateChange","resolveSearchParameters","indexInitialResults","_initialResults","scheduleStalledRender","scheduleRender","onInternalStateChange","previousUiState","innerIndex","refreshUiState","parentIndexName","componentName","descendantName","modifierName","descendent","modifier","getPropertyByPath","suit","concatHighlightedParts","isHighlighted","hasAlphanumeric","getHighlightFromSiblings","_parts","_parts2","isNextHighlighted","isPreviousHighlighted","reverseHighlightedParts","getHighlightedParts","highlightedValue","splitByPreTag","firstValue","elements","splitByPostTag","serializedPayload","writeDataAttributes","hoganHelpers","numberLocale","toLocaleString","highlight","_ref$highlightedTagNa","highlightedTagName","_ref$cssClasses","cssClasses","_ref2$value","attributeValue","reverseHighlight","snippet","reverseSnippet","insights","_JSON$parse","objectIDs","objectID","nextMicroTask","defer","cancelled","wait","setIndexHelperState","finalUiState","indexWidget","nextIndexUiState","getIndexStateWithoutConfigure","isPrimitive","_Object$keys","createRouterMiddleware","_props$router","router","_props$stateMapping","stateMapping","stateToRoute","routeToState","route","lastRouteState","onUpdate","started","extractPayload","widgetType","createMetadataMiddleware","payloadContainer","refNode","_ua","_createSuper","defaultCreateURL","InstantSearch","_EventEmitter","shouldResetStatus","_searchStalledTimer","nextUiState","_options$indexName","_options$initialUiSta","_options$routing","routing","searchFunction","_options$stalledSearc","stalledSearchDelay","_options$searchClient","searchClient","_options$insightsClie","insightsClient","_options$onStateChang","helpers","compileOptions","_stalledSearchDelay","_searchFunction","sendEventToInsights","routerOptions","use","_window$navigator","_window$navigator$use","newMiddlewareList","newMiddleware","creator","_len2","middlewareToUnuse","_key2","fakeClient","_mainHelperSearch","mainIndexHelper","searchFunctionHelper","originalScheduleSearch","callOnStateChange","InstantSearchSSRContext","createContext","defaultUserAgents","serverUserAgent","useInstantSearchApi","serverContext","useInstantSearchServerContext","serverState","initialResults","searchRef","prevPropsRef","addAlgoliaAgents","notifyServer","_props$stalledSearchD","cleanupTimerRef","_preventWidgetCleanup","userAgents","InstantSearchContext","IndexContext","_ref$attributesToClea","attributesToClear","finalState","_ref$includedAttribut","includedAttributes","_ref$excludedAttribut","excludedAttributes","_ref$transformItems","transformItems","cachedRefine","cachedCreateURL","scopedResult","getAttributesToClear","indexHelper","attributeToClear","useClearRefinements","getRefinementsItems","filterFunction","normalizeRefinement","allItems","currentItem","clearRefinementFromState","getOperatorSymbol","normalizedRefinement","currentRefinements","accResults","useCurrentRefinements","buildPayloads","eventType","hitsArray","removeEscapedFromHits","queryID","__queryID","hitsChunks","chunkSize","chunks","objectIDsByChunk","positionsByChunk","__position","insightsMethod","sendEvent","bindEvent","_ref$escapeHTML","escapeHTML","createSendEventForHits","payloads","hitsWithAbsolutePositionAndQueryID","addQueryID","useHits","isFiniteNumber","isFinite","_slicedToArray","_arrayWithHoles","_arr","_n","_s","_iterableToArrayLimit","_nonIterableRest","toPrecision","_ref2$attribute","minBound","maxBound","_ref2$precision","rangeFormatter","formatToNumber","createSendEvent","_refine","currentRange","nextMin","nextMax","refinedState","newNextMin","newNextMax","resolvedState","currentRangeMin","currentRangeMax","isResetMin","isResetMax","_toPrecision","nextMinAsNumber","nextMaxAsNumber","isResetNewNextMin","isGreaterThanCurrentRange","isMinValid","isResetNewNextMax","isLowerThanRange","isMaxValid","getRefinedState","facetsFromResults","_getCurrentRange","minValue","_getCurrentRefinement","_searchParameters$get","_searchParameters$get2","_searchParameters$get3","widgetSearchParameters","_value$split$map2","useRange","_ref$operator","_ref$limit","_ref$showMore","showMore","_ref$showMoreLimit","showMoreLimit","_ref$sortBy","_ref$escapeFacetValue","escapeFacetValues","lastResultsFromMainSearch","triggerRefine","formatItems","lastItemsFromMainSearch","hasExhaustiveItems","isShowingMore","toggleShowMore","cachedToggleShowMore","getLimit","attr","_args$","filters","createSendEventForFacet","searchResults","normalizedFacetValues","canToggleShowMore","isFromSearch","createSearchForFacetValues","maxValuesPerFacetConfig","maxValuesPerFacet","currentLimit","createToggleShowMore","searchFacetValues","searchForItems","withoutMaxValuesPerFacet","withoutRefinements","withFacetConfiguration","currentMaxValuesPerFacet","nextMaxValuesPerFacet","withMaxValuesPerFacet","useRefinementList","defaultQueryHook","hook","_clear","_ref$queryHook","queryHook","searchBox","useSearchBox","_ref2$on","userOn","userOff","off","hasAnOffValue","toggleRefinementFactory","valuesToRemove","valuesToAdd","onFacetValue","offFacetValue","offValue","allFacetValues","offData","nextRefinement","toggle","useToggleRefinement","dequal","foo","bar","compare","useStableValue","_useState2","stableValue","setStableValue","useInstantSearchContext","parentIndex","useIndexContext","stableProps","stableAdditionalWidgetProperties","shouldSetStateRef","previousRenderStateRef","isFirstRender","createWidget","_widget$getWidgetSear","_getIndexSearchResult","getIndexSearchResults","_widget$getWidgetRend","shouldSsr","prevWidgetRef","shouldAddWidgetEarly","useIsomorphicLayoutEffect","previousWidget","useWidget","useInstantSearch","catchError","_useSearchState","getUiState","setLocalUiState","indexUiState","setIndexUiState","prevUiState","handleRender","useSearchState","_useSearchResults","searchIndex","setSearchResults","useSearchResults","unuse","refresh","createSearchResults","_state$query","_state$page","_state$hitsPerPage","exhaustiveNbHits","__isArtificial","fallbackResults","InstantSearchServerContext","_createForOfIteratorHelperLoose","allowArrayLike","it","_createClass","hasSymbols","hasSymbol","getSymbol","SymbolIterator","SymbolObservable","SymbolSpecies","getMethod","getSpecies","Observable","isObservable","hostReportError","enqueue","cleanupSubscription","_cleanup","closeSubscription","_queue","notifySubscription","onNotify","flushSubscription","subscriptionObserver","SubscriptionObserver","_proto2","_subscriber","_proto3","hasSeed","startNext","flatMap","_this6","outer","inner","completeIfDone","closed","_step","_iterator","createStoreImpl","createState","destroy","createImpl","useBoundStore","equalityFn","getServerState","useStore","devtools","devtoolsOptions","enabled","anonymousActionType","extensionConnector","__REDUX_DEVTOOLS_EXTENSION__","extension","isRecording","nameOrAction","setStateFromDevtools","originalIsRecording","dispatchFromDevtools","didWarnAboutReservedActionType","originalDispatch","parseJsonThen","nextLiftedState","lastComputedState","computedStates","stringified"],"sourceRoot":""}