{"version":3,"file":"static/js/main.768f237a.js","mappings":"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","sources":["../node_modules/@babel/runtime/regenerator/index.js","../node_modules/axios/index.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/axios.js","../node_modules/axios/lib/cancel/Cancel.js","../node_modules/axios/lib/cancel/CancelToken.js","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/axios/lib/core/Axios.js","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/axios/lib/core/buildFullPath.js","../node_modules/axios/lib/core/createError.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/axios/lib/core/enhanceError.js","../node_modules/axios/lib/core/mergeConfig.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/core/transformData.js","../node_modules/axios/lib/defaults/index.js","../node_modules/axios/lib/defaults/transitional.js","../node_modules/axios/lib/env/data.js","../node_modules/axios/lib/helpers/bind.js","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/axios/lib/helpers/combineURLs.js","../node_modules/axios/lib/helpers/cookies.js","../node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/axios/lib/helpers/isAxiosError.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/axios/lib/helpers/normalizeHeaderName.js","../node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/axios/lib/helpers/spread.js","../node_modules/axios/lib/helpers/validator.js","../node_modules/axios/lib/utils.js","../node_modules/classnames/index.js","../node_modules/crypto-js/aes.js","../node_modules/crypto-js/cipher-core.js","../node_modules/crypto-js/core.js","../node_modules/crypto-js/enc-base64.js","../node_modules/crypto-js/enc-base64url.js","../node_modules/crypto-js/enc-utf16.js","../node_modules/crypto-js/evpkdf.js","../node_modules/crypto-js/format-hex.js","../node_modules/crypto-js/hmac.js","../node_modules/crypto-js/index.js","../node_modules/crypto-js/lib-typedarrays.js","../node_modules/crypto-js/md5.js","../node_modules/crypto-js/mode-cfb.js","../node_modules/crypto-js/mode-ctr-gladman.js","../node_modules/crypto-js/mode-ctr.js","../node_modules/crypto-js/mode-ecb.js","../node_modules/crypto-js/mode-ofb.js","../node_modules/crypto-js/pad-ansix923.js","../node_modules/crypto-js/pad-iso10126.js","../node_modules/crypto-js/pad-iso97971.js","../node_modules/crypto-js/pad-nopadding.js","../node_modules/crypto-js/pad-zeropadding.js","../node_modules/crypto-js/pbkdf2.js","../node_modules/crypto-js/rabbit-legacy.js","../node_modules/crypto-js/rabbit.js","../node_modules/crypto-js/rc4.js","../node_modules/crypto-js/ripemd160.js","../node_modules/crypto-js/sha1.js","../node_modules/crypto-js/sha224.js","../node_modules/crypto-js/sha256.js","../node_modules/crypto-js/sha3.js","../node_modules/crypto-js/sha384.js","../node_modules/crypto-js/sha512.js","../node_modules/crypto-js/tripledes.js","../node_modules/crypto-js/x64-core.js","../node_modules/direction/index.js","../node_modules/enquire.js/src/MediaQuery.js","../node_modules/enquire.js/src/MediaQueryDispatch.js","../node_modules/enquire.js/src/QueryHandler.js","../node_modules/enquire.js/src/Util.js","../node_modules/enquire.js/src/index.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/hoist-non-react-statics/node_modules/react-is/index.js","../node_modules/is-hotkey/lib/index.js","../node_modules/json2mq/index.js","../node_modules/lodash.debounce/index.js","../node_modules/lodash/_Symbol.js","../node_modules/lodash/_baseGetTag.js","../node_modules/lodash/_baseTrim.js","../node_modules/lodash/_freeGlobal.js","../node_modules/lodash/_getRawTag.js","../node_modules/lodash/_objectToString.js","../node_modules/lodash/_root.js","../node_modules/lodash/_trimmedEndIndex.js","../node_modules/lodash/debounce.js","../node_modules/lodash/isObject.js","../node_modules/lodash/isObjectLike.js","../node_modules/lodash/isSymbol.js","../node_modules/lodash/now.js","../node_modules/lodash/throttle.js","../node_modules/lodash/toNumber.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/client.js","../node_modules/react-dom/index.js","../node_modules/react-gtm-module/dist/Snippets.js","../node_modules/react-gtm-module/dist/TagManager.js","../node_modules/react-gtm-module/dist/index.js","../node_modules/react-gtm-module/dist/utils/warn.js","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-is/index.js","../node_modules/react-slick/lib/arrows.js","../node_modules/react-slick/lib/default-props.js","../node_modules/react-slick/lib/dots.js","../node_modules/react-slick/lib/index.js","../node_modules/react-slick/lib/initial-state.js","../node_modules/react-slick/lib/inner-slider.js","../node_modules/react-slick/lib/slider.js","../node_modules/react-slick/lib/track.js","../node_modules/react-slick/lib/utils/innerSliderUtils.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/regenerator-runtime/runtime.js","../node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/string-convert/camel2hyphen.js","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/make namespace object","../webpack/runtime/publicPath","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/react-redux/es/components/Context.js","../node_modules/react-redux/es/utils/batch.js","../node_modules/react-redux/es/utils/Subscription.js","../node_modules/react-redux/es/utils/useIsomorphicLayoutEffect.js","../node_modules/react-redux/es/components/Provider.js","../node_modules/react-redux/es/hooks/useReduxContext.js","../node_modules/react-redux/es/hooks/useStore.js","../node_modules/react-redux/es/hooks/useDispatch.js","../node_modules/react-redux/es/hooks/useSelector.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/esm/createSuper.js","../node_modules/@babel/runtime/helpers/esm/construct.js","../node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","../node_modules/@babel/runtime/helpers/esm/isNativeFunction.js","../node_modules/react-redux/es/index.js","../node_modules/@remix-run/router/history.ts","../node_modules/@remix-run/router/utils.ts","../node_modules/react-router/lib/use-sync-external-store-shim/useSyncExternalStoreShimClient.ts","../node_modules/react-router/lib/use-sync-external-store-shim/index.ts","../node_modules/react-router/lib/context.ts","../node_modules/react-router/lib/hooks.tsx","../node_modules/react-router/lib/components.tsx","../node_modules/redux/es/redux.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","store/loginreducer.js","store/store.js","Components/CommonComponents/Navbar.js","Components/CommonComponents/Juliette.js","img/password_not_shown.svg","img/password_shown.svg","img/loginThrough/facebook.svg","img/loginThrough/linkedin.svg","img/loginThrough/microsoft.svg","img/loginThrough/google.svg","img/loginThrough/apple.svg","../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","../node_modules/@firebase/util/src/crypt.ts","../node_modules/@firebase/util/src/deferred.ts","../node_modules/@firebase/util/src/environment.ts","../node_modules/@firebase/util/src/errors.ts","../node_modules/@firebase/util/src/obj.ts","../node_modules/@firebase/util/src/query.ts","../node_modules/@firebase/util/src/subscribe.ts","../node_modules/@firebase/util/src/compat.ts","../node_modules/@firebase/component/src/component.ts","../node_modules/@firebase/component/src/constants.ts","../node_modules/@firebase/component/src/provider.ts","../node_modules/@firebase/logger/src/logger.ts","../node_modules/@firebase/component/src/component_container.ts","../node_modules/@firebase/app/node_modules/idb/build/wrap-idb-value.js","../node_modules/@firebase/app/node_modules/idb/build/index.js","../node_modules/@firebase/app/src/platformLoggerService.ts","../node_modules/@firebase/app/src/logger.ts","../node_modules/@firebase/app/src/constants.ts","../node_modules/@firebase/app/src/internal.ts","../node_modules/@firebase/app/src/errors.ts","../node_modules/@firebase/app/src/firebaseApp.ts","../node_modules/@firebase/app/src/api.ts","../node_modules/@firebase/app/src/indexeddb.ts","../node_modules/@firebase/app/src/heartbeatService.ts","../node_modules/@firebase/app/src/registerCoreComponents.ts","../node_modules/@firebase/app/src/index.ts","../node_modules/@babel/runtime/helpers/esm/superPropBase.js","../node_modules/@babel/runtime/helpers/esm/get.js","../node_modules/firebase/app/index.ts","../node_modules/tslib/tslib.es6.js","../node_modules/@firebase/auth/src/core/errors.ts","../node_modules/@firebase/auth/src/core/util/log.ts","../node_modules/@firebase/auth/src/core/util/assert.ts","../node_modules/@firebase/auth/src/core/util/instantiator.ts","../node_modules/@firebase/auth/src/core/auth/initialize.ts","../node_modules/@firebase/auth/src/core/util/location.ts","../node_modules/@firebase/auth/src/core/util/navigator.ts","../node_modules/@firebase/auth/src/core/util/delay.ts","../node_modules/@firebase/auth/src/core/util/emulator.ts","../node_modules/@firebase/auth/src/core/util/fetch_provider.ts","../node_modules/@firebase/auth/src/api/errors.ts","../node_modules/@firebase/auth/src/api/index.ts","../node_modules/@firebase/auth/src/api/account_management/account.ts","../node_modules/@firebase/auth/src/core/util/time.ts","../node_modules/@firebase/auth/src/core/user/id_token_result.ts","../node_modules/@firebase/auth/src/core/user/invalidation.ts","../node_modules/@firebase/auth/src/core/user/proactive_refresh.ts","../node_modules/@firebase/auth/src/core/user/user_metadata.ts","../node_modules/@firebase/auth/src/core/user/reload.ts","../node_modules/@firebase/auth/src/api/authentication/token.ts","../node_modules/@firebase/auth/src/core/user/token_manager.ts","../node_modules/@firebase/auth/src/core/user/user_impl.ts","../node_modules/@firebase/auth/src/core/persistence/in_memory.ts","../node_modules/@firebase/auth/src/core/persistence/persistence_user_manager.ts","../node_modules/@firebase/auth/src/core/util/browser.ts","../node_modules/@firebase/auth/src/core/util/version.ts","../node_modules/@firebase/auth/src/core/auth/middleware.ts","../node_modules/@firebase/auth/src/core/auth/auth_impl.ts","../node_modules/@firebase/auth/src/core/credentials/auth_credential.ts","../node_modules/@firebase/auth/src/api/account_management/email_and_password.ts","../node_modules/@firebase/auth/src/api/authentication/email_and_password.ts","../node_modules/@firebase/auth/src/api/authentication/email_link.ts","../node_modules/@firebase/auth/src/core/credentials/email.ts","../node_modules/@firebase/auth/src/api/authentication/idp.ts","../node_modules/@firebase/auth/src/core/credentials/oauth.ts","../node_modules/@firebase/auth/src/api/authentication/sms.ts","../node_modules/@firebase/auth/src/core/credentials/phone.ts","../node_modules/@firebase/auth/src/core/action_code_url.ts","../node_modules/@firebase/auth/src/core/providers/email.ts","../node_modules/@firebase/auth/src/core/providers/federated.ts","../node_modules/@firebase/auth/src/core/providers/oauth.ts","../node_modules/@firebase/auth/src/core/providers/facebook.ts","../node_modules/@firebase/auth/src/core/providers/google.ts","../node_modules/@firebase/auth/src/core/providers/github.ts","../node_modules/@firebase/auth/src/core/credentials/saml.ts","../node_modules/@firebase/auth/src/core/providers/twitter.ts","../node_modules/@firebase/auth/src/core/user/user_credential_impl.ts","../node_modules/@firebase/auth/src/mfa/mfa_error.ts","../node_modules/@firebase/auth/src/core/user/link_unlink.ts","../node_modules/@firebase/auth/src/core/user/reauthenticate.ts","../node_modules/@firebase/auth/src/core/strategies/credential.ts","../node_modules/@firebase/auth/src/api/account_management/mfa.ts","../node_modules/@firebase/auth/src/mfa/mfa_user.ts","../node_modules/@firebase/auth/src/core/persistence/index.ts","../node_modules/@firebase/auth/src/platform_browser/persistence/browser.ts","../node_modules/@firebase/auth/src/platform_browser/persistence/local_storage.ts","../node_modules/@firebase/auth/src/platform_browser/persistence/session_storage.ts","../node_modules/@firebase/auth/src/platform_browser/messagechannel/promise.ts","../node_modules/@firebase/auth/src/platform_browser/messagechannel/receiver.ts","../node_modules/@firebase/auth/src/core/util/event_id.ts","../node_modules/@firebase/auth/src/platform_browser/messagechannel/sender.ts","../node_modules/@firebase/auth/src/platform_browser/auth_window.ts","../node_modules/@firebase/auth/src/platform_browser/util/worker.ts","../node_modules/@firebase/auth/src/platform_browser/persistence/indexed_db.ts","../node_modules/@firebase/auth/src/api/authentication/mfa.ts","../node_modules/@firebase/auth/src/platform_browser/load_js.ts","../node_modules/@firebase/auth/src/platform_browser/recaptcha/recaptcha_loader.ts","../node_modules/@firebase/auth/src/platform_browser/recaptcha/recaptcha_verifier.ts","../node_modules/@firebase/auth/src/platform_browser/strategies/phone.ts","../node_modules/@firebase/auth/src/platform_browser/providers/phone.ts","../node_modules/@firebase/auth/src/core/util/resolver.ts","../node_modules/@firebase/auth/src/core/strategies/idp.ts","../node_modules/@firebase/auth/src/core/strategies/abstract_popup_redirect_operation.ts","../node_modules/@firebase/auth/src/platform_browser/strategies/popup.ts","../node_modules/@firebase/auth/src/core/strategies/redirect.ts","../node_modules/@firebase/auth/src/platform_browser/strategies/redirect.ts","../node_modules/@firebase/auth/src/core/auth/auth_event_manager.ts","../node_modules/@firebase/auth/src/api/project_config/get_project_config.ts","../node_modules/@firebase/auth/src/core/util/validate_origin.ts","../node_modules/@firebase/auth/src/platform_browser/iframe/gapi.ts","../node_modules/@firebase/auth/src/platform_browser/iframe/iframe.ts","../node_modules/@firebase/auth/src/platform_browser/util/popup.ts","../node_modules/@firebase/auth/src/core/util/handler.ts","../node_modules/@firebase/auth/src/platform_browser/popup_redirect.ts","../node_modules/@firebase/auth/src/mfa/mfa_assertion.ts","../node_modules/@firebase/auth/src/platform_browser/mfa/assertions/phone.ts","../node_modules/@firebase/auth/src/core/auth/register.ts","../node_modules/@firebase/auth/src/core/auth/firebase_internal.ts","../node_modules/@firebase/auth/src/platform_browser/index.ts","../node_modules/@firebase/installations/node_modules/idb/build/wrap-idb-value.js","../node_modules/@firebase/installations/node_modules/idb/build/index.js","../node_modules/@firebase/installations/src/util/constants.ts","../node_modules/@firebase/installations/src/util/errors.ts","../node_modules/@firebase/installations/src/functions/common.ts","../node_modules/@firebase/installations/src/functions/create-installation-request.ts","../node_modules/@firebase/installations/src/util/sleep.ts","../node_modules/@firebase/installations/src/helpers/generate-fid.ts","../node_modules/@firebase/installations/src/helpers/buffer-to-base64-url-safe.ts","../node_modules/@firebase/installations/src/util/get-key.ts","../node_modules/@firebase/installations/src/helpers/fid-changed.ts","../node_modules/@firebase/installations/src/helpers/idb-manager.ts","../node_modules/@firebase/installations/src/helpers/get-installation-entry.ts","../node_modules/@firebase/installations/src/functions/generate-auth-token-request.ts","../node_modules/@firebase/installations/src/helpers/refresh-auth-token.ts","../node_modules/@firebase/installations/src/api/get-id.ts","../node_modules/@firebase/installations/src/api/get-token.ts","../node_modules/@firebase/installations/src/helpers/extract-app-config.ts","../node_modules/@firebase/installations/src/functions/config.ts","../node_modules/@firebase/installations/src/index.ts","../node_modules/@firebase/messaging/node_modules/idb/build/wrap-idb-value.js","../node_modules/@firebase/messaging/node_modules/idb/build/index.js","../node_modules/@firebase/messaging/src/util/constants.ts","../node_modules/@firebase/messaging/src/interfaces/internal-message-payload.ts","../node_modules/@firebase/messaging/src/helpers/array-base64-translator.ts","../node_modules/@firebase/messaging/src/helpers/migrate-old-database.ts","../node_modules/@firebase/messaging/src/internals/idb-manager.ts","../node_modules/@firebase/messaging/src/util/errors.ts","../node_modules/@firebase/messaging/src/internals/requests.ts","../node_modules/@firebase/messaging/src/internals/token-manager.ts","../node_modules/@firebase/messaging/src/helpers/externalizePayload.ts","../node_modules/@firebase/messaging/src/helpers/is-console-message.ts","../node_modules/@firebase/messaging/src/helpers/logToFirelog.ts","../node_modules/@firebase/messaging/src/helpers/extract-app-config.ts","../node_modules/@firebase/messaging/src/messaging-service.ts","../node_modules/@firebase/messaging/src/helpers/registerDefaultSw.ts","../node_modules/@firebase/messaging/src/helpers/updateSwReg.ts","../node_modules/@firebase/messaging/src/helpers/updateVapidKey.ts","../node_modules/@firebase/messaging/src/api/getToken.ts","../node_modules/@firebase/messaging/src/helpers/logToScion.ts","../node_modules/@firebase/messaging/src/listeners/window-listener.ts","../node_modules/@firebase/messaging/src/helpers/register.ts","../node_modules/@firebase/messaging/src/api/isSupported.ts","../node_modules/@firebase/messaging/src/api.ts","Firebase/firebase.js","Components/API/API.js","Components/CommonComponents/OR_LoginThrough.js","RSA_Encryption/RSA.js","Components/LoginPage/Login.js","Components/CommonComponents/CreateAccountDots.js","Components/LoginPage/CreateAccount/WhereDoYouLive.js","img/cvv.svg","Components/LoginPage/CreateAccount/OneMoreThing.js","Components/LoginPage/CreateAccount/VerifyYourself.js","Components/LoginPage/CreateAccount/LetsGetStarted.js","Components/LoginPage.js","Components/CommonComponents/Loading.js","Components/CancelPickupModal.js","img/addimagesmodal/trash_icon.svg","img/addimagesmodal/add_icon.svg","img/addimagesmodal/close_icon.svg","Components/RequestPickup/AddPhotoAndNoteModal.js","Components/RequestPickup/AddPhotoAndNote.js","Components/RequestPickup/GotIt.js","img/requestpickup/hanger.svg","img/arrow_down_icon.svg","Components/RequestPickup/PickupType.js","Components/RequestPickup.js","img/defaultimg.svg","img/pencil.svg","img/pencil_white.svg","img/add.svg","img/trash.svg","Components/Profile/AddressSlider.js","Components/Profile/PaymentSlider.js","Components/Profile/Modals/ChangeProfilePicture.js","Components/Profile/Modals/EditEmail.js","Components/Profile/Modals/EditPassword.js","Components/Profile/Modals/EditMobile.js","Components/Profile/Modals/AddEditAddress.js","Components/Profile/Modals/PaymentAddressDelete.js","Components/Profile/Modals/AddPaymentMethod.js","Components/Profile/Modals/EditName.js","Components/Profile.js","img/arrow_down.svg","img/profile/email_icon.svg","Components/Pricelist.js","img/profile/call_icon.svg","img/profile/message_icon.svg","Components/HowItWorks.js","Components/LoginPage/ForgetPassword/EnterEmailToGetPassword.js","Components/LoginPage/ForgetPassword/EnterVerificationCode.js","Components/LoginPage/ForgetPassword/SetNewPassword.js","Components/LoginPage/ForgotPassword.js","Components/NotFound.js","Components/MyOrder/NewViewOrder.js","Components/MyOrderTemp.js","../node_modules/react-ga/dist/esm/utils/console/warn.js","../node_modules/react-ga/dist/esm/components/OutboundLink.js","../node_modules/react-ga/dist/esm/utils/redactEmail.js","../node_modules/react-ga/dist/esm/utils/mightBeEmail.js","../node_modules/react-ga/dist/esm/utils/trim.js","../node_modules/react-ga/dist/esm/utils/toTitleCase.js","../node_modules/react-ga/dist/esm/utils/loadGA.js","../node_modules/react-ga/dist/esm/utils/console/log.js","../node_modules/react-ga/dist/esm/utils/testModeAPI.js","../node_modules/react-ga/dist/esm/core.js","../node_modules/react-ga/dist/esm/utils/format.js","../node_modules/react-ga/dist/esm/utils/removeLeadingSlash.js","../node_modules/react-ga/dist/esm/index.js","../node_modules/is-plain-object/dist/is-plain-object.mjs","../node_modules/immer/src/utils/errors.ts","../node_modules/immer/src/utils/common.ts","../node_modules/immer/src/utils/plugins.ts","../node_modules/immer/src/core/scope.ts","../node_modules/immer/src/core/finalize.ts","../node_modules/immer/src/core/proxy.ts","../node_modules/immer/src/core/immerClass.ts","../node_modules/immer/src/core/current.ts","../node_modules/immer/src/immer.ts","../node_modules/immer/src/utils/env.ts","../.yarn/cache/@babel-runtime-npm-7.15.3-6333c71362-2f0b8d2d4e.zip/node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/slate/src/utils/weak-maps.ts","../.yarn/cache/@babel-runtime-npm-7.15.3-6333c71362-2f0b8d2d4e.zip/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../.yarn/cache/@babel-runtime-npm-7.15.3-6333c71362-2f0b8d2d4e.zip/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/slate/src/utils/string.ts","../node_modules/slate/src/interfaces/element.ts","../node_modules/slate/src/interfaces/editor.ts","../node_modules/slate/src/interfaces/location.ts","../node_modules/slate/src/interfaces/node.ts","../node_modules/slate/src/interfaces/operation.ts","../node_modules/slate/src/interfaces/path.ts","../node_modules/slate/src/interfaces/path-ref.ts","../node_modules/slate/src/interfaces/point.ts","../node_modules/slate/src/interfaces/point-ref.ts","../node_modules/slate/src/interfaces/range.ts","../node_modules/slate/src/interfaces/range-ref.ts","../node_modules/slate/src/interfaces/scrubber.ts","../node_modules/slate/src/utils/deep-equal.ts","../node_modules/slate/src/interfaces/text.ts","../node_modules/slate/src/transforms/general.ts","../node_modules/slate/src/transforms/node.ts","../node_modules/slate/src/transforms/selection.ts","../node_modules/slate/src/transforms/text.ts","../node_modules/slate/src/transforms/index.ts","../node_modules/slate-history/src/history.ts","../node_modules/slate-history/src/history-editor.ts","../node_modules/slate-history/src/with-history.ts","../node_modules/compute-scroll-into-view/src/index.ts","../node_modules/scroll-into-view-if-needed/es/index.js","../node_modules/slate-react/src/utils/key.ts","../node_modules/slate-react/src/utils/weak-maps.ts","../node_modules/slate-react/src/utils/dom.ts","../node_modules/slate-react/src/utils/environment.ts","../node_modules/slate-react/src/plugin/react-editor.ts","../node_modules/slate-react/src/hooks/use-isomorphic-layout-effect.ts","../node_modules/slate-react/src/utils/range-list.ts","../node_modules/slate-react/src/components/string.tsx","../node_modules/slate-react/src/hooks/use-slate-static.tsx","../node_modules/slate-react/src/components/leaf.tsx","../node_modules/slate-react/src/components/text.tsx","../node_modules/slate-react/src/components/element.tsx","../node_modules/slate-react/src/hooks/use-decorate.ts","../node_modules/slate-react/src/hooks/use-selected.ts","../node_modules/slate-react/src/hooks/use-children.tsx","../node_modules/slate-react/src/hooks/use-read-only.ts","../node_modules/slate-react/src/hooks/use-slate.tsx","../node_modules/slate-react/src/utils/hotkeys.ts","../node_modules/slate-react/src/components/restore-dom/restore-dom.tsx","../node_modules/slate-react/src/components/restore-dom/restore-dom-manager.ts","../node_modules/slate-react/src/utils/diff-text.ts","../node_modules/slate-react/src/hooks/android-input-manager/android-input-manager.ts","../node_modules/slate-react/src/hooks/android-input-manager/use-android-input-manager.ts","../node_modules/slate-react/src/hooks/use-is-mounted.tsx","../node_modules/slate-react/src/hooks/use-mutation-observer.ts","../node_modules/slate-react/src/components/editable.tsx","../node_modules/slate-react/src/hooks/use-track-user-input.ts","../node_modules/slate-react/src/utils/constants.ts","../node_modules/slate-react/src/hooks/use-focused.ts","../node_modules/slate-react/src/hooks/use-slate-selector.tsx","../node_modules/slate-react/src/components/slate.tsx","../node_modules/slate-react/src/utils/lines.ts","Components/Rich text editor/RTE_icons/bold.svg","../node_modules/slate-react/src/plugin/with-react.ts","Components/Rich text editor/RTE_icons/italic.svg","Components/Rich text editor/RTE_icons/underline.svg","Components/Rich text editor/RTE_icons/code.svg","Components/Rich text editor/RTE_icons/heading/h1.svg","Components/Rich text editor/RTE_icons/heading/h2.svg","Components/Rich text editor/RTE_icons/heading/h3.svg","Components/Rich text editor/RTE_icons/heading/h4.svg","Components/Rich text editor/RTE_icons/heading/h5.svg","Components/Rich text editor/RTE_icons/heading/h6.svg","Components/Rich text editor/RTE_icons/align/left.svg","Components/Rich text editor/RTE_icons/align/center.svg","Components/Rich text editor/RTE_icons/align/right.svg","Components/Rich text editor/RTE_icons/align/justify.svg","Components/Rich text editor/RTE_icons/quote.svg","Components/Rich text editor/RTE_icons/ulList.svg","Components/Rich text editor/RTE_icons/olList.svg","Components/Rich text editor/RTE_icons/strike.svg","Components/Rich text editor/RTE_Icons.js","Components/Rich text editor/RTE.js","../node_modules/slate/src/create-editor.ts","Components/FAQ copy.js","App.js","../node_modules/react-router-dom/index.tsx","index.js"],"sourcesContent":["module.exports = require(\"regenerator-runtime\");\n","module.exports = require('./lib/axios');","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\nvar transitionalDefaults = require('../defaults/transitional');\nvar Cancel = require('../cancel/Cancel');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n var responseType = config.responseType;\n var onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n var transitional = config.transitional || transitionalDefaults;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(createError(\n timeoutErrorMessage,\n config,\n transitional.clarifyTimeoutError ? 'ETIMEDOUT' : 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = function(cancel) {\n if (!request) {\n return;\n }\n reject(!cancel || (cancel && cancel.type) ? new Cancel('canceled') : cancel);\n request.abort();\n request = null;\n };\n\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\naxios.VERSION = require('./env/data').version;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(function(cancel) {\n if (!token._listeners) return;\n\n var i;\n var l = token._listeners.length;\n\n for (i = 0; i < l; i++) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = function(onfulfilled) {\n var _resolve;\n // eslint-disable-next-line func-names\n var promise = new Promise(function(resolve) {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Subscribe to the cancel signal\n */\n\nCancelToken.prototype.subscribe = function subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n};\n\n/**\n * Unsubscribe from the cancel signal\n */\n\nCancelToken.prototype.unsubscribe = function unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n var index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n var transitional = config.transitional;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n // filter out skipped interceptors\n var requestInterceptorChain = [];\n var synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n var promise;\n\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n\n promise = Promise.resolve(config);\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n }\n\n\n var newConfig = config;\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\nvar Cancel = require('../cancel/Cancel');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new Cancel('canceled');\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n };\n return error;\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(prop) {\n if (prop in config2) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n var mergeMap = {\n 'url': valueFromConfig2,\n 'method': valueFromConfig2,\n 'data': valueFromConfig2,\n 'baseURL': defaultToConfig2,\n 'transformRequest': defaultToConfig2,\n 'transformResponse': defaultToConfig2,\n 'paramsSerializer': defaultToConfig2,\n 'timeout': defaultToConfig2,\n 'timeoutMessage': defaultToConfig2,\n 'withCredentials': defaultToConfig2,\n 'adapter': defaultToConfig2,\n 'responseType': defaultToConfig2,\n 'xsrfCookieName': defaultToConfig2,\n 'xsrfHeaderName': defaultToConfig2,\n 'onUploadProgress': defaultToConfig2,\n 'onDownloadProgress': defaultToConfig2,\n 'decompress': defaultToConfig2,\n 'maxContentLength': defaultToConfig2,\n 'maxBodyLength': defaultToConfig2,\n 'transport': defaultToConfig2,\n 'httpAgent': defaultToConfig2,\n 'httpsAgent': defaultToConfig2,\n 'cancelToken': defaultToConfig2,\n 'socketPath': defaultToConfig2,\n 'responseEncoding': defaultToConfig2,\n 'validateStatus': mergeDirectKeys\n };\n\n utils.forEach(Object.keys(config1).concat(Object.keys(config2)), function computeConfigValue(prop) {\n var merge = mergeMap[prop] || mergeDeepProperties;\n var configValue = merge(prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n};\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar defaults = require('../defaults');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n var context = this || defaults;\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn.call(context, data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar normalizeHeaderName = require('../helpers/normalizeHeaderName');\nvar enhanceError = require('../core/enhanceError');\nvar transitionalDefaults = require('./transitional');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('../adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('../adapters/http');\n }\n return adapter;\n}\n\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nvar defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data) || (headers && headers['Content-Type'] === 'application/json')) {\n setContentTypeIfUnset(headers, 'application/json');\n return stringifySafely(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n var transitional = this.transitional || defaults.transitional;\n var silentJSONParsing = transitional && transitional.silentJSONParsing;\n var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n\n if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw enhanceError(e, this, 'E_JSON_PARSE');\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\nmodule.exports = {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","module.exports = {\n \"version\": \"0.26.1\"\n};","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\n\nvar VERSION = require('../env/data').version;\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nvar deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return function(value, opt, opts) {\n if (validator === false) {\n throw new Error(formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')));\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n var keys = Object.keys(options);\n var i = keys.length;\n while (i-- > 0) {\n var opt = keys[i];\n var validator = schema[opt];\n if (validator) {\n var value = options[opt];\n var result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new TypeError('option ' + opt + ' must be ' + result);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw Error('Unknown option ' + opt);\n }\n }\n}\n\nmodule.exports = {\n assertOptions: assertOptions,\n validators: validators\n};\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return Array.isArray(val);\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return toString.call(val) === '[object FormData]';\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (toString.call(val) !== '[object Object]') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return toString.call(val) === '[object URLSearchParams]';\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM\n};\n","/*!\n Copyright (c) 2018 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString === Object.prototype.toString) {\n\t\t\t\t\tfor (var key in arg) {\n\t\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var BlockCipher = C_lib.BlockCipher;\n\t var C_algo = C.algo;\n\n\t // Lookup tables\n\t var SBOX = [];\n\t var INV_SBOX = [];\n\t var SUB_MIX_0 = [];\n\t var SUB_MIX_1 = [];\n\t var SUB_MIX_2 = [];\n\t var SUB_MIX_3 = [];\n\t var INV_SUB_MIX_0 = [];\n\t var INV_SUB_MIX_1 = [];\n\t var INV_SUB_MIX_2 = [];\n\t var INV_SUB_MIX_3 = [];\n\n\t // Compute lookup tables\n\t (function () {\n\t // Compute double table\n\t var d = [];\n\t for (var i = 0; i < 256; i++) {\n\t if (i < 128) {\n\t d[i] = i << 1;\n\t } else {\n\t d[i] = (i << 1) ^ 0x11b;\n\t }\n\t }\n\n\t // Walk GF(2^8)\n\t var x = 0;\n\t var xi = 0;\n\t for (var i = 0; i < 256; i++) {\n\t // Compute sbox\n\t var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4);\n\t sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63;\n\t SBOX[x] = sx;\n\t INV_SBOX[sx] = x;\n\n\t // Compute multiplication\n\t var x2 = d[x];\n\t var x4 = d[x2];\n\t var x8 = d[x4];\n\n\t // Compute sub bytes, mix columns tables\n\t var t = (d[sx] * 0x101) ^ (sx * 0x1010100);\n\t SUB_MIX_0[x] = (t << 24) | (t >>> 8);\n\t SUB_MIX_1[x] = (t << 16) | (t >>> 16);\n\t SUB_MIX_2[x] = (t << 8) | (t >>> 24);\n\t SUB_MIX_3[x] = t;\n\n\t // Compute inv sub bytes, inv mix columns tables\n\t var t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100);\n\t INV_SUB_MIX_0[sx] = (t << 24) | (t >>> 8);\n\t INV_SUB_MIX_1[sx] = (t << 16) | (t >>> 16);\n\t INV_SUB_MIX_2[sx] = (t << 8) | (t >>> 24);\n\t INV_SUB_MIX_3[sx] = t;\n\n\t // Compute next counter\n\t if (!x) {\n\t x = xi = 1;\n\t } else {\n\t x = x2 ^ d[d[d[x8 ^ x2]]];\n\t xi ^= d[d[xi]];\n\t }\n\t }\n\t }());\n\n\t // Precomputed Rcon lookup\n\t var RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36];\n\n\t /**\n\t * AES block cipher algorithm.\n\t */\n\t var AES = C_algo.AES = BlockCipher.extend({\n\t _doReset: function () {\n\t var t;\n\n\t // Skip reset of nRounds has been set before and key did not change\n\t if (this._nRounds && this._keyPriorReset === this._key) {\n\t return;\n\t }\n\n\t // Shortcuts\n\t var key = this._keyPriorReset = this._key;\n\t var keyWords = key.words;\n\t var keySize = key.sigBytes / 4;\n\n\t // Compute number of rounds\n\t var nRounds = this._nRounds = keySize + 6;\n\n\t // Compute number of key schedule rows\n\t var ksRows = (nRounds + 1) * 4;\n\n\t // Compute key schedule\n\t var keySchedule = this._keySchedule = [];\n\t for (var ksRow = 0; ksRow < ksRows; ksRow++) {\n\t if (ksRow < keySize) {\n\t keySchedule[ksRow] = keyWords[ksRow];\n\t } else {\n\t t = keySchedule[ksRow - 1];\n\n\t if (!(ksRow % keySize)) {\n\t // Rot word\n\t t = (t << 8) | (t >>> 24);\n\n\t // Sub word\n\t t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\n\t // Mix Rcon\n\t t ^= RCON[(ksRow / keySize) | 0] << 24;\n\t } else if (keySize > 6 && ksRow % keySize == 4) {\n\t // Sub word\n\t t = (SBOX[t >>> 24] << 24) | (SBOX[(t >>> 16) & 0xff] << 16) | (SBOX[(t >>> 8) & 0xff] << 8) | SBOX[t & 0xff];\n\t }\n\n\t keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t;\n\t }\n\t }\n\n\t // Compute inv key schedule\n\t var invKeySchedule = this._invKeySchedule = [];\n\t for (var invKsRow = 0; invKsRow < ksRows; invKsRow++) {\n\t var ksRow = ksRows - invKsRow;\n\n\t if (invKsRow % 4) {\n\t var t = keySchedule[ksRow];\n\t } else {\n\t var t = keySchedule[ksRow - 4];\n\t }\n\n\t if (invKsRow < 4 || ksRow <= 4) {\n\t invKeySchedule[invKsRow] = t;\n\t } else {\n\t invKeySchedule[invKsRow] = INV_SUB_MIX_0[SBOX[t >>> 24]] ^ INV_SUB_MIX_1[SBOX[(t >>> 16) & 0xff]] ^\n\t INV_SUB_MIX_2[SBOX[(t >>> 8) & 0xff]] ^ INV_SUB_MIX_3[SBOX[t & 0xff]];\n\t }\n\t }\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t // Swap 2nd and 4th rows\n\t var t = M[offset + 1];\n\t M[offset + 1] = M[offset + 3];\n\t M[offset + 3] = t;\n\n\t this._doCryptBlock(M, offset, this._invKeySchedule, INV_SUB_MIX_0, INV_SUB_MIX_1, INV_SUB_MIX_2, INV_SUB_MIX_3, INV_SBOX);\n\n\t // Inv swap 2nd and 4th rows\n\t var t = M[offset + 1];\n\t M[offset + 1] = M[offset + 3];\n\t M[offset + 3] = t;\n\t },\n\n\t _doCryptBlock: function (M, offset, keySchedule, SUB_MIX_0, SUB_MIX_1, SUB_MIX_2, SUB_MIX_3, SBOX) {\n\t // Shortcut\n\t var nRounds = this._nRounds;\n\n\t // Get input, add round key\n\t var s0 = M[offset] ^ keySchedule[0];\n\t var s1 = M[offset + 1] ^ keySchedule[1];\n\t var s2 = M[offset + 2] ^ keySchedule[2];\n\t var s3 = M[offset + 3] ^ keySchedule[3];\n\n\t // Key schedule row counter\n\t var ksRow = 4;\n\n\t // Rounds\n\t for (var round = 1; round < nRounds; round++) {\n\t // Shift rows, sub bytes, mix columns, add round key\n\t var t0 = SUB_MIX_0[s0 >>> 24] ^ SUB_MIX_1[(s1 >>> 16) & 0xff] ^ SUB_MIX_2[(s2 >>> 8) & 0xff] ^ SUB_MIX_3[s3 & 0xff] ^ keySchedule[ksRow++];\n\t var t1 = SUB_MIX_0[s1 >>> 24] ^ SUB_MIX_1[(s2 >>> 16) & 0xff] ^ SUB_MIX_2[(s3 >>> 8) & 0xff] ^ SUB_MIX_3[s0 & 0xff] ^ keySchedule[ksRow++];\n\t var t2 = SUB_MIX_0[s2 >>> 24] ^ SUB_MIX_1[(s3 >>> 16) & 0xff] ^ SUB_MIX_2[(s0 >>> 8) & 0xff] ^ SUB_MIX_3[s1 & 0xff] ^ keySchedule[ksRow++];\n\t var t3 = SUB_MIX_0[s3 >>> 24] ^ SUB_MIX_1[(s0 >>> 16) & 0xff] ^ SUB_MIX_2[(s1 >>> 8) & 0xff] ^ SUB_MIX_3[s2 & 0xff] ^ keySchedule[ksRow++];\n\n\t // Update state\n\t s0 = t0;\n\t s1 = t1;\n\t s2 = t2;\n\t s3 = t3;\n\t }\n\n\t // Shift rows, sub bytes, add round key\n\t var t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++];\n\t var t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++];\n\t var t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++];\n\t var t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++];\n\n\t // Set output\n\t M[offset] = t0;\n\t M[offset + 1] = t1;\n\t M[offset + 2] = t2;\n\t M[offset + 3] = t3;\n\t },\n\n\t keySize: 256/32\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.AES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.AES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.AES = BlockCipher._createHelper(AES);\n\t}());\n\n\n\treturn CryptoJS.AES;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./evpkdf\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./evpkdf\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Cipher core components.\n\t */\n\tCryptoJS.lib.Cipher || (function (undefined) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm;\n\t var C_enc = C.enc;\n\t var Utf8 = C_enc.Utf8;\n\t var Base64 = C_enc.Base64;\n\t var C_algo = C.algo;\n\t var EvpKDF = C_algo.EvpKDF;\n\n\t /**\n\t * Abstract base cipher template.\n\t *\n\t * @property {number} keySize This cipher's key size. Default: 4 (128 bits)\n\t * @property {number} ivSize This cipher's IV size. Default: 4 (128 bits)\n\t * @property {number} _ENC_XFORM_MODE A constant representing encryption mode.\n\t * @property {number} _DEC_XFORM_MODE A constant representing decryption mode.\n\t */\n\t var Cipher = C_lib.Cipher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {WordArray} iv The IV to use for this operation.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Creates this cipher in encryption mode.\n\t *\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {Cipher} A cipher instance.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.createEncryptor(keyWordArray, { iv: ivWordArray });\n\t */\n\t createEncryptor: function (key, cfg) {\n\t return this.create(this._ENC_XFORM_MODE, key, cfg);\n\t },\n\n\t /**\n\t * Creates this cipher in decryption mode.\n\t *\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {Cipher} A cipher instance.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.createDecryptor(keyWordArray, { iv: ivWordArray });\n\t */\n\t createDecryptor: function (key, cfg) {\n\t return this.create(this._DEC_XFORM_MODE, key, cfg);\n\t },\n\n\t /**\n\t * Initializes a newly created cipher.\n\t *\n\t * @param {number} xformMode Either the encryption or decryption transormation mode constant.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @example\n\t *\n\t * var cipher = CryptoJS.algo.AES.create(CryptoJS.algo.AES._ENC_XFORM_MODE, keyWordArray, { iv: ivWordArray });\n\t */\n\t init: function (xformMode, key, cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Store transform mode and key\n\t this._xformMode = xformMode;\n\t this._key = key;\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this cipher to its initial state.\n\t *\n\t * @example\n\t *\n\t * cipher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-cipher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Adds data to be encrypted or decrypted.\n\t *\n\t * @param {WordArray|string} dataUpdate The data to encrypt or decrypt.\n\t *\n\t * @return {WordArray} The data after processing.\n\t *\n\t * @example\n\t *\n\t * var encrypted = cipher.process('data');\n\t * var encrypted = cipher.process(wordArray);\n\t */\n\t process: function (dataUpdate) {\n\t // Append\n\t this._append(dataUpdate);\n\n\t // Process available blocks\n\t return this._process();\n\t },\n\n\t /**\n\t * Finalizes the encryption or decryption process.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} dataUpdate The final data to encrypt or decrypt.\n\t *\n\t * @return {WordArray} The data after final processing.\n\t *\n\t * @example\n\t *\n\t * var encrypted = cipher.finalize();\n\t * var encrypted = cipher.finalize('data');\n\t * var encrypted = cipher.finalize(wordArray);\n\t */\n\t finalize: function (dataUpdate) {\n\t // Final data update\n\t if (dataUpdate) {\n\t this._append(dataUpdate);\n\t }\n\n\t // Perform concrete-cipher logic\n\t var finalProcessedData = this._doFinalize();\n\n\t return finalProcessedData;\n\t },\n\n\t keySize: 128/32,\n\n\t ivSize: 128/32,\n\n\t _ENC_XFORM_MODE: 1,\n\n\t _DEC_XFORM_MODE: 2,\n\n\t /**\n\t * Creates shortcut functions to a cipher's object interface.\n\t *\n\t * @param {Cipher} cipher The cipher to create a helper for.\n\t *\n\t * @return {Object} An object with encrypt and decrypt shortcut functions.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var AES = CryptoJS.lib.Cipher._createHelper(CryptoJS.algo.AES);\n\t */\n\t _createHelper: (function () {\n\t function selectCipherStrategy(key) {\n\t if (typeof key == 'string') {\n\t return PasswordBasedCipher;\n\t } else {\n\t return SerializableCipher;\n\t }\n\t }\n\n\t return function (cipher) {\n\t return {\n\t encrypt: function (message, key, cfg) {\n\t return selectCipherStrategy(key).encrypt(cipher, message, key, cfg);\n\t },\n\n\t decrypt: function (ciphertext, key, cfg) {\n\t return selectCipherStrategy(key).decrypt(cipher, ciphertext, key, cfg);\n\t }\n\t };\n\t };\n\t }())\n\t });\n\n\t /**\n\t * Abstract base stream cipher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 1 (32 bits)\n\t */\n\t var StreamCipher = C_lib.StreamCipher = Cipher.extend({\n\t _doFinalize: function () {\n\t // Process partial blocks\n\t var finalProcessedBlocks = this._process(!!'flush');\n\n\t return finalProcessedBlocks;\n\t },\n\n\t blockSize: 1\n\t });\n\n\t /**\n\t * Mode namespace.\n\t */\n\t var C_mode = C.mode = {};\n\n\t /**\n\t * Abstract base block cipher mode template.\n\t */\n\t var BlockCipherMode = C_lib.BlockCipherMode = Base.extend({\n\t /**\n\t * Creates this mode for encryption.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.createEncryptor(cipher, iv.words);\n\t */\n\t createEncryptor: function (cipher, iv) {\n\t return this.Encryptor.create(cipher, iv);\n\t },\n\n\t /**\n\t * Creates this mode for decryption.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.createDecryptor(cipher, iv.words);\n\t */\n\t createDecryptor: function (cipher, iv) {\n\t return this.Decryptor.create(cipher, iv);\n\t },\n\n\t /**\n\t * Initializes a newly created mode.\n\t *\n\t * @param {Cipher} cipher A block cipher instance.\n\t * @param {Array} iv The IV words.\n\t *\n\t * @example\n\t *\n\t * var mode = CryptoJS.mode.CBC.Encryptor.create(cipher, iv.words);\n\t */\n\t init: function (cipher, iv) {\n\t this._cipher = cipher;\n\t this._iv = iv;\n\t }\n\t });\n\n\t /**\n\t * Cipher Block Chaining mode.\n\t */\n\t var CBC = C_mode.CBC = (function () {\n\t /**\n\t * Abstract base CBC mode.\n\t */\n\t var CBC = BlockCipherMode.extend();\n\n\t /**\n\t * CBC encryptor.\n\t */\n\t CBC.Encryptor = CBC.extend({\n\t /**\n\t * Processes the data block at offset.\n\t *\n\t * @param {Array} words The data words to operate on.\n\t * @param {number} offset The offset where the block starts.\n\t *\n\t * @example\n\t *\n\t * mode.processBlock(data.words, offset);\n\t */\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // XOR and encrypt\n\t xorBlock.call(this, words, offset, blockSize);\n\t cipher.encryptBlock(words, offset);\n\n\t // Remember this block to use with next block\n\t this._prevBlock = words.slice(offset, offset + blockSize);\n\t }\n\t });\n\n\t /**\n\t * CBC decryptor.\n\t */\n\t CBC.Decryptor = CBC.extend({\n\t /**\n\t * Processes the data block at offset.\n\t *\n\t * @param {Array} words The data words to operate on.\n\t * @param {number} offset The offset where the block starts.\n\t *\n\t * @example\n\t *\n\t * mode.processBlock(data.words, offset);\n\t */\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // Remember this block to use with next block\n\t var thisBlock = words.slice(offset, offset + blockSize);\n\n\t // Decrypt and XOR\n\t cipher.decryptBlock(words, offset);\n\t xorBlock.call(this, words, offset, blockSize);\n\n\t // This block becomes the previous block\n\t this._prevBlock = thisBlock;\n\t }\n\t });\n\n\t function xorBlock(words, offset, blockSize) {\n\t var block;\n\n\t // Shortcut\n\t var iv = this._iv;\n\n\t // Choose mixing block\n\t if (iv) {\n\t block = iv;\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t } else {\n\t block = this._prevBlock;\n\t }\n\n\t // XOR blocks\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= block[i];\n\t }\n\t }\n\n\t return CBC;\n\t }());\n\n\t /**\n\t * Padding namespace.\n\t */\n\t var C_pad = C.pad = {};\n\n\t /**\n\t * PKCS #5/7 padding strategy.\n\t */\n\t var Pkcs7 = C_pad.Pkcs7 = {\n\t /**\n\t * Pads data using the algorithm defined in PKCS #5/7.\n\t *\n\t * @param {WordArray} data The data to pad.\n\t * @param {number} blockSize The multiple that the data should be padded to.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * CryptoJS.pad.Pkcs7.pad(wordArray, 4);\n\t */\n\t pad: function (data, blockSize) {\n\t // Shortcut\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count padding bytes\n\t var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\n\n\t // Create padding word\n\t var paddingWord = (nPaddingBytes << 24) | (nPaddingBytes << 16) | (nPaddingBytes << 8) | nPaddingBytes;\n\n\t // Create padding\n\t var paddingWords = [];\n\t for (var i = 0; i < nPaddingBytes; i += 4) {\n\t paddingWords.push(paddingWord);\n\t }\n\t var padding = WordArray.create(paddingWords, nPaddingBytes);\n\n\t // Add padding\n\t data.concat(padding);\n\t },\n\n\t /**\n\t * Unpads data that had been padded using the algorithm defined in PKCS #5/7.\n\t *\n\t * @param {WordArray} data The data to unpad.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * CryptoJS.pad.Pkcs7.unpad(wordArray);\n\t */\n\t unpad: function (data) {\n\t // Get number of padding bytes from last byte\n\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t // Remove padding\n\t data.sigBytes -= nPaddingBytes;\n\t }\n\t };\n\n\t /**\n\t * Abstract base block cipher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this cipher operates on. Default: 4 (128 bits)\n\t */\n\t var BlockCipher = C_lib.BlockCipher = Cipher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {Mode} mode The block mode to use. Default: CBC\n\t * @property {Padding} padding The padding strategy to use. Default: Pkcs7\n\t */\n\t cfg: Cipher.cfg.extend({\n\t mode: CBC,\n\t padding: Pkcs7\n\t }),\n\n\t reset: function () {\n\t var modeCreator;\n\n\t // Reset cipher\n\t Cipher.reset.call(this);\n\n\t // Shortcuts\n\t var cfg = this.cfg;\n\t var iv = cfg.iv;\n\t var mode = cfg.mode;\n\n\t // Reset block mode\n\t if (this._xformMode == this._ENC_XFORM_MODE) {\n\t modeCreator = mode.createEncryptor;\n\t } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t modeCreator = mode.createDecryptor;\n\t // Keep at least one block in the buffer for unpadding\n\t this._minBufferSize = 1;\n\t }\n\n\t if (this._mode && this._mode.__creator == modeCreator) {\n\t this._mode.init(this, iv && iv.words);\n\t } else {\n\t this._mode = modeCreator.call(mode, this, iv && iv.words);\n\t this._mode.__creator = modeCreator;\n\t }\n\t },\n\n\t _doProcessBlock: function (words, offset) {\n\t this._mode.processBlock(words, offset);\n\t },\n\n\t _doFinalize: function () {\n\t var finalProcessedBlocks;\n\n\t // Shortcut\n\t var padding = this.cfg.padding;\n\n\t // Finalize\n\t if (this._xformMode == this._ENC_XFORM_MODE) {\n\t // Pad data\n\t padding.pad(this._data, this.blockSize);\n\n\t // Process final blocks\n\t finalProcessedBlocks = this._process(!!'flush');\n\t } else /* if (this._xformMode == this._DEC_XFORM_MODE) */ {\n\t // Process final blocks\n\t finalProcessedBlocks = this._process(!!'flush');\n\n\t // Unpad data\n\t padding.unpad(finalProcessedBlocks);\n\t }\n\n\t return finalProcessedBlocks;\n\t },\n\n\t blockSize: 128/32\n\t });\n\n\t /**\n\t * A collection of cipher parameters.\n\t *\n\t * @property {WordArray} ciphertext The raw ciphertext.\n\t * @property {WordArray} key The key to this ciphertext.\n\t * @property {WordArray} iv The IV used in the ciphering operation.\n\t * @property {WordArray} salt The salt used with a key derivation function.\n\t * @property {Cipher} algorithm The cipher algorithm.\n\t * @property {Mode} mode The block mode used in the ciphering operation.\n\t * @property {Padding} padding The padding scheme used in the ciphering operation.\n\t * @property {number} blockSize The block size of the cipher.\n\t * @property {Format} formatter The default formatting strategy to convert this cipher params object to a string.\n\t */\n\t var CipherParams = C_lib.CipherParams = Base.extend({\n\t /**\n\t * Initializes a newly created cipher params object.\n\t *\n\t * @param {Object} cipherParams An object with any of the possible cipher parameters.\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.lib.CipherParams.create({\n\t * ciphertext: ciphertextWordArray,\n\t * key: keyWordArray,\n\t * iv: ivWordArray,\n\t * salt: saltWordArray,\n\t * algorithm: CryptoJS.algo.AES,\n\t * mode: CryptoJS.mode.CBC,\n\t * padding: CryptoJS.pad.PKCS7,\n\t * blockSize: 4,\n\t * formatter: CryptoJS.format.OpenSSL\n\t * });\n\t */\n\t init: function (cipherParams) {\n\t this.mixIn(cipherParams);\n\t },\n\n\t /**\n\t * Converts this cipher params object to a string.\n\t *\n\t * @param {Format} formatter (Optional) The formatting strategy to use.\n\t *\n\t * @return {string} The stringified cipher params.\n\t *\n\t * @throws Error If neither the formatter nor the default formatter is set.\n\t *\n\t * @example\n\t *\n\t * var string = cipherParams + '';\n\t * var string = cipherParams.toString();\n\t * var string = cipherParams.toString(CryptoJS.format.OpenSSL);\n\t */\n\t toString: function (formatter) {\n\t return (formatter || this.formatter).stringify(this);\n\t }\n\t });\n\n\t /**\n\t * Format namespace.\n\t */\n\t var C_format = C.format = {};\n\n\t /**\n\t * OpenSSL formatting strategy.\n\t */\n\t var OpenSSLFormatter = C_format.OpenSSL = {\n\t /**\n\t * Converts a cipher params object to an OpenSSL-compatible string.\n\t *\n\t * @param {CipherParams} cipherParams The cipher params object.\n\t *\n\t * @return {string} The OpenSSL-compatible string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var openSSLString = CryptoJS.format.OpenSSL.stringify(cipherParams);\n\t */\n\t stringify: function (cipherParams) {\n\t var wordArray;\n\n\t // Shortcuts\n\t var ciphertext = cipherParams.ciphertext;\n\t var salt = cipherParams.salt;\n\n\t // Format\n\t if (salt) {\n\t wordArray = WordArray.create([0x53616c74, 0x65645f5f]).concat(salt).concat(ciphertext);\n\t } else {\n\t wordArray = ciphertext;\n\t }\n\n\t return wordArray.toString(Base64);\n\t },\n\n\t /**\n\t * Converts an OpenSSL-compatible string to a cipher params object.\n\t *\n\t * @param {string} openSSLStr The OpenSSL-compatible string.\n\t *\n\t * @return {CipherParams} The cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.format.OpenSSL.parse(openSSLString);\n\t */\n\t parse: function (openSSLStr) {\n\t var salt;\n\n\t // Parse base64\n\t var ciphertext = Base64.parse(openSSLStr);\n\n\t // Shortcut\n\t var ciphertextWords = ciphertext.words;\n\n\t // Test for salt\n\t if (ciphertextWords[0] == 0x53616c74 && ciphertextWords[1] == 0x65645f5f) {\n\t // Extract salt\n\t salt = WordArray.create(ciphertextWords.slice(2, 4));\n\n\t // Remove salt from ciphertext\n\t ciphertextWords.splice(0, 4);\n\t ciphertext.sigBytes -= 16;\n\t }\n\n\t return CipherParams.create({ ciphertext: ciphertext, salt: salt });\n\t }\n\t };\n\n\t /**\n\t * A cipher wrapper that returns ciphertext as a serializable cipher params object.\n\t */\n\t var SerializableCipher = C_lib.SerializableCipher = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {Formatter} format The formatting strategy to convert cipher param objects to and from a string. Default: OpenSSL\n\t */\n\t cfg: Base.extend({\n\t format: OpenSSLFormatter\n\t }),\n\n\t /**\n\t * Encrypts a message.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {WordArray|string} message The message to encrypt.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {CipherParams} A cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key);\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv });\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher.encrypt(CryptoJS.algo.AES, message, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t */\n\t encrypt: function (cipher, message, key, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Encrypt\n\t var encryptor = cipher.createEncryptor(key, cfg);\n\t var ciphertext = encryptor.finalize(message);\n\n\t // Shortcut\n\t var cipherCfg = encryptor.cfg;\n\n\t // Create and return serializable cipher params\n\t return CipherParams.create({\n\t ciphertext: ciphertext,\n\t key: key,\n\t iv: cipherCfg.iv,\n\t algorithm: cipher,\n\t mode: cipherCfg.mode,\n\t padding: cipherCfg.padding,\n\t blockSize: cipher.blockSize,\n\t formatter: cfg.format\n\t });\n\t },\n\n\t /**\n\t * Decrypts serialized ciphertext.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t * @param {WordArray} key The key.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {WordArray} The plaintext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t * var plaintext = CryptoJS.lib.SerializableCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n\t */\n\t decrypt: function (cipher, ciphertext, key, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Convert string to CipherParams\n\t ciphertext = this._parse(ciphertext, cfg.format);\n\n\t // Decrypt\n\t var plaintext = cipher.createDecryptor(key, cfg).finalize(ciphertext.ciphertext);\n\n\t return plaintext;\n\t },\n\n\t /**\n\t * Converts serialized ciphertext to CipherParams,\n\t * else assumed CipherParams already and returns ciphertext unchanged.\n\t *\n\t * @param {CipherParams|string} ciphertext The ciphertext.\n\t * @param {Formatter} format The formatting strategy to use to parse serialized ciphertext.\n\t *\n\t * @return {CipherParams} The unserialized ciphertext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.SerializableCipher._parse(ciphertextStringOrParams, format);\n\t */\n\t _parse: function (ciphertext, format) {\n\t if (typeof ciphertext == 'string') {\n\t return format.parse(ciphertext, this);\n\t } else {\n\t return ciphertext;\n\t }\n\t }\n\t });\n\n\t /**\n\t * Key derivation function namespace.\n\t */\n\t var C_kdf = C.kdf = {};\n\n\t /**\n\t * OpenSSL key derivation function.\n\t */\n\t var OpenSSLKdf = C_kdf.OpenSSL = {\n\t /**\n\t * Derives a key and IV from a password.\n\t *\n\t * @param {string} password The password to derive from.\n\t * @param {number} keySize The size in words of the key to generate.\n\t * @param {number} ivSize The size in words of the IV to generate.\n\t * @param {WordArray|string} salt (Optional) A 64-bit salt to use. If omitted, a salt will be generated randomly.\n\t *\n\t * @return {CipherParams} A cipher params object with the key, IV, and salt.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32);\n\t * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32, 'saltsalt');\n\t */\n\t execute: function (password, keySize, ivSize, salt) {\n\t // Generate random salt\n\t if (!salt) {\n\t salt = WordArray.random(64/8);\n\t }\n\n\t // Derive key and IV\n\t var key = EvpKDF.create({ keySize: keySize + ivSize }).compute(password, salt);\n\n\t // Separate key and IV\n\t var iv = WordArray.create(key.words.slice(keySize), ivSize * 4);\n\t key.sigBytes = keySize * 4;\n\n\t // Return params\n\t return CipherParams.create({ key: key, iv: iv, salt: salt });\n\t }\n\t };\n\n\t /**\n\t * A serializable cipher wrapper that derives the key from a password,\n\t * and returns ciphertext as a serializable cipher params object.\n\t */\n\t var PasswordBasedCipher = C_lib.PasswordBasedCipher = SerializableCipher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {KDF} kdf The key derivation function to use to generate a key and IV from a password. Default: OpenSSL\n\t */\n\t cfg: SerializableCipher.cfg.extend({\n\t kdf: OpenSSLKdf\n\t }),\n\n\t /**\n\t * Encrypts a message using a password.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {WordArray|string} message The message to encrypt.\n\t * @param {string} password The password.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {CipherParams} A cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password');\n\t * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher.encrypt(CryptoJS.algo.AES, message, 'password', { format: CryptoJS.format.OpenSSL });\n\t */\n\t encrypt: function (cipher, message, password, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Derive key and other params\n\t var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize);\n\n\t // Add IV to config\n\t cfg.iv = derivedParams.iv;\n\n\t // Encrypt\n\t var ciphertext = SerializableCipher.encrypt.call(this, cipher, message, derivedParams.key, cfg);\n\n\t // Mix in derived params\n\t ciphertext.mixIn(derivedParams);\n\n\t return ciphertext;\n\t },\n\n\t /**\n\t * Decrypts serialized ciphertext using a password.\n\t *\n\t * @param {Cipher} cipher The cipher algorithm to use.\n\t * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n\t * @param {string} password The password.\n\t * @param {Object} cfg (Optional) The configuration options to use for this operation.\n\t *\n\t * @return {WordArray} The plaintext.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, formattedCiphertext, 'password', { format: CryptoJS.format.OpenSSL });\n\t * var plaintext = CryptoJS.lib.PasswordBasedCipher.decrypt(CryptoJS.algo.AES, ciphertextParams, 'password', { format: CryptoJS.format.OpenSSL });\n\t */\n\t decrypt: function (cipher, ciphertext, password, cfg) {\n\t // Apply config defaults\n\t cfg = this.cfg.extend(cfg);\n\n\t // Convert string to CipherParams\n\t ciphertext = this._parse(ciphertext, cfg.format);\n\n\t // Derive key and other params\n\t var derivedParams = cfg.kdf.execute(password, cipher.keySize, cipher.ivSize, ciphertext.salt);\n\n\t // Add IV to config\n\t cfg.iv = derivedParams.iv;\n\n\t // Decrypt\n\t var plaintext = SerializableCipher.decrypt.call(this, cipher, ciphertext, derivedParams.key, cfg);\n\n\t return plaintext;\n\t }\n\t });\n\t}());\n\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory();\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory();\n\t}\n}(this, function () {\n\n\t/*globals window, global, require*/\n\n\t/**\n\t * CryptoJS core components.\n\t */\n\tvar CryptoJS = CryptoJS || (function (Math, undefined) {\n\n\t var crypto;\n\n\t // Native crypto from window (Browser)\n\t if (typeof window !== 'undefined' && window.crypto) {\n\t crypto = window.crypto;\n\t }\n\n\t // Native crypto in web worker (Browser)\n\t if (typeof self !== 'undefined' && self.crypto) {\n\t crypto = self.crypto;\n\t }\n\n\t // Native crypto from worker\n\t if (typeof globalThis !== 'undefined' && globalThis.crypto) {\n\t crypto = globalThis.crypto;\n\t }\n\n\t // Native (experimental IE 11) crypto from window (Browser)\n\t if (!crypto && typeof window !== 'undefined' && window.msCrypto) {\n\t crypto = window.msCrypto;\n\t }\n\n\t // Native crypto from global (NodeJS)\n\t if (!crypto && typeof global !== 'undefined' && global.crypto) {\n\t crypto = global.crypto;\n\t }\n\n\t // Native crypto import via require (NodeJS)\n\t if (!crypto && typeof require === 'function') {\n\t try {\n\t crypto = require('crypto');\n\t } catch (err) {}\n\t }\n\n\t /*\n\t * Cryptographically secure pseudorandom number generator\n\t *\n\t * As Math.random() is cryptographically not safe to use\n\t */\n\t var cryptoSecureRandomInt = function () {\n\t if (crypto) {\n\t // Use getRandomValues method (Browser)\n\t if (typeof crypto.getRandomValues === 'function') {\n\t try {\n\t return crypto.getRandomValues(new Uint32Array(1))[0];\n\t } catch (err) {}\n\t }\n\n\t // Use randomBytes method (NodeJS)\n\t if (typeof crypto.randomBytes === 'function') {\n\t try {\n\t return crypto.randomBytes(4).readInt32LE();\n\t } catch (err) {}\n\t }\n\t }\n\n\t throw new Error('Native crypto module could not be used to get secure random number.');\n\t };\n\n\t /*\n\t * Local polyfill of Object.create\n\n\t */\n\t var create = Object.create || (function () {\n\t function F() {}\n\n\t return function (obj) {\n\t var subtype;\n\n\t F.prototype = obj;\n\n\t subtype = new F();\n\n\t F.prototype = null;\n\n\t return subtype;\n\t };\n\t }());\n\n\t /**\n\t * CryptoJS namespace.\n\t */\n\t var C = {};\n\n\t /**\n\t * Library namespace.\n\t */\n\t var C_lib = C.lib = {};\n\n\t /**\n\t * Base object for prototypal inheritance.\n\t */\n\t var Base = C_lib.Base = (function () {\n\n\n\t return {\n\t /**\n\t * Creates a new object that inherits from this object.\n\t *\n\t * @param {Object} overrides Properties to copy into the new object.\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * field: 'value',\n\t *\n\t * method: function () {\n\t * }\n\t * });\n\t */\n\t extend: function (overrides) {\n\t // Spawn\n\t var subtype = create(this);\n\n\t // Augment\n\t if (overrides) {\n\t subtype.mixIn(overrides);\n\t }\n\n\t // Create default initializer\n\t if (!subtype.hasOwnProperty('init') || this.init === subtype.init) {\n\t subtype.init = function () {\n\t subtype.$super.init.apply(this, arguments);\n\t };\n\t }\n\n\t // Initializer's prototype is the subtype object\n\t subtype.init.prototype = subtype;\n\n\t // Reference supertype\n\t subtype.$super = this;\n\n\t return subtype;\n\t },\n\n\t /**\n\t * Extends this object and runs the init method.\n\t * Arguments to create() will be passed to init().\n\t *\n\t * @return {Object} The new object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var instance = MyType.create();\n\t */\n\t create: function () {\n\t var instance = this.extend();\n\t instance.init.apply(instance, arguments);\n\n\t return instance;\n\t },\n\n\t /**\n\t * Initializes a newly created object.\n\t * Override this method to add some logic when your objects are created.\n\t *\n\t * @example\n\t *\n\t * var MyType = CryptoJS.lib.Base.extend({\n\t * init: function () {\n\t * // ...\n\t * }\n\t * });\n\t */\n\t init: function () {\n\t },\n\n\t /**\n\t * Copies properties into this object.\n\t *\n\t * @param {Object} properties The properties to mix in.\n\t *\n\t * @example\n\t *\n\t * MyType.mixIn({\n\t * field: 'value'\n\t * });\n\t */\n\t mixIn: function (properties) {\n\t for (var propertyName in properties) {\n\t if (properties.hasOwnProperty(propertyName)) {\n\t this[propertyName] = properties[propertyName];\n\t }\n\t }\n\n\t // IE won't copy toString using the loop above\n\t if (properties.hasOwnProperty('toString')) {\n\t this.toString = properties.toString;\n\t }\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = instance.clone();\n\t */\n\t clone: function () {\n\t return this.init.prototype.extend(this);\n\t }\n\t };\n\t }());\n\n\t /**\n\t * An array of 32-bit words.\n\t *\n\t * @property {Array} words The array of 32-bit words.\n\t * @property {number} sigBytes The number of significant bytes in this word array.\n\t */\n\t var WordArray = C_lib.WordArray = Base.extend({\n\t /**\n\t * Initializes a newly created word array.\n\t *\n\t * @param {Array} words (Optional) An array of 32-bit words.\n\t * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.create();\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\n\t * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\n\t */\n\t init: function (words, sigBytes) {\n\t words = this.words = words || [];\n\n\t if (sigBytes != undefined) {\n\t this.sigBytes = sigBytes;\n\t } else {\n\t this.sigBytes = words.length * 4;\n\t }\n\t },\n\n\t /**\n\t * Converts this word array to a string.\n\t *\n\t * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\n\t *\n\t * @return {string} The stringified word array.\n\t *\n\t * @example\n\t *\n\t * var string = wordArray + '';\n\t * var string = wordArray.toString();\n\t * var string = wordArray.toString(CryptoJS.enc.Utf8);\n\t */\n\t toString: function (encoder) {\n\t return (encoder || Hex).stringify(this);\n\t },\n\n\t /**\n\t * Concatenates a word array to this word array.\n\t *\n\t * @param {WordArray} wordArray The word array to append.\n\t *\n\t * @return {WordArray} This word array.\n\t *\n\t * @example\n\t *\n\t * wordArray1.concat(wordArray2);\n\t */\n\t concat: function (wordArray) {\n\t // Shortcuts\n\t var thisWords = this.words;\n\t var thatWords = wordArray.words;\n\t var thisSigBytes = this.sigBytes;\n\t var thatSigBytes = wordArray.sigBytes;\n\n\t // Clamp excess bits\n\t this.clamp();\n\n\t // Concat\n\t if (thisSigBytes % 4) {\n\t // Copy one byte at a time\n\t for (var i = 0; i < thatSigBytes; i++) {\n\t var thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t thisWords[(thisSigBytes + i) >>> 2] |= thatByte << (24 - ((thisSigBytes + i) % 4) * 8);\n\t }\n\t } else {\n\t // Copy one word at a time\n\t for (var j = 0; j < thatSigBytes; j += 4) {\n\t thisWords[(thisSigBytes + j) >>> 2] = thatWords[j >>> 2];\n\t }\n\t }\n\t this.sigBytes += thatSigBytes;\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Removes insignificant bits.\n\t *\n\t * @example\n\t *\n\t * wordArray.clamp();\n\t */\n\t clamp: function () {\n\t // Shortcuts\n\t var words = this.words;\n\t var sigBytes = this.sigBytes;\n\n\t // Clamp\n\t words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8);\n\t words.length = Math.ceil(sigBytes / 4);\n\t },\n\n\t /**\n\t * Creates a copy of this word array.\n\t *\n\t * @return {WordArray} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = wordArray.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone.words = this.words.slice(0);\n\n\t return clone;\n\t },\n\n\t /**\n\t * Creates a word array filled with random bytes.\n\t *\n\t * @param {number} nBytes The number of random bytes to generate.\n\t *\n\t * @return {WordArray} The random word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.lib.WordArray.random(16);\n\t */\n\t random: function (nBytes) {\n\t var words = [];\n\n\t for (var i = 0; i < nBytes; i += 4) {\n\t words.push(cryptoSecureRandomInt());\n\t }\n\n\t return new WordArray.init(words, nBytes);\n\t }\n\t });\n\n\t /**\n\t * Encoder namespace.\n\t */\n\t var C_enc = C.enc = {};\n\n\t /**\n\t * Hex encoding strategy.\n\t */\n\t var Hex = C_enc.Hex = {\n\t /**\n\t * Converts a word array to a hex string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The hex string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hexString = CryptoJS.enc.Hex.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var hexChars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t hexChars.push((bite >>> 4).toString(16));\n\t hexChars.push((bite & 0x0f).toString(16));\n\t }\n\n\t return hexChars.join('');\n\t },\n\n\t /**\n\t * Converts a hex string to a word array.\n\t *\n\t * @param {string} hexStr The hex string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Hex.parse(hexString);\n\t */\n\t parse: function (hexStr) {\n\t // Shortcut\n\t var hexStrLength = hexStr.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < hexStrLength; i += 2) {\n\t words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4);\n\t }\n\n\t return new WordArray.init(words, hexStrLength / 2);\n\t }\n\t };\n\n\t /**\n\t * Latin1 encoding strategy.\n\t */\n\t var Latin1 = C_enc.Latin1 = {\n\t /**\n\t * Converts a word array to a Latin1 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Latin1 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var latin1Chars = [];\n\t for (var i = 0; i < sigBytes; i++) {\n\t var bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t latin1Chars.push(String.fromCharCode(bite));\n\t }\n\n\t return latin1Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Latin1 string to a word array.\n\t *\n\t * @param {string} latin1Str The Latin1 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\n\t */\n\t parse: function (latin1Str) {\n\t // Shortcut\n\t var latin1StrLength = latin1Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < latin1StrLength; i++) {\n\t words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8);\n\t }\n\n\t return new WordArray.init(words, latin1StrLength);\n\t }\n\t };\n\n\t /**\n\t * UTF-8 encoding strategy.\n\t */\n\t var Utf8 = C_enc.Utf8 = {\n\t /**\n\t * Converts a word array to a UTF-8 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-8 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t try {\n\t return decodeURIComponent(escape(Latin1.stringify(wordArray)));\n\t } catch (e) {\n\t throw new Error('Malformed UTF-8 data');\n\t }\n\t },\n\n\t /**\n\t * Converts a UTF-8 string to a word array.\n\t *\n\t * @param {string} utf8Str The UTF-8 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\n\t */\n\t parse: function (utf8Str) {\n\t return Latin1.parse(unescape(encodeURIComponent(utf8Str)));\n\t }\n\t };\n\n\t /**\n\t * Abstract buffered block algorithm template.\n\t *\n\t * The property blockSize must be implemented in a concrete subtype.\n\t *\n\t * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0\n\t */\n\t var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({\n\t /**\n\t * Resets this block algorithm's data buffer to its initial state.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm.reset();\n\t */\n\t reset: function () {\n\t // Initial values\n\t this._data = new WordArray.init();\n\t this._nDataBytes = 0;\n\t },\n\n\t /**\n\t * Adds new data to this block algorithm's buffer.\n\t *\n\t * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8.\n\t *\n\t * @example\n\t *\n\t * bufferedBlockAlgorithm._append('data');\n\t * bufferedBlockAlgorithm._append(wordArray);\n\t */\n\t _append: function (data) {\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof data == 'string') {\n\t data = Utf8.parse(data);\n\t }\n\n\t // Append\n\t this._data.concat(data);\n\t this._nDataBytes += data.sigBytes;\n\t },\n\n\t /**\n\t * Processes available data blocks.\n\t *\n\t * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\n\t *\n\t * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\n\t *\n\t * @return {WordArray} The processed data.\n\t *\n\t * @example\n\t *\n\t * var processedData = bufferedBlockAlgorithm._process();\n\t * var processedData = bufferedBlockAlgorithm._process(!!'flush');\n\t */\n\t _process: function (doFlush) {\n\t var processedWords;\n\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\t var dataSigBytes = data.sigBytes;\n\t var blockSize = this.blockSize;\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count blocks ready\n\t var nBlocksReady = dataSigBytes / blockSizeBytes;\n\t if (doFlush) {\n\t // Round up to include partial blocks\n\t nBlocksReady = Math.ceil(nBlocksReady);\n\t } else {\n\t // Round down to include only full blocks,\n\t // less the number of blocks that must remain in the buffer\n\t nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0);\n\t }\n\n\t // Count words ready\n\t var nWordsReady = nBlocksReady * blockSize;\n\n\t // Count bytes ready\n\t var nBytesReady = Math.min(nWordsReady * 4, dataSigBytes);\n\n\t // Process blocks\n\t if (nWordsReady) {\n\t for (var offset = 0; offset < nWordsReady; offset += blockSize) {\n\t // Perform concrete-algorithm logic\n\t this._doProcessBlock(dataWords, offset);\n\t }\n\n\t // Remove processed words\n\t processedWords = dataWords.splice(0, nWordsReady);\n\t data.sigBytes -= nBytesReady;\n\t }\n\n\t // Return processed words\n\t return new WordArray.init(processedWords, nBytesReady);\n\t },\n\n\t /**\n\t * Creates a copy of this object.\n\t *\n\t * @return {Object} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = bufferedBlockAlgorithm.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\t clone._data = this._data.clone();\n\n\t return clone;\n\t },\n\n\t _minBufferSize: 0\n\t });\n\n\t /**\n\t * Abstract hasher template.\n\t *\n\t * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\n\t */\n\t var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({\n\t /**\n\t * Configuration options.\n\t */\n\t cfg: Base.extend(),\n\n\t /**\n\t * Initializes a newly created hasher.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for this hash computation.\n\t *\n\t * @example\n\t *\n\t * var hasher = CryptoJS.algo.SHA256.create();\n\t */\n\t init: function (cfg) {\n\t // Apply config defaults\n\t this.cfg = this.cfg.extend(cfg);\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this hasher to its initial state.\n\t *\n\t * @example\n\t *\n\t * hasher.reset();\n\t */\n\t reset: function () {\n\t // Reset data buffer\n\t BufferedBlockAlgorithm.reset.call(this);\n\n\t // Perform concrete-hasher logic\n\t this._doReset();\n\t },\n\n\t /**\n\t * Updates this hasher with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {Hasher} This hasher.\n\t *\n\t * @example\n\t *\n\t * hasher.update('message');\n\t * hasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t // Append\n\t this._append(messageUpdate);\n\n\t // Update the hash\n\t this._process();\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the hash computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @example\n\t *\n\t * var hash = hasher.finalize();\n\t * var hash = hasher.finalize('message');\n\t * var hash = hasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Final message update\n\t if (messageUpdate) {\n\t this._append(messageUpdate);\n\t }\n\n\t // Perform concrete-hasher logic\n\t var hash = this._doFinalize();\n\n\t return hash;\n\t },\n\n\t blockSize: 512/32,\n\n\t /**\n\t * Creates a shortcut function to a hasher's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to create a helper for.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHelper: function (hasher) {\n\t return function (message, cfg) {\n\t return new hasher.init(cfg).finalize(message);\n\t };\n\t },\n\n\t /**\n\t * Creates a shortcut function to the HMAC's object interface.\n\t *\n\t * @param {Hasher} hasher The hasher to use in this HMAC helper.\n\t *\n\t * @return {Function} The shortcut function.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\n\t */\n\t _createHmacHelper: function (hasher) {\n\t return function (message, key) {\n\t return new C_algo.HMAC.init(hasher, key).finalize(message);\n\t };\n\t }\n\t });\n\n\t /**\n\t * Algorithm namespace.\n\t */\n\t var C_algo = C.algo = {};\n\n\t return C;\n\t}(Math));\n\n\n\treturn CryptoJS;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * Base64 encoding strategy.\n\t */\n\t var Base64 = C_enc.Base64 = {\n\t /**\n\t * Converts a word array to a Base64 string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The Base64 string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var base64String = CryptoJS.enc.Base64.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\t var map = this._map;\n\n\t // Clamp excess bits\n\t wordArray.clamp();\n\n\t // Convert\n\t var base64Chars = [];\n\t for (var i = 0; i < sigBytes; i += 3) {\n\t var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n\t var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n\t for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t }\n\t }\n\n\t // Add padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t while (base64Chars.length % 4) {\n\t base64Chars.push(paddingChar);\n\t }\n\t }\n\n\t return base64Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Base64 string to a word array.\n\t *\n\t * @param {string} base64Str The Base64 string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Base64.parse(base64String);\n\t */\n\t parse: function (base64Str) {\n\t // Shortcuts\n\t var base64StrLength = base64Str.length;\n\t var map = this._map;\n\t var reverseMap = this._reverseMap;\n\n\t if (!reverseMap) {\n\t reverseMap = this._reverseMap = [];\n\t for (var j = 0; j < map.length; j++) {\n\t reverseMap[map.charCodeAt(j)] = j;\n\t }\n\t }\n\n\t // Ignore padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t var paddingIndex = base64Str.indexOf(paddingChar);\n\t if (paddingIndex !== -1) {\n\t base64StrLength = paddingIndex;\n\t }\n\t }\n\n\t // Convert\n\t return parseLoop(base64Str, base64StrLength, reverseMap);\n\n\t },\n\n\t _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\n\t };\n\n\t function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t var words = [];\n\t var nBytes = 0;\n\t for (var i = 0; i < base64StrLength; i++) {\n\t if (i % 4) {\n\t var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t var bitsCombined = bits1 | bits2;\n\t words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8);\n\t nBytes++;\n\t }\n\t }\n\t return WordArray.create(words, nBytes);\n\t }\n\t}());\n\n\n\treturn CryptoJS.enc.Base64;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * Base64url encoding strategy.\n\t */\n\t var Base64url = C_enc.Base64url = {\n\t /**\n\t * Converts a word array to a Base64url string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @param {boolean} urlSafe Whether to use url safe\n\t *\n\t * @return {string} The Base64url string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var base64String = CryptoJS.enc.Base64url.stringify(wordArray);\n\t */\n\t stringify: function (wordArray, urlSafe=true) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\t var map = urlSafe ? this._safe_map : this._map;\n\n\t // Clamp excess bits\n\t wordArray.clamp();\n\n\t // Convert\n\t var base64Chars = [];\n\t for (var i = 0; i < sigBytes; i += 3) {\n\t var byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n\t var byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff;\n\t var byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff;\n\n\t var triplet = (byte1 << 16) | (byte2 << 8) | byte3;\n\n\t for (var j = 0; (j < 4) && (i + j * 0.75 < sigBytes); j++) {\n\t base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f));\n\t }\n\t }\n\n\t // Add padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t while (base64Chars.length % 4) {\n\t base64Chars.push(paddingChar);\n\t }\n\t }\n\n\t return base64Chars.join('');\n\t },\n\n\t /**\n\t * Converts a Base64url string to a word array.\n\t *\n\t * @param {string} base64Str The Base64url string.\n\t *\n\t * @param {boolean} urlSafe Whether to use url safe\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Base64url.parse(base64String);\n\t */\n\t parse: function (base64Str, urlSafe=true) {\n\t // Shortcuts\n\t var base64StrLength = base64Str.length;\n\t var map = urlSafe ? this._safe_map : this._map;\n\t var reverseMap = this._reverseMap;\n\n\t if (!reverseMap) {\n\t reverseMap = this._reverseMap = [];\n\t for (var j = 0; j < map.length; j++) {\n\t reverseMap[map.charCodeAt(j)] = j;\n\t }\n\t }\n\n\t // Ignore padding\n\t var paddingChar = map.charAt(64);\n\t if (paddingChar) {\n\t var paddingIndex = base64Str.indexOf(paddingChar);\n\t if (paddingIndex !== -1) {\n\t base64StrLength = paddingIndex;\n\t }\n\t }\n\n\t // Convert\n\t return parseLoop(base64Str, base64StrLength, reverseMap);\n\n\t },\n\n\t _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\n\t _safe_map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_',\n\t };\n\n\t function parseLoop(base64Str, base64StrLength, reverseMap) {\n\t var words = [];\n\t var nBytes = 0;\n\t for (var i = 0; i < base64StrLength; i++) {\n\t if (i % 4) {\n\t var bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2);\n\t var bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2);\n\t var bitsCombined = bits1 | bits2;\n\t words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8);\n\t nBytes++;\n\t }\n\t }\n\t return WordArray.create(words, nBytes);\n\t }\n\t}());\n\n\treturn CryptoJS.enc.Base64url;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_enc = C.enc;\n\n\t /**\n\t * UTF-16 BE encoding strategy.\n\t */\n\t var Utf16BE = C_enc.Utf16 = C_enc.Utf16BE = {\n\t /**\n\t * Converts a word array to a UTF-16 BE string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-16 BE string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf16String = CryptoJS.enc.Utf16.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var utf16Chars = [];\n\t for (var i = 0; i < sigBytes; i += 2) {\n\t var codePoint = (words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff;\n\t utf16Chars.push(String.fromCharCode(codePoint));\n\t }\n\n\t return utf16Chars.join('');\n\t },\n\n\t /**\n\t * Converts a UTF-16 BE string to a word array.\n\t *\n\t * @param {string} utf16Str The UTF-16 BE string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf16.parse(utf16String);\n\t */\n\t parse: function (utf16Str) {\n\t // Shortcut\n\t var utf16StrLength = utf16Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < utf16StrLength; i++) {\n\t words[i >>> 1] |= utf16Str.charCodeAt(i) << (16 - (i % 2) * 16);\n\t }\n\n\t return WordArray.create(words, utf16StrLength * 2);\n\t }\n\t };\n\n\t /**\n\t * UTF-16 LE encoding strategy.\n\t */\n\t C_enc.Utf16LE = {\n\t /**\n\t * Converts a word array to a UTF-16 LE string.\n\t *\n\t * @param {WordArray} wordArray The word array.\n\t *\n\t * @return {string} The UTF-16 LE string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var utf16Str = CryptoJS.enc.Utf16LE.stringify(wordArray);\n\t */\n\t stringify: function (wordArray) {\n\t // Shortcuts\n\t var words = wordArray.words;\n\t var sigBytes = wordArray.sigBytes;\n\n\t // Convert\n\t var utf16Chars = [];\n\t for (var i = 0; i < sigBytes; i += 2) {\n\t var codePoint = swapEndian((words[i >>> 2] >>> (16 - (i % 4) * 8)) & 0xffff);\n\t utf16Chars.push(String.fromCharCode(codePoint));\n\t }\n\n\t return utf16Chars.join('');\n\t },\n\n\t /**\n\t * Converts a UTF-16 LE string to a word array.\n\t *\n\t * @param {string} utf16Str The UTF-16 LE string.\n\t *\n\t * @return {WordArray} The word array.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.enc.Utf16LE.parse(utf16Str);\n\t */\n\t parse: function (utf16Str) {\n\t // Shortcut\n\t var utf16StrLength = utf16Str.length;\n\n\t // Convert\n\t var words = [];\n\t for (var i = 0; i < utf16StrLength; i++) {\n\t words[i >>> 1] |= swapEndian(utf16Str.charCodeAt(i) << (16 - (i % 2) * 16));\n\t }\n\n\t return WordArray.create(words, utf16StrLength * 2);\n\t }\n\t };\n\n\t function swapEndian(word) {\n\t return ((word << 8) & 0xff00ff00) | ((word >>> 8) & 0x00ff00ff);\n\t }\n\t}());\n\n\n\treturn CryptoJS.enc.Utf16;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha1\"), require(\"./hmac\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha1\", \"./hmac\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var MD5 = C_algo.MD5;\n\n\t /**\n\t * This key derivation function is meant to conform with EVP_BytesToKey.\n\t * www.openssl.org/docs/crypto/EVP_BytesToKey.html\n\t */\n\t var EvpKDF = C_algo.EvpKDF = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n\t * @property {Hasher} hasher The hash algorithm to use. Default: MD5\n\t * @property {number} iterations The number of iterations to perform. Default: 1\n\t */\n\t cfg: Base.extend({\n\t keySize: 128/32,\n\t hasher: MD5,\n\t iterations: 1\n\t }),\n\n\t /**\n\t * Initializes a newly created key derivation function.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n\t *\n\t * @example\n\t *\n\t * var kdf = CryptoJS.algo.EvpKDF.create();\n\t * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8 });\n\t * var kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8, iterations: 1000 });\n\t */\n\t init: function (cfg) {\n\t this.cfg = this.cfg.extend(cfg);\n\t },\n\n\t /**\n\t * Derives a key from a password.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @example\n\t *\n\t * var key = kdf.compute(password, salt);\n\t */\n\t compute: function (password, salt) {\n\t var block;\n\n\t // Shortcut\n\t var cfg = this.cfg;\n\n\t // Init hasher\n\t var hasher = cfg.hasher.create();\n\n\t // Initial values\n\t var derivedKey = WordArray.create();\n\n\t // Shortcuts\n\t var derivedKeyWords = derivedKey.words;\n\t var keySize = cfg.keySize;\n\t var iterations = cfg.iterations;\n\n\t // Generate key\n\t while (derivedKeyWords.length < keySize) {\n\t if (block) {\n\t hasher.update(block);\n\t }\n\t block = hasher.update(password).finalize(salt);\n\t hasher.reset();\n\n\t // Iterations\n\t for (var i = 1; i < iterations; i++) {\n\t block = hasher.finalize(block);\n\t hasher.reset();\n\t }\n\n\t derivedKey.concat(block);\n\t }\n\t derivedKey.sigBytes = keySize * 4;\n\n\t return derivedKey;\n\t }\n\t });\n\n\t /**\n\t * Derives a key from a password.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t * @param {Object} cfg (Optional) The configuration options to use for this computation.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var key = CryptoJS.EvpKDF(password, salt);\n\t * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8 });\n\t * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8, iterations: 1000 });\n\t */\n\t C.EvpKDF = function (password, salt, cfg) {\n\t return EvpKDF.create(cfg).compute(password, salt);\n\t };\n\t}());\n\n\n\treturn CryptoJS.EvpKDF;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (undefined) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var CipherParams = C_lib.CipherParams;\n\t var C_enc = C.enc;\n\t var Hex = C_enc.Hex;\n\t var C_format = C.format;\n\n\t var HexFormatter = C_format.Hex = {\n\t /**\n\t * Converts the ciphertext of a cipher params object to a hexadecimally encoded string.\n\t *\n\t * @param {CipherParams} cipherParams The cipher params object.\n\t *\n\t * @return {string} The hexadecimally encoded string.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hexString = CryptoJS.format.Hex.stringify(cipherParams);\n\t */\n\t stringify: function (cipherParams) {\n\t return cipherParams.ciphertext.toString(Hex);\n\t },\n\n\t /**\n\t * Converts a hexadecimally encoded ciphertext string to a cipher params object.\n\t *\n\t * @param {string} input The hexadecimally encoded string.\n\t *\n\t * @return {CipherParams} The cipher params object.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var cipherParams = CryptoJS.format.Hex.parse(hexString);\n\t */\n\t parse: function (input) {\n\t var ciphertext = Hex.parse(input);\n\t return CipherParams.create({ ciphertext: ciphertext });\n\t }\n\t };\n\t}());\n\n\n\treturn CryptoJS.format.Hex;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var C_enc = C.enc;\n\t var Utf8 = C_enc.Utf8;\n\t var C_algo = C.algo;\n\n\t /**\n\t * HMAC algorithm.\n\t */\n\t var HMAC = C_algo.HMAC = Base.extend({\n\t /**\n\t * Initializes a newly created HMAC.\n\t *\n\t * @param {Hasher} hasher The hash algorithm to use.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @example\n\t *\n\t * var hmacHasher = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, key);\n\t */\n\t init: function (hasher, key) {\n\t // Init hasher\n\t hasher = this._hasher = new hasher.init();\n\n\t // Convert string to WordArray, else assume WordArray already\n\t if (typeof key == 'string') {\n\t key = Utf8.parse(key);\n\t }\n\n\t // Shortcuts\n\t var hasherBlockSize = hasher.blockSize;\n\t var hasherBlockSizeBytes = hasherBlockSize * 4;\n\n\t // Allow arbitrary length keys\n\t if (key.sigBytes > hasherBlockSizeBytes) {\n\t key = hasher.finalize(key);\n\t }\n\n\t // Clamp excess bits\n\t key.clamp();\n\n\t // Clone key for inner and outer pads\n\t var oKey = this._oKey = key.clone();\n\t var iKey = this._iKey = key.clone();\n\n\t // Shortcuts\n\t var oKeyWords = oKey.words;\n\t var iKeyWords = iKey.words;\n\n\t // XOR keys with pad constants\n\t for (var i = 0; i < hasherBlockSize; i++) {\n\t oKeyWords[i] ^= 0x5c5c5c5c;\n\t iKeyWords[i] ^= 0x36363636;\n\t }\n\t oKey.sigBytes = iKey.sigBytes = hasherBlockSizeBytes;\n\n\t // Set initial values\n\t this.reset();\n\t },\n\n\t /**\n\t * Resets this HMAC to its initial state.\n\t *\n\t * @example\n\t *\n\t * hmacHasher.reset();\n\t */\n\t reset: function () {\n\t // Shortcut\n\t var hasher = this._hasher;\n\n\t // Reset\n\t hasher.reset();\n\t hasher.update(this._iKey);\n\t },\n\n\t /**\n\t * Updates this HMAC with a message.\n\t *\n\t * @param {WordArray|string} messageUpdate The message to append.\n\t *\n\t * @return {HMAC} This HMAC instance.\n\t *\n\t * @example\n\t *\n\t * hmacHasher.update('message');\n\t * hmacHasher.update(wordArray);\n\t */\n\t update: function (messageUpdate) {\n\t this._hasher.update(messageUpdate);\n\n\t // Chainable\n\t return this;\n\t },\n\n\t /**\n\t * Finalizes the HMAC computation.\n\t * Note that the finalize operation is effectively a destructive, read-once operation.\n\t *\n\t * @param {WordArray|string} messageUpdate (Optional) A final message update.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @example\n\t *\n\t * var hmac = hmacHasher.finalize();\n\t * var hmac = hmacHasher.finalize('message');\n\t * var hmac = hmacHasher.finalize(wordArray);\n\t */\n\t finalize: function (messageUpdate) {\n\t // Shortcut\n\t var hasher = this._hasher;\n\n\t // Compute HMAC\n\t var innerHash = hasher.finalize(messageUpdate);\n\t hasher.reset();\n\t var hmac = hasher.finalize(this._oKey.clone().concat(innerHash));\n\n\t return hmac;\n\t }\n\t });\n\t}());\n\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"), require(\"./lib-typedarrays\"), require(\"./enc-utf16\"), require(\"./enc-base64\"), require(\"./enc-base64url\"), require(\"./md5\"), require(\"./sha1\"), require(\"./sha256\"), require(\"./sha224\"), require(\"./sha512\"), require(\"./sha384\"), require(\"./sha3\"), require(\"./ripemd160\"), require(\"./hmac\"), require(\"./pbkdf2\"), require(\"./evpkdf\"), require(\"./cipher-core\"), require(\"./mode-cfb\"), require(\"./mode-ctr\"), require(\"./mode-ctr-gladman\"), require(\"./mode-ofb\"), require(\"./mode-ecb\"), require(\"./pad-ansix923\"), require(\"./pad-iso10126\"), require(\"./pad-iso97971\"), require(\"./pad-zeropadding\"), require(\"./pad-nopadding\"), require(\"./format-hex\"), require(\"./aes\"), require(\"./tripledes\"), require(\"./rc4\"), require(\"./rabbit\"), require(\"./rabbit-legacy\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\", \"./lib-typedarrays\", \"./enc-utf16\", \"./enc-base64\", \"./enc-base64url\", \"./md5\", \"./sha1\", \"./sha256\", \"./sha224\", \"./sha512\", \"./sha384\", \"./sha3\", \"./ripemd160\", \"./hmac\", \"./pbkdf2\", \"./evpkdf\", \"./cipher-core\", \"./mode-cfb\", \"./mode-ctr\", \"./mode-ctr-gladman\", \"./mode-ofb\", \"./mode-ecb\", \"./pad-ansix923\", \"./pad-iso10126\", \"./pad-iso97971\", \"./pad-zeropadding\", \"./pad-nopadding\", \"./format-hex\", \"./aes\", \"./tripledes\", \"./rc4\", \"./rabbit\", \"./rabbit-legacy\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\troot.CryptoJS = factory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\treturn CryptoJS;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Check if typed arrays are supported\n\t if (typeof ArrayBuffer != 'function') {\n\t return;\n\t }\n\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\n\t // Reference original init\n\t var superInit = WordArray.init;\n\n\t // Augment WordArray.init to handle typed arrays\n\t var subInit = WordArray.init = function (typedArray) {\n\t // Convert buffers to uint8\n\t if (typedArray instanceof ArrayBuffer) {\n\t typedArray = new Uint8Array(typedArray);\n\t }\n\n\t // Convert other array views to uint8\n\t if (\n\t typedArray instanceof Int8Array ||\n\t (typeof Uint8ClampedArray !== \"undefined\" && typedArray instanceof Uint8ClampedArray) ||\n\t typedArray instanceof Int16Array ||\n\t typedArray instanceof Uint16Array ||\n\t typedArray instanceof Int32Array ||\n\t typedArray instanceof Uint32Array ||\n\t typedArray instanceof Float32Array ||\n\t typedArray instanceof Float64Array\n\t ) {\n\t typedArray = new Uint8Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength);\n\t }\n\n\t // Handle Uint8Array\n\t if (typedArray instanceof Uint8Array) {\n\t // Shortcut\n\t var typedArrayByteLength = typedArray.byteLength;\n\n\t // Extract bytes\n\t var words = [];\n\t for (var i = 0; i < typedArrayByteLength; i++) {\n\t words[i >>> 2] |= typedArray[i] << (24 - (i % 4) * 8);\n\t }\n\n\t // Initialize this word array\n\t superInit.call(this, words, typedArrayByteLength);\n\t } else {\n\t // Else call normal init\n\t superInit.apply(this, arguments);\n\t }\n\t };\n\n\t subInit.prototype = WordArray;\n\t}());\n\n\n\treturn CryptoJS.lib.WordArray;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Constants table\n\t var T = [];\n\n\t // Compute constants\n\t (function () {\n\t for (var i = 0; i < 64; i++) {\n\t T[i] = (Math.abs(Math.sin(i + 1)) * 0x100000000) | 0;\n\t }\n\t }());\n\n\t /**\n\t * MD5 hash algorithm.\n\t */\n\t var MD5 = C_algo.MD5 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0x67452301, 0xefcdab89,\n\t 0x98badcfe, 0x10325476\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Swap endian\n\t for (var i = 0; i < 16; i++) {\n\t // Shortcuts\n\t var offset_i = offset + i;\n\t var M_offset_i = M[offset_i];\n\n\t M[offset_i] = (\n\t (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |\n\t (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)\n\t );\n\t }\n\n\t // Shortcuts\n\t var H = this._hash.words;\n\n\t var M_offset_0 = M[offset + 0];\n\t var M_offset_1 = M[offset + 1];\n\t var M_offset_2 = M[offset + 2];\n\t var M_offset_3 = M[offset + 3];\n\t var M_offset_4 = M[offset + 4];\n\t var M_offset_5 = M[offset + 5];\n\t var M_offset_6 = M[offset + 6];\n\t var M_offset_7 = M[offset + 7];\n\t var M_offset_8 = M[offset + 8];\n\t var M_offset_9 = M[offset + 9];\n\t var M_offset_10 = M[offset + 10];\n\t var M_offset_11 = M[offset + 11];\n\t var M_offset_12 = M[offset + 12];\n\t var M_offset_13 = M[offset + 13];\n\t var M_offset_14 = M[offset + 14];\n\t var M_offset_15 = M[offset + 15];\n\n\t // Working varialbes\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\n\t // Computation\n\t a = FF(a, b, c, d, M_offset_0, 7, T[0]);\n\t d = FF(d, a, b, c, M_offset_1, 12, T[1]);\n\t c = FF(c, d, a, b, M_offset_2, 17, T[2]);\n\t b = FF(b, c, d, a, M_offset_3, 22, T[3]);\n\t a = FF(a, b, c, d, M_offset_4, 7, T[4]);\n\t d = FF(d, a, b, c, M_offset_5, 12, T[5]);\n\t c = FF(c, d, a, b, M_offset_6, 17, T[6]);\n\t b = FF(b, c, d, a, M_offset_7, 22, T[7]);\n\t a = FF(a, b, c, d, M_offset_8, 7, T[8]);\n\t d = FF(d, a, b, c, M_offset_9, 12, T[9]);\n\t c = FF(c, d, a, b, M_offset_10, 17, T[10]);\n\t b = FF(b, c, d, a, M_offset_11, 22, T[11]);\n\t a = FF(a, b, c, d, M_offset_12, 7, T[12]);\n\t d = FF(d, a, b, c, M_offset_13, 12, T[13]);\n\t c = FF(c, d, a, b, M_offset_14, 17, T[14]);\n\t b = FF(b, c, d, a, M_offset_15, 22, T[15]);\n\n\t a = GG(a, b, c, d, M_offset_1, 5, T[16]);\n\t d = GG(d, a, b, c, M_offset_6, 9, T[17]);\n\t c = GG(c, d, a, b, M_offset_11, 14, T[18]);\n\t b = GG(b, c, d, a, M_offset_0, 20, T[19]);\n\t a = GG(a, b, c, d, M_offset_5, 5, T[20]);\n\t d = GG(d, a, b, c, M_offset_10, 9, T[21]);\n\t c = GG(c, d, a, b, M_offset_15, 14, T[22]);\n\t b = GG(b, c, d, a, M_offset_4, 20, T[23]);\n\t a = GG(a, b, c, d, M_offset_9, 5, T[24]);\n\t d = GG(d, a, b, c, M_offset_14, 9, T[25]);\n\t c = GG(c, d, a, b, M_offset_3, 14, T[26]);\n\t b = GG(b, c, d, a, M_offset_8, 20, T[27]);\n\t a = GG(a, b, c, d, M_offset_13, 5, T[28]);\n\t d = GG(d, a, b, c, M_offset_2, 9, T[29]);\n\t c = GG(c, d, a, b, M_offset_7, 14, T[30]);\n\t b = GG(b, c, d, a, M_offset_12, 20, T[31]);\n\n\t a = HH(a, b, c, d, M_offset_5, 4, T[32]);\n\t d = HH(d, a, b, c, M_offset_8, 11, T[33]);\n\t c = HH(c, d, a, b, M_offset_11, 16, T[34]);\n\t b = HH(b, c, d, a, M_offset_14, 23, T[35]);\n\t a = HH(a, b, c, d, M_offset_1, 4, T[36]);\n\t d = HH(d, a, b, c, M_offset_4, 11, T[37]);\n\t c = HH(c, d, a, b, M_offset_7, 16, T[38]);\n\t b = HH(b, c, d, a, M_offset_10, 23, T[39]);\n\t a = HH(a, b, c, d, M_offset_13, 4, T[40]);\n\t d = HH(d, a, b, c, M_offset_0, 11, T[41]);\n\t c = HH(c, d, a, b, M_offset_3, 16, T[42]);\n\t b = HH(b, c, d, a, M_offset_6, 23, T[43]);\n\t a = HH(a, b, c, d, M_offset_9, 4, T[44]);\n\t d = HH(d, a, b, c, M_offset_12, 11, T[45]);\n\t c = HH(c, d, a, b, M_offset_15, 16, T[46]);\n\t b = HH(b, c, d, a, M_offset_2, 23, T[47]);\n\n\t a = II(a, b, c, d, M_offset_0, 6, T[48]);\n\t d = II(d, a, b, c, M_offset_7, 10, T[49]);\n\t c = II(c, d, a, b, M_offset_14, 15, T[50]);\n\t b = II(b, c, d, a, M_offset_5, 21, T[51]);\n\t a = II(a, b, c, d, M_offset_12, 6, T[52]);\n\t d = II(d, a, b, c, M_offset_3, 10, T[53]);\n\t c = II(c, d, a, b, M_offset_10, 15, T[54]);\n\t b = II(b, c, d, a, M_offset_1, 21, T[55]);\n\t a = II(a, b, c, d, M_offset_8, 6, T[56]);\n\t d = II(d, a, b, c, M_offset_15, 10, T[57]);\n\t c = II(c, d, a, b, M_offset_6, 15, T[58]);\n\t b = II(b, c, d, a, M_offset_13, 21, T[59]);\n\t a = II(a, b, c, d, M_offset_4, 6, T[60]);\n\t d = II(d, a, b, c, M_offset_11, 10, T[61]);\n\t c = II(c, d, a, b, M_offset_2, 15, T[62]);\n\t b = II(b, c, d, a, M_offset_9, 21, T[63]);\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\n\t var nBitsTotalH = Math.floor(nBitsTotal / 0x100000000);\n\t var nBitsTotalL = nBitsTotal;\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = (\n\t (((nBitsTotalH << 8) | (nBitsTotalH >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotalH << 24) | (nBitsTotalH >>> 8)) & 0xff00ff00)\n\t );\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\n\t (((nBitsTotalL << 8) | (nBitsTotalL >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotalL << 24) | (nBitsTotalL >>> 8)) & 0xff00ff00)\n\t );\n\n\t data.sigBytes = (dataWords.length + 1) * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Shortcuts\n\t var hash = this._hash;\n\t var H = hash.words;\n\n\t // Swap endian\n\t for (var i = 0; i < 4; i++) {\n\t // Shortcut\n\t var H_i = H[i];\n\n\t H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |\n\t (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Return final computed hash\n\t return hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t function FF(a, b, c, d, x, s, t) {\n\t var n = a + ((b & c) | (~b & d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function GG(a, b, c, d, x, s, t) {\n\t var n = a + ((b & d) | (c & ~d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function HH(a, b, c, d, x, s, t) {\n\t var n = a + (b ^ c ^ d) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t function II(a, b, c, d, x, s, t) {\n\t var n = a + (c ^ (b | ~d)) + x + t;\n\t return ((n << s) | (n >>> (32 - s))) + b;\n\t }\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.MD5('message');\n\t * var hash = CryptoJS.MD5(wordArray);\n\t */\n\t C.MD5 = Hasher._createHelper(MD5);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacMD5(message, key);\n\t */\n\t C.HmacMD5 = Hasher._createHmacHelper(MD5);\n\t}(Math));\n\n\n\treturn CryptoJS.MD5;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Cipher Feedback block mode.\n\t */\n\tCryptoJS.mode.CFB = (function () {\n\t var CFB = CryptoJS.lib.BlockCipherMode.extend();\n\n\t CFB.Encryptor = CFB.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);\n\n\t // Remember this block to use with next block\n\t this._prevBlock = words.slice(offset, offset + blockSize);\n\t }\n\t });\n\n\t CFB.Decryptor = CFB.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher;\n\t var blockSize = cipher.blockSize;\n\n\t // Remember this block to use with next block\n\t var thisBlock = words.slice(offset, offset + blockSize);\n\n\t generateKeystreamAndEncrypt.call(this, words, offset, blockSize, cipher);\n\n\t // This block becomes the previous block\n\t this._prevBlock = thisBlock;\n\t }\n\t });\n\n\t function generateKeystreamAndEncrypt(words, offset, blockSize, cipher) {\n\t var keystream;\n\n\t // Shortcut\n\t var iv = this._iv;\n\n\t // Generate keystream\n\t if (iv) {\n\t keystream = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t } else {\n\t keystream = this._prevBlock;\n\t }\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\n\t return CFB;\n\t}());\n\n\n\treturn CryptoJS.mode.CFB;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/** @preserve\n\t * Counter block mode compatible with Dr Brian Gladman fileenc.c\n\t * derived from CryptoJS.mode.CTR\n\t * Jan Hruby jhruby.web@gmail.com\n\t */\n\tCryptoJS.mode.CTRGladman = (function () {\n\t var CTRGladman = CryptoJS.lib.BlockCipherMode.extend();\n\n\t\tfunction incWord(word)\n\t\t{\n\t\t\tif (((word >> 24) & 0xff) === 0xff) { //overflow\n\t\t\tvar b1 = (word >> 16)&0xff;\n\t\t\tvar b2 = (word >> 8)&0xff;\n\t\t\tvar b3 = word & 0xff;\n\n\t\t\tif (b1 === 0xff) // overflow b1\n\t\t\t{\n\t\t\tb1 = 0;\n\t\t\tif (b2 === 0xff)\n\t\t\t{\n\t\t\t\tb2 = 0;\n\t\t\t\tif (b3 === 0xff)\n\t\t\t\t{\n\t\t\t\t\tb3 = 0;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t++b3;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t++b2;\n\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t++b1;\n\t\t\t}\n\n\t\t\tword = 0;\n\t\t\tword += (b1 << 16);\n\t\t\tword += (b2 << 8);\n\t\t\tword += b3;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\tword += (0x01 << 24);\n\t\t\t}\n\t\t\treturn word;\n\t\t}\n\n\t\tfunction incCounter(counter)\n\t\t{\n\t\t\tif ((counter[0] = incWord(counter[0])) === 0)\n\t\t\t{\n\t\t\t\t// encr_data in fileenc.c from Dr Brian Gladman's counts only with DWORD j < 8\n\t\t\t\tcounter[1] = incWord(counter[1]);\n\t\t\t}\n\t\t\treturn counter;\n\t\t}\n\n\t var Encryptor = CTRGladman.Encryptor = CTRGladman.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher\n\t var blockSize = cipher.blockSize;\n\t var iv = this._iv;\n\t var counter = this._counter;\n\n\t // Generate keystream\n\t if (iv) {\n\t counter = this._counter = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t }\n\n\t\t\t\tincCounter(counter);\n\n\t\t\t\tvar keystream = counter.slice(0);\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\t });\n\n\t CTRGladman.Decryptor = Encryptor;\n\n\t return CTRGladman;\n\t}());\n\n\n\n\n\treturn CryptoJS.mode.CTRGladman;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Counter block mode.\n\t */\n\tCryptoJS.mode.CTR = (function () {\n\t var CTR = CryptoJS.lib.BlockCipherMode.extend();\n\n\t var Encryptor = CTR.Encryptor = CTR.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher\n\t var blockSize = cipher.blockSize;\n\t var iv = this._iv;\n\t var counter = this._counter;\n\n\t // Generate keystream\n\t if (iv) {\n\t counter = this._counter = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t }\n\t var keystream = counter.slice(0);\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Increment counter\n\t counter[blockSize - 1] = (counter[blockSize - 1] + 1) | 0\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\t });\n\n\t CTR.Decryptor = Encryptor;\n\n\t return CTR;\n\t}());\n\n\n\treturn CryptoJS.mode.CTR;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Electronic Codebook block mode.\n\t */\n\tCryptoJS.mode.ECB = (function () {\n\t var ECB = CryptoJS.lib.BlockCipherMode.extend();\n\n\t ECB.Encryptor = ECB.extend({\n\t processBlock: function (words, offset) {\n\t this._cipher.encryptBlock(words, offset);\n\t }\n\t });\n\n\t ECB.Decryptor = ECB.extend({\n\t processBlock: function (words, offset) {\n\t this._cipher.decryptBlock(words, offset);\n\t }\n\t });\n\n\t return ECB;\n\t}());\n\n\n\treturn CryptoJS.mode.ECB;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Output Feedback block mode.\n\t */\n\tCryptoJS.mode.OFB = (function () {\n\t var OFB = CryptoJS.lib.BlockCipherMode.extend();\n\n\t var Encryptor = OFB.Encryptor = OFB.extend({\n\t processBlock: function (words, offset) {\n\t // Shortcuts\n\t var cipher = this._cipher\n\t var blockSize = cipher.blockSize;\n\t var iv = this._iv;\n\t var keystream = this._keystream;\n\n\t // Generate keystream\n\t if (iv) {\n\t keystream = this._keystream = iv.slice(0);\n\n\t // Remove IV for subsequent blocks\n\t this._iv = undefined;\n\t }\n\t cipher.encryptBlock(keystream, 0);\n\n\t // Encrypt\n\t for (var i = 0; i < blockSize; i++) {\n\t words[offset + i] ^= keystream[i];\n\t }\n\t }\n\t });\n\n\t OFB.Decryptor = Encryptor;\n\n\t return OFB;\n\t}());\n\n\n\treturn CryptoJS.mode.OFB;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * ANSI X.923 padding strategy.\n\t */\n\tCryptoJS.pad.AnsiX923 = {\n\t pad: function (data, blockSize) {\n\t // Shortcuts\n\t var dataSigBytes = data.sigBytes;\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count padding bytes\n\t var nPaddingBytes = blockSizeBytes - dataSigBytes % blockSizeBytes;\n\n\t // Compute last byte position\n\t var lastBytePos = dataSigBytes + nPaddingBytes - 1;\n\n\t // Pad\n\t data.clamp();\n\t data.words[lastBytePos >>> 2] |= nPaddingBytes << (24 - (lastBytePos % 4) * 8);\n\t data.sigBytes += nPaddingBytes;\n\t },\n\n\t unpad: function (data) {\n\t // Get number of padding bytes from last byte\n\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t // Remove padding\n\t data.sigBytes -= nPaddingBytes;\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.Ansix923;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * ISO 10126 padding strategy.\n\t */\n\tCryptoJS.pad.Iso10126 = {\n\t pad: function (data, blockSize) {\n\t // Shortcut\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Count padding bytes\n\t var nPaddingBytes = blockSizeBytes - data.sigBytes % blockSizeBytes;\n\n\t // Pad\n\t data.concat(CryptoJS.lib.WordArray.random(nPaddingBytes - 1)).\n\t concat(CryptoJS.lib.WordArray.create([nPaddingBytes << 24], 1));\n\t },\n\n\t unpad: function (data) {\n\t // Get number of padding bytes from last byte\n\t var nPaddingBytes = data.words[(data.sigBytes - 1) >>> 2] & 0xff;\n\n\t // Remove padding\n\t data.sigBytes -= nPaddingBytes;\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.Iso10126;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * ISO/IEC 9797-1 Padding Method 2.\n\t */\n\tCryptoJS.pad.Iso97971 = {\n\t pad: function (data, blockSize) {\n\t // Add 0x80 byte\n\t data.concat(CryptoJS.lib.WordArray.create([0x80000000], 1));\n\n\t // Zero pad the rest\n\t CryptoJS.pad.ZeroPadding.pad(data, blockSize);\n\t },\n\n\t unpad: function (data) {\n\t // Remove zero padding\n\t CryptoJS.pad.ZeroPadding.unpad(data);\n\n\t // Remove one more byte -- the 0x80 byte\n\t data.sigBytes--;\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.Iso97971;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * A noop padding strategy.\n\t */\n\tCryptoJS.pad.NoPadding = {\n\t pad: function () {\n\t },\n\n\t unpad: function () {\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.NoPadding;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/**\n\t * Zero padding strategy.\n\t */\n\tCryptoJS.pad.ZeroPadding = {\n\t pad: function (data, blockSize) {\n\t // Shortcut\n\t var blockSizeBytes = blockSize * 4;\n\n\t // Pad\n\t data.clamp();\n\t data.sigBytes += blockSizeBytes - ((data.sigBytes % blockSizeBytes) || blockSizeBytes);\n\t },\n\n\t unpad: function (data) {\n\t // Shortcut\n\t var dataWords = data.words;\n\n\t // Unpad\n\t var i = data.sigBytes - 1;\n\t for (var i = data.sigBytes - 1; i >= 0; i--) {\n\t if (((dataWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff)) {\n\t data.sigBytes = i + 1;\n\t break;\n\t }\n\t }\n\t }\n\t};\n\n\n\treturn CryptoJS.pad.ZeroPadding;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha1\"), require(\"./hmac\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha1\", \"./hmac\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var SHA1 = C_algo.SHA1;\n\t var HMAC = C_algo.HMAC;\n\n\t /**\n\t * Password-Based Key Derivation Function 2 algorithm.\n\t */\n\t var PBKDF2 = C_algo.PBKDF2 = Base.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n\t * @property {Hasher} hasher The hasher to use. Default: SHA1\n\t * @property {number} iterations The number of iterations to perform. Default: 1\n\t */\n\t cfg: Base.extend({\n\t keySize: 128/32,\n\t hasher: SHA1,\n\t iterations: 1\n\t }),\n\n\t /**\n\t * Initializes a newly created key derivation function.\n\t *\n\t * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n\t *\n\t * @example\n\t *\n\t * var kdf = CryptoJS.algo.PBKDF2.create();\n\t * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8 });\n\t * var kdf = CryptoJS.algo.PBKDF2.create({ keySize: 8, iterations: 1000 });\n\t */\n\t init: function (cfg) {\n\t this.cfg = this.cfg.extend(cfg);\n\t },\n\n\t /**\n\t * Computes the Password-Based Key Derivation Function 2.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @example\n\t *\n\t * var key = kdf.compute(password, salt);\n\t */\n\t compute: function (password, salt) {\n\t // Shortcut\n\t var cfg = this.cfg;\n\n\t // Init HMAC\n\t var hmac = HMAC.create(cfg.hasher, password);\n\n\t // Initial values\n\t var derivedKey = WordArray.create();\n\t var blockIndex = WordArray.create([0x00000001]);\n\n\t // Shortcuts\n\t var derivedKeyWords = derivedKey.words;\n\t var blockIndexWords = blockIndex.words;\n\t var keySize = cfg.keySize;\n\t var iterations = cfg.iterations;\n\n\t // Generate key\n\t while (derivedKeyWords.length < keySize) {\n\t var block = hmac.update(salt).finalize(blockIndex);\n\t hmac.reset();\n\n\t // Shortcuts\n\t var blockWords = block.words;\n\t var blockWordsLength = blockWords.length;\n\n\t // Iterations\n\t var intermediate = block;\n\t for (var i = 1; i < iterations; i++) {\n\t intermediate = hmac.finalize(intermediate);\n\t hmac.reset();\n\n\t // Shortcut\n\t var intermediateWords = intermediate.words;\n\n\t // XOR intermediate with block\n\t for (var j = 0; j < blockWordsLength; j++) {\n\t blockWords[j] ^= intermediateWords[j];\n\t }\n\t }\n\n\t derivedKey.concat(block);\n\t blockIndexWords[0]++;\n\t }\n\t derivedKey.sigBytes = keySize * 4;\n\n\t return derivedKey;\n\t }\n\t });\n\n\t /**\n\t * Computes the Password-Based Key Derivation Function 2.\n\t *\n\t * @param {WordArray|string} password The password.\n\t * @param {WordArray|string} salt A salt.\n\t * @param {Object} cfg (Optional) The configuration options to use for this computation.\n\t *\n\t * @return {WordArray} The derived key.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var key = CryptoJS.PBKDF2(password, salt);\n\t * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8 });\n\t * var key = CryptoJS.PBKDF2(password, salt, { keySize: 8, iterations: 1000 });\n\t */\n\t C.PBKDF2 = function (password, salt, cfg) {\n\t return PBKDF2.create(cfg).compute(password, salt);\n\t };\n\t}());\n\n\n\treturn CryptoJS.PBKDF2;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var StreamCipher = C_lib.StreamCipher;\n\t var C_algo = C.algo;\n\n\t // Reusable objects\n\t var S = [];\n\t var C_ = [];\n\t var G = [];\n\n\t /**\n\t * Rabbit stream cipher algorithm.\n\t *\n\t * This is a legacy version that neglected to convert the key to little-endian.\n\t * This error doesn't affect the cipher's security,\n\t * but it does affect its compatibility with other implementations.\n\t */\n\t var RabbitLegacy = C_algo.RabbitLegacy = StreamCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var K = this._key.words;\n\t var iv = this.cfg.iv;\n\n\t // Generate initial state values\n\t var X = this._X = [\n\t K[0], (K[3] << 16) | (K[2] >>> 16),\n\t K[1], (K[0] << 16) | (K[3] >>> 16),\n\t K[2], (K[1] << 16) | (K[0] >>> 16),\n\t K[3], (K[2] << 16) | (K[1] >>> 16)\n\t ];\n\n\t // Generate initial counter values\n\t var C = this._C = [\n\t (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff),\n\t (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff),\n\t (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff),\n\t (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)\n\t ];\n\n\t // Carry bit\n\t this._b = 0;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\n\t // Modify the counters\n\t for (var i = 0; i < 8; i++) {\n\t C[i] ^= X[(i + 4) & 7];\n\t }\n\n\t // IV setup\n\t if (iv) {\n\t // Shortcuts\n\t var IV = iv.words;\n\t var IV_0 = IV[0];\n\t var IV_1 = IV[1];\n\n\t // Generate four subvectors\n\t var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);\n\t var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);\n\t var i1 = (i0 >>> 16) | (i2 & 0xffff0000);\n\t var i3 = (i2 << 16) | (i0 & 0x0000ffff);\n\n\t // Modify counter values\n\t C[0] ^= i0;\n\t C[1] ^= i1;\n\t C[2] ^= i2;\n\t C[3] ^= i3;\n\t C[4] ^= i0;\n\t C[5] ^= i1;\n\t C[6] ^= i2;\n\t C[7] ^= i3;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\t }\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var X = this._X;\n\n\t // Iterate the system\n\t nextState.call(this);\n\n\t // Generate four keystream words\n\t S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);\n\t S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);\n\t S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);\n\t S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);\n\n\t for (var i = 0; i < 4; i++) {\n\t // Swap endian\n\t S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) |\n\t (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00);\n\n\t // Encrypt\n\t M[offset + i] ^= S[i];\n\t }\n\t },\n\n\t blockSize: 128/32,\n\n\t ivSize: 64/32\n\t });\n\n\t function nextState() {\n\t // Shortcuts\n\t var X = this._X;\n\t var C = this._C;\n\n\t // Save old counter values\n\t for (var i = 0; i < 8; i++) {\n\t C_[i] = C[i];\n\t }\n\n\t // Calculate new counter values\n\t C[0] = (C[0] + 0x4d34d34d + this._b) | 0;\n\t C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0;\n\t C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0;\n\t C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0;\n\t C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0;\n\t C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0;\n\t C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0;\n\t C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0;\n\t this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0;\n\n\t // Calculate the g-values\n\t for (var i = 0; i < 8; i++) {\n\t var gx = X[i] + C[i];\n\n\t // Construct high and low argument for squaring\n\t var ga = gx & 0xffff;\n\t var gb = gx >>> 16;\n\n\t // Calculate high and low result of squaring\n\t var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;\n\t var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);\n\n\t // High XOR low\n\t G[i] = gh ^ gl;\n\t }\n\n\t // Calculate new state values\n\t X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;\n\t X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0;\n\t X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;\n\t X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0;\n\t X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;\n\t X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0;\n\t X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;\n\t X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.RabbitLegacy.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.RabbitLegacy.decrypt(ciphertext, key, cfg);\n\t */\n\t C.RabbitLegacy = StreamCipher._createHelper(RabbitLegacy);\n\t}());\n\n\n\treturn CryptoJS.RabbitLegacy;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var StreamCipher = C_lib.StreamCipher;\n\t var C_algo = C.algo;\n\n\t // Reusable objects\n\t var S = [];\n\t var C_ = [];\n\t var G = [];\n\n\t /**\n\t * Rabbit stream cipher algorithm\n\t */\n\t var Rabbit = C_algo.Rabbit = StreamCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var K = this._key.words;\n\t var iv = this.cfg.iv;\n\n\t // Swap endian\n\t for (var i = 0; i < 4; i++) {\n\t K[i] = (((K[i] << 8) | (K[i] >>> 24)) & 0x00ff00ff) |\n\t (((K[i] << 24) | (K[i] >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Generate initial state values\n\t var X = this._X = [\n\t K[0], (K[3] << 16) | (K[2] >>> 16),\n\t K[1], (K[0] << 16) | (K[3] >>> 16),\n\t K[2], (K[1] << 16) | (K[0] >>> 16),\n\t K[3], (K[2] << 16) | (K[1] >>> 16)\n\t ];\n\n\t // Generate initial counter values\n\t var C = this._C = [\n\t (K[2] << 16) | (K[2] >>> 16), (K[0] & 0xffff0000) | (K[1] & 0x0000ffff),\n\t (K[3] << 16) | (K[3] >>> 16), (K[1] & 0xffff0000) | (K[2] & 0x0000ffff),\n\t (K[0] << 16) | (K[0] >>> 16), (K[2] & 0xffff0000) | (K[3] & 0x0000ffff),\n\t (K[1] << 16) | (K[1] >>> 16), (K[3] & 0xffff0000) | (K[0] & 0x0000ffff)\n\t ];\n\n\t // Carry bit\n\t this._b = 0;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\n\t // Modify the counters\n\t for (var i = 0; i < 8; i++) {\n\t C[i] ^= X[(i + 4) & 7];\n\t }\n\n\t // IV setup\n\t if (iv) {\n\t // Shortcuts\n\t var IV = iv.words;\n\t var IV_0 = IV[0];\n\t var IV_1 = IV[1];\n\n\t // Generate four subvectors\n\t var i0 = (((IV_0 << 8) | (IV_0 >>> 24)) & 0x00ff00ff) | (((IV_0 << 24) | (IV_0 >>> 8)) & 0xff00ff00);\n\t var i2 = (((IV_1 << 8) | (IV_1 >>> 24)) & 0x00ff00ff) | (((IV_1 << 24) | (IV_1 >>> 8)) & 0xff00ff00);\n\t var i1 = (i0 >>> 16) | (i2 & 0xffff0000);\n\t var i3 = (i2 << 16) | (i0 & 0x0000ffff);\n\n\t // Modify counter values\n\t C[0] ^= i0;\n\t C[1] ^= i1;\n\t C[2] ^= i2;\n\t C[3] ^= i3;\n\t C[4] ^= i0;\n\t C[5] ^= i1;\n\t C[6] ^= i2;\n\t C[7] ^= i3;\n\n\t // Iterate the system four times\n\t for (var i = 0; i < 4; i++) {\n\t nextState.call(this);\n\t }\n\t }\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var X = this._X;\n\n\t // Iterate the system\n\t nextState.call(this);\n\n\t // Generate four keystream words\n\t S[0] = X[0] ^ (X[5] >>> 16) ^ (X[3] << 16);\n\t S[1] = X[2] ^ (X[7] >>> 16) ^ (X[5] << 16);\n\t S[2] = X[4] ^ (X[1] >>> 16) ^ (X[7] << 16);\n\t S[3] = X[6] ^ (X[3] >>> 16) ^ (X[1] << 16);\n\n\t for (var i = 0; i < 4; i++) {\n\t // Swap endian\n\t S[i] = (((S[i] << 8) | (S[i] >>> 24)) & 0x00ff00ff) |\n\t (((S[i] << 24) | (S[i] >>> 8)) & 0xff00ff00);\n\n\t // Encrypt\n\t M[offset + i] ^= S[i];\n\t }\n\t },\n\n\t blockSize: 128/32,\n\n\t ivSize: 64/32\n\t });\n\n\t function nextState() {\n\t // Shortcuts\n\t var X = this._X;\n\t var C = this._C;\n\n\t // Save old counter values\n\t for (var i = 0; i < 8; i++) {\n\t C_[i] = C[i];\n\t }\n\n\t // Calculate new counter values\n\t C[0] = (C[0] + 0x4d34d34d + this._b) | 0;\n\t C[1] = (C[1] + 0xd34d34d3 + ((C[0] >>> 0) < (C_[0] >>> 0) ? 1 : 0)) | 0;\n\t C[2] = (C[2] + 0x34d34d34 + ((C[1] >>> 0) < (C_[1] >>> 0) ? 1 : 0)) | 0;\n\t C[3] = (C[3] + 0x4d34d34d + ((C[2] >>> 0) < (C_[2] >>> 0) ? 1 : 0)) | 0;\n\t C[4] = (C[4] + 0xd34d34d3 + ((C[3] >>> 0) < (C_[3] >>> 0) ? 1 : 0)) | 0;\n\t C[5] = (C[5] + 0x34d34d34 + ((C[4] >>> 0) < (C_[4] >>> 0) ? 1 : 0)) | 0;\n\t C[6] = (C[6] + 0x4d34d34d + ((C[5] >>> 0) < (C_[5] >>> 0) ? 1 : 0)) | 0;\n\t C[7] = (C[7] + 0xd34d34d3 + ((C[6] >>> 0) < (C_[6] >>> 0) ? 1 : 0)) | 0;\n\t this._b = (C[7] >>> 0) < (C_[7] >>> 0) ? 1 : 0;\n\n\t // Calculate the g-values\n\t for (var i = 0; i < 8; i++) {\n\t var gx = X[i] + C[i];\n\n\t // Construct high and low argument for squaring\n\t var ga = gx & 0xffff;\n\t var gb = gx >>> 16;\n\n\t // Calculate high and low result of squaring\n\t var gh = ((((ga * ga) >>> 17) + ga * gb) >>> 15) + gb * gb;\n\t var gl = (((gx & 0xffff0000) * gx) | 0) + (((gx & 0x0000ffff) * gx) | 0);\n\n\t // High XOR low\n\t G[i] = gh ^ gl;\n\t }\n\n\t // Calculate new state values\n\t X[0] = (G[0] + ((G[7] << 16) | (G[7] >>> 16)) + ((G[6] << 16) | (G[6] >>> 16))) | 0;\n\t X[1] = (G[1] + ((G[0] << 8) | (G[0] >>> 24)) + G[7]) | 0;\n\t X[2] = (G[2] + ((G[1] << 16) | (G[1] >>> 16)) + ((G[0] << 16) | (G[0] >>> 16))) | 0;\n\t X[3] = (G[3] + ((G[2] << 8) | (G[2] >>> 24)) + G[1]) | 0;\n\t X[4] = (G[4] + ((G[3] << 16) | (G[3] >>> 16)) + ((G[2] << 16) | (G[2] >>> 16))) | 0;\n\t X[5] = (G[5] + ((G[4] << 8) | (G[4] >>> 24)) + G[3]) | 0;\n\t X[6] = (G[6] + ((G[5] << 16) | (G[5] >>> 16)) + ((G[4] << 16) | (G[4] >>> 16))) | 0;\n\t X[7] = (G[7] + ((G[6] << 8) | (G[6] >>> 24)) + G[5]) | 0;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.Rabbit.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.Rabbit.decrypt(ciphertext, key, cfg);\n\t */\n\t C.Rabbit = StreamCipher._createHelper(Rabbit);\n\t}());\n\n\n\treturn CryptoJS.Rabbit;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var StreamCipher = C_lib.StreamCipher;\n\t var C_algo = C.algo;\n\n\t /**\n\t * RC4 stream cipher algorithm.\n\t */\n\t var RC4 = C_algo.RC4 = StreamCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\t var keySigBytes = key.sigBytes;\n\n\t // Init sbox\n\t var S = this._S = [];\n\t for (var i = 0; i < 256; i++) {\n\t S[i] = i;\n\t }\n\n\t // Key setup\n\t for (var i = 0, j = 0; i < 256; i++) {\n\t var keyByteIndex = i % keySigBytes;\n\t var keyByte = (keyWords[keyByteIndex >>> 2] >>> (24 - (keyByteIndex % 4) * 8)) & 0xff;\n\n\t j = (j + S[i] + keyByte) % 256;\n\n\t // Swap\n\t var t = S[i];\n\t S[i] = S[j];\n\t S[j] = t;\n\t }\n\n\t // Counters\n\t this._i = this._j = 0;\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t M[offset] ^= generateKeystreamWord.call(this);\n\t },\n\n\t keySize: 256/32,\n\n\t ivSize: 0\n\t });\n\n\t function generateKeystreamWord() {\n\t // Shortcuts\n\t var S = this._S;\n\t var i = this._i;\n\t var j = this._j;\n\n\t // Generate keystream word\n\t var keystreamWord = 0;\n\t for (var n = 0; n < 4; n++) {\n\t i = (i + 1) % 256;\n\t j = (j + S[i]) % 256;\n\n\t // Swap\n\t var t = S[i];\n\t S[i] = S[j];\n\t S[j] = t;\n\n\t keystreamWord |= S[(S[i] + S[j]) % 256] << (24 - n * 8);\n\t }\n\n\t // Update counters\n\t this._i = i;\n\t this._j = j;\n\n\t return keystreamWord;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.RC4.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.RC4.decrypt(ciphertext, key, cfg);\n\t */\n\t C.RC4 = StreamCipher._createHelper(RC4);\n\n\t /**\n\t * Modified RC4 stream cipher algorithm.\n\t */\n\t var RC4Drop = C_algo.RC4Drop = RC4.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} drop The number of keystream words to drop. Default 192\n\t */\n\t cfg: RC4.cfg.extend({\n\t drop: 192\n\t }),\n\n\t _doReset: function () {\n\t RC4._doReset.call(this);\n\n\t // Drop\n\t for (var i = this.cfg.drop; i > 0; i--) {\n\t generateKeystreamWord.call(this);\n\t }\n\t }\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.RC4Drop.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.RC4Drop.decrypt(ciphertext, key, cfg);\n\t */\n\t C.RC4Drop = StreamCipher._createHelper(RC4Drop);\n\t}());\n\n\n\treturn CryptoJS.RC4;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t/** @preserve\n\t(c) 2012 by Cédric Mesnil. All rights reserved.\n\n\tRedistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\n\n\t - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.\n\t - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.\n\n\tTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\t*/\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Constants table\n\t var _zl = WordArray.create([\n\t 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n\t 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n\t 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n\t 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n\t 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13]);\n\t var _zr = WordArray.create([\n\t 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n\t 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n\t 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n\t 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n\t 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11]);\n\t var _sl = WordArray.create([\n\t 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n\t 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n\t 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n\t 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n\t 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6 ]);\n\t var _sr = WordArray.create([\n\t 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n\t 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n\t 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n\t 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n\t 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11 ]);\n\n\t var _hl = WordArray.create([ 0x00000000, 0x5A827999, 0x6ED9EBA1, 0x8F1BBCDC, 0xA953FD4E]);\n\t var _hr = WordArray.create([ 0x50A28BE6, 0x5C4DD124, 0x6D703EF3, 0x7A6D76E9, 0x00000000]);\n\n\t /**\n\t * RIPEMD160 hash algorithm.\n\t */\n\t var RIPEMD160 = C_algo.RIPEMD160 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = WordArray.create([0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\n\t // Swap endian\n\t for (var i = 0; i < 16; i++) {\n\t // Shortcuts\n\t var offset_i = offset + i;\n\t var M_offset_i = M[offset_i];\n\n\t // Swap\n\t M[offset_i] = (\n\t (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |\n\t (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)\n\t );\n\t }\n\t // Shortcut\n\t var H = this._hash.words;\n\t var hl = _hl.words;\n\t var hr = _hr.words;\n\t var zl = _zl.words;\n\t var zr = _zr.words;\n\t var sl = _sl.words;\n\t var sr = _sr.words;\n\n\t // Working variables\n\t var al, bl, cl, dl, el;\n\t var ar, br, cr, dr, er;\n\n\t ar = al = H[0];\n\t br = bl = H[1];\n\t cr = cl = H[2];\n\t dr = dl = H[3];\n\t er = el = H[4];\n\t // Computation\n\t var t;\n\t for (var i = 0; i < 80; i += 1) {\n\t t = (al + M[offset+zl[i]])|0;\n\t if (i<16){\n\t\t t += f1(bl,cl,dl) + hl[0];\n\t } else if (i<32) {\n\t\t t += f2(bl,cl,dl) + hl[1];\n\t } else if (i<48) {\n\t\t t += f3(bl,cl,dl) + hl[2];\n\t } else if (i<64) {\n\t\t t += f4(bl,cl,dl) + hl[3];\n\t } else {// if (i<80) {\n\t\t t += f5(bl,cl,dl) + hl[4];\n\t }\n\t t = t|0;\n\t t = rotl(t,sl[i]);\n\t t = (t+el)|0;\n\t al = el;\n\t el = dl;\n\t dl = rotl(cl, 10);\n\t cl = bl;\n\t bl = t;\n\n\t t = (ar + M[offset+zr[i]])|0;\n\t if (i<16){\n\t\t t += f5(br,cr,dr) + hr[0];\n\t } else if (i<32) {\n\t\t t += f4(br,cr,dr) + hr[1];\n\t } else if (i<48) {\n\t\t t += f3(br,cr,dr) + hr[2];\n\t } else if (i<64) {\n\t\t t += f2(br,cr,dr) + hr[3];\n\t } else {// if (i<80) {\n\t\t t += f1(br,cr,dr) + hr[4];\n\t }\n\t t = t|0;\n\t t = rotl(t,sr[i]) ;\n\t t = (t+er)|0;\n\t ar = er;\n\t er = dr;\n\t dr = rotl(cr, 10);\n\t cr = br;\n\t br = t;\n\t }\n\t // Intermediate hash value\n\t t = (H[1] + cl + dr)|0;\n\t H[1] = (H[2] + dl + er)|0;\n\t H[2] = (H[3] + el + ar)|0;\n\t H[3] = (H[4] + al + br)|0;\n\t H[4] = (H[0] + bl + cr)|0;\n\t H[0] = t;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = (\n\t (((nBitsTotal << 8) | (nBitsTotal >>> 24)) & 0x00ff00ff) |\n\t (((nBitsTotal << 24) | (nBitsTotal >>> 8)) & 0xff00ff00)\n\t );\n\t data.sigBytes = (dataWords.length + 1) * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Shortcuts\n\t var hash = this._hash;\n\t var H = hash.words;\n\n\t // Swap endian\n\t for (var i = 0; i < 5; i++) {\n\t // Shortcut\n\t var H_i = H[i];\n\n\t // Swap\n\t H[i] = (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |\n\t (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00);\n\t }\n\n\t // Return final computed hash\n\t return hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\n\t function f1(x, y, z) {\n\t return ((x) ^ (y) ^ (z));\n\n\t }\n\n\t function f2(x, y, z) {\n\t return (((x)&(y)) | ((~x)&(z)));\n\t }\n\n\t function f3(x, y, z) {\n\t return (((x) | (~(y))) ^ (z));\n\t }\n\n\t function f4(x, y, z) {\n\t return (((x) & (z)) | ((y)&(~(z))));\n\t }\n\n\t function f5(x, y, z) {\n\t return ((x) ^ ((y) |(~(z))));\n\n\t }\n\n\t function rotl(x,n) {\n\t return (x<>>(32-n));\n\t }\n\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.RIPEMD160('message');\n\t * var hash = CryptoJS.RIPEMD160(wordArray);\n\t */\n\t C.RIPEMD160 = Hasher._createHelper(RIPEMD160);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacRIPEMD160(message, key);\n\t */\n\t C.HmacRIPEMD160 = Hasher._createHmacHelper(RIPEMD160);\n\t}(Math));\n\n\n\treturn CryptoJS.RIPEMD160;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Reusable object\n\t var W = [];\n\n\t /**\n\t * SHA-1 hash algorithm.\n\t */\n\t var SHA1 = C_algo.SHA1 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0x67452301, 0xefcdab89,\n\t 0x98badcfe, 0x10325476,\n\t 0xc3d2e1f0\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var H = this._hash.words;\n\n\t // Working variables\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\t var e = H[4];\n\n\t // Computation\n\t for (var i = 0; i < 80; i++) {\n\t if (i < 16) {\n\t W[i] = M[offset + i] | 0;\n\t } else {\n\t var n = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16];\n\t W[i] = (n << 1) | (n >>> 31);\n\t }\n\n\t var t = ((a << 5) | (a >>> 27)) + e + W[i];\n\t if (i < 20) {\n\t t += ((b & c) | (~b & d)) + 0x5a827999;\n\t } else if (i < 40) {\n\t t += (b ^ c ^ d) + 0x6ed9eba1;\n\t } else if (i < 60) {\n\t t += ((b & c) | (b & d) | (c & d)) - 0x70e44324;\n\t } else /* if (i < 80) */ {\n\t t += (b ^ c ^ d) - 0x359d3e2a;\n\t }\n\n\t e = d;\n\t d = c;\n\t c = (b << 30) | (b >>> 2);\n\t b = a;\n\t a = t;\n\t }\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t H[4] = (H[4] + e) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Return final computed hash\n\t return this._hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA1('message');\n\t * var hash = CryptoJS.SHA1(wordArray);\n\t */\n\t C.SHA1 = Hasher._createHelper(SHA1);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA1(message, key);\n\t */\n\t C.HmacSHA1 = Hasher._createHmacHelper(SHA1);\n\t}());\n\n\n\treturn CryptoJS.SHA1;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./sha256\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./sha256\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var C_algo = C.algo;\n\t var SHA256 = C_algo.SHA256;\n\n\t /**\n\t * SHA-224 hash algorithm.\n\t */\n\t var SHA224 = C_algo.SHA224 = SHA256.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init([\n\t 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n\t 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4\n\t ]);\n\t },\n\n\t _doFinalize: function () {\n\t var hash = SHA256._doFinalize.call(this);\n\n\t hash.sigBytes -= 4;\n\n\t return hash;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA224('message');\n\t * var hash = CryptoJS.SHA224(wordArray);\n\t */\n\t C.SHA224 = SHA256._createHelper(SHA224);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA224(message, key);\n\t */\n\t C.HmacSHA224 = SHA256._createHmacHelper(SHA224);\n\t}());\n\n\n\treturn CryptoJS.SHA224;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_algo = C.algo;\n\n\t // Initialization and round constants tables\n\t var H = [];\n\t var K = [];\n\n\t // Compute constants\n\t (function () {\n\t function isPrime(n) {\n\t var sqrtN = Math.sqrt(n);\n\t for (var factor = 2; factor <= sqrtN; factor++) {\n\t if (!(n % factor)) {\n\t return false;\n\t }\n\t }\n\n\t return true;\n\t }\n\n\t function getFractionalBits(n) {\n\t return ((n - (n | 0)) * 0x100000000) | 0;\n\t }\n\n\t var n = 2;\n\t var nPrime = 0;\n\t while (nPrime < 64) {\n\t if (isPrime(n)) {\n\t if (nPrime < 8) {\n\t H[nPrime] = getFractionalBits(Math.pow(n, 1 / 2));\n\t }\n\t K[nPrime] = getFractionalBits(Math.pow(n, 1 / 3));\n\n\t nPrime++;\n\t }\n\n\t n++;\n\t }\n\t }());\n\n\t // Reusable object\n\t var W = [];\n\n\t /**\n\t * SHA-256 hash algorithm.\n\t */\n\t var SHA256 = C_algo.SHA256 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new WordArray.init(H.slice(0));\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcut\n\t var H = this._hash.words;\n\n\t // Working variables\n\t var a = H[0];\n\t var b = H[1];\n\t var c = H[2];\n\t var d = H[3];\n\t var e = H[4];\n\t var f = H[5];\n\t var g = H[6];\n\t var h = H[7];\n\n\t // Computation\n\t for (var i = 0; i < 64; i++) {\n\t if (i < 16) {\n\t W[i] = M[offset + i] | 0;\n\t } else {\n\t var gamma0x = W[i - 15];\n\t var gamma0 = ((gamma0x << 25) | (gamma0x >>> 7)) ^\n\t ((gamma0x << 14) | (gamma0x >>> 18)) ^\n\t (gamma0x >>> 3);\n\n\t var gamma1x = W[i - 2];\n\t var gamma1 = ((gamma1x << 15) | (gamma1x >>> 17)) ^\n\t ((gamma1x << 13) | (gamma1x >>> 19)) ^\n\t (gamma1x >>> 10);\n\n\t W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16];\n\t }\n\n\t var ch = (e & f) ^ (~e & g);\n\t var maj = (a & b) ^ (a & c) ^ (b & c);\n\n\t var sigma0 = ((a << 30) | (a >>> 2)) ^ ((a << 19) | (a >>> 13)) ^ ((a << 10) | (a >>> 22));\n\t var sigma1 = ((e << 26) | (e >>> 6)) ^ ((e << 21) | (e >>> 11)) ^ ((e << 7) | (e >>> 25));\n\n\t var t1 = h + sigma1 + ch + K[i] + W[i];\n\t var t2 = sigma0 + maj;\n\n\t h = g;\n\t g = f;\n\t f = e;\n\t e = (d + t1) | 0;\n\t d = c;\n\t c = b;\n\t b = a;\n\t a = (t1 + t2) | 0;\n\t }\n\n\t // Intermediate hash value\n\t H[0] = (H[0] + a) | 0;\n\t H[1] = (H[1] + b) | 0;\n\t H[2] = (H[2] + c) | 0;\n\t H[3] = (H[3] + d) | 0;\n\t H[4] = (H[4] + e) | 0;\n\t H[5] = (H[5] + f) | 0;\n\t H[6] = (H[6] + g) | 0;\n\t H[7] = (H[7] + h) | 0;\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Return final computed hash\n\t return this._hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA256('message');\n\t * var hash = CryptoJS.SHA256(wordArray);\n\t */\n\t C.SHA256 = Hasher._createHelper(SHA256);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA256(message, key);\n\t */\n\t C.HmacSHA256 = Hasher._createHmacHelper(SHA256);\n\t}(Math));\n\n\n\treturn CryptoJS.SHA256;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (Math) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var Hasher = C_lib.Hasher;\n\t var C_x64 = C.x64;\n\t var X64Word = C_x64.Word;\n\t var C_algo = C.algo;\n\n\t // Constants tables\n\t var RHO_OFFSETS = [];\n\t var PI_INDEXES = [];\n\t var ROUND_CONSTANTS = [];\n\n\t // Compute Constants\n\t (function () {\n\t // Compute rho offset constants\n\t var x = 1, y = 0;\n\t for (var t = 0; t < 24; t++) {\n\t RHO_OFFSETS[x + 5 * y] = ((t + 1) * (t + 2) / 2) % 64;\n\n\t var newX = y % 5;\n\t var newY = (2 * x + 3 * y) % 5;\n\t x = newX;\n\t y = newY;\n\t }\n\n\t // Compute pi index constants\n\t for (var x = 0; x < 5; x++) {\n\t for (var y = 0; y < 5; y++) {\n\t PI_INDEXES[x + 5 * y] = y + ((2 * x + 3 * y) % 5) * 5;\n\t }\n\t }\n\n\t // Compute round constants\n\t var LFSR = 0x01;\n\t for (var i = 0; i < 24; i++) {\n\t var roundConstantMsw = 0;\n\t var roundConstantLsw = 0;\n\n\t for (var j = 0; j < 7; j++) {\n\t if (LFSR & 0x01) {\n\t var bitPosition = (1 << j) - 1;\n\t if (bitPosition < 32) {\n\t roundConstantLsw ^= 1 << bitPosition;\n\t } else /* if (bitPosition >= 32) */ {\n\t roundConstantMsw ^= 1 << (bitPosition - 32);\n\t }\n\t }\n\n\t // Compute next LFSR\n\t if (LFSR & 0x80) {\n\t // Primitive polynomial over GF(2): x^8 + x^6 + x^5 + x^4 + 1\n\t LFSR = (LFSR << 1) ^ 0x71;\n\t } else {\n\t LFSR <<= 1;\n\t }\n\t }\n\n\t ROUND_CONSTANTS[i] = X64Word.create(roundConstantMsw, roundConstantLsw);\n\t }\n\t }());\n\n\t // Reusable objects for temporary values\n\t var T = [];\n\t (function () {\n\t for (var i = 0; i < 25; i++) {\n\t T[i] = X64Word.create();\n\t }\n\t }());\n\n\t /**\n\t * SHA-3 hash algorithm.\n\t */\n\t var SHA3 = C_algo.SHA3 = Hasher.extend({\n\t /**\n\t * Configuration options.\n\t *\n\t * @property {number} outputLength\n\t * The desired number of bits in the output hash.\n\t * Only values permitted are: 224, 256, 384, 512.\n\t * Default: 512\n\t */\n\t cfg: Hasher.cfg.extend({\n\t outputLength: 512\n\t }),\n\n\t _doReset: function () {\n\t var state = this._state = []\n\t for (var i = 0; i < 25; i++) {\n\t state[i] = new X64Word.init();\n\t }\n\n\t this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32;\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcuts\n\t var state = this._state;\n\t var nBlockSizeLanes = this.blockSize / 2;\n\n\t // Absorb\n\t for (var i = 0; i < nBlockSizeLanes; i++) {\n\t // Shortcuts\n\t var M2i = M[offset + 2 * i];\n\t var M2i1 = M[offset + 2 * i + 1];\n\n\t // Swap endian\n\t M2i = (\n\t (((M2i << 8) | (M2i >>> 24)) & 0x00ff00ff) |\n\t (((M2i << 24) | (M2i >>> 8)) & 0xff00ff00)\n\t );\n\t M2i1 = (\n\t (((M2i1 << 8) | (M2i1 >>> 24)) & 0x00ff00ff) |\n\t (((M2i1 << 24) | (M2i1 >>> 8)) & 0xff00ff00)\n\t );\n\n\t // Absorb message into state\n\t var lane = state[i];\n\t lane.high ^= M2i1;\n\t lane.low ^= M2i;\n\t }\n\n\t // Rounds\n\t for (var round = 0; round < 24; round++) {\n\t // Theta\n\t for (var x = 0; x < 5; x++) {\n\t // Mix column lanes\n\t var tMsw = 0, tLsw = 0;\n\t for (var y = 0; y < 5; y++) {\n\t var lane = state[x + 5 * y];\n\t tMsw ^= lane.high;\n\t tLsw ^= lane.low;\n\t }\n\n\t // Temporary values\n\t var Tx = T[x];\n\t Tx.high = tMsw;\n\t Tx.low = tLsw;\n\t }\n\t for (var x = 0; x < 5; x++) {\n\t // Shortcuts\n\t var Tx4 = T[(x + 4) % 5];\n\t var Tx1 = T[(x + 1) % 5];\n\t var Tx1Msw = Tx1.high;\n\t var Tx1Lsw = Tx1.low;\n\n\t // Mix surrounding columns\n\t var tMsw = Tx4.high ^ ((Tx1Msw << 1) | (Tx1Lsw >>> 31));\n\t var tLsw = Tx4.low ^ ((Tx1Lsw << 1) | (Tx1Msw >>> 31));\n\t for (var y = 0; y < 5; y++) {\n\t var lane = state[x + 5 * y];\n\t lane.high ^= tMsw;\n\t lane.low ^= tLsw;\n\t }\n\t }\n\n\t // Rho Pi\n\t for (var laneIndex = 1; laneIndex < 25; laneIndex++) {\n\t var tMsw;\n\t var tLsw;\n\n\t // Shortcuts\n\t var lane = state[laneIndex];\n\t var laneMsw = lane.high;\n\t var laneLsw = lane.low;\n\t var rhoOffset = RHO_OFFSETS[laneIndex];\n\n\t // Rotate lanes\n\t if (rhoOffset < 32) {\n\t tMsw = (laneMsw << rhoOffset) | (laneLsw >>> (32 - rhoOffset));\n\t tLsw = (laneLsw << rhoOffset) | (laneMsw >>> (32 - rhoOffset));\n\t } else /* if (rhoOffset >= 32) */ {\n\t tMsw = (laneLsw << (rhoOffset - 32)) | (laneMsw >>> (64 - rhoOffset));\n\t tLsw = (laneMsw << (rhoOffset - 32)) | (laneLsw >>> (64 - rhoOffset));\n\t }\n\n\t // Transpose lanes\n\t var TPiLane = T[PI_INDEXES[laneIndex]];\n\t TPiLane.high = tMsw;\n\t TPiLane.low = tLsw;\n\t }\n\n\t // Rho pi at x = y = 0\n\t var T0 = T[0];\n\t var state0 = state[0];\n\t T0.high = state0.high;\n\t T0.low = state0.low;\n\n\t // Chi\n\t for (var x = 0; x < 5; x++) {\n\t for (var y = 0; y < 5; y++) {\n\t // Shortcuts\n\t var laneIndex = x + 5 * y;\n\t var lane = state[laneIndex];\n\t var TLane = T[laneIndex];\n\t var Tx1Lane = T[((x + 1) % 5) + 5 * y];\n\t var Tx2Lane = T[((x + 2) % 5) + 5 * y];\n\n\t // Mix rows\n\t lane.high = TLane.high ^ (~Tx1Lane.high & Tx2Lane.high);\n\t lane.low = TLane.low ^ (~Tx1Lane.low & Tx2Lane.low);\n\t }\n\t }\n\n\t // Iota\n\t var lane = state[0];\n\t var roundConstant = ROUND_CONSTANTS[round];\n\t lane.high ^= roundConstant.high;\n\t lane.low ^= roundConstant.low;\n\t }\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\t var blockSizeBits = this.blockSize * 32;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x1 << (24 - nBitsLeft % 32);\n\t dataWords[((Math.ceil((nBitsLeft + 1) / blockSizeBits) * blockSizeBits) >>> 5) - 1] |= 0x80;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Shortcuts\n\t var state = this._state;\n\t var outputLengthBytes = this.cfg.outputLength / 8;\n\t var outputLengthLanes = outputLengthBytes / 8;\n\n\t // Squeeze\n\t var hashWords = [];\n\t for (var i = 0; i < outputLengthLanes; i++) {\n\t // Shortcuts\n\t var lane = state[i];\n\t var laneMsw = lane.high;\n\t var laneLsw = lane.low;\n\n\t // Swap endian\n\t laneMsw = (\n\t (((laneMsw << 8) | (laneMsw >>> 24)) & 0x00ff00ff) |\n\t (((laneMsw << 24) | (laneMsw >>> 8)) & 0xff00ff00)\n\t );\n\t laneLsw = (\n\t (((laneLsw << 8) | (laneLsw >>> 24)) & 0x00ff00ff) |\n\t (((laneLsw << 24) | (laneLsw >>> 8)) & 0xff00ff00)\n\t );\n\n\t // Squeeze state to retrieve hash\n\t hashWords.push(laneLsw);\n\t hashWords.push(laneMsw);\n\t }\n\n\t // Return final computed hash\n\t return new WordArray.init(hashWords, outputLengthBytes);\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\n\t var state = clone._state = this._state.slice(0);\n\t for (var i = 0; i < 25; i++) {\n\t state[i] = state[i].clone();\n\t }\n\n\t return clone;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA3('message');\n\t * var hash = CryptoJS.SHA3(wordArray);\n\t */\n\t C.SHA3 = Hasher._createHelper(SHA3);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA3(message, key);\n\t */\n\t C.HmacSHA3 = Hasher._createHmacHelper(SHA3);\n\t}(Math));\n\n\n\treturn CryptoJS.SHA3;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"), require(\"./sha512\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\", \"./sha512\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_x64 = C.x64;\n\t var X64Word = C_x64.Word;\n\t var X64WordArray = C_x64.WordArray;\n\t var C_algo = C.algo;\n\t var SHA512 = C_algo.SHA512;\n\n\t /**\n\t * SHA-384 hash algorithm.\n\t */\n\t var SHA384 = C_algo.SHA384 = SHA512.extend({\n\t _doReset: function () {\n\t this._hash = new X64WordArray.init([\n\t new X64Word.init(0xcbbb9d5d, 0xc1059ed8), new X64Word.init(0x629a292a, 0x367cd507),\n\t new X64Word.init(0x9159015a, 0x3070dd17), new X64Word.init(0x152fecd8, 0xf70e5939),\n\t new X64Word.init(0x67332667, 0xffc00b31), new X64Word.init(0x8eb44a87, 0x68581511),\n\t new X64Word.init(0xdb0c2e0d, 0x64f98fa7), new X64Word.init(0x47b5481d, 0xbefa4fa4)\n\t ]);\n\t },\n\n\t _doFinalize: function () {\n\t var hash = SHA512._doFinalize.call(this);\n\n\t hash.sigBytes -= 16;\n\n\t return hash;\n\t }\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA384('message');\n\t * var hash = CryptoJS.SHA384(wordArray);\n\t */\n\t C.SHA384 = SHA512._createHelper(SHA384);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA384(message, key);\n\t */\n\t C.HmacSHA384 = SHA512._createHmacHelper(SHA384);\n\t}());\n\n\n\treturn CryptoJS.SHA384;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./x64-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./x64-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Hasher = C_lib.Hasher;\n\t var C_x64 = C.x64;\n\t var X64Word = C_x64.Word;\n\t var X64WordArray = C_x64.WordArray;\n\t var C_algo = C.algo;\n\n\t function X64Word_create() {\n\t return X64Word.create.apply(X64Word, arguments);\n\t }\n\n\t // Constants\n\t var K = [\n\t X64Word_create(0x428a2f98, 0xd728ae22), X64Word_create(0x71374491, 0x23ef65cd),\n\t X64Word_create(0xb5c0fbcf, 0xec4d3b2f), X64Word_create(0xe9b5dba5, 0x8189dbbc),\n\t X64Word_create(0x3956c25b, 0xf348b538), X64Word_create(0x59f111f1, 0xb605d019),\n\t X64Word_create(0x923f82a4, 0xaf194f9b), X64Word_create(0xab1c5ed5, 0xda6d8118),\n\t X64Word_create(0xd807aa98, 0xa3030242), X64Word_create(0x12835b01, 0x45706fbe),\n\t X64Word_create(0x243185be, 0x4ee4b28c), X64Word_create(0x550c7dc3, 0xd5ffb4e2),\n\t X64Word_create(0x72be5d74, 0xf27b896f), X64Word_create(0x80deb1fe, 0x3b1696b1),\n\t X64Word_create(0x9bdc06a7, 0x25c71235), X64Word_create(0xc19bf174, 0xcf692694),\n\t X64Word_create(0xe49b69c1, 0x9ef14ad2), X64Word_create(0xefbe4786, 0x384f25e3),\n\t X64Word_create(0x0fc19dc6, 0x8b8cd5b5), X64Word_create(0x240ca1cc, 0x77ac9c65),\n\t X64Word_create(0x2de92c6f, 0x592b0275), X64Word_create(0x4a7484aa, 0x6ea6e483),\n\t X64Word_create(0x5cb0a9dc, 0xbd41fbd4), X64Word_create(0x76f988da, 0x831153b5),\n\t X64Word_create(0x983e5152, 0xee66dfab), X64Word_create(0xa831c66d, 0x2db43210),\n\t X64Word_create(0xb00327c8, 0x98fb213f), X64Word_create(0xbf597fc7, 0xbeef0ee4),\n\t X64Word_create(0xc6e00bf3, 0x3da88fc2), X64Word_create(0xd5a79147, 0x930aa725),\n\t X64Word_create(0x06ca6351, 0xe003826f), X64Word_create(0x14292967, 0x0a0e6e70),\n\t X64Word_create(0x27b70a85, 0x46d22ffc), X64Word_create(0x2e1b2138, 0x5c26c926),\n\t X64Word_create(0x4d2c6dfc, 0x5ac42aed), X64Word_create(0x53380d13, 0x9d95b3df),\n\t X64Word_create(0x650a7354, 0x8baf63de), X64Word_create(0x766a0abb, 0x3c77b2a8),\n\t X64Word_create(0x81c2c92e, 0x47edaee6), X64Word_create(0x92722c85, 0x1482353b),\n\t X64Word_create(0xa2bfe8a1, 0x4cf10364), X64Word_create(0xa81a664b, 0xbc423001),\n\t X64Word_create(0xc24b8b70, 0xd0f89791), X64Word_create(0xc76c51a3, 0x0654be30),\n\t X64Word_create(0xd192e819, 0xd6ef5218), X64Word_create(0xd6990624, 0x5565a910),\n\t X64Word_create(0xf40e3585, 0x5771202a), X64Word_create(0x106aa070, 0x32bbd1b8),\n\t X64Word_create(0x19a4c116, 0xb8d2d0c8), X64Word_create(0x1e376c08, 0x5141ab53),\n\t X64Word_create(0x2748774c, 0xdf8eeb99), X64Word_create(0x34b0bcb5, 0xe19b48a8),\n\t X64Word_create(0x391c0cb3, 0xc5c95a63), X64Word_create(0x4ed8aa4a, 0xe3418acb),\n\t X64Word_create(0x5b9cca4f, 0x7763e373), X64Word_create(0x682e6ff3, 0xd6b2b8a3),\n\t X64Word_create(0x748f82ee, 0x5defb2fc), X64Word_create(0x78a5636f, 0x43172f60),\n\t X64Word_create(0x84c87814, 0xa1f0ab72), X64Word_create(0x8cc70208, 0x1a6439ec),\n\t X64Word_create(0x90befffa, 0x23631e28), X64Word_create(0xa4506ceb, 0xde82bde9),\n\t X64Word_create(0xbef9a3f7, 0xb2c67915), X64Word_create(0xc67178f2, 0xe372532b),\n\t X64Word_create(0xca273ece, 0xea26619c), X64Word_create(0xd186b8c7, 0x21c0c207),\n\t X64Word_create(0xeada7dd6, 0xcde0eb1e), X64Word_create(0xf57d4f7f, 0xee6ed178),\n\t X64Word_create(0x06f067aa, 0x72176fba), X64Word_create(0x0a637dc5, 0xa2c898a6),\n\t X64Word_create(0x113f9804, 0xbef90dae), X64Word_create(0x1b710b35, 0x131c471b),\n\t X64Word_create(0x28db77f5, 0x23047d84), X64Word_create(0x32caab7b, 0x40c72493),\n\t X64Word_create(0x3c9ebe0a, 0x15c9bebc), X64Word_create(0x431d67c4, 0x9c100d4c),\n\t X64Word_create(0x4cc5d4be, 0xcb3e42b6), X64Word_create(0x597f299c, 0xfc657e2a),\n\t X64Word_create(0x5fcb6fab, 0x3ad6faec), X64Word_create(0x6c44198c, 0x4a475817)\n\t ];\n\n\t // Reusable objects\n\t var W = [];\n\t (function () {\n\t for (var i = 0; i < 80; i++) {\n\t W[i] = X64Word_create();\n\t }\n\t }());\n\n\t /**\n\t * SHA-512 hash algorithm.\n\t */\n\t var SHA512 = C_algo.SHA512 = Hasher.extend({\n\t _doReset: function () {\n\t this._hash = new X64WordArray.init([\n\t new X64Word.init(0x6a09e667, 0xf3bcc908), new X64Word.init(0xbb67ae85, 0x84caa73b),\n\t new X64Word.init(0x3c6ef372, 0xfe94f82b), new X64Word.init(0xa54ff53a, 0x5f1d36f1),\n\t new X64Word.init(0x510e527f, 0xade682d1), new X64Word.init(0x9b05688c, 0x2b3e6c1f),\n\t new X64Word.init(0x1f83d9ab, 0xfb41bd6b), new X64Word.init(0x5be0cd19, 0x137e2179)\n\t ]);\n\t },\n\n\t _doProcessBlock: function (M, offset) {\n\t // Shortcuts\n\t var H = this._hash.words;\n\n\t var H0 = H[0];\n\t var H1 = H[1];\n\t var H2 = H[2];\n\t var H3 = H[3];\n\t var H4 = H[4];\n\t var H5 = H[5];\n\t var H6 = H[6];\n\t var H7 = H[7];\n\n\t var H0h = H0.high;\n\t var H0l = H0.low;\n\t var H1h = H1.high;\n\t var H1l = H1.low;\n\t var H2h = H2.high;\n\t var H2l = H2.low;\n\t var H3h = H3.high;\n\t var H3l = H3.low;\n\t var H4h = H4.high;\n\t var H4l = H4.low;\n\t var H5h = H5.high;\n\t var H5l = H5.low;\n\t var H6h = H6.high;\n\t var H6l = H6.low;\n\t var H7h = H7.high;\n\t var H7l = H7.low;\n\n\t // Working variables\n\t var ah = H0h;\n\t var al = H0l;\n\t var bh = H1h;\n\t var bl = H1l;\n\t var ch = H2h;\n\t var cl = H2l;\n\t var dh = H3h;\n\t var dl = H3l;\n\t var eh = H4h;\n\t var el = H4l;\n\t var fh = H5h;\n\t var fl = H5l;\n\t var gh = H6h;\n\t var gl = H6l;\n\t var hh = H7h;\n\t var hl = H7l;\n\n\t // Rounds\n\t for (var i = 0; i < 80; i++) {\n\t var Wil;\n\t var Wih;\n\n\t // Shortcut\n\t var Wi = W[i];\n\n\t // Extend message\n\t if (i < 16) {\n\t Wih = Wi.high = M[offset + i * 2] | 0;\n\t Wil = Wi.low = M[offset + i * 2 + 1] | 0;\n\t } else {\n\t // Gamma0\n\t var gamma0x = W[i - 15];\n\t var gamma0xh = gamma0x.high;\n\t var gamma0xl = gamma0x.low;\n\t var gamma0h = ((gamma0xh >>> 1) | (gamma0xl << 31)) ^ ((gamma0xh >>> 8) | (gamma0xl << 24)) ^ (gamma0xh >>> 7);\n\t var gamma0l = ((gamma0xl >>> 1) | (gamma0xh << 31)) ^ ((gamma0xl >>> 8) | (gamma0xh << 24)) ^ ((gamma0xl >>> 7) | (gamma0xh << 25));\n\n\t // Gamma1\n\t var gamma1x = W[i - 2];\n\t var gamma1xh = gamma1x.high;\n\t var gamma1xl = gamma1x.low;\n\t var gamma1h = ((gamma1xh >>> 19) | (gamma1xl << 13)) ^ ((gamma1xh << 3) | (gamma1xl >>> 29)) ^ (gamma1xh >>> 6);\n\t var gamma1l = ((gamma1xl >>> 19) | (gamma1xh << 13)) ^ ((gamma1xl << 3) | (gamma1xh >>> 29)) ^ ((gamma1xl >>> 6) | (gamma1xh << 26));\n\n\t // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n\t var Wi7 = W[i - 7];\n\t var Wi7h = Wi7.high;\n\t var Wi7l = Wi7.low;\n\n\t var Wi16 = W[i - 16];\n\t var Wi16h = Wi16.high;\n\t var Wi16l = Wi16.low;\n\n\t Wil = gamma0l + Wi7l;\n\t Wih = gamma0h + Wi7h + ((Wil >>> 0) < (gamma0l >>> 0) ? 1 : 0);\n\t Wil = Wil + gamma1l;\n\t Wih = Wih + gamma1h + ((Wil >>> 0) < (gamma1l >>> 0) ? 1 : 0);\n\t Wil = Wil + Wi16l;\n\t Wih = Wih + Wi16h + ((Wil >>> 0) < (Wi16l >>> 0) ? 1 : 0);\n\n\t Wi.high = Wih;\n\t Wi.low = Wil;\n\t }\n\n\t var chh = (eh & fh) ^ (~eh & gh);\n\t var chl = (el & fl) ^ (~el & gl);\n\t var majh = (ah & bh) ^ (ah & ch) ^ (bh & ch);\n\t var majl = (al & bl) ^ (al & cl) ^ (bl & cl);\n\n\t var sigma0h = ((ah >>> 28) | (al << 4)) ^ ((ah << 30) | (al >>> 2)) ^ ((ah << 25) | (al >>> 7));\n\t var sigma0l = ((al >>> 28) | (ah << 4)) ^ ((al << 30) | (ah >>> 2)) ^ ((al << 25) | (ah >>> 7));\n\t var sigma1h = ((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((eh << 23) | (el >>> 9));\n\t var sigma1l = ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((el << 23) | (eh >>> 9));\n\n\t // t1 = h + sigma1 + ch + K[i] + W[i]\n\t var Ki = K[i];\n\t var Kih = Ki.high;\n\t var Kil = Ki.low;\n\n\t var t1l = hl + sigma1l;\n\t var t1h = hh + sigma1h + ((t1l >>> 0) < (hl >>> 0) ? 1 : 0);\n\t var t1l = t1l + chl;\n\t var t1h = t1h + chh + ((t1l >>> 0) < (chl >>> 0) ? 1 : 0);\n\t var t1l = t1l + Kil;\n\t var t1h = t1h + Kih + ((t1l >>> 0) < (Kil >>> 0) ? 1 : 0);\n\t var t1l = t1l + Wil;\n\t var t1h = t1h + Wih + ((t1l >>> 0) < (Wil >>> 0) ? 1 : 0);\n\n\t // t2 = sigma0 + maj\n\t var t2l = sigma0l + majl;\n\t var t2h = sigma0h + majh + ((t2l >>> 0) < (sigma0l >>> 0) ? 1 : 0);\n\n\t // Update working variables\n\t hh = gh;\n\t hl = gl;\n\t gh = fh;\n\t gl = fl;\n\t fh = eh;\n\t fl = el;\n\t el = (dl + t1l) | 0;\n\t eh = (dh + t1h + ((el >>> 0) < (dl >>> 0) ? 1 : 0)) | 0;\n\t dh = ch;\n\t dl = cl;\n\t ch = bh;\n\t cl = bl;\n\t bh = ah;\n\t bl = al;\n\t al = (t1l + t2l) | 0;\n\t ah = (t1h + t2h + ((al >>> 0) < (t1l >>> 0) ? 1 : 0)) | 0;\n\t }\n\n\t // Intermediate hash value\n\t H0l = H0.low = (H0l + al);\n\t H0.high = (H0h + ah + ((H0l >>> 0) < (al >>> 0) ? 1 : 0));\n\t H1l = H1.low = (H1l + bl);\n\t H1.high = (H1h + bh + ((H1l >>> 0) < (bl >>> 0) ? 1 : 0));\n\t H2l = H2.low = (H2l + cl);\n\t H2.high = (H2h + ch + ((H2l >>> 0) < (cl >>> 0) ? 1 : 0));\n\t H3l = H3.low = (H3l + dl);\n\t H3.high = (H3h + dh + ((H3l >>> 0) < (dl >>> 0) ? 1 : 0));\n\t H4l = H4.low = (H4l + el);\n\t H4.high = (H4h + eh + ((H4l >>> 0) < (el >>> 0) ? 1 : 0));\n\t H5l = H5.low = (H5l + fl);\n\t H5.high = (H5h + fh + ((H5l >>> 0) < (fl >>> 0) ? 1 : 0));\n\t H6l = H6.low = (H6l + gl);\n\t H6.high = (H6h + gh + ((H6l >>> 0) < (gl >>> 0) ? 1 : 0));\n\t H7l = H7.low = (H7l + hl);\n\t H7.high = (H7h + hh + ((H7l >>> 0) < (hl >>> 0) ? 1 : 0));\n\t },\n\n\t _doFinalize: function () {\n\t // Shortcuts\n\t var data = this._data;\n\t var dataWords = data.words;\n\n\t var nBitsTotal = this._nDataBytes * 8;\n\t var nBitsLeft = data.sigBytes * 8;\n\n\t // Add padding\n\t dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - nBitsLeft % 32);\n\t dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 30] = Math.floor(nBitsTotal / 0x100000000);\n\t dataWords[(((nBitsLeft + 128) >>> 10) << 5) + 31] = nBitsTotal;\n\t data.sigBytes = dataWords.length * 4;\n\n\t // Hash final blocks\n\t this._process();\n\n\t // Convert hash to 32-bit word array before returning\n\t var hash = this._hash.toX32();\n\n\t // Return final computed hash\n\t return hash;\n\t },\n\n\t clone: function () {\n\t var clone = Hasher.clone.call(this);\n\t clone._hash = this._hash.clone();\n\n\t return clone;\n\t },\n\n\t blockSize: 1024/32\n\t });\n\n\t /**\n\t * Shortcut function to the hasher's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t *\n\t * @return {WordArray} The hash.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hash = CryptoJS.SHA512('message');\n\t * var hash = CryptoJS.SHA512(wordArray);\n\t */\n\t C.SHA512 = Hasher._createHelper(SHA512);\n\n\t /**\n\t * Shortcut function to the HMAC's object interface.\n\t *\n\t * @param {WordArray|string} message The message to hash.\n\t * @param {WordArray|string} key The secret key.\n\t *\n\t * @return {WordArray} The HMAC.\n\t *\n\t * @static\n\t *\n\t * @example\n\t *\n\t * var hmac = CryptoJS.HmacSHA512(message, key);\n\t */\n\t C.HmacSHA512 = Hasher._createHmacHelper(SHA512);\n\t}());\n\n\n\treturn CryptoJS.SHA512;\n\n}));",";(function (root, factory, undef) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"), require(\"./enc-base64\"), require(\"./md5\"), require(\"./evpkdf\"), require(\"./cipher-core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\", \"./enc-base64\", \"./md5\", \"./evpkdf\", \"./cipher-core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function () {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var WordArray = C_lib.WordArray;\n\t var BlockCipher = C_lib.BlockCipher;\n\t var C_algo = C.algo;\n\n\t // Permuted Choice 1 constants\n\t var PC1 = [\n\t 57, 49, 41, 33, 25, 17, 9, 1,\n\t 58, 50, 42, 34, 26, 18, 10, 2,\n\t 59, 51, 43, 35, 27, 19, 11, 3,\n\t 60, 52, 44, 36, 63, 55, 47, 39,\n\t 31, 23, 15, 7, 62, 54, 46, 38,\n\t 30, 22, 14, 6, 61, 53, 45, 37,\n\t 29, 21, 13, 5, 28, 20, 12, 4\n\t ];\n\n\t // Permuted Choice 2 constants\n\t var PC2 = [\n\t 14, 17, 11, 24, 1, 5,\n\t 3, 28, 15, 6, 21, 10,\n\t 23, 19, 12, 4, 26, 8,\n\t 16, 7, 27, 20, 13, 2,\n\t 41, 52, 31, 37, 47, 55,\n\t 30, 40, 51, 45, 33, 48,\n\t 44, 49, 39, 56, 34, 53,\n\t 46, 42, 50, 36, 29, 32\n\t ];\n\n\t // Cumulative bit shift constants\n\t var BIT_SHIFTS = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28];\n\n\t // SBOXes and round permutation constants\n\t var SBOX_P = [\n\t {\n\t 0x0: 0x808200,\n\t 0x10000000: 0x8000,\n\t 0x20000000: 0x808002,\n\t 0x30000000: 0x2,\n\t 0x40000000: 0x200,\n\t 0x50000000: 0x808202,\n\t 0x60000000: 0x800202,\n\t 0x70000000: 0x800000,\n\t 0x80000000: 0x202,\n\t 0x90000000: 0x800200,\n\t 0xa0000000: 0x8200,\n\t 0xb0000000: 0x808000,\n\t 0xc0000000: 0x8002,\n\t 0xd0000000: 0x800002,\n\t 0xe0000000: 0x0,\n\t 0xf0000000: 0x8202,\n\t 0x8000000: 0x0,\n\t 0x18000000: 0x808202,\n\t 0x28000000: 0x8202,\n\t 0x38000000: 0x8000,\n\t 0x48000000: 0x808200,\n\t 0x58000000: 0x200,\n\t 0x68000000: 0x808002,\n\t 0x78000000: 0x2,\n\t 0x88000000: 0x800200,\n\t 0x98000000: 0x8200,\n\t 0xa8000000: 0x808000,\n\t 0xb8000000: 0x800202,\n\t 0xc8000000: 0x800002,\n\t 0xd8000000: 0x8002,\n\t 0xe8000000: 0x202,\n\t 0xf8000000: 0x800000,\n\t 0x1: 0x8000,\n\t 0x10000001: 0x2,\n\t 0x20000001: 0x808200,\n\t 0x30000001: 0x800000,\n\t 0x40000001: 0x808002,\n\t 0x50000001: 0x8200,\n\t 0x60000001: 0x200,\n\t 0x70000001: 0x800202,\n\t 0x80000001: 0x808202,\n\t 0x90000001: 0x808000,\n\t 0xa0000001: 0x800002,\n\t 0xb0000001: 0x8202,\n\t 0xc0000001: 0x202,\n\t 0xd0000001: 0x800200,\n\t 0xe0000001: 0x8002,\n\t 0xf0000001: 0x0,\n\t 0x8000001: 0x808202,\n\t 0x18000001: 0x808000,\n\t 0x28000001: 0x800000,\n\t 0x38000001: 0x200,\n\t 0x48000001: 0x8000,\n\t 0x58000001: 0x800002,\n\t 0x68000001: 0x2,\n\t 0x78000001: 0x8202,\n\t 0x88000001: 0x8002,\n\t 0x98000001: 0x800202,\n\t 0xa8000001: 0x202,\n\t 0xb8000001: 0x808200,\n\t 0xc8000001: 0x800200,\n\t 0xd8000001: 0x0,\n\t 0xe8000001: 0x8200,\n\t 0xf8000001: 0x808002\n\t },\n\t {\n\t 0x0: 0x40084010,\n\t 0x1000000: 0x4000,\n\t 0x2000000: 0x80000,\n\t 0x3000000: 0x40080010,\n\t 0x4000000: 0x40000010,\n\t 0x5000000: 0x40084000,\n\t 0x6000000: 0x40004000,\n\t 0x7000000: 0x10,\n\t 0x8000000: 0x84000,\n\t 0x9000000: 0x40004010,\n\t 0xa000000: 0x40000000,\n\t 0xb000000: 0x84010,\n\t 0xc000000: 0x80010,\n\t 0xd000000: 0x0,\n\t 0xe000000: 0x4010,\n\t 0xf000000: 0x40080000,\n\t 0x800000: 0x40004000,\n\t 0x1800000: 0x84010,\n\t 0x2800000: 0x10,\n\t 0x3800000: 0x40004010,\n\t 0x4800000: 0x40084010,\n\t 0x5800000: 0x40000000,\n\t 0x6800000: 0x80000,\n\t 0x7800000: 0x40080010,\n\t 0x8800000: 0x80010,\n\t 0x9800000: 0x0,\n\t 0xa800000: 0x4000,\n\t 0xb800000: 0x40080000,\n\t 0xc800000: 0x40000010,\n\t 0xd800000: 0x84000,\n\t 0xe800000: 0x40084000,\n\t 0xf800000: 0x4010,\n\t 0x10000000: 0x0,\n\t 0x11000000: 0x40080010,\n\t 0x12000000: 0x40004010,\n\t 0x13000000: 0x40084000,\n\t 0x14000000: 0x40080000,\n\t 0x15000000: 0x10,\n\t 0x16000000: 0x84010,\n\t 0x17000000: 0x4000,\n\t 0x18000000: 0x4010,\n\t 0x19000000: 0x80000,\n\t 0x1a000000: 0x80010,\n\t 0x1b000000: 0x40000010,\n\t 0x1c000000: 0x84000,\n\t 0x1d000000: 0x40004000,\n\t 0x1e000000: 0x40000000,\n\t 0x1f000000: 0x40084010,\n\t 0x10800000: 0x84010,\n\t 0x11800000: 0x80000,\n\t 0x12800000: 0x40080000,\n\t 0x13800000: 0x4000,\n\t 0x14800000: 0x40004000,\n\t 0x15800000: 0x40084010,\n\t 0x16800000: 0x10,\n\t 0x17800000: 0x40000000,\n\t 0x18800000: 0x40084000,\n\t 0x19800000: 0x40000010,\n\t 0x1a800000: 0x40004010,\n\t 0x1b800000: 0x80010,\n\t 0x1c800000: 0x0,\n\t 0x1d800000: 0x4010,\n\t 0x1e800000: 0x40080010,\n\t 0x1f800000: 0x84000\n\t },\n\t {\n\t 0x0: 0x104,\n\t 0x100000: 0x0,\n\t 0x200000: 0x4000100,\n\t 0x300000: 0x10104,\n\t 0x400000: 0x10004,\n\t 0x500000: 0x4000004,\n\t 0x600000: 0x4010104,\n\t 0x700000: 0x4010000,\n\t 0x800000: 0x4000000,\n\t 0x900000: 0x4010100,\n\t 0xa00000: 0x10100,\n\t 0xb00000: 0x4010004,\n\t 0xc00000: 0x4000104,\n\t 0xd00000: 0x10000,\n\t 0xe00000: 0x4,\n\t 0xf00000: 0x100,\n\t 0x80000: 0x4010100,\n\t 0x180000: 0x4010004,\n\t 0x280000: 0x0,\n\t 0x380000: 0x4000100,\n\t 0x480000: 0x4000004,\n\t 0x580000: 0x10000,\n\t 0x680000: 0x10004,\n\t 0x780000: 0x104,\n\t 0x880000: 0x4,\n\t 0x980000: 0x100,\n\t 0xa80000: 0x4010000,\n\t 0xb80000: 0x10104,\n\t 0xc80000: 0x10100,\n\t 0xd80000: 0x4000104,\n\t 0xe80000: 0x4010104,\n\t 0xf80000: 0x4000000,\n\t 0x1000000: 0x4010100,\n\t 0x1100000: 0x10004,\n\t 0x1200000: 0x10000,\n\t 0x1300000: 0x4000100,\n\t 0x1400000: 0x100,\n\t 0x1500000: 0x4010104,\n\t 0x1600000: 0x4000004,\n\t 0x1700000: 0x0,\n\t 0x1800000: 0x4000104,\n\t 0x1900000: 0x4000000,\n\t 0x1a00000: 0x4,\n\t 0x1b00000: 0x10100,\n\t 0x1c00000: 0x4010000,\n\t 0x1d00000: 0x104,\n\t 0x1e00000: 0x10104,\n\t 0x1f00000: 0x4010004,\n\t 0x1080000: 0x4000000,\n\t 0x1180000: 0x104,\n\t 0x1280000: 0x4010100,\n\t 0x1380000: 0x0,\n\t 0x1480000: 0x10004,\n\t 0x1580000: 0x4000100,\n\t 0x1680000: 0x100,\n\t 0x1780000: 0x4010004,\n\t 0x1880000: 0x10000,\n\t 0x1980000: 0x4010104,\n\t 0x1a80000: 0x10104,\n\t 0x1b80000: 0x4000004,\n\t 0x1c80000: 0x4000104,\n\t 0x1d80000: 0x4010000,\n\t 0x1e80000: 0x4,\n\t 0x1f80000: 0x10100\n\t },\n\t {\n\t 0x0: 0x80401000,\n\t 0x10000: 0x80001040,\n\t 0x20000: 0x401040,\n\t 0x30000: 0x80400000,\n\t 0x40000: 0x0,\n\t 0x50000: 0x401000,\n\t 0x60000: 0x80000040,\n\t 0x70000: 0x400040,\n\t 0x80000: 0x80000000,\n\t 0x90000: 0x400000,\n\t 0xa0000: 0x40,\n\t 0xb0000: 0x80001000,\n\t 0xc0000: 0x80400040,\n\t 0xd0000: 0x1040,\n\t 0xe0000: 0x1000,\n\t 0xf0000: 0x80401040,\n\t 0x8000: 0x80001040,\n\t 0x18000: 0x40,\n\t 0x28000: 0x80400040,\n\t 0x38000: 0x80001000,\n\t 0x48000: 0x401000,\n\t 0x58000: 0x80401040,\n\t 0x68000: 0x0,\n\t 0x78000: 0x80400000,\n\t 0x88000: 0x1000,\n\t 0x98000: 0x80401000,\n\t 0xa8000: 0x400000,\n\t 0xb8000: 0x1040,\n\t 0xc8000: 0x80000000,\n\t 0xd8000: 0x400040,\n\t 0xe8000: 0x401040,\n\t 0xf8000: 0x80000040,\n\t 0x100000: 0x400040,\n\t 0x110000: 0x401000,\n\t 0x120000: 0x80000040,\n\t 0x130000: 0x0,\n\t 0x140000: 0x1040,\n\t 0x150000: 0x80400040,\n\t 0x160000: 0x80401000,\n\t 0x170000: 0x80001040,\n\t 0x180000: 0x80401040,\n\t 0x190000: 0x80000000,\n\t 0x1a0000: 0x80400000,\n\t 0x1b0000: 0x401040,\n\t 0x1c0000: 0x80001000,\n\t 0x1d0000: 0x400000,\n\t 0x1e0000: 0x40,\n\t 0x1f0000: 0x1000,\n\t 0x108000: 0x80400000,\n\t 0x118000: 0x80401040,\n\t 0x128000: 0x0,\n\t 0x138000: 0x401000,\n\t 0x148000: 0x400040,\n\t 0x158000: 0x80000000,\n\t 0x168000: 0x80001040,\n\t 0x178000: 0x40,\n\t 0x188000: 0x80000040,\n\t 0x198000: 0x1000,\n\t 0x1a8000: 0x80001000,\n\t 0x1b8000: 0x80400040,\n\t 0x1c8000: 0x1040,\n\t 0x1d8000: 0x80401000,\n\t 0x1e8000: 0x400000,\n\t 0x1f8000: 0x401040\n\t },\n\t {\n\t 0x0: 0x80,\n\t 0x1000: 0x1040000,\n\t 0x2000: 0x40000,\n\t 0x3000: 0x20000000,\n\t 0x4000: 0x20040080,\n\t 0x5000: 0x1000080,\n\t 0x6000: 0x21000080,\n\t 0x7000: 0x40080,\n\t 0x8000: 0x1000000,\n\t 0x9000: 0x20040000,\n\t 0xa000: 0x20000080,\n\t 0xb000: 0x21040080,\n\t 0xc000: 0x21040000,\n\t 0xd000: 0x0,\n\t 0xe000: 0x1040080,\n\t 0xf000: 0x21000000,\n\t 0x800: 0x1040080,\n\t 0x1800: 0x21000080,\n\t 0x2800: 0x80,\n\t 0x3800: 0x1040000,\n\t 0x4800: 0x40000,\n\t 0x5800: 0x20040080,\n\t 0x6800: 0x21040000,\n\t 0x7800: 0x20000000,\n\t 0x8800: 0x20040000,\n\t 0x9800: 0x0,\n\t 0xa800: 0x21040080,\n\t 0xb800: 0x1000080,\n\t 0xc800: 0x20000080,\n\t 0xd800: 0x21000000,\n\t 0xe800: 0x1000000,\n\t 0xf800: 0x40080,\n\t 0x10000: 0x40000,\n\t 0x11000: 0x80,\n\t 0x12000: 0x20000000,\n\t 0x13000: 0x21000080,\n\t 0x14000: 0x1000080,\n\t 0x15000: 0x21040000,\n\t 0x16000: 0x20040080,\n\t 0x17000: 0x1000000,\n\t 0x18000: 0x21040080,\n\t 0x19000: 0x21000000,\n\t 0x1a000: 0x1040000,\n\t 0x1b000: 0x20040000,\n\t 0x1c000: 0x40080,\n\t 0x1d000: 0x20000080,\n\t 0x1e000: 0x0,\n\t 0x1f000: 0x1040080,\n\t 0x10800: 0x21000080,\n\t 0x11800: 0x1000000,\n\t 0x12800: 0x1040000,\n\t 0x13800: 0x20040080,\n\t 0x14800: 0x20000000,\n\t 0x15800: 0x1040080,\n\t 0x16800: 0x80,\n\t 0x17800: 0x21040000,\n\t 0x18800: 0x40080,\n\t 0x19800: 0x21040080,\n\t 0x1a800: 0x0,\n\t 0x1b800: 0x21000000,\n\t 0x1c800: 0x1000080,\n\t 0x1d800: 0x40000,\n\t 0x1e800: 0x20040000,\n\t 0x1f800: 0x20000080\n\t },\n\t {\n\t 0x0: 0x10000008,\n\t 0x100: 0x2000,\n\t 0x200: 0x10200000,\n\t 0x300: 0x10202008,\n\t 0x400: 0x10002000,\n\t 0x500: 0x200000,\n\t 0x600: 0x200008,\n\t 0x700: 0x10000000,\n\t 0x800: 0x0,\n\t 0x900: 0x10002008,\n\t 0xa00: 0x202000,\n\t 0xb00: 0x8,\n\t 0xc00: 0x10200008,\n\t 0xd00: 0x202008,\n\t 0xe00: 0x2008,\n\t 0xf00: 0x10202000,\n\t 0x80: 0x10200000,\n\t 0x180: 0x10202008,\n\t 0x280: 0x8,\n\t 0x380: 0x200000,\n\t 0x480: 0x202008,\n\t 0x580: 0x10000008,\n\t 0x680: 0x10002000,\n\t 0x780: 0x2008,\n\t 0x880: 0x200008,\n\t 0x980: 0x2000,\n\t 0xa80: 0x10002008,\n\t 0xb80: 0x10200008,\n\t 0xc80: 0x0,\n\t 0xd80: 0x10202000,\n\t 0xe80: 0x202000,\n\t 0xf80: 0x10000000,\n\t 0x1000: 0x10002000,\n\t 0x1100: 0x10200008,\n\t 0x1200: 0x10202008,\n\t 0x1300: 0x2008,\n\t 0x1400: 0x200000,\n\t 0x1500: 0x10000000,\n\t 0x1600: 0x10000008,\n\t 0x1700: 0x202000,\n\t 0x1800: 0x202008,\n\t 0x1900: 0x0,\n\t 0x1a00: 0x8,\n\t 0x1b00: 0x10200000,\n\t 0x1c00: 0x2000,\n\t 0x1d00: 0x10002008,\n\t 0x1e00: 0x10202000,\n\t 0x1f00: 0x200008,\n\t 0x1080: 0x8,\n\t 0x1180: 0x202000,\n\t 0x1280: 0x200000,\n\t 0x1380: 0x10000008,\n\t 0x1480: 0x10002000,\n\t 0x1580: 0x2008,\n\t 0x1680: 0x10202008,\n\t 0x1780: 0x10200000,\n\t 0x1880: 0x10202000,\n\t 0x1980: 0x10200008,\n\t 0x1a80: 0x2000,\n\t 0x1b80: 0x202008,\n\t 0x1c80: 0x200008,\n\t 0x1d80: 0x0,\n\t 0x1e80: 0x10000000,\n\t 0x1f80: 0x10002008\n\t },\n\t {\n\t 0x0: 0x100000,\n\t 0x10: 0x2000401,\n\t 0x20: 0x400,\n\t 0x30: 0x100401,\n\t 0x40: 0x2100401,\n\t 0x50: 0x0,\n\t 0x60: 0x1,\n\t 0x70: 0x2100001,\n\t 0x80: 0x2000400,\n\t 0x90: 0x100001,\n\t 0xa0: 0x2000001,\n\t 0xb0: 0x2100400,\n\t 0xc0: 0x2100000,\n\t 0xd0: 0x401,\n\t 0xe0: 0x100400,\n\t 0xf0: 0x2000000,\n\t 0x8: 0x2100001,\n\t 0x18: 0x0,\n\t 0x28: 0x2000401,\n\t 0x38: 0x2100400,\n\t 0x48: 0x100000,\n\t 0x58: 0x2000001,\n\t 0x68: 0x2000000,\n\t 0x78: 0x401,\n\t 0x88: 0x100401,\n\t 0x98: 0x2000400,\n\t 0xa8: 0x2100000,\n\t 0xb8: 0x100001,\n\t 0xc8: 0x400,\n\t 0xd8: 0x2100401,\n\t 0xe8: 0x1,\n\t 0xf8: 0x100400,\n\t 0x100: 0x2000000,\n\t 0x110: 0x100000,\n\t 0x120: 0x2000401,\n\t 0x130: 0x2100001,\n\t 0x140: 0x100001,\n\t 0x150: 0x2000400,\n\t 0x160: 0x2100400,\n\t 0x170: 0x100401,\n\t 0x180: 0x401,\n\t 0x190: 0x2100401,\n\t 0x1a0: 0x100400,\n\t 0x1b0: 0x1,\n\t 0x1c0: 0x0,\n\t 0x1d0: 0x2100000,\n\t 0x1e0: 0x2000001,\n\t 0x1f0: 0x400,\n\t 0x108: 0x100400,\n\t 0x118: 0x2000401,\n\t 0x128: 0x2100001,\n\t 0x138: 0x1,\n\t 0x148: 0x2000000,\n\t 0x158: 0x100000,\n\t 0x168: 0x401,\n\t 0x178: 0x2100400,\n\t 0x188: 0x2000001,\n\t 0x198: 0x2100000,\n\t 0x1a8: 0x0,\n\t 0x1b8: 0x2100401,\n\t 0x1c8: 0x100401,\n\t 0x1d8: 0x400,\n\t 0x1e8: 0x2000400,\n\t 0x1f8: 0x100001\n\t },\n\t {\n\t 0x0: 0x8000820,\n\t 0x1: 0x20000,\n\t 0x2: 0x8000000,\n\t 0x3: 0x20,\n\t 0x4: 0x20020,\n\t 0x5: 0x8020820,\n\t 0x6: 0x8020800,\n\t 0x7: 0x800,\n\t 0x8: 0x8020000,\n\t 0x9: 0x8000800,\n\t 0xa: 0x20800,\n\t 0xb: 0x8020020,\n\t 0xc: 0x820,\n\t 0xd: 0x0,\n\t 0xe: 0x8000020,\n\t 0xf: 0x20820,\n\t 0x80000000: 0x800,\n\t 0x80000001: 0x8020820,\n\t 0x80000002: 0x8000820,\n\t 0x80000003: 0x8000000,\n\t 0x80000004: 0x8020000,\n\t 0x80000005: 0x20800,\n\t 0x80000006: 0x20820,\n\t 0x80000007: 0x20,\n\t 0x80000008: 0x8000020,\n\t 0x80000009: 0x820,\n\t 0x8000000a: 0x20020,\n\t 0x8000000b: 0x8020800,\n\t 0x8000000c: 0x0,\n\t 0x8000000d: 0x8020020,\n\t 0x8000000e: 0x8000800,\n\t 0x8000000f: 0x20000,\n\t 0x10: 0x20820,\n\t 0x11: 0x8020800,\n\t 0x12: 0x20,\n\t 0x13: 0x800,\n\t 0x14: 0x8000800,\n\t 0x15: 0x8000020,\n\t 0x16: 0x8020020,\n\t 0x17: 0x20000,\n\t 0x18: 0x0,\n\t 0x19: 0x20020,\n\t 0x1a: 0x8020000,\n\t 0x1b: 0x8000820,\n\t 0x1c: 0x8020820,\n\t 0x1d: 0x20800,\n\t 0x1e: 0x820,\n\t 0x1f: 0x8000000,\n\t 0x80000010: 0x20000,\n\t 0x80000011: 0x800,\n\t 0x80000012: 0x8020020,\n\t 0x80000013: 0x20820,\n\t 0x80000014: 0x20,\n\t 0x80000015: 0x8020000,\n\t 0x80000016: 0x8000000,\n\t 0x80000017: 0x8000820,\n\t 0x80000018: 0x8020820,\n\t 0x80000019: 0x8000020,\n\t 0x8000001a: 0x8000800,\n\t 0x8000001b: 0x0,\n\t 0x8000001c: 0x20800,\n\t 0x8000001d: 0x820,\n\t 0x8000001e: 0x20020,\n\t 0x8000001f: 0x8020800\n\t }\n\t ];\n\n\t // Masks that select the SBOX input\n\t var SBOX_MASK = [\n\t 0xf8000001, 0x1f800000, 0x01f80000, 0x001f8000,\n\t 0x0001f800, 0x00001f80, 0x000001f8, 0x8000001f\n\t ];\n\n\t /**\n\t * DES block cipher algorithm.\n\t */\n\t var DES = C_algo.DES = BlockCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\n\t // Select 56 bits according to PC1\n\t var keyBits = [];\n\t for (var i = 0; i < 56; i++) {\n\t var keyBitPos = PC1[i] - 1;\n\t keyBits[i] = (keyWords[keyBitPos >>> 5] >>> (31 - keyBitPos % 32)) & 1;\n\t }\n\n\t // Assemble 16 subkeys\n\t var subKeys = this._subKeys = [];\n\t for (var nSubKey = 0; nSubKey < 16; nSubKey++) {\n\t // Create subkey\n\t var subKey = subKeys[nSubKey] = [];\n\n\t // Shortcut\n\t var bitShift = BIT_SHIFTS[nSubKey];\n\n\t // Select 48 bits according to PC2\n\t for (var i = 0; i < 24; i++) {\n\t // Select from the left 28 key bits\n\t subKey[(i / 6) | 0] |= keyBits[((PC2[i] - 1) + bitShift) % 28] << (31 - i % 6);\n\n\t // Select from the right 28 key bits\n\t subKey[4 + ((i / 6) | 0)] |= keyBits[28 + (((PC2[i + 24] - 1) + bitShift) % 28)] << (31 - i % 6);\n\t }\n\n\t // Since each subkey is applied to an expanded 32-bit input,\n\t // the subkey can be broken into 8 values scaled to 32-bits,\n\t // which allows the key to be used without expansion\n\t subKey[0] = (subKey[0] << 1) | (subKey[0] >>> 31);\n\t for (var i = 1; i < 7; i++) {\n\t subKey[i] = subKey[i] >>> ((i - 1) * 4 + 3);\n\t }\n\t subKey[7] = (subKey[7] << 5) | (subKey[7] >>> 27);\n\t }\n\n\t // Compute inverse subkeys\n\t var invSubKeys = this._invSubKeys = [];\n\t for (var i = 0; i < 16; i++) {\n\t invSubKeys[i] = subKeys[15 - i];\n\t }\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._subKeys);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t this._doCryptBlock(M, offset, this._invSubKeys);\n\t },\n\n\t _doCryptBlock: function (M, offset, subKeys) {\n\t // Get input\n\t this._lBlock = M[offset];\n\t this._rBlock = M[offset + 1];\n\n\t // Initial permutation\n\t exchangeLR.call(this, 4, 0x0f0f0f0f);\n\t exchangeLR.call(this, 16, 0x0000ffff);\n\t exchangeRL.call(this, 2, 0x33333333);\n\t exchangeRL.call(this, 8, 0x00ff00ff);\n\t exchangeLR.call(this, 1, 0x55555555);\n\n\t // Rounds\n\t for (var round = 0; round < 16; round++) {\n\t // Shortcuts\n\t var subKey = subKeys[round];\n\t var lBlock = this._lBlock;\n\t var rBlock = this._rBlock;\n\n\t // Feistel function\n\t var f = 0;\n\t for (var i = 0; i < 8; i++) {\n\t f |= SBOX_P[i][((rBlock ^ subKey[i]) & SBOX_MASK[i]) >>> 0];\n\t }\n\t this._lBlock = rBlock;\n\t this._rBlock = lBlock ^ f;\n\t }\n\n\t // Undo swap from last round\n\t var t = this._lBlock;\n\t this._lBlock = this._rBlock;\n\t this._rBlock = t;\n\n\t // Final permutation\n\t exchangeLR.call(this, 1, 0x55555555);\n\t exchangeRL.call(this, 8, 0x00ff00ff);\n\t exchangeRL.call(this, 2, 0x33333333);\n\t exchangeLR.call(this, 16, 0x0000ffff);\n\t exchangeLR.call(this, 4, 0x0f0f0f0f);\n\n\t // Set output\n\t M[offset] = this._lBlock;\n\t M[offset + 1] = this._rBlock;\n\t },\n\n\t keySize: 64/32,\n\n\t ivSize: 64/32,\n\n\t blockSize: 64/32\n\t });\n\n\t // Swap bits across the left and right words\n\t function exchangeLR(offset, mask) {\n\t var t = ((this._lBlock >>> offset) ^ this._rBlock) & mask;\n\t this._rBlock ^= t;\n\t this._lBlock ^= t << offset;\n\t }\n\n\t function exchangeRL(offset, mask) {\n\t var t = ((this._rBlock >>> offset) ^ this._lBlock) & mask;\n\t this._lBlock ^= t;\n\t this._rBlock ^= t << offset;\n\t }\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.DES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.DES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.DES = BlockCipher._createHelper(DES);\n\n\t /**\n\t * Triple-DES block cipher algorithm.\n\t */\n\t var TripleDES = C_algo.TripleDES = BlockCipher.extend({\n\t _doReset: function () {\n\t // Shortcuts\n\t var key = this._key;\n\t var keyWords = key.words;\n\t // Make sure the key length is valid (64, 128 or >= 192 bit)\n\t if (keyWords.length !== 2 && keyWords.length !== 4 && keyWords.length < 6) {\n\t throw new Error('Invalid key length - 3DES requires the key length to be 64, 128, 192 or >192.');\n\t }\n\n\t // Extend the key according to the keying options defined in 3DES standard\n\t var key1 = keyWords.slice(0, 2);\n\t var key2 = keyWords.length < 4 ? keyWords.slice(0, 2) : keyWords.slice(2, 4);\n\t var key3 = keyWords.length < 6 ? keyWords.slice(0, 2) : keyWords.slice(4, 6);\n\n\t // Create DES instances\n\t this._des1 = DES.createEncryptor(WordArray.create(key1));\n\t this._des2 = DES.createEncryptor(WordArray.create(key2));\n\t this._des3 = DES.createEncryptor(WordArray.create(key3));\n\t },\n\n\t encryptBlock: function (M, offset) {\n\t this._des1.encryptBlock(M, offset);\n\t this._des2.decryptBlock(M, offset);\n\t this._des3.encryptBlock(M, offset);\n\t },\n\n\t decryptBlock: function (M, offset) {\n\t this._des3.decryptBlock(M, offset);\n\t this._des2.encryptBlock(M, offset);\n\t this._des1.decryptBlock(M, offset);\n\t },\n\n\t keySize: 192/32,\n\n\t ivSize: 64/32,\n\n\t blockSize: 64/32\n\t });\n\n\t /**\n\t * Shortcut functions to the cipher's object interface.\n\t *\n\t * @example\n\t *\n\t * var ciphertext = CryptoJS.TripleDES.encrypt(message, key, cfg);\n\t * var plaintext = CryptoJS.TripleDES.decrypt(ciphertext, key, cfg);\n\t */\n\t C.TripleDES = BlockCipher._createHelper(TripleDES);\n\t}());\n\n\n\treturn CryptoJS.TripleDES;\n\n}));",";(function (root, factory) {\n\tif (typeof exports === \"object\") {\n\t\t// CommonJS\n\t\tmodule.exports = exports = factory(require(\"./core\"));\n\t}\n\telse if (typeof define === \"function\" && define.amd) {\n\t\t// AMD\n\t\tdefine([\"./core\"], factory);\n\t}\n\telse {\n\t\t// Global (browser)\n\t\tfactory(root.CryptoJS);\n\t}\n}(this, function (CryptoJS) {\n\n\t(function (undefined) {\n\t // Shortcuts\n\t var C = CryptoJS;\n\t var C_lib = C.lib;\n\t var Base = C_lib.Base;\n\t var X32WordArray = C_lib.WordArray;\n\n\t /**\n\t * x64 namespace.\n\t */\n\t var C_x64 = C.x64 = {};\n\n\t /**\n\t * A 64-bit word.\n\t */\n\t var X64Word = C_x64.Word = Base.extend({\n\t /**\n\t * Initializes a newly created 64-bit word.\n\t *\n\t * @param {number} high The high 32 bits.\n\t * @param {number} low The low 32 bits.\n\t *\n\t * @example\n\t *\n\t * var x64Word = CryptoJS.x64.Word.create(0x00010203, 0x04050607);\n\t */\n\t init: function (high, low) {\n\t this.high = high;\n\t this.low = low;\n\t }\n\n\t /**\n\t * Bitwise NOTs this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after negating.\n\t *\n\t * @example\n\t *\n\t * var negated = x64Word.not();\n\t */\n\t // not: function () {\n\t // var high = ~this.high;\n\t // var low = ~this.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Bitwise ANDs this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to AND with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after ANDing.\n\t *\n\t * @example\n\t *\n\t * var anded = x64Word.and(anotherX64Word);\n\t */\n\t // and: function (word) {\n\t // var high = this.high & word.high;\n\t // var low = this.low & word.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Bitwise ORs this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to OR with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after ORing.\n\t *\n\t * @example\n\t *\n\t * var ored = x64Word.or(anotherX64Word);\n\t */\n\t // or: function (word) {\n\t // var high = this.high | word.high;\n\t // var low = this.low | word.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Bitwise XORs this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to XOR with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after XORing.\n\t *\n\t * @example\n\t *\n\t * var xored = x64Word.xor(anotherX64Word);\n\t */\n\t // xor: function (word) {\n\t // var high = this.high ^ word.high;\n\t // var low = this.low ^ word.low;\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Shifts this word n bits to the left.\n\t *\n\t * @param {number} n The number of bits to shift.\n\t *\n\t * @return {X64Word} A new x64-Word object after shifting.\n\t *\n\t * @example\n\t *\n\t * var shifted = x64Word.shiftL(25);\n\t */\n\t // shiftL: function (n) {\n\t // if (n < 32) {\n\t // var high = (this.high << n) | (this.low >>> (32 - n));\n\t // var low = this.low << n;\n\t // } else {\n\t // var high = this.low << (n - 32);\n\t // var low = 0;\n\t // }\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Shifts this word n bits to the right.\n\t *\n\t * @param {number} n The number of bits to shift.\n\t *\n\t * @return {X64Word} A new x64-Word object after shifting.\n\t *\n\t * @example\n\t *\n\t * var shifted = x64Word.shiftR(7);\n\t */\n\t // shiftR: function (n) {\n\t // if (n < 32) {\n\t // var low = (this.low >>> n) | (this.high << (32 - n));\n\t // var high = this.high >>> n;\n\t // } else {\n\t // var low = this.high >>> (n - 32);\n\t // var high = 0;\n\t // }\n\n\t // return X64Word.create(high, low);\n\t // },\n\n\t /**\n\t * Rotates this word n bits to the left.\n\t *\n\t * @param {number} n The number of bits to rotate.\n\t *\n\t * @return {X64Word} A new x64-Word object after rotating.\n\t *\n\t * @example\n\t *\n\t * var rotated = x64Word.rotL(25);\n\t */\n\t // rotL: function (n) {\n\t // return this.shiftL(n).or(this.shiftR(64 - n));\n\t // },\n\n\t /**\n\t * Rotates this word n bits to the right.\n\t *\n\t * @param {number} n The number of bits to rotate.\n\t *\n\t * @return {X64Word} A new x64-Word object after rotating.\n\t *\n\t * @example\n\t *\n\t * var rotated = x64Word.rotR(7);\n\t */\n\t // rotR: function (n) {\n\t // return this.shiftR(n).or(this.shiftL(64 - n));\n\t // },\n\n\t /**\n\t * Adds this word with the passed word.\n\t *\n\t * @param {X64Word} word The x64-Word to add with this word.\n\t *\n\t * @return {X64Word} A new x64-Word object after adding.\n\t *\n\t * @example\n\t *\n\t * var added = x64Word.add(anotherX64Word);\n\t */\n\t // add: function (word) {\n\t // var low = (this.low + word.low) | 0;\n\t // var carry = (low >>> 0) < (this.low >>> 0) ? 1 : 0;\n\t // var high = (this.high + word.high + carry) | 0;\n\n\t // return X64Word.create(high, low);\n\t // }\n\t });\n\n\t /**\n\t * An array of 64-bit words.\n\t *\n\t * @property {Array} words The array of CryptoJS.x64.Word objects.\n\t * @property {number} sigBytes The number of significant bytes in this word array.\n\t */\n\t var X64WordArray = C_x64.WordArray = Base.extend({\n\t /**\n\t * Initializes a newly created word array.\n\t *\n\t * @param {Array} words (Optional) An array of CryptoJS.x64.Word objects.\n\t * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n\t *\n\t * @example\n\t *\n\t * var wordArray = CryptoJS.x64.WordArray.create();\n\t *\n\t * var wordArray = CryptoJS.x64.WordArray.create([\n\t * CryptoJS.x64.Word.create(0x00010203, 0x04050607),\n\t * CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f)\n\t * ]);\n\t *\n\t * var wordArray = CryptoJS.x64.WordArray.create([\n\t * CryptoJS.x64.Word.create(0x00010203, 0x04050607),\n\t * CryptoJS.x64.Word.create(0x18191a1b, 0x1c1d1e1f)\n\t * ], 10);\n\t */\n\t init: function (words, sigBytes) {\n\t words = this.words = words || [];\n\n\t if (sigBytes != undefined) {\n\t this.sigBytes = sigBytes;\n\t } else {\n\t this.sigBytes = words.length * 8;\n\t }\n\t },\n\n\t /**\n\t * Converts this 64-bit word array to a 32-bit word array.\n\t *\n\t * @return {CryptoJS.lib.WordArray} This word array's data as a 32-bit word array.\n\t *\n\t * @example\n\t *\n\t * var x32WordArray = x64WordArray.toX32();\n\t */\n\t toX32: function () {\n\t // Shortcuts\n\t var x64Words = this.words;\n\t var x64WordsLength = x64Words.length;\n\n\t // Convert\n\t var x32Words = [];\n\t for (var i = 0; i < x64WordsLength; i++) {\n\t var x64Word = x64Words[i];\n\t x32Words.push(x64Word.high);\n\t x32Words.push(x64Word.low);\n\t }\n\n\t return X32WordArray.create(x32Words, this.sigBytes);\n\t },\n\n\t /**\n\t * Creates a copy of this word array.\n\t *\n\t * @return {X64WordArray} The clone.\n\t *\n\t * @example\n\t *\n\t * var clone = x64WordArray.clone();\n\t */\n\t clone: function () {\n\t var clone = Base.clone.call(this);\n\n\t // Clone \"words\" array\n\t var words = clone.words = this.words.slice(0);\n\n\t // Clone each X64Word object\n\t var wordsLength = words.length;\n\t for (var i = 0; i < wordsLength; i++) {\n\t words[i] = words[i].clone();\n\t }\n\n\t return clone;\n\t }\n\t });\n\t}());\n\n\n\treturn CryptoJS;\n\n}));","'use strict'\n\nmodule.exports = direction\n\nvar RTL = '\\u0591-\\u07FF\\uFB1D-\\uFDFD\\uFE70-\\uFEFC'\nvar LTR =\n 'A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6' +\n '\\u00F8-\\u02B8\\u0300-\\u0590\\u0800-\\u1FFF\\u200E\\u2C00-\\uFB1C' +\n '\\uFE00-\\uFE6F\\uFEFD-\\uFFFF'\n\nvar rtl = new RegExp('^[^' + LTR + ']*[' + RTL + ']')\nvar ltr = new RegExp('^[^' + RTL + ']*[' + LTR + ']')\n\nfunction direction(value) {\n value = String(value || '')\n\n if (rtl.test(value)) {\n return 'rtl'\n }\n\n if (ltr.test(value)) {\n return 'ltr'\n }\n\n return 'neutral'\n}\n","var QueryHandler = require('./QueryHandler');\nvar each = require('./Util').each;\n\n/**\n * Represents a single media query, manages it's state and registered handlers for this query\n *\n * @constructor\n * @param {string} query the media query string\n * @param {boolean} [isUnconditional=false] whether the media query should run regardless of whether the conditions are met. Primarily for helping older browsers deal with mobile-first design\n */\nfunction MediaQuery(query, isUnconditional) {\n this.query = query;\n this.isUnconditional = isUnconditional;\n this.handlers = [];\n this.mql = window.matchMedia(query);\n\n var self = this;\n this.listener = function(mql) {\n // Chrome passes an MediaQueryListEvent object, while other browsers pass MediaQueryList directly\n self.mql = mql.currentTarget || mql;\n self.assess();\n };\n this.mql.addListener(this.listener);\n}\n\nMediaQuery.prototype = {\n\n constuctor : MediaQuery,\n\n /**\n * add a handler for this query, triggering if already active\n *\n * @param {object} handler\n * @param {function} handler.match callback for when query is activated\n * @param {function} [handler.unmatch] callback for when query is deactivated\n * @param {function} [handler.setup] callback for immediate execution when a query handler is registered\n * @param {boolean} [handler.deferSetup=false] should the setup callback be deferred until the first time the handler is matched?\n */\n addHandler : function(handler) {\n var qh = new QueryHandler(handler);\n this.handlers.push(qh);\n\n this.matches() && qh.on();\n },\n\n /**\n * removes the given handler from the collection, and calls it's destroy methods\n *\n * @param {object || function} handler the handler to remove\n */\n removeHandler : function(handler) {\n var handlers = this.handlers;\n each(handlers, function(h, i) {\n if(h.equals(handler)) {\n h.destroy();\n return !handlers.splice(i,1); //remove from array and exit each early\n }\n });\n },\n\n /**\n * Determine whether the media query should be considered a match\n *\n * @return {Boolean} true if media query can be considered a match, false otherwise\n */\n matches : function() {\n return this.mql.matches || this.isUnconditional;\n },\n\n /**\n * Clears all handlers and unbinds events\n */\n clear : function() {\n each(this.handlers, function(handler) {\n handler.destroy();\n });\n this.mql.removeListener(this.listener);\n this.handlers.length = 0; //clear array\n },\n\n /*\n * Assesses the query, turning on all handlers if it matches, turning them off if it doesn't match\n */\n assess : function() {\n var action = this.matches() ? 'on' : 'off';\n\n each(this.handlers, function(handler) {\n handler[action]();\n });\n }\n};\n\nmodule.exports = MediaQuery;\n","var MediaQuery = require('./MediaQuery');\nvar Util = require('./Util');\nvar each = Util.each;\nvar isFunction = Util.isFunction;\nvar isArray = Util.isArray;\n\n/**\n * Allows for registration of query handlers.\n * Manages the query handler's state and is responsible for wiring up browser events\n *\n * @constructor\n */\nfunction MediaQueryDispatch () {\n if(!window.matchMedia) {\n throw new Error('matchMedia not present, legacy browsers require a polyfill');\n }\n\n this.queries = {};\n this.browserIsIncapable = !window.matchMedia('only all').matches;\n}\n\nMediaQueryDispatch.prototype = {\n\n constructor : MediaQueryDispatch,\n\n /**\n * Registers a handler for the given media query\n *\n * @param {string} q the media query\n * @param {object || Array || Function} options either a single query handler object, a function, or an array of query handlers\n * @param {function} options.match fired when query matched\n * @param {function} [options.unmatch] fired when a query is no longer matched\n * @param {function} [options.setup] fired when handler first triggered\n * @param {boolean} [options.deferSetup=false] whether setup should be run immediately or deferred until query is first matched\n * @param {boolean} [shouldDegrade=false] whether this particular media query should always run on incapable browsers\n */\n register : function(q, options, shouldDegrade) {\n var queries = this.queries,\n isUnconditional = shouldDegrade && this.browserIsIncapable;\n\n if(!queries[q]) {\n queries[q] = new MediaQuery(q, isUnconditional);\n }\n\n //normalise to object in an array\n if(isFunction(options)) {\n options = { match : options };\n }\n if(!isArray(options)) {\n options = [options];\n }\n each(options, function(handler) {\n if (isFunction(handler)) {\n handler = { match : handler };\n }\n queries[q].addHandler(handler);\n });\n\n return this;\n },\n\n /**\n * unregisters a query and all it's handlers, or a specific handler for a query\n *\n * @param {string} q the media query to target\n * @param {object || function} [handler] specific handler to unregister\n */\n unregister : function(q, handler) {\n var query = this.queries[q];\n\n if(query) {\n if(handler) {\n query.removeHandler(handler);\n }\n else {\n query.clear();\n delete this.queries[q];\n }\n }\n\n return this;\n }\n};\n\nmodule.exports = MediaQueryDispatch;\n","/**\n * Delegate to handle a media query being matched and unmatched.\n *\n * @param {object} options\n * @param {function} options.match callback for when the media query is matched\n * @param {function} [options.unmatch] callback for when the media query is unmatched\n * @param {function} [options.setup] one-time callback triggered the first time a query is matched\n * @param {boolean} [options.deferSetup=false] should the setup callback be run immediately, rather than first time query is matched?\n * @constructor\n */\nfunction QueryHandler(options) {\n this.options = options;\n !options.deferSetup && this.setup();\n}\n\nQueryHandler.prototype = {\n\n constructor : QueryHandler,\n\n /**\n * coordinates setup of the handler\n *\n * @function\n */\n setup : function() {\n if(this.options.setup) {\n this.options.setup();\n }\n this.initialised = true;\n },\n\n /**\n * coordinates setup and triggering of the handler\n *\n * @function\n */\n on : function() {\n !this.initialised && this.setup();\n this.options.match && this.options.match();\n },\n\n /**\n * coordinates the unmatch event for the handler\n *\n * @function\n */\n off : function() {\n this.options.unmatch && this.options.unmatch();\n },\n\n /**\n * called when a handler is to be destroyed.\n * delegates to the destroy or unmatch callbacks, depending on availability.\n *\n * @function\n */\n destroy : function() {\n this.options.destroy ? this.options.destroy() : this.off();\n },\n\n /**\n * determines equality by reference.\n * if object is supplied compare options, if function, compare match callback\n *\n * @function\n * @param {object || function} [target] the target for comparison\n */\n equals : function(target) {\n return this.options === target || this.options.match === target;\n }\n\n};\n\nmodule.exports = QueryHandler;\n","/**\n * Helper function for iterating over a collection\n *\n * @param collection\n * @param fn\n */\nfunction each(collection, fn) {\n var i = 0,\n length = collection.length,\n cont;\n\n for(i; i < length; i++) {\n cont = fn(collection[i], i);\n if(cont === false) {\n break; //allow early exit\n }\n }\n}\n\n/**\n * Helper function for determining whether target object is an array\n *\n * @param target the object under test\n * @return {Boolean} true if array, false otherwise\n */\nfunction isArray(target) {\n return Object.prototype.toString.apply(target) === '[object Array]';\n}\n\n/**\n * Helper function for determining whether target object is a function\n *\n * @param target the object under test\n * @return {Boolean} true if function, false otherwise\n */\nfunction isFunction(target) {\n return typeof target === 'function';\n}\n\nmodule.exports = {\n isFunction : isFunction,\n isArray : isArray,\n each : each\n};\n","var MediaQueryDispatch = require('./MediaQueryDispatch');\nmodule.exports = new MediaQueryDispatch();\n","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","'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","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\n/**\n * Constants.\n */\n\nvar IS_MAC = typeof window != 'undefined' && /Mac|iPod|iPhone|iPad/.test(window.navigator.platform);\n\nvar MODIFIERS = {\n alt: 'altKey',\n control: 'ctrlKey',\n meta: 'metaKey',\n shift: 'shiftKey'\n};\n\nvar ALIASES = {\n add: '+',\n break: 'pause',\n cmd: 'meta',\n command: 'meta',\n ctl: 'control',\n ctrl: 'control',\n del: 'delete',\n down: 'arrowdown',\n esc: 'escape',\n ins: 'insert',\n left: 'arrowleft',\n mod: IS_MAC ? 'meta' : 'control',\n opt: 'alt',\n option: 'alt',\n return: 'enter',\n right: 'arrowright',\n space: ' ',\n spacebar: ' ',\n up: 'arrowup',\n win: 'meta',\n windows: 'meta'\n};\n\nvar CODES = {\n backspace: 8,\n tab: 9,\n enter: 13,\n shift: 16,\n control: 17,\n alt: 18,\n pause: 19,\n capslock: 20,\n escape: 27,\n ' ': 32,\n pageup: 33,\n pagedown: 34,\n end: 35,\n home: 36,\n arrowleft: 37,\n arrowup: 38,\n arrowright: 39,\n arrowdown: 40,\n insert: 45,\n delete: 46,\n meta: 91,\n numlock: 144,\n scrolllock: 145,\n ';': 186,\n '=': 187,\n ',': 188,\n '-': 189,\n '.': 190,\n '/': 191,\n '`': 192,\n '[': 219,\n '\\\\': 220,\n ']': 221,\n '\\'': 222\n};\n\nfor (var f = 1; f < 20; f++) {\n CODES['f' + f] = 111 + f;\n}\n\n/**\n * Is hotkey?\n */\n\nfunction isHotkey(hotkey, options, event) {\n if (options && !('byKey' in options)) {\n event = options;\n options = null;\n }\n\n if (!Array.isArray(hotkey)) {\n hotkey = [hotkey];\n }\n\n var array = hotkey.map(function (string) {\n return parseHotkey(string, options);\n });\n var check = function check(e) {\n return array.some(function (object) {\n return compareHotkey(object, e);\n });\n };\n var ret = event == null ? check : check(event);\n return ret;\n}\n\nfunction isCodeHotkey(hotkey, event) {\n return isHotkey(hotkey, event);\n}\n\nfunction isKeyHotkey(hotkey, event) {\n return isHotkey(hotkey, { byKey: true }, event);\n}\n\n/**\n * Parse.\n */\n\nfunction parseHotkey(hotkey, options) {\n var byKey = options && options.byKey;\n var ret = {};\n\n // Special case to handle the `+` key since we use it as a separator.\n hotkey = hotkey.replace('++', '+add');\n var values = hotkey.split('+');\n var length = values.length;\n\n // Ensure that all the modifiers are set to false unless the hotkey has them.\n\n for (var k in MODIFIERS) {\n ret[MODIFIERS[k]] = false;\n }\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = values[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var value = _step.value;\n\n var optional = value.endsWith('?') && value.length > 1;\n\n if (optional) {\n value = value.slice(0, -1);\n }\n\n var name = toKeyName(value);\n var modifier = MODIFIERS[name];\n\n if (length === 1 || !modifier) {\n if (byKey) {\n ret.key = name;\n } else {\n ret.which = toKeyCode(value);\n }\n }\n\n if (modifier) {\n ret[modifier] = optional ? null : true;\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return ret;\n}\n\n/**\n * Compare.\n */\n\nfunction compareHotkey(object, event) {\n for (var key in object) {\n var expected = object[key];\n var actual = void 0;\n\n if (expected == null) {\n continue;\n }\n\n if (key === 'key' && event.key != null) {\n actual = event.key.toLowerCase();\n } else if (key === 'which') {\n actual = expected === 91 && event.which === 93 ? 91 : event.which;\n } else {\n actual = event[key];\n }\n\n if (actual == null && expected === false) {\n continue;\n }\n\n if (actual !== expected) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Utils.\n */\n\nfunction toKeyCode(name) {\n name = toKeyName(name);\n var code = CODES[name] || name.toUpperCase().charCodeAt(0);\n return code;\n}\n\nfunction toKeyName(name) {\n name = name.toLowerCase();\n name = ALIASES[name] || name;\n return name;\n}\n\n/**\n * Export.\n */\n\nexports.default = isHotkey;\nexports.isHotkey = isHotkey;\nexports.isCodeHotkey = isCodeHotkey;\nexports.isKeyHotkey = isKeyHotkey;\nexports.parseHotkey = parseHotkey;\nexports.compareHotkey = compareHotkey;\nexports.toKeyCode = toKeyCode;\nexports.toKeyName = toKeyName;","var camel2hyphen = require('string-convert/camel2hyphen');\n\nvar isDimension = function (feature) {\n var re = /[height|width]$/;\n return re.test(feature);\n};\n\nvar obj2mq = function (obj) {\n var mq = '';\n var features = Object.keys(obj);\n features.forEach(function (feature, index) {\n var value = obj[feature];\n feature = camel2hyphen(feature);\n // Add px to dimension features\n if (isDimension(feature) && typeof value === 'number') {\n value = value + 'px';\n }\n if (value === true) {\n mq += feature;\n } else if (value === false) {\n mq += 'not ' + feature;\n } else {\n mq += '(' + feature + ': ' + value + ')';\n }\n if (index < features.length-1) {\n mq += ' and '\n }\n });\n return mq;\n};\n\nvar json2mq = function (query) {\n var mq = '';\n if (typeof query === 'string') {\n return query;\n }\n // Handling array of media queries\n if (query instanceof Array) {\n query.forEach(function (q, index) {\n mq += obj2mq(q);\n if (index < query.length-1) {\n mq += ', '\n }\n });\n return mq;\n }\n // Handling single media query\n return obj2mq(query);\n};\n\nmodule.exports = json2mq;","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = debounce;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nmodule.exports = trimmedEndIndex;\n","var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n","var debounce = require('./debounce'),\n isObject = require('./isObject');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\nmodule.exports = throttle;\n","var baseTrim = require('./_baseTrim'),\n isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ba=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function q(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new q(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new q(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new q(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new q(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new q(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new q(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new q(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new q(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new q(a,5,!1,a.toLowerCase(),null,!1,!1)});var pa=/[\\-:]([a-z])/g;function qa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(pa,\nqa);z[b]=new q(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(pa,qa);z[b]=new q(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(pa,qa);z[b]=new q(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new q(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new q(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new q(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ra(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{La=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ka(a):\"\"}\nfunction Na(a){switch(a.tag){case 5:return Ka(a.type);case 16:return Ka(\"Lazy\");case 13:return Ka(\"Suspense\");case 19:return Ka(\"SuspenseList\");case 0:case 2:case 15:return a=Ma(a.type,!1),a;case 11:return a=Ma(a.type.render,!1),a;case 1:return a=Ma(a.type,!0),a;default:return\"\"}}\nfunction Oa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case va:return\"Fragment\";case ua:return\"Portal\";case xa:return\"Profiler\";case wa:return\"StrictMode\";case Ca:return\"Suspense\";case Da:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Aa:return(a.displayName||\"Context\")+\".Consumer\";case ya:return(a._context.displayName||\"Context\")+\".Provider\";case Ba:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ea:return b=a.displayName||null,null!==b?b:Oa(a.type)||\"Memo\";case Fa:b=a._payload;a=a._init;try{return Oa(a(b))}catch(c){}}return null}\nfunction Pa(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Oa(b);case 8:return b===wa?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Qa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ra(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Sa(a){var b=Ra(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Ta(a){a._valueTracker||(a._valueTracker=Sa(a))}function Ua(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ra(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Va(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Wa(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Xa(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Qa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function Ya(a,b){b=b.checked;null!=b&&ra(a,\"checked\",b,!1)}\nfunction Za(a,b){Ya(a,b);var c=Qa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?$a(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&$a(a,b.type,Qa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction ab(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction $a(a,b,c){if(\"number\"!==b||Va(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var bb=Array.isArray;\nfunction cb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=jb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction lb(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar mb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},nb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(mb).forEach(function(a){nb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);mb[b]=mb[a]})});function ob(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||mb.hasOwnProperty(a)&&mb[a]?(\"\"+b).trim():b+\"px\"}\nfunction pb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=ob(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var qb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction rb(a,b){if(b){if(qb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction sb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var tb=null;function ub(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var vb=null,wb=null,xb=null;\nfunction yb(a){if(a=zb(a)){if(\"function\"!==typeof vb)throw Error(p(280));var b=a.stateNode;b&&(b=Ab(b),vb(a.stateNode,a.type,b))}}function Bb(a){wb?xb?xb.push(a):xb=[a]:wb=a}function Cb(){if(wb){var a=wb,b=xb;xb=wb=null;yb(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(mc(a)/nc|0)|0}var oc=64,pc=4194304;\nfunction qc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function rc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=qc(h):(f&=g,0!==f&&(d=qc(f)))}else g=c&~e,0!==g?d=qc(g):0!==f&&(d=qc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}function wc(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-lc(b);a[b]=c}\nfunction xc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=Xd),$d=String.fromCharCode(32),ae=!1;\nfunction be(a,b){switch(a){case \"keyup\":return-1!==Vd.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function ce(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var de=!1;function ee(a,b){switch(a){case \"compositionend\":return ce(b);case \"keypress\":if(32!==b.which)return null;ae=!0;return $d;case \"textInput\":return a=b.data,a===$d&&ae?null:a;default:return null}}\nfunction fe(a,b){if(de)return\"compositionend\"===a||!Wd&&be(a,b)?(a=id(),hd=gd=fd=null,de=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Ee(c)}}function Ge(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Ge(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction He(){for(var a=window,b=Va();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Va(a.document)}return b}function Ie(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Je(a){var b=He(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Ge(c.ownerDocument.documentElement,c)){if(null!==d&&Ie(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Fe(c,f);var g=Fe(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Le=null,Me=null,Ne=null,Oe=!1;\nfunction Pe(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Oe||null==Le||Le!==Va(d)||(d=Le,\"selectionStart\"in d&&Ie(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Ne&&De(Ne,d)||(Ne=d,d=je(Me,\"onSelect\"),0Nf||(a.current=Mf[Nf],Mf[Nf]=null,Nf--)}function H(a,b){Nf++;Mf[Nf]=a.current;a.current=b}var Pf={},I=Of(Pf),Qf=Of(!1),Rf=Pf;function Sf(a,b){var c=a.type.contextTypes;if(!c)return Pf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Tf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function Uf(){G(Qf);G(I)}function Vf(a,b,c){if(I.current!==Pf)throw Error(p(168));H(I,b);H(Qf,c)}function Wf(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Pa(a)||\"Unknown\",e));return A({},c,d)}\nfunction Xf(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Pf;Rf=I.current;H(I,a);H(Qf,Qf.current);return!0}function Yf(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=Wf(a,b,Rf),d.__reactInternalMemoizedMergedChildContext=a,G(Qf),G(I),H(I,a)):G(Qf);H(Qf,c)}var Zf=null,$f=!1,ag=!1;function bg(a){null===Zf?Zf=[a]:Zf.push(a)}function cg(a){$f=!0;bg(a)}\nfunction dg(){if(!ag&&null!==Zf){ag=!0;var a=0,b=E;try{var c=Zf;for(E=1;a>=g;e-=g;Rg=1<<32-lc(b)+e|c<r?(x=m,m=null):x=m.sibling;var t=u(e,m,h[r],k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,r);null===n?l=t:n.sibling=t;n=t;m=x}if(r===h.length)return c(e,m),N&&Tg(e,r),l;if(null===m){for(;rr?(x=n,n=null):x=n.sibling;var v=u(e,n,t.value,k);if(null===v){null===n&&(n=x);break}a&&n&&null===v.alternate&&b(e,n);g=f(v,g,r);null===m?l=v:m.sibling=v;m=v;n=x}if(t.done)return c(e,\nn),N&&Tg(e,r),l;if(null===n){for(;!t.done;r++,t=h.next())t=w(e,t.value,k),null!==t&&(g=f(t,g,r),null===m?l=t:m.sibling=t,m=t);N&&Tg(e,r);return l}for(n=d(e,n);!t.done;r++,t=h.next())t=y(n,e,r,t.value,k),null!==t&&(a&&null!==t.alternate&&n.delete(null===t.key?r:t.key),g=f(t,g,r),null===m?l=t:m.sibling=t,m=t);a&&n.forEach(function(a){return b(e,a)});N&&Tg(e,r);return l}function C(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===va&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case ta:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===va){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Fa&&kh(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=ih(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===va?(d=qh(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=oh(f.type,f.key,f.props,null,a.mode,h),h.ref=ih(a,d,f),h.return=a,a=h)}return g(a);case ua:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=ph(f,a.mode,h);d.return=a;a=d}return g(a);case Fa:return l=f._init,C(a,d,l(f._payload),h)}if(bb(f))return n(a,d,f,h);if(Ia(f))return v(a,d,f,h);jh(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=nh(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return C}var rh=lh(!0),sh=lh(!1),th={},uh=Of(th),vh=Of(th),wh=Of(th);function xh(a){if(a===th)throw Error(p(174));return a}function yh(a,b){H(wh,b);H(vh,a);H(uh,th);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:ib(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=ib(b,a)}G(uh);H(uh,b)}function zh(){G(uh);G(vh);G(wh)}\nfunction Ah(a){xh(wh.current);var b=xh(uh.current);var c=ib(b,a.type);b!==c&&(H(vh,a),H(uh,c))}function Bh(a){vh.current===a&&(G(uh),G(vh))}var P=Of(0);\nfunction Ch(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Dh=[];\nfunction Eh(){for(var a=0;ac?c:4;a(!0);var d=Gh.transition;Gh.transition={};try{a(!1),b()}finally{E=c,Gh.transition=d}}function ti(){return Uh().memoizedState}function ui(a,b,c){var d=Dg(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};vi(a)?wi(b,c):(xi(a,b,c),c=M(),a=Eg(a,d,c),null!==a&&yi(a,b,d))}\nfunction gi(a,b,c){var d=Dg(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(vi(a))wi(b,e);else{xi(a,b,e);var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(Ce(h,g))return}catch(k){}finally{}c=M();a=Eg(a,d,c);null!==a&&yi(a,b,d)}}function vi(a){var b=a.alternate;return a===Q||null!==b&&b===Q}\nfunction wi(a,b){Jh=Ih=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function xi(a,b,c){null!==J&&0!==(a.mode&1)&&0===(K&2)?(a=b.interleaved,null===a?(c.next=c,null===qg?qg=[b]:qg.push(b)):(c.next=a.next,a.next=c),b.interleaved=c):(a=b.pending,null===a?c.next=c:(c.next=a.next,a.next=c),b.pending=c)}function yi(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;yc(a,c)}}\nvar Rh={readContext:pg,useCallback:U,useContext:U,useEffect:U,useImperativeHandle:U,useInsertionEffect:U,useLayoutEffect:U,useMemo:U,useReducer:U,useRef:U,useState:U,useDebugValue:U,useDeferredValue:U,useTransition:U,useMutableSource:U,useSyncExternalStore:U,useId:U,unstable_isNewReconciler:!1},Oh={readContext:pg,useCallback:function(a,b){Th().memoizedState=[a,void 0===b?null:b];return a},useContext:pg,useEffect:ki,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ii(4194308,\n4,ni.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ii(4194308,4,a,b)},useInsertionEffect:function(a,b){return ii(4,2,a,b)},useMemo:function(a,b){var c=Th();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=Th();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=ui.bind(null,Q,a);return[d.memoizedState,a]},useRef:function(a){var b=\nTh();a={current:a};return b.memoizedState=a},useState:fi,useDebugValue:pi,useDeferredValue:function(a){var b=fi(a),c=b[0],d=b[1];ki(function(){var b=Gh.transition;Gh.transition={};try{d(a)}finally{Gh.transition=b}},[a]);return c},useTransition:function(){var a=fi(!1),b=a[0];a=si.bind(null,a[1]);Th().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=Q,e=Th();if(N){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===J)throw Error(p(349));\n0!==(Hh&30)||di(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;ki(ai.bind(null,d,f,a),[a]);d.flags|=2048;bi(9,ci.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=Th(),b=J.identifierPrefix;if(N){var c=Sg;var d=Rg;c=(d&~(1<<32-lc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Kh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):\n(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[If]=b;a[Jf]=d;Li(a,b,!1,!1);b.stateNode=a;a:{g=sb(c,d);switch(c){case \"dialog\":F(\"cancel\",a);F(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":F(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eTi&&(b.flags|=128,d=!0,Pi(f,!1),b.lanes=4194304)}else{if(!d)if(a=Ch(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,\nnull!==c&&(b.updateQueue=c,b.flags|=4),Pi(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!N)return V(b),null}else 2*D()-f.renderingStartTime>Ti&&1073741824!==c&&(b.flags|=128,d=!0,Pi(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=b,f.tail=b.sibling,f.renderingStartTime=D(),b.sibling=null,c=P.current,H(P,d?c&1|2:c&1),b;V(b);return null;case 22:case 23:return Ui(),d=null!==\nb.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(Vi&1073741824)&&(V(b),b.subtreeFlags&6&&(b.flags|=8192)):V(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}var Wi=sa.ReactCurrentOwner,og=!1;function Xi(a,b,c,d){b.child=null===a?sh(b,null,c,d):rh(b,a.child,c,d)}\nfunction Yi(a,b,c,d,e){c=c.render;var f=b.ref;ng(b,e);d=Nh(a,b,c,d,f,e);c=Sh();if(null!==a&&!og)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,Zi(a,b,e);N&&c&&Vg(b);b.flags|=1;Xi(a,b,d,e);return b.child}\nfunction $i(a,b,c,d,e){if(null===a){var f=c.type;if(\"function\"===typeof f&&!aj(f)&&void 0===f.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=f,bj(a,b,f,d,e);a=oh(c.type,null,d,b,b.mode,e);a.ref=b.ref;a.return=b;return b.child=a}f=a.child;if(0===(a.lanes&e)){var g=f.memoizedProps;c=c.compare;c=null!==c?c:De;if(c(g,d)&&a.ref===b.ref)return Zi(a,b,e)}b.flags|=1;a=mh(f,d);a.ref=b.ref;a.return=b;return b.child=a}\nfunction bj(a,b,c,d,e){if(null!==a&&De(a.memoizedProps,d)&&a.ref===b.ref)if(og=!1,0!==(a.lanes&e))0!==(a.flags&131072)&&(og=!0);else return b.lanes=a.lanes,Zi(a,b,e);return cj(a,b,c,d,e)}\nfunction dj(a,b,c){var d=b.pendingProps,e=d.children,f=null!==a?a.memoizedState:null;if(\"hidden\"===d.mode)if(0===(b.mode&1))b.memoizedState={baseLanes:0,cachePool:null},H(ej,Vi),Vi|=c;else if(0!==(c&1073741824))b.memoizedState={baseLanes:0,cachePool:null},d=null!==f?f.baseLanes:c,H(ej,Vi),Vi|=d;else return a=null!==f?f.baseLanes|c:c,b.lanes=b.childLanes=1073741824,b.memoizedState={baseLanes:a,cachePool:null},b.updateQueue=null,H(ej,Vi),Vi|=a,null;else null!==f?(d=f.baseLanes|c,b.memoizedState=null):\nd=c,H(ej,Vi),Vi|=d;Xi(a,b,e,c);return b.child}function fj(a,b){var c=b.ref;if(null===a&&null!==c||null!==a&&a.ref!==c)b.flags|=512,b.flags|=2097152}function cj(a,b,c,d,e){var f=Tf(c)?Rf:I.current;f=Sf(b,f);ng(b,e);c=Nh(a,b,c,d,f,e);d=Sh();if(null!==a&&!og)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,Zi(a,b,e);N&&d&&Vg(b);b.flags|=1;Xi(a,b,c,e);return b.child}\nfunction gj(a,b,c,d,e){if(Tf(c)){var f=!0;Xf(b)}else f=!1;ng(b,e);if(null===b.stateNode)null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2),Hg(b,c,d),Jg(b,c,d,e),d=!0;else if(null===a){var g=b.stateNode,h=b.memoizedProps;g.props=h;var k=g.context,l=c.contextType;\"object\"===typeof l&&null!==l?l=pg(l):(l=Tf(c)?Rf:I.current,l=Sf(b,l));var m=c.getDerivedStateFromProps,w=\"function\"===typeof m||\"function\"===typeof g.getSnapshotBeforeUpdate;w||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\n\"function\"!==typeof g.componentWillReceiveProps||(h!==d||k!==l)&&Ig(b,g,d,l);rg=!1;var u=b.memoizedState;g.state=u;yg(b,d,g,e);k=b.memoizedState;h!==d||u!==k||Qf.current||rg?(\"function\"===typeof m&&(Cg(b,c,m,d),k=b.memoizedState),(h=rg||Gg(b,c,h,d,u,k,l))?(w||\"function\"!==typeof g.UNSAFE_componentWillMount&&\"function\"!==typeof g.componentWillMount||(\"function\"===typeof g.componentWillMount&&g.componentWillMount(),\"function\"===typeof g.UNSAFE_componentWillMount&&g.UNSAFE_componentWillMount()),\"function\"===\ntypeof g.componentDidMount&&(b.flags|=4194308)):(\"function\"===typeof g.componentDidMount&&(b.flags|=4194308),b.memoizedProps=d,b.memoizedState=k),g.props=d,g.state=k,g.context=l,d=h):(\"function\"===typeof g.componentDidMount&&(b.flags|=4194308),d=!1)}else{g=b.stateNode;tg(a,b);h=b.memoizedProps;l=b.type===b.elementType?h:fg(b.type,h);g.props=l;w=b.pendingProps;u=g.context;k=c.contextType;\"object\"===typeof k&&null!==k?k=pg(k):(k=Tf(c)?Rf:I.current,k=Sf(b,k));var y=c.getDerivedStateFromProps;(m=\"function\"===\ntypeof y||\"function\"===typeof g.getSnapshotBeforeUpdate)||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||(h!==w||u!==k)&&Ig(b,g,d,k);rg=!1;u=b.memoizedState;g.state=u;yg(b,d,g,e);var n=b.memoizedState;h!==w||u!==n||Qf.current||rg?(\"function\"===typeof y&&(Cg(b,c,y,d),n=b.memoizedState),(l=rg||Gg(b,c,l,d,u,n,k)||!1)?(m||\"function\"!==typeof g.UNSAFE_componentWillUpdate&&\"function\"!==typeof g.componentWillUpdate||(\"function\"===typeof g.componentWillUpdate&&\ng.componentWillUpdate(d,n,k),\"function\"===typeof g.UNSAFE_componentWillUpdate&&g.UNSAFE_componentWillUpdate(d,n,k)),\"function\"===typeof g.componentDidUpdate&&(b.flags|=4),\"function\"===typeof g.getSnapshotBeforeUpdate&&(b.flags|=1024)):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&u===a.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&u===a.memoizedState||(b.flags|=1024),b.memoizedProps=d,b.memoizedState=n),g.props=d,g.state=n,g.context=\nk,d=l):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&u===a.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&u===a.memoizedState||(b.flags|=1024),d=!1)}return hj(a,b,c,d,f,e)}\nfunction hj(a,b,c,d,e,f){fj(a,b);var g=0!==(b.flags&128);if(!d&&!g)return e&&Yf(b,c,!1),Zi(a,b,f);d=b.stateNode;Wi.current=b;var h=g&&\"function\"!==typeof c.getDerivedStateFromError?null:d.render();b.flags|=1;null!==a&&g?(b.child=rh(b,a.child,null,f),b.child=rh(b,null,h,f)):Xi(a,b,h,f);b.memoizedState=d.state;e&&Yf(b,c,!0);return b.child}function ij(a){var b=a.stateNode;b.pendingContext?Vf(a,b.pendingContext,b.pendingContext!==b.context):b.context&&Vf(a,b.context,!1);yh(a,b.containerInfo)}\nfunction jj(a,b,c,d,e){gh();hh(e);b.flags|=256;Xi(a,b,c,d);return b.child}var kj={dehydrated:null,treeContext:null,retryLane:0};function lj(a){return{baseLanes:a,cachePool:null}}\nfunction mj(a,b,c){var d=b.pendingProps,e=P.current,f=!1,g=0!==(b.flags&128),h;(h=g)||(h=null!==a&&null===a.memoizedState?!1:0!==(e&2));if(h)f=!0,b.flags&=-129;else if(null===a||null!==a.memoizedState)e|=1;H(P,e&1);if(null===a){dh(b);a=b.memoizedState;if(null!==a&&(a=a.dehydrated,null!==a))return 0===(b.mode&1)?b.lanes=1:\"$!\"===a.data?b.lanes=8:b.lanes=1073741824,null;e=d.children;a=d.fallback;return f?(d=b.mode,f=b.child,e={mode:\"hidden\",children:e},0===(d&1)&&null!==f?(f.childLanes=0,f.pendingProps=\ne):f=nj(e,d,0,null),a=qh(a,d,c,null),f.return=b,a.return=b,f.sibling=a,b.child=f,b.child.memoizedState=lj(c),b.memoizedState=kj,a):oj(b,e)}e=a.memoizedState;if(null!==e){h=e.dehydrated;if(null!==h){if(g){if(b.flags&256)return b.flags&=-257,pj(a,b,c,Error(p(422)));if(null!==b.memoizedState)return b.child=a.child,b.flags|=128,null;f=d.fallback;e=b.mode;d=nj({mode:\"visible\",children:d.children},e,0,null);f=qh(f,e,c,null);f.flags|=2;d.return=b;f.return=b;d.sibling=f;b.child=d;0!==(b.mode&1)&&rh(b,a.child,\nnull,c);b.child.memoizedState=lj(c);b.memoizedState=kj;return f}if(0===(b.mode&1))b=pj(a,b,c,null);else if(\"$!\"===h.data)b=pj(a,b,c,Error(p(419)));else if(d=0!==(c&a.childLanes),og||d){d=J;if(null!==d){switch(c&-c){case 4:f=2;break;case 16:f=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:f=32;break;case 536870912:f=\n268435456;break;default:f=0}d=0!==(f&(d.suspendedLanes|c))?0:f;0!==d&&d!==e.retryLane&&(e.retryLane=d,Eg(a,d,-1))}Si();b=pj(a,b,c,Error(p(421)))}else\"$?\"===h.data?(b.flags|=128,b.child=a.child,b=qj.bind(null,a),h._reactRetry=b,b=null):(c=e.treeContext,Yg=Ff(h.nextSibling),Xg=b,N=!0,Zg=null,null!==c&&(Og[Pg++]=Rg,Og[Pg++]=Sg,Og[Pg++]=Qg,Rg=c.id,Sg=c.overflow,Qg=b),b=oj(b,b.pendingProps.children),b.flags|=4096);return b}if(f)return d=rj(a,b,d.children,d.fallback,c),f=b.child,e=a.child.memoizedState,\nf.memoizedState=null===e?lj(c):{baseLanes:e.baseLanes|c,cachePool:null},f.childLanes=a.childLanes&~c,b.memoizedState=kj,d;c=sj(a,b,d.children,c);b.memoizedState=null;return c}if(f)return d=rj(a,b,d.children,d.fallback,c),f=b.child,e=a.child.memoizedState,f.memoizedState=null===e?lj(c):{baseLanes:e.baseLanes|c,cachePool:null},f.childLanes=a.childLanes&~c,b.memoizedState=kj,d;c=sj(a,b,d.children,c);b.memoizedState=null;return c}\nfunction oj(a,b){b=nj({mode:\"visible\",children:b},a.mode,0,null);b.return=a;return a.child=b}function sj(a,b,c,d){var e=a.child;a=e.sibling;c=mh(e,{mode:\"visible\",children:c});0===(b.mode&1)&&(c.lanes=d);c.return=b;c.sibling=null;null!==a&&(d=b.deletions,null===d?(b.deletions=[a],b.flags|=16):d.push(a));return b.child=c}\nfunction rj(a,b,c,d,e){var f=b.mode;a=a.child;var g=a.sibling,h={mode:\"hidden\",children:c};0===(f&1)&&b.child!==a?(c=b.child,c.childLanes=0,c.pendingProps=h,b.deletions=null):(c=mh(a,h),c.subtreeFlags=a.subtreeFlags&14680064);null!==g?d=mh(g,d):(d=qh(d,f,e,null),d.flags|=2);d.return=b;c.return=b;c.sibling=d;b.child=c;return d}function pj(a,b,c,d){null!==d&&hh(d);rh(b,a.child,null,c);a=oj(b,b.pendingProps.children);a.flags|=2;b.memoizedState=null;return a}\nfunction tj(a,b,c){a.lanes|=b;var d=a.alternate;null!==d&&(d.lanes|=b);mg(a.return,b,c)}function uj(a,b,c,d,e){var f=a.memoizedState;null===f?a.memoizedState={isBackwards:b,rendering:null,renderingStartTime:0,last:d,tail:c,tailMode:e}:(f.isBackwards=b,f.rendering=null,f.renderingStartTime=0,f.last=d,f.tail=c,f.tailMode=e)}\nfunction vj(a,b,c){var d=b.pendingProps,e=d.revealOrder,f=d.tail;Xi(a,b,d.children,c);d=P.current;if(0!==(d&2))d=d&1|2,b.flags|=128;else{if(null!==a&&0!==(a.flags&128))a:for(a=b.child;null!==a;){if(13===a.tag)null!==a.memoizedState&&tj(a,c,b);else if(19===a.tag)tj(a,c,b);else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===b)break a;for(;null===a.sibling;){if(null===a.return||a.return===b)break a;a=a.return}a.sibling.return=a.return;a=a.sibling}d&=1}H(P,d);if(0===(b.mode&1))b.memoizedState=\nnull;else switch(e){case \"forwards\":c=b.child;for(e=null;null!==c;)a=c.alternate,null!==a&&null===Ch(a)&&(e=c),c=c.sibling;c=e;null===c?(e=b.child,b.child=null):(e=c.sibling,c.sibling=null);uj(b,!1,e,c,f);break;case \"backwards\":c=null;e=b.child;for(b.child=null;null!==e;){a=e.alternate;if(null!==a&&null===Ch(a)){b.child=e;break}a=e.sibling;e.sibling=c;c=e;e=a}uj(b,!0,c,null,f);break;case \"together\":uj(b,!1,null,null,void 0);break;default:b.memoizedState=null}return b.child}\nfunction Zi(a,b,c){null!==a&&(b.dependencies=a.dependencies);zg|=b.lanes;if(0===(c&b.childLanes))return null;if(null!==a&&b.child!==a.child)throw Error(p(153));if(null!==b.child){a=b.child;c=mh(a,a.pendingProps);b.child=c;for(c.return=b;null!==a.sibling;)a=a.sibling,c=c.sibling=mh(a,a.pendingProps),c.return=b;c.sibling=null}return b.child}\nfunction wj(a,b,c){switch(b.tag){case 3:ij(b);gh();break;case 5:Ah(b);break;case 1:Tf(b.type)&&Xf(b);break;case 4:yh(b,b.stateNode.containerInfo);break;case 10:var d=b.type._context,e=b.memoizedProps.value;H(gg,d._currentValue);d._currentValue=e;break;case 13:d=b.memoizedState;if(null!==d){if(null!==d.dehydrated)return H(P,P.current&1),b.flags|=128,null;if(0!==(c&b.child.childLanes))return mj(a,b,c);H(P,P.current&1);a=Zi(a,b,c);return null!==a?a.sibling:null}H(P,P.current&1);break;case 19:d=0!==(c&\nb.childLanes);if(0!==(a.flags&128)){if(d)return vj(a,b,c);b.flags|=128}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);H(P,P.current);if(d)break;else return null;case 22:case 23:return b.lanes=0,dj(a,b,c)}return Zi(a,b,c)}\nfunction xj(a,b){Wg(b);switch(b.tag){case 1:return Tf(b.type)&&Uf(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return zh(),G(Qf),G(I),Eh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Bh(b),null;case 13:G(P);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));gh()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return G(P),null;case 4:return zh(),null;case 10:return lg(b.type._context),null;case 22:case 23:return Ui(),\nnull;case 24:return null;default:return null}}var yj=!1,zj=!1,Aj=\"function\"===typeof WeakSet?WeakSet:Set,X=null;function Bj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){Cj(a,b,d)}else c.current=null}function Dj(a,b,c){try{c()}catch(d){Cj(a,b,d)}}var Ej=!1;\nfunction Fj(a,b){a=He();if(Ie(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(O){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,w=a,u=null;b:for(;;){for(var y;;){w!==c||0!==e&&3!==w.nodeType||(h=g+e);w!==f||0!==d&&3!==w.nodeType||(k=g+d);3===w.nodeType&&(g+=w.nodeValue.length);\nif(null===(y=w.firstChild))break;u=w;w=y}for(;;){if(w===a)break b;u===c&&++l===e&&(h=g);u===f&&++m===d&&(k=g);if(null!==(y=w.nextSibling))break;w=u;u=w.parentNode}w=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;xf={focusedElem:a,selectionRange:c};for(X=b;null!==X;)if(b=X,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,X=a;else for(;null!==X;){b=X;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;case 1:if(null!==\nn){var v=n.memoizedProps,C=n.memoizedState,t=b.stateNode,r=t.getSnapshotBeforeUpdate(b.elementType===b.type?v:fg(b.type,v),C);t.__reactInternalSnapshotBeforeUpdate=r}break;case 3:var x=b.stateNode.containerInfo;if(1===x.nodeType)x.textContent=\"\";else if(9===x.nodeType){var B=x.body;null!=B&&(B.textContent=\"\")}break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(O){Cj(b,b.return,O)}a=b.sibling;if(null!==a){a.return=b.return;X=a;break}X=b.return}n=Ej;Ej=!1;return n}\nfunction Gj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Dj(b,c,f)}e=e.next}while(e!==d)}}function Hj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Ij(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Jj(a,b,c){if(ic&&\"function\"===typeof ic.onCommitFiberUnmount)try{ic.onCommitFiberUnmount(hc,b)}catch(g){}switch(b.tag){case 0:case 11:case 14:case 15:a=b.updateQueue;if(null!==a&&(a=a.lastEffect,null!==a)){var d=a=a.next;do{var e=d,f=e.destroy;e=e.tag;void 0!==f&&(0!==(e&2)?Dj(b,c,f):0!==(e&4)&&Dj(b,c,f));d=d.next}while(d!==a)}break;case 1:Bj(b,c);a=b.stateNode;if(\"function\"===typeof a.componentWillUnmount)try{a.props=b.memoizedProps,a.state=b.memoizedState,a.componentWillUnmount()}catch(g){Cj(b,\nc,g)}break;case 5:Bj(b,c);break;case 4:Kj(a,b,c)}}function Lj(a){var b=a.alternate;null!==b&&(a.alternate=null,Lj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[If],delete b[Jf],delete b[jf],delete b[Kf],delete b[Lf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Mj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Nj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Mj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Oj(a){a:{for(var b=a.return;null!==b;){if(Mj(b))break a;b=b.return}throw Error(p(160));}var c=b;switch(c.tag){case 5:b=c.stateNode;c.flags&32&&(lb(b,\"\"),c.flags&=-33);c=Nj(a);Pj(a,c,b);break;case 3:case 4:b=c.stateNode.containerInfo;c=Nj(a);Qj(a,c,b);break;default:throw Error(p(161));}}\nfunction Qj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=wf));else if(4!==d&&(a=a.child,null!==a))for(Qj(a,b,c),a=a.sibling;null!==a;)Qj(a,b,c),a=a.sibling}\nfunction Pj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Pj(a,b,c),a=a.sibling;null!==a;)Pj(a,b,c),a=a.sibling}\nfunction Kj(a,b,c){for(var d=b,e=!1,f,g;;){if(!e){e=d.return;a:for(;;){if(null===e)throw Error(p(160));f=e.stateNode;switch(e.tag){case 5:g=!1;break a;case 3:f=f.containerInfo;g=!0;break a;case 4:f=f.containerInfo;g=!0;break a}e=e.return}e=!0}if(5===d.tag||6===d.tag){a:for(var h=a,k=d,l=c,m=k;;)if(Jj(h,m,l),null!==m.child&&4!==m.tag)m.child.return=m,m=m.child;else{if(m===k)break a;for(;null===m.sibling;){if(null===m.return||m.return===k)break a;m=m.return}m.sibling.return=m.return;m=m.sibling}g?(h=\nf,k=d.stateNode,8===h.nodeType?h.parentNode.removeChild(k):h.removeChild(k)):f.removeChild(d.stateNode)}else if(18===d.tag)g?(h=f,k=d.stateNode,8===h.nodeType?Ef(h.parentNode,k):1===h.nodeType&&Ef(h,k),Yc(h)):Ef(f,d.stateNode);else if(4===d.tag){if(null!==d.child){f=d.stateNode.containerInfo;g=!0;d.child.return=d;d=d.child;continue}}else if(Jj(a,d,c),null!==d.child){d.child.return=d;d=d.child;continue}if(d===b)break;for(;null===d.sibling;){if(null===d.return||d.return===b)return;d=d.return;4===d.tag&&\n(e=!1)}d.sibling.return=d.return;d=d.sibling}}\nfunction Rj(a,b){switch(b.tag){case 0:case 11:case 14:case 15:Gj(3,b,b.return);Hj(3,b);Gj(5,b,b.return);return;case 1:return;case 5:var c=b.stateNode;if(null!=c){var d=b.memoizedProps,e=null!==a?a.memoizedProps:d;a=b.type;var f=b.updateQueue;b.updateQueue=null;if(null!==f){\"input\"===a&&\"radio\"===d.type&&null!=d.name&&Ya(c,d);sb(a,e);b=sb(a,d);for(e=0;ee&&(e=g);d&=~f}d=e;d=D()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*bk(d/1960))-d;if(10a?16:a;if(null===lk)var d=!1;else{a=lk;lk=null;mk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(X=a.current;null!==X;){var f=X,g=f.child;if(0!==(X.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kD()-Vj?Ak(a,0):hk|=c);tk(a,b)}function Ok(a,b){0===b&&(0===(a.mode&1)?b=1:(b=pc,pc<<=1,0===(pc&130023424)&&(pc=4194304)));var c=M();a=rk(a,b);null!==a&&(wc(a,b,c),tk(a,c))}function qj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Ok(a,c)}\nfunction Tj(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Ok(a,c)}var Lk;\nLk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Qf.current)og=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return og=!1,wj(a,b,c);og=0!==(a.flags&131072)?!0:!1}else og=!1,N&&0!==(b.flags&1048576)&&Ug(b,Ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);a=b.pendingProps;var e=Sf(b,I.current);ng(b,c);e=Nh(null,b,d,a,e,c);var f=Sh();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?\n(b.tag=1,b.memoizedState=null,b.updateQueue=null,Tf(d)?(f=!0,Xf(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,sg(b),e.updater=Fg,b.stateNode=e,e._reactInternals=b,Jg(b,d,a,c),b=hj(null,b,d,!0,f,c)):(b.tag=0,N&&f&&Vg(b),Xi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=Pk(d);a=fg(d,a);switch(e){case 0:b=cj(null,b,d,a,c);break a;case 1:b=gj(null,b,\nd,a,c);break a;case 11:b=Yi(null,b,d,a,c);break a;case 14:b=$i(null,b,d,fg(d.type,a),c);break a}throw Error(p(306,d,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:fg(d,e),cj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:fg(d,e),gj(a,b,d,e,c);case 3:a:{ij(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;tg(a,b);yg(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,\ncache:g.cache,transitions:g.transitions},b.updateQueue.baseState=f,b.memoizedState=f,b.flags&256){e=Error(p(423));b=jj(a,b,d,c,e);break a}else if(d!==e){e=Error(p(424));b=jj(a,b,d,c,e);break a}else for(Yg=Ff(b.stateNode.containerInfo.firstChild),Xg=b,N=!0,Zg=null,c=sh(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{gh();if(d===e){b=Zi(a,b,c);break a}Xi(a,b,d,c)}b=b.child}return b;case 5:return Ah(b),null===a&&dh(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,\nyf(d,e)?g=null:null!==f&&yf(d,f)&&(b.flags|=32),fj(a,b),Xi(a,b,g,c),b.child;case 6:return null===a&&dh(b),null;case 13:return mj(a,b,c);case 4:return yh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=rh(b,null,d,c):Xi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:fg(d,e),Yi(a,b,d,e,c);case 7:return Xi(a,b,b.pendingProps,c),b.child;case 8:return Xi(a,b,b.pendingProps.children,c),b.child;case 12:return Xi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=\nb.type._context;e=b.pendingProps;f=b.memoizedProps;g=e.value;H(gg,d._currentValue);d._currentValue=g;if(null!==f)if(Ce(f.value,g)){if(f.children===e.children&&!Qf.current){b=Zi(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=ug(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=\nc;k=f.alternate;null!==k&&(k.lanes|=c);mg(f.return,c,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);mg(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Xi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,\nng(b,c),e=pg(e),d=d(e),b.flags|=1,Xi(a,b,d,c),b.child;case 14:return d=b.type,e=fg(d,b.pendingProps),e=fg(d.type,e),$i(a,b,d,e,c);case 15:return bj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:fg(d,e),null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2),b.tag=1,Tf(d)?(a=!0,Xf(b)):a=!1,ng(b,c),Hg(b,d,e),Jg(b,d,e,c),hj(null,b,d,!0,a,c);case 19:return vj(a,b,c);case 22:return dj(a,b,c)}throw Error(p(156,b.tag));};function vk(a,b){return Yb(a,b)}\nfunction Qk(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function ah(a,b,c,d){return new Qk(a,b,c,d)}function aj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction Pk(a){if(\"function\"===typeof a)return aj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Ba)return 11;if(a===Ea)return 14}return 2}\nfunction mh(a,b){var c=a.alternate;null===c?(c=ah(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction oh(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)aj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case va:return qh(c.children,e,f,b);case wa:g=8;e|=8;break;case xa:return a=ah(12,c,b,e|2),a.elementType=xa,a.lanes=f,a;case Ca:return a=ah(13,c,b,e),a.elementType=Ca,a.lanes=f,a;case Da:return a=ah(19,c,b,e),a.elementType=Da,a.lanes=f,a;case Ga:return nj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case ya:g=10;break a;case Aa:g=9;break a;case Ba:g=11;\nbreak a;case Ea:g=14;break a;case Fa:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=ah(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function qh(a,b,c,d){a=ah(7,a,d,b);a.lanes=c;return a}function nj(a,b,c,d){a=ah(22,a,d,b);a.elementType=Ga;a.lanes=c;a.stateNode={};return a}function nh(a,b,c){a=ah(6,a,null,b);a.lanes=c;return a}\nfunction ph(a,b,c){b=ah(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction Rk(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=vc(0);this.expirationTimes=vc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=vc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function Sk(a,b,c,d,e,f,g,h,k){a=new Rk(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=ah(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null};sg(f);return a}function Tk(a,b,c){var d=3';\n\n var script = '\\n (function(w,d,s,l,i){w[l]=w[l]||[];\\n w[l].push({\\'gtm.start\\': new Date().getTime(),event:\\'gtm.js\\', ' + JSON.stringify(events).slice(1, -1) + '});\\n var f=d.getElementsByTagName(s)[0],j=d.createElement(s),dl=l!=\\'dataLayer\\'?\\'&l=\\'+l:\\'\\';\\n j.async=true;j.src=\\'https://www.googletagmanager.com/gtm.js?id=\\'+i+dl+\\'' + gtm_auth + gtm_preview + '>m_cookies_win=x\\';\\n f.parentNode.insertBefore(j,f);\\n })(window,document,\\'script\\',\\'' + dataLayerName + '\\',\\'' + id + '\\');';\n\n var dataLayerVar = this.dataLayer(dataLayer, dataLayerName);\n\n return {\n iframe: iframe,\n script: script,\n dataLayerVar: dataLayerVar\n };\n },\n dataLayer: function dataLayer(_dataLayer, dataLayerName) {\n return '\\n window.' + dataLayerName + ' = window.' + dataLayerName + ' || [];\\n window.' + dataLayerName + '.push(' + JSON.stringify(_dataLayer) + ')';\n }\n};\n\nmodule.exports = Snippets;","'use strict';\n\nvar _Snippets = require('./Snippets');\n\nvar _Snippets2 = _interopRequireDefault(_Snippets);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar TagManager = {\n dataScript: function dataScript(dataLayer) {\n var script = document.createElement('script');\n script.innerHTML = dataLayer;\n return script;\n },\n gtm: function gtm(args) {\n var snippets = _Snippets2.default.tags(args);\n\n var noScript = function noScript() {\n var noscript = document.createElement('noscript');\n noscript.innerHTML = snippets.iframe;\n return noscript;\n };\n\n var script = function script() {\n var script = document.createElement('script');\n script.innerHTML = snippets.script;\n return script;\n };\n\n var dataScript = this.dataScript(snippets.dataLayerVar);\n\n return {\n noScript: noScript,\n script: script,\n dataScript: dataScript\n };\n },\n initialize: function initialize(_ref) {\n var gtmId = _ref.gtmId,\n _ref$events = _ref.events,\n events = _ref$events === undefined ? {} : _ref$events,\n dataLayer = _ref.dataLayer,\n _ref$dataLayerName = _ref.dataLayerName,\n dataLayerName = _ref$dataLayerName === undefined ? 'dataLayer' : _ref$dataLayerName,\n _ref$auth = _ref.auth,\n auth = _ref$auth === undefined ? '' : _ref$auth,\n _ref$preview = _ref.preview,\n preview = _ref$preview === undefined ? '' : _ref$preview;\n\n var gtm = this.gtm({\n id: gtmId,\n events: events,\n dataLayer: dataLayer || undefined,\n dataLayerName: dataLayerName,\n auth: auth,\n preview: preview\n });\n if (dataLayer) document.head.appendChild(gtm.dataScript);\n document.head.insertBefore(gtm.script(), document.head.childNodes[0]);\n document.body.insertBefore(gtm.noScript(), document.body.childNodes[0]);\n },\n dataLayer: function dataLayer(_ref2) {\n var _dataLayer = _ref2.dataLayer,\n _ref2$dataLayerName = _ref2.dataLayerName,\n dataLayerName = _ref2$dataLayerName === undefined ? 'dataLayer' : _ref2$dataLayerName;\n\n if (window[dataLayerName]) return window[dataLayerName].push(_dataLayer);\n var snippets = _Snippets2.default.dataLayer(_dataLayer, dataLayerName);\n var dataScript = this.dataScript(snippets);\n document.head.insertBefore(dataScript, document.head.childNodes[0]);\n }\n};\n\nmodule.exports = TagManager;","'use strict';\n\nvar _TagManager = require('./TagManager');\n\nvar _TagManager2 = _interopRequireDefault(_TagManager);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = _TagManager2.default;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar warn = function warn(s) {\n console.warn('[react-gtm]', s);\n};\n\nexports.default = warn;","/** @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","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.PrevArrow = exports.NextArrow = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _innerSliderUtils = require(\"./utils/innerSliderUtils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _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); 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\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); Object.defineProperty(Constructor, \"prototype\", { writable: false }); 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 } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); 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; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } 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 { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], 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\nvar PrevArrow = /*#__PURE__*/function (_React$PureComponent) {\n _inherits(PrevArrow, _React$PureComponent);\n\n var _super = _createSuper(PrevArrow);\n\n function PrevArrow() {\n _classCallCheck(this, PrevArrow);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(PrevArrow, [{\n key: \"clickHandler\",\n value: function clickHandler(options, e) {\n if (e) {\n e.preventDefault();\n }\n\n this.props.clickHandler(options, e);\n }\n }, {\n key: \"render\",\n value: function render() {\n var prevClasses = {\n \"slick-arrow\": true,\n \"slick-prev\": true\n };\n var prevHandler = this.clickHandler.bind(this, {\n message: \"previous\"\n });\n\n if (!this.props.infinite && (this.props.currentSlide === 0 || this.props.slideCount <= this.props.slidesToShow)) {\n prevClasses[\"slick-disabled\"] = true;\n prevHandler = null;\n }\n\n var prevArrowProps = {\n key: \"0\",\n \"data-role\": \"none\",\n className: (0, _classnames[\"default\"])(prevClasses),\n style: {\n display: \"block\"\n },\n onClick: prevHandler\n };\n var customProps = {\n currentSlide: this.props.currentSlide,\n slideCount: this.props.slideCount\n };\n var prevArrow;\n\n if (this.props.prevArrow) {\n prevArrow = /*#__PURE__*/_react[\"default\"].cloneElement(this.props.prevArrow, _objectSpread(_objectSpread({}, prevArrowProps), customProps));\n } else {\n prevArrow = /*#__PURE__*/_react[\"default\"].createElement(\"button\", _extends({\n key: \"0\",\n type: \"button\"\n }, prevArrowProps), \" \", \"Previous\");\n }\n\n return prevArrow;\n }\n }]);\n\n return PrevArrow;\n}(_react[\"default\"].PureComponent);\n\nexports.PrevArrow = PrevArrow;\n\nvar NextArrow = /*#__PURE__*/function (_React$PureComponent2) {\n _inherits(NextArrow, _React$PureComponent2);\n\n var _super2 = _createSuper(NextArrow);\n\n function NextArrow() {\n _classCallCheck(this, NextArrow);\n\n return _super2.apply(this, arguments);\n }\n\n _createClass(NextArrow, [{\n key: \"clickHandler\",\n value: function clickHandler(options, e) {\n if (e) {\n e.preventDefault();\n }\n\n this.props.clickHandler(options, e);\n }\n }, {\n key: \"render\",\n value: function render() {\n var nextClasses = {\n \"slick-arrow\": true,\n \"slick-next\": true\n };\n var nextHandler = this.clickHandler.bind(this, {\n message: \"next\"\n });\n\n if (!(0, _innerSliderUtils.canGoNext)(this.props)) {\n nextClasses[\"slick-disabled\"] = true;\n nextHandler = null;\n }\n\n var nextArrowProps = {\n key: \"1\",\n \"data-role\": \"none\",\n className: (0, _classnames[\"default\"])(nextClasses),\n style: {\n display: \"block\"\n },\n onClick: nextHandler\n };\n var customProps = {\n currentSlide: this.props.currentSlide,\n slideCount: this.props.slideCount\n };\n var nextArrow;\n\n if (this.props.nextArrow) {\n nextArrow = /*#__PURE__*/_react[\"default\"].cloneElement(this.props.nextArrow, _objectSpread(_objectSpread({}, nextArrowProps), customProps));\n } else {\n nextArrow = /*#__PURE__*/_react[\"default\"].createElement(\"button\", _extends({\n key: \"1\",\n type: \"button\"\n }, nextArrowProps), \" \", \"Next\");\n }\n\n return nextArrow;\n }\n }]);\n\n return NextArrow;\n}(_react[\"default\"].PureComponent);\n\nexports.NextArrow = NextArrow;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar defaultProps = {\n accessibility: true,\n adaptiveHeight: false,\n afterChange: null,\n appendDots: function appendDots(dots) {\n return /*#__PURE__*/_react[\"default\"].createElement(\"ul\", {\n style: {\n display: \"block\"\n }\n }, dots);\n },\n arrows: true,\n autoplay: false,\n autoplaySpeed: 3000,\n beforeChange: null,\n centerMode: false,\n centerPadding: \"50px\",\n className: \"\",\n cssEase: \"ease\",\n customPaging: function customPaging(i) {\n return /*#__PURE__*/_react[\"default\"].createElement(\"button\", null, i + 1);\n },\n dots: false,\n dotsClass: \"slick-dots\",\n draggable: true,\n easing: \"linear\",\n edgeFriction: 0.35,\n fade: false,\n focusOnSelect: false,\n infinite: true,\n initialSlide: 0,\n lazyLoad: null,\n nextArrow: null,\n onEdge: null,\n onInit: null,\n onLazyLoadError: null,\n onReInit: null,\n pauseOnDotsHover: false,\n pauseOnFocus: false,\n pauseOnHover: true,\n prevArrow: null,\n responsive: null,\n rows: 1,\n rtl: false,\n slide: \"div\",\n slidesPerRow: 1,\n slidesToScroll: 1,\n slidesToShow: 1,\n speed: 500,\n swipe: true,\n swipeEvent: null,\n swipeToSlide: false,\n touchMove: true,\n touchThreshold: 5,\n useCSS: true,\n useTransform: true,\n variableWidth: false,\n vertical: false,\n waitForAnimate: true\n};\nvar _default = defaultProps;\nexports[\"default\"] = _default;","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Dots = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _innerSliderUtils = require(\"./utils/innerSliderUtils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\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\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); Object.defineProperty(Constructor, \"prototype\", { writable: false }); 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 } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); 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; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } 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 { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], 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\nvar getDotCount = function getDotCount(spec) {\n var dots;\n\n if (spec.infinite) {\n dots = Math.ceil(spec.slideCount / spec.slidesToScroll);\n } else {\n dots = Math.ceil((spec.slideCount - spec.slidesToShow) / spec.slidesToScroll) + 1;\n }\n\n return dots;\n};\n\nvar Dots = /*#__PURE__*/function (_React$PureComponent) {\n _inherits(Dots, _React$PureComponent);\n\n var _super = _createSuper(Dots);\n\n function Dots() {\n _classCallCheck(this, Dots);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(Dots, [{\n key: \"clickHandler\",\n value: function clickHandler(options, e) {\n // In Autoplay the focus stays on clicked button even after transition\n // to next slide. That only goes away by click somewhere outside\n e.preventDefault();\n this.props.clickHandler(options);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n onMouseEnter = _this$props.onMouseEnter,\n onMouseOver = _this$props.onMouseOver,\n onMouseLeave = _this$props.onMouseLeave,\n infinite = _this$props.infinite,\n slidesToScroll = _this$props.slidesToScroll,\n slidesToShow = _this$props.slidesToShow,\n slideCount = _this$props.slideCount,\n currentSlide = _this$props.currentSlide;\n var dotCount = getDotCount({\n slideCount: slideCount,\n slidesToScroll: slidesToScroll,\n slidesToShow: slidesToShow,\n infinite: infinite\n });\n var mouseEvents = {\n onMouseEnter: onMouseEnter,\n onMouseOver: onMouseOver,\n onMouseLeave: onMouseLeave\n };\n var dots = [];\n\n for (var i = 0; i < dotCount; i++) {\n var _rightBound = (i + 1) * slidesToScroll - 1;\n\n var rightBound = infinite ? _rightBound : (0, _innerSliderUtils.clamp)(_rightBound, 0, slideCount - 1);\n\n var _leftBound = rightBound - (slidesToScroll - 1);\n\n var leftBound = infinite ? _leftBound : (0, _innerSliderUtils.clamp)(_leftBound, 0, slideCount - 1);\n var className = (0, _classnames[\"default\"])({\n \"slick-active\": infinite ? currentSlide >= leftBound && currentSlide <= rightBound : currentSlide === leftBound\n });\n var dotOptions = {\n message: \"dots\",\n index: i,\n slidesToScroll: slidesToScroll,\n currentSlide: currentSlide\n };\n var onClick = this.clickHandler.bind(this, dotOptions);\n dots = dots.concat( /*#__PURE__*/_react[\"default\"].createElement(\"li\", {\n key: i,\n className: className\n }, /*#__PURE__*/_react[\"default\"].cloneElement(this.props.customPaging(i), {\n onClick: onClick\n })));\n }\n\n return /*#__PURE__*/_react[\"default\"].cloneElement(this.props.appendDots(dots), _objectSpread({\n className: this.props.dotsClass\n }, mouseEvents));\n }\n }]);\n\n return Dots;\n}(_react[\"default\"].PureComponent);\n\nexports.Dots = Dots;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _slider = _interopRequireDefault(require(\"./slider\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar _default = _slider[\"default\"];\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\nvar initialState = {\n animating: false,\n autoplaying: null,\n currentDirection: 0,\n currentLeft: null,\n currentSlide: 0,\n direction: 1,\n dragging: false,\n edgeDragged: false,\n initialized: false,\n lazyLoadedList: [],\n listHeight: null,\n listWidth: null,\n scrolling: false,\n slideCount: null,\n slideHeight: null,\n slideWidth: null,\n swipeLeft: null,\n swiped: false,\n // used by swipeEvent. differentites between touch and swipe.\n swiping: false,\n touchObject: {\n startX: 0,\n startY: 0,\n curX: 0,\n curY: 0\n },\n trackStyle: {},\n trackWidth: 0,\n targetSlide: 0\n};\nvar _default = initialState;\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.InnerSlider = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _initialState = _interopRequireDefault(require(\"./initial-state\"));\n\nvar _lodash = _interopRequireDefault(require(\"lodash.debounce\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _innerSliderUtils = require(\"./utils/innerSliderUtils\");\n\nvar _track = require(\"./track\");\n\nvar _dots = require(\"./dots\");\n\nvar _arrows = require(\"./arrows\");\n\nvar _resizeObserverPolyfill = _interopRequireDefault(require(\"resize-observer-polyfill\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nfunction _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 _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 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\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); Object.defineProperty(Constructor, \"prototype\", { writable: false }); 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 } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); 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; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } 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 { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], 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\nvar InnerSlider = /*#__PURE__*/function (_React$Component) {\n _inherits(InnerSlider, _React$Component);\n\n var _super = _createSuper(InnerSlider);\n\n function InnerSlider(props) {\n var _this;\n\n _classCallCheck(this, InnerSlider);\n\n _this = _super.call(this, props);\n\n _defineProperty(_assertThisInitialized(_this), \"listRefHandler\", function (ref) {\n return _this.list = ref;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"trackRefHandler\", function (ref) {\n return _this.track = ref;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"adaptHeight\", function () {\n if (_this.props.adaptiveHeight && _this.list) {\n var elem = _this.list.querySelector(\"[data-index=\\\"\".concat(_this.state.currentSlide, \"\\\"]\"));\n\n _this.list.style.height = (0, _innerSliderUtils.getHeight)(elem) + \"px\";\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"componentDidMount\", function () {\n _this.props.onInit && _this.props.onInit();\n\n if (_this.props.lazyLoad) {\n var slidesToLoad = (0, _innerSliderUtils.getOnDemandLazySlides)(_objectSpread(_objectSpread({}, _this.props), _this.state));\n\n if (slidesToLoad.length > 0) {\n _this.setState(function (prevState) {\n return {\n lazyLoadedList: prevState.lazyLoadedList.concat(slidesToLoad)\n };\n });\n\n if (_this.props.onLazyLoad) {\n _this.props.onLazyLoad(slidesToLoad);\n }\n }\n }\n\n var spec = _objectSpread({\n listRef: _this.list,\n trackRef: _this.track\n }, _this.props);\n\n _this.updateState(spec, true, function () {\n _this.adaptHeight();\n\n _this.props.autoplay && _this.autoPlay(\"update\");\n });\n\n if (_this.props.lazyLoad === \"progressive\") {\n _this.lazyLoadTimer = setInterval(_this.progressiveLazyLoad, 1000);\n }\n\n _this.ro = new _resizeObserverPolyfill[\"default\"](function () {\n if (_this.state.animating) {\n _this.onWindowResized(false); // don't set trackStyle hence don't break animation\n\n\n _this.callbackTimers.push(setTimeout(function () {\n return _this.onWindowResized();\n }, _this.props.speed));\n } else {\n _this.onWindowResized();\n }\n });\n\n _this.ro.observe(_this.list);\n\n document.querySelectorAll && Array.prototype.forEach.call(document.querySelectorAll(\".slick-slide\"), function (slide) {\n slide.onfocus = _this.props.pauseOnFocus ? _this.onSlideFocus : null;\n slide.onblur = _this.props.pauseOnFocus ? _this.onSlideBlur : null;\n });\n\n if (window.addEventListener) {\n window.addEventListener(\"resize\", _this.onWindowResized);\n } else {\n window.attachEvent(\"onresize\", _this.onWindowResized);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"componentWillUnmount\", function () {\n if (_this.animationEndCallback) {\n clearTimeout(_this.animationEndCallback);\n }\n\n if (_this.lazyLoadTimer) {\n clearInterval(_this.lazyLoadTimer);\n }\n\n if (_this.callbackTimers.length) {\n _this.callbackTimers.forEach(function (timer) {\n return clearTimeout(timer);\n });\n\n _this.callbackTimers = [];\n }\n\n if (window.addEventListener) {\n window.removeEventListener(\"resize\", _this.onWindowResized);\n } else {\n window.detachEvent(\"onresize\", _this.onWindowResized);\n }\n\n if (_this.autoplayTimer) {\n clearInterval(_this.autoplayTimer);\n }\n\n _this.ro.disconnect();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"componentDidUpdate\", function (prevProps) {\n _this.checkImagesLoad();\n\n _this.props.onReInit && _this.props.onReInit();\n\n if (_this.props.lazyLoad) {\n var slidesToLoad = (0, _innerSliderUtils.getOnDemandLazySlides)(_objectSpread(_objectSpread({}, _this.props), _this.state));\n\n if (slidesToLoad.length > 0) {\n _this.setState(function (prevState) {\n return {\n lazyLoadedList: prevState.lazyLoadedList.concat(slidesToLoad)\n };\n });\n\n if (_this.props.onLazyLoad) {\n _this.props.onLazyLoad(slidesToLoad);\n }\n }\n } // if (this.props.onLazyLoad) {\n // this.props.onLazyLoad([leftMostSlide])\n // }\n\n\n _this.adaptHeight();\n\n var spec = _objectSpread(_objectSpread({\n listRef: _this.list,\n trackRef: _this.track\n }, _this.props), _this.state);\n\n var setTrackStyle = _this.didPropsChange(prevProps);\n\n setTrackStyle && _this.updateState(spec, setTrackStyle, function () {\n if (_this.state.currentSlide >= _react[\"default\"].Children.count(_this.props.children)) {\n _this.changeSlide({\n message: \"index\",\n index: _react[\"default\"].Children.count(_this.props.children) - _this.props.slidesToShow,\n currentSlide: _this.state.currentSlide\n });\n }\n\n if (_this.props.autoplay) {\n _this.autoPlay(\"update\");\n } else {\n _this.pause(\"paused\");\n }\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onWindowResized\", function (setTrackStyle) {\n if (_this.debouncedResize) _this.debouncedResize.cancel();\n _this.debouncedResize = (0, _lodash[\"default\"])(function () {\n return _this.resizeWindow(setTrackStyle);\n }, 50);\n\n _this.debouncedResize();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"resizeWindow\", function () {\n var setTrackStyle = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n var isTrackMounted = Boolean(_this.track && _this.track.node); // prevent warning: setting state on unmounted component (server side rendering)\n\n if (!isTrackMounted) return;\n\n var spec = _objectSpread(_objectSpread({\n listRef: _this.list,\n trackRef: _this.track\n }, _this.props), _this.state);\n\n _this.updateState(spec, setTrackStyle, function () {\n if (_this.props.autoplay) _this.autoPlay(\"update\");else _this.pause(\"paused\");\n }); // animating state should be cleared while resizing, otherwise autoplay stops working\n\n\n _this.setState({\n animating: false\n });\n\n clearTimeout(_this.animationEndCallback);\n delete _this.animationEndCallback;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"updateState\", function (spec, setTrackStyle, callback) {\n var updatedState = (0, _innerSliderUtils.initializedState)(spec);\n spec = _objectSpread(_objectSpread(_objectSpread({}, spec), updatedState), {}, {\n slideIndex: updatedState.currentSlide\n });\n var targetLeft = (0, _innerSliderUtils.getTrackLeft)(spec);\n spec = _objectSpread(_objectSpread({}, spec), {}, {\n left: targetLeft\n });\n var trackStyle = (0, _innerSliderUtils.getTrackCSS)(spec);\n\n if (setTrackStyle || _react[\"default\"].Children.count(_this.props.children) !== _react[\"default\"].Children.count(spec.children)) {\n updatedState[\"trackStyle\"] = trackStyle;\n }\n\n _this.setState(updatedState, callback);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"ssrInit\", function () {\n if (_this.props.variableWidth) {\n var _trackWidth = 0,\n _trackLeft = 0;\n var childrenWidths = [];\n var preClones = (0, _innerSliderUtils.getPreClones)(_objectSpread(_objectSpread(_objectSpread({}, _this.props), _this.state), {}, {\n slideCount: _this.props.children.length\n }));\n var postClones = (0, _innerSliderUtils.getPostClones)(_objectSpread(_objectSpread(_objectSpread({}, _this.props), _this.state), {}, {\n slideCount: _this.props.children.length\n }));\n\n _this.props.children.forEach(function (child) {\n childrenWidths.push(child.props.style.width);\n _trackWidth += child.props.style.width;\n });\n\n for (var i = 0; i < preClones; i++) {\n _trackLeft += childrenWidths[childrenWidths.length - 1 - i];\n _trackWidth += childrenWidths[childrenWidths.length - 1 - i];\n }\n\n for (var _i = 0; _i < postClones; _i++) {\n _trackWidth += childrenWidths[_i];\n }\n\n for (var _i2 = 0; _i2 < _this.state.currentSlide; _i2++) {\n _trackLeft += childrenWidths[_i2];\n }\n\n var _trackStyle = {\n width: _trackWidth + \"px\",\n left: -_trackLeft + \"px\"\n };\n\n if (_this.props.centerMode) {\n var currentWidth = \"\".concat(childrenWidths[_this.state.currentSlide], \"px\");\n _trackStyle.left = \"calc(\".concat(_trackStyle.left, \" + (100% - \").concat(currentWidth, \") / 2 ) \");\n }\n\n return {\n trackStyle: _trackStyle\n };\n }\n\n var childrenCount = _react[\"default\"].Children.count(_this.props.children);\n\n var spec = _objectSpread(_objectSpread(_objectSpread({}, _this.props), _this.state), {}, {\n slideCount: childrenCount\n });\n\n var slideCount = (0, _innerSliderUtils.getPreClones)(spec) + (0, _innerSliderUtils.getPostClones)(spec) + childrenCount;\n var trackWidth = 100 / _this.props.slidesToShow * slideCount;\n var slideWidth = 100 / slideCount;\n var trackLeft = -slideWidth * ((0, _innerSliderUtils.getPreClones)(spec) + _this.state.currentSlide) * trackWidth / 100;\n\n if (_this.props.centerMode) {\n trackLeft += (100 - slideWidth * trackWidth / 100) / 2;\n }\n\n var trackStyle = {\n width: trackWidth + \"%\",\n left: trackLeft + \"%\"\n };\n return {\n slideWidth: slideWidth + \"%\",\n trackStyle: trackStyle\n };\n });\n\n _defineProperty(_assertThisInitialized(_this), \"checkImagesLoad\", function () {\n var images = _this.list && _this.list.querySelectorAll && _this.list.querySelectorAll(\".slick-slide img\") || [];\n var imagesCount = images.length,\n loadedCount = 0;\n Array.prototype.forEach.call(images, function (image) {\n var handler = function handler() {\n return ++loadedCount && loadedCount >= imagesCount && _this.onWindowResized();\n };\n\n if (!image.onclick) {\n image.onclick = function () {\n return image.parentNode.focus();\n };\n } else {\n var prevClickHandler = image.onclick;\n\n image.onclick = function () {\n prevClickHandler();\n image.parentNode.focus();\n };\n }\n\n if (!image.onload) {\n if (_this.props.lazyLoad) {\n image.onload = function () {\n _this.adaptHeight();\n\n _this.callbackTimers.push(setTimeout(_this.onWindowResized, _this.props.speed));\n };\n } else {\n image.onload = handler;\n\n image.onerror = function () {\n handler();\n _this.props.onLazyLoadError && _this.props.onLazyLoadError();\n };\n }\n }\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"progressiveLazyLoad\", function () {\n var slidesToLoad = [];\n\n var spec = _objectSpread(_objectSpread({}, _this.props), _this.state);\n\n for (var index = _this.state.currentSlide; index < _this.state.slideCount + (0, _innerSliderUtils.getPostClones)(spec); index++) {\n if (_this.state.lazyLoadedList.indexOf(index) < 0) {\n slidesToLoad.push(index);\n break;\n }\n }\n\n for (var _index = _this.state.currentSlide - 1; _index >= -(0, _innerSliderUtils.getPreClones)(spec); _index--) {\n if (_this.state.lazyLoadedList.indexOf(_index) < 0) {\n slidesToLoad.push(_index);\n break;\n }\n }\n\n if (slidesToLoad.length > 0) {\n _this.setState(function (state) {\n return {\n lazyLoadedList: state.lazyLoadedList.concat(slidesToLoad)\n };\n });\n\n if (_this.props.onLazyLoad) {\n _this.props.onLazyLoad(slidesToLoad);\n }\n } else {\n if (_this.lazyLoadTimer) {\n clearInterval(_this.lazyLoadTimer);\n delete _this.lazyLoadTimer;\n }\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slideHandler\", function (index) {\n var dontAnimate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var _this$props = _this.props,\n asNavFor = _this$props.asNavFor,\n beforeChange = _this$props.beforeChange,\n onLazyLoad = _this$props.onLazyLoad,\n speed = _this$props.speed,\n afterChange = _this$props.afterChange; // capture currentslide before state is updated\n\n var currentSlide = _this.state.currentSlide;\n\n var _slideHandler = (0, _innerSliderUtils.slideHandler)(_objectSpread(_objectSpread(_objectSpread({\n index: index\n }, _this.props), _this.state), {}, {\n trackRef: _this.track,\n useCSS: _this.props.useCSS && !dontAnimate\n })),\n state = _slideHandler.state,\n nextState = _slideHandler.nextState;\n\n if (!state) return;\n beforeChange && beforeChange(currentSlide, state.currentSlide);\n var slidesToLoad = state.lazyLoadedList.filter(function (value) {\n return _this.state.lazyLoadedList.indexOf(value) < 0;\n });\n onLazyLoad && slidesToLoad.length > 0 && onLazyLoad(slidesToLoad);\n\n if (!_this.props.waitForAnimate && _this.animationEndCallback) {\n clearTimeout(_this.animationEndCallback);\n afterChange && afterChange(currentSlide);\n delete _this.animationEndCallback;\n }\n\n _this.setState(state, function () {\n // asNavForIndex check is to avoid recursive calls of slideHandler in waitForAnimate=false mode\n if (asNavFor && _this.asNavForIndex !== index) {\n _this.asNavForIndex = index;\n asNavFor.innerSlider.slideHandler(index);\n }\n\n if (!nextState) return;\n _this.animationEndCallback = setTimeout(function () {\n var animating = nextState.animating,\n firstBatch = _objectWithoutProperties(nextState, [\"animating\"]);\n\n _this.setState(firstBatch, function () {\n _this.callbackTimers.push(setTimeout(function () {\n return _this.setState({\n animating: animating\n });\n }, 10));\n\n afterChange && afterChange(state.currentSlide);\n delete _this.animationEndCallback;\n });\n }, speed);\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"changeSlide\", function (options) {\n var dontAnimate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var spec = _objectSpread(_objectSpread({}, _this.props), _this.state);\n\n var targetSlide = (0, _innerSliderUtils.changeSlide)(spec, options);\n if (targetSlide !== 0 && !targetSlide) return;\n\n if (dontAnimate === true) {\n _this.slideHandler(targetSlide, dontAnimate);\n } else {\n _this.slideHandler(targetSlide);\n }\n\n _this.props.autoplay && _this.autoPlay(\"update\");\n\n if (_this.props.focusOnSelect) {\n var nodes = _this.list.querySelectorAll(\".slick-current\");\n\n nodes[0] && nodes[0].focus();\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"clickHandler\", function (e) {\n if (_this.clickable === false) {\n e.stopPropagation();\n e.preventDefault();\n }\n\n _this.clickable = true;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"keyHandler\", function (e) {\n var dir = (0, _innerSliderUtils.keyHandler)(e, _this.props.accessibility, _this.props.rtl);\n dir !== \"\" && _this.changeSlide({\n message: dir\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"selectHandler\", function (options) {\n _this.changeSlide(options);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"disableBodyScroll\", function () {\n var preventDefault = function preventDefault(e) {\n e = e || window.event;\n if (e.preventDefault) e.preventDefault();\n e.returnValue = false;\n };\n\n window.ontouchmove = preventDefault;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"enableBodyScroll\", function () {\n window.ontouchmove = null;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"swipeStart\", function (e) {\n if (_this.props.verticalSwiping) {\n _this.disableBodyScroll();\n }\n\n var state = (0, _innerSliderUtils.swipeStart)(e, _this.props.swipe, _this.props.draggable);\n state !== \"\" && _this.setState(state);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"swipeMove\", function (e) {\n var state = (0, _innerSliderUtils.swipeMove)(e, _objectSpread(_objectSpread(_objectSpread({}, _this.props), _this.state), {}, {\n trackRef: _this.track,\n listRef: _this.list,\n slideIndex: _this.state.currentSlide\n }));\n if (!state) return;\n\n if (state[\"swiping\"]) {\n _this.clickable = false;\n }\n\n _this.setState(state);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"swipeEnd\", function (e) {\n var state = (0, _innerSliderUtils.swipeEnd)(e, _objectSpread(_objectSpread(_objectSpread({}, _this.props), _this.state), {}, {\n trackRef: _this.track,\n listRef: _this.list,\n slideIndex: _this.state.currentSlide\n }));\n if (!state) return;\n var triggerSlideHandler = state[\"triggerSlideHandler\"];\n delete state[\"triggerSlideHandler\"];\n\n _this.setState(state);\n\n if (triggerSlideHandler === undefined) return;\n\n _this.slideHandler(triggerSlideHandler);\n\n if (_this.props.verticalSwiping) {\n _this.enableBodyScroll();\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"touchEnd\", function (e) {\n _this.swipeEnd(e);\n\n _this.clickable = true;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slickPrev\", function () {\n // this and fellow methods are wrapped in setTimeout\n // to make sure initialize setState has happened before\n // any of such methods are called\n _this.callbackTimers.push(setTimeout(function () {\n return _this.changeSlide({\n message: \"previous\"\n });\n }, 0));\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slickNext\", function () {\n _this.callbackTimers.push(setTimeout(function () {\n return _this.changeSlide({\n message: \"next\"\n });\n }, 0));\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slickGoTo\", function (slide) {\n var dontAnimate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n slide = Number(slide);\n if (isNaN(slide)) return \"\";\n\n _this.callbackTimers.push(setTimeout(function () {\n return _this.changeSlide({\n message: \"index\",\n index: slide,\n currentSlide: _this.state.currentSlide\n }, dontAnimate);\n }, 0));\n });\n\n _defineProperty(_assertThisInitialized(_this), \"play\", function () {\n var nextIndex;\n\n if (_this.props.rtl) {\n nextIndex = _this.state.currentSlide - _this.props.slidesToScroll;\n } else {\n if ((0, _innerSliderUtils.canGoNext)(_objectSpread(_objectSpread({}, _this.props), _this.state))) {\n nextIndex = _this.state.currentSlide + _this.props.slidesToScroll;\n } else {\n return false;\n }\n }\n\n _this.slideHandler(nextIndex);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"autoPlay\", function (playType) {\n if (_this.autoplayTimer) {\n clearInterval(_this.autoplayTimer);\n }\n\n var autoplaying = _this.state.autoplaying;\n\n if (playType === \"update\") {\n if (autoplaying === \"hovered\" || autoplaying === \"focused\" || autoplaying === \"paused\") {\n return;\n }\n } else if (playType === \"leave\") {\n if (autoplaying === \"paused\" || autoplaying === \"focused\") {\n return;\n }\n } else if (playType === \"blur\") {\n if (autoplaying === \"paused\" || autoplaying === \"hovered\") {\n return;\n }\n }\n\n _this.autoplayTimer = setInterval(_this.play, _this.props.autoplaySpeed + 50);\n\n _this.setState({\n autoplaying: \"playing\"\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"pause\", function (pauseType) {\n if (_this.autoplayTimer) {\n clearInterval(_this.autoplayTimer);\n _this.autoplayTimer = null;\n }\n\n var autoplaying = _this.state.autoplaying;\n\n if (pauseType === \"paused\") {\n _this.setState({\n autoplaying: \"paused\"\n });\n } else if (pauseType === \"focused\") {\n if (autoplaying === \"hovered\" || autoplaying === \"playing\") {\n _this.setState({\n autoplaying: \"focused\"\n });\n }\n } else {\n // pauseType is 'hovered'\n if (autoplaying === \"playing\") {\n _this.setState({\n autoplaying: \"hovered\"\n });\n }\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onDotsOver\", function () {\n return _this.props.autoplay && _this.pause(\"hovered\");\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onDotsLeave\", function () {\n return _this.props.autoplay && _this.state.autoplaying === \"hovered\" && _this.autoPlay(\"leave\");\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onTrackOver\", function () {\n return _this.props.autoplay && _this.pause(\"hovered\");\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onTrackLeave\", function () {\n return _this.props.autoplay && _this.state.autoplaying === \"hovered\" && _this.autoPlay(\"leave\");\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onSlideFocus\", function () {\n return _this.props.autoplay && _this.pause(\"focused\");\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onSlideBlur\", function () {\n return _this.props.autoplay && _this.state.autoplaying === \"focused\" && _this.autoPlay(\"blur\");\n });\n\n _defineProperty(_assertThisInitialized(_this), \"render\", function () {\n var className = (0, _classnames[\"default\"])(\"slick-slider\", _this.props.className, {\n \"slick-vertical\": _this.props.vertical,\n \"slick-initialized\": true\n });\n\n var spec = _objectSpread(_objectSpread({}, _this.props), _this.state);\n\n var trackProps = (0, _innerSliderUtils.extractObject)(spec, [\"fade\", \"cssEase\", \"speed\", \"infinite\", \"centerMode\", \"focusOnSelect\", \"currentSlide\", \"lazyLoad\", \"lazyLoadedList\", \"rtl\", \"slideWidth\", \"slideHeight\", \"listHeight\", \"vertical\", \"slidesToShow\", \"slidesToScroll\", \"slideCount\", \"trackStyle\", \"variableWidth\", \"unslick\", \"centerPadding\", \"targetSlide\", \"useCSS\"]);\n var pauseOnHover = _this.props.pauseOnHover;\n trackProps = _objectSpread(_objectSpread({}, trackProps), {}, {\n onMouseEnter: pauseOnHover ? _this.onTrackOver : null,\n onMouseLeave: pauseOnHover ? _this.onTrackLeave : null,\n onMouseOver: pauseOnHover ? _this.onTrackOver : null,\n focusOnSelect: _this.props.focusOnSelect && _this.clickable ? _this.selectHandler : null\n });\n var dots;\n\n if (_this.props.dots === true && _this.state.slideCount >= _this.props.slidesToShow) {\n var dotProps = (0, _innerSliderUtils.extractObject)(spec, [\"dotsClass\", \"slideCount\", \"slidesToShow\", \"currentSlide\", \"slidesToScroll\", \"clickHandler\", \"children\", \"customPaging\", \"infinite\", \"appendDots\"]);\n var pauseOnDotsHover = _this.props.pauseOnDotsHover;\n dotProps = _objectSpread(_objectSpread({}, dotProps), {}, {\n clickHandler: _this.changeSlide,\n onMouseEnter: pauseOnDotsHover ? _this.onDotsLeave : null,\n onMouseOver: pauseOnDotsHover ? _this.onDotsOver : null,\n onMouseLeave: pauseOnDotsHover ? _this.onDotsLeave : null\n });\n dots = /*#__PURE__*/_react[\"default\"].createElement(_dots.Dots, dotProps);\n }\n\n var prevArrow, nextArrow;\n var arrowProps = (0, _innerSliderUtils.extractObject)(spec, [\"infinite\", \"centerMode\", \"currentSlide\", \"slideCount\", \"slidesToShow\", \"prevArrow\", \"nextArrow\"]);\n arrowProps.clickHandler = _this.changeSlide;\n\n if (_this.props.arrows) {\n prevArrow = /*#__PURE__*/_react[\"default\"].createElement(_arrows.PrevArrow, arrowProps);\n nextArrow = /*#__PURE__*/_react[\"default\"].createElement(_arrows.NextArrow, arrowProps);\n }\n\n var verticalHeightStyle = null;\n\n if (_this.props.vertical) {\n verticalHeightStyle = {\n height: _this.state.listHeight\n };\n }\n\n var centerPaddingStyle = null;\n\n if (_this.props.vertical === false) {\n if (_this.props.centerMode === true) {\n centerPaddingStyle = {\n padding: \"0px \" + _this.props.centerPadding\n };\n }\n } else {\n if (_this.props.centerMode === true) {\n centerPaddingStyle = {\n padding: _this.props.centerPadding + \" 0px\"\n };\n }\n }\n\n var listStyle = _objectSpread(_objectSpread({}, verticalHeightStyle), centerPaddingStyle);\n\n var touchMove = _this.props.touchMove;\n var listProps = {\n className: \"slick-list\",\n style: listStyle,\n onClick: _this.clickHandler,\n onMouseDown: touchMove ? _this.swipeStart : null,\n onMouseMove: _this.state.dragging && touchMove ? _this.swipeMove : null,\n onMouseUp: touchMove ? _this.swipeEnd : null,\n onMouseLeave: _this.state.dragging && touchMove ? _this.swipeEnd : null,\n onTouchStart: touchMove ? _this.swipeStart : null,\n onTouchMove: _this.state.dragging && touchMove ? _this.swipeMove : null,\n onTouchEnd: touchMove ? _this.touchEnd : null,\n onTouchCancel: _this.state.dragging && touchMove ? _this.swipeEnd : null,\n onKeyDown: _this.props.accessibility ? _this.keyHandler : null\n };\n var innerSliderProps = {\n className: className,\n dir: \"ltr\",\n style: _this.props.style\n };\n\n if (_this.props.unslick) {\n listProps = {\n className: \"slick-list\"\n };\n innerSliderProps = {\n className: className\n };\n }\n\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", innerSliderProps, !_this.props.unslick ? prevArrow : \"\", /*#__PURE__*/_react[\"default\"].createElement(\"div\", _extends({\n ref: _this.listRefHandler\n }, listProps), /*#__PURE__*/_react[\"default\"].createElement(_track.Track, _extends({\n ref: _this.trackRefHandler\n }, trackProps), _this.props.children)), !_this.props.unslick ? nextArrow : \"\", !_this.props.unslick ? dots : \"\");\n });\n\n _this.list = null;\n _this.track = null;\n _this.state = _objectSpread(_objectSpread({}, _initialState[\"default\"]), {}, {\n currentSlide: _this.props.initialSlide,\n slideCount: _react[\"default\"].Children.count(_this.props.children)\n });\n _this.callbackTimers = [];\n _this.clickable = true;\n _this.debouncedResize = null;\n\n var ssrState = _this.ssrInit();\n\n _this.state = _objectSpread(_objectSpread({}, _this.state), ssrState);\n return _this;\n }\n\n _createClass(InnerSlider, [{\n key: \"didPropsChange\",\n value: function didPropsChange(prevProps) {\n var setTrackStyle = false;\n\n for (var _i3 = 0, _Object$keys = Object.keys(this.props); _i3 < _Object$keys.length; _i3++) {\n var key = _Object$keys[_i3];\n\n if (!prevProps.hasOwnProperty(key)) {\n setTrackStyle = true;\n break;\n }\n\n if (_typeof(prevProps[key]) === \"object\" || typeof prevProps[key] === \"function\") {\n continue;\n }\n\n if (prevProps[key] !== this.props[key]) {\n setTrackStyle = true;\n break;\n }\n }\n\n return setTrackStyle || _react[\"default\"].Children.count(this.props.children) !== _react[\"default\"].Children.count(prevProps.children);\n }\n }]);\n\n return InnerSlider;\n}(_react[\"default\"].Component);\n\nexports.InnerSlider = InnerSlider;","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _innerSlider = require(\"./inner-slider\");\n\nvar _json2mq = _interopRequireDefault(require(\"json2mq\"));\n\nvar _defaultProps = _interopRequireDefault(require(\"./default-props\"));\n\nvar _innerSliderUtils = require(\"./utils/innerSliderUtils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _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); 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\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); Object.defineProperty(Constructor, \"prototype\", { writable: false }); 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 } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); 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; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } 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 { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], 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\nvar enquire = (0, _innerSliderUtils.canUseDOM)() && require(\"enquire.js\");\n\nvar Slider = /*#__PURE__*/function (_React$Component) {\n _inherits(Slider, _React$Component);\n\n var _super = _createSuper(Slider);\n\n function Slider(props) {\n var _this;\n\n _classCallCheck(this, Slider);\n\n _this = _super.call(this, props);\n\n _defineProperty(_assertThisInitialized(_this), \"innerSliderRefHandler\", function (ref) {\n return _this.innerSlider = ref;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slickPrev\", function () {\n return _this.innerSlider.slickPrev();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slickNext\", function () {\n return _this.innerSlider.slickNext();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slickGoTo\", function (slide) {\n var dontAnimate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n return _this.innerSlider.slickGoTo(slide, dontAnimate);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slickPause\", function () {\n return _this.innerSlider.pause(\"paused\");\n });\n\n _defineProperty(_assertThisInitialized(_this), \"slickPlay\", function () {\n return _this.innerSlider.autoPlay(\"play\");\n });\n\n _this.state = {\n breakpoint: null\n };\n _this._responsiveMediaHandlers = [];\n return _this;\n }\n\n _createClass(Slider, [{\n key: \"media\",\n value: function media(query, handler) {\n // javascript handler for css media query\n enquire.register(query, handler);\n\n this._responsiveMediaHandlers.push({\n query: query,\n handler: handler\n });\n } // handles responsive breakpoints\n\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this2 = this;\n\n // performance monitoring\n //if (process.env.NODE_ENV !== 'production') {\n //const { whyDidYouUpdate } = require('why-did-you-update')\n //whyDidYouUpdate(React)\n //}\n if (this.props.responsive) {\n var breakpoints = this.props.responsive.map(function (breakpt) {\n return breakpt.breakpoint;\n }); // sort them in increasing order of their numerical value\n\n breakpoints.sort(function (x, y) {\n return x - y;\n });\n breakpoints.forEach(function (breakpoint, index) {\n // media query for each breakpoint\n var bQuery;\n\n if (index === 0) {\n bQuery = (0, _json2mq[\"default\"])({\n minWidth: 0,\n maxWidth: breakpoint\n });\n } else {\n bQuery = (0, _json2mq[\"default\"])({\n minWidth: breakpoints[index - 1] + 1,\n maxWidth: breakpoint\n });\n } // when not using server side rendering\n\n\n (0, _innerSliderUtils.canUseDOM)() && _this2.media(bQuery, function () {\n _this2.setState({\n breakpoint: breakpoint\n });\n });\n }); // Register media query for full screen. Need to support resize from small to large\n // convert javascript object to media query string\n\n var query = (0, _json2mq[\"default\"])({\n minWidth: breakpoints.slice(-1)[0]\n });\n (0, _innerSliderUtils.canUseDOM)() && this.media(query, function () {\n _this2.setState({\n breakpoint: null\n });\n });\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this._responsiveMediaHandlers.forEach(function (obj) {\n enquire.unregister(obj.query, obj.handler);\n });\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this3 = this;\n\n var settings;\n var newProps;\n\n if (this.state.breakpoint) {\n newProps = this.props.responsive.filter(function (resp) {\n return resp.breakpoint === _this3.state.breakpoint;\n });\n settings = newProps[0].settings === \"unslick\" ? \"unslick\" : _objectSpread(_objectSpread(_objectSpread({}, _defaultProps[\"default\"]), this.props), newProps[0].settings);\n } else {\n settings = _objectSpread(_objectSpread({}, _defaultProps[\"default\"]), this.props);\n } // force scrolling by one if centerMode is on\n\n\n if (settings.centerMode) {\n if (settings.slidesToScroll > 1 && process.env.NODE_ENV !== \"production\") {\n console.warn(\"slidesToScroll should be equal to 1 in centerMode, you are using \".concat(settings.slidesToScroll));\n }\n\n settings.slidesToScroll = 1;\n } // force showing one slide and scrolling by one if the fade mode is on\n\n\n if (settings.fade) {\n if (settings.slidesToShow > 1 && process.env.NODE_ENV !== \"production\") {\n console.warn(\"slidesToShow should be equal to 1 when fade is true, you're using \".concat(settings.slidesToShow));\n }\n\n if (settings.slidesToScroll > 1 && process.env.NODE_ENV !== \"production\") {\n console.warn(\"slidesToScroll should be equal to 1 when fade is true, you're using \".concat(settings.slidesToScroll));\n }\n\n settings.slidesToShow = 1;\n settings.slidesToScroll = 1;\n } // makes sure that children is an array, even when there is only 1 child\n\n\n var children = _react[\"default\"].Children.toArray(this.props.children); // Children may contain false or null, so we should filter them\n // children may also contain string filled with spaces (in certain cases where we use jsx strings)\n\n\n children = children.filter(function (child) {\n if (typeof child === \"string\") {\n return !!child.trim();\n }\n\n return !!child;\n }); // rows and slidesPerRow logic is handled here\n\n if (settings.variableWidth && (settings.rows > 1 || settings.slidesPerRow > 1)) {\n console.warn(\"variableWidth is not supported in case of rows > 1 or slidesPerRow > 1\");\n settings.variableWidth = false;\n }\n\n var newChildren = [];\n var currentWidth = null;\n\n for (var i = 0; i < children.length; i += settings.rows * settings.slidesPerRow) {\n var newSlide = [];\n\n for (var j = i; j < i + settings.rows * settings.slidesPerRow; j += settings.slidesPerRow) {\n var row = [];\n\n for (var k = j; k < j + settings.slidesPerRow; k += 1) {\n if (settings.variableWidth && children[k].props.style) {\n currentWidth = children[k].props.style.width;\n }\n\n if (k >= children.length) break;\n row.push( /*#__PURE__*/_react[\"default\"].cloneElement(children[k], {\n key: 100 * i + 10 * j + k,\n tabIndex: -1,\n style: {\n width: \"\".concat(100 / settings.slidesPerRow, \"%\"),\n display: \"inline-block\"\n }\n }));\n }\n\n newSlide.push( /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n key: 10 * i + j\n }, row));\n }\n\n if (settings.variableWidth) {\n newChildren.push( /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n key: i,\n style: {\n width: currentWidth\n }\n }, newSlide));\n } else {\n newChildren.push( /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n key: i\n }, newSlide));\n }\n }\n\n if (settings === \"unslick\") {\n var className = \"regular slider \" + (this.props.className || \"\");\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", {\n className: className\n }, children);\n } else if (newChildren.length <= settings.slidesToShow) {\n settings.unslick = true;\n }\n\n return /*#__PURE__*/_react[\"default\"].createElement(_innerSlider.InnerSlider, _extends({\n style: this.props.style,\n ref: this.innerSliderRefHandler\n }, settings), newChildren);\n }\n }]);\n\n return Slider;\n}(_react[\"default\"].Component);\n\nexports[\"default\"] = Slider;","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Track = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _innerSliderUtils = require(\"./utils/innerSliderUtils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _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 _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); Object.defineProperty(Constructor, \"prototype\", { writable: false }); 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 } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); 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; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } 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 { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], 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 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\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// given specifications/props for a slide, fetch all the classes that need to be applied to the slide\nvar getSlideClasses = function getSlideClasses(spec) {\n var slickActive, slickCenter, slickCloned;\n var centerOffset, index;\n\n if (spec.rtl) {\n index = spec.slideCount - 1 - spec.index;\n } else {\n index = spec.index;\n }\n\n slickCloned = index < 0 || index >= spec.slideCount;\n\n if (spec.centerMode) {\n centerOffset = Math.floor(spec.slidesToShow / 2);\n slickCenter = (index - spec.currentSlide) % spec.slideCount === 0;\n\n if (index > spec.currentSlide - centerOffset - 1 && index <= spec.currentSlide + centerOffset) {\n slickActive = true;\n }\n } else {\n slickActive = spec.currentSlide <= index && index < spec.currentSlide + spec.slidesToShow;\n }\n\n var focusedSlide;\n\n if (spec.targetSlide < 0) {\n focusedSlide = spec.targetSlide + spec.slideCount;\n } else if (spec.targetSlide >= spec.slideCount) {\n focusedSlide = spec.targetSlide - spec.slideCount;\n } else {\n focusedSlide = spec.targetSlide;\n }\n\n var slickCurrent = index === focusedSlide;\n return {\n \"slick-slide\": true,\n \"slick-active\": slickActive,\n \"slick-center\": slickCenter,\n \"slick-cloned\": slickCloned,\n \"slick-current\": slickCurrent // dubious in case of RTL\n\n };\n};\n\nvar getSlideStyle = function getSlideStyle(spec) {\n var style = {};\n\n if (spec.variableWidth === undefined || spec.variableWidth === false) {\n style.width = spec.slideWidth;\n }\n\n if (spec.fade) {\n style.position = \"relative\";\n\n if (spec.vertical) {\n style.top = -spec.index * parseInt(spec.slideHeight);\n } else {\n style.left = -spec.index * parseInt(spec.slideWidth);\n }\n\n style.opacity = spec.currentSlide === spec.index ? 1 : 0;\n\n if (spec.useCSS) {\n style.transition = \"opacity \" + spec.speed + \"ms \" + spec.cssEase + \", \" + \"visibility \" + spec.speed + \"ms \" + spec.cssEase;\n }\n }\n\n return style;\n};\n\nvar getKey = function getKey(child, fallbackKey) {\n return child.key || fallbackKey;\n};\n\nvar renderSlides = function renderSlides(spec) {\n var key;\n var slides = [];\n var preCloneSlides = [];\n var postCloneSlides = [];\n\n var childrenCount = _react[\"default\"].Children.count(spec.children);\n\n var startIndex = (0, _innerSliderUtils.lazyStartIndex)(spec);\n var endIndex = (0, _innerSliderUtils.lazyEndIndex)(spec);\n\n _react[\"default\"].Children.forEach(spec.children, function (elem, index) {\n var child;\n var childOnClickOptions = {\n message: \"children\",\n index: index,\n slidesToScroll: spec.slidesToScroll,\n currentSlide: spec.currentSlide\n }; // in case of lazyLoad, whether or not we want to fetch the slide\n\n if (!spec.lazyLoad || spec.lazyLoad && spec.lazyLoadedList.indexOf(index) >= 0) {\n child = elem;\n } else {\n child = /*#__PURE__*/_react[\"default\"].createElement(\"div\", null);\n }\n\n var childStyle = getSlideStyle(_objectSpread(_objectSpread({}, spec), {}, {\n index: index\n }));\n var slideClass = child.props.className || \"\";\n var slideClasses = getSlideClasses(_objectSpread(_objectSpread({}, spec), {}, {\n index: index\n })); // push a cloned element of the desired slide\n\n slides.push( /*#__PURE__*/_react[\"default\"].cloneElement(child, {\n key: \"original\" + getKey(child, index),\n \"data-index\": index,\n className: (0, _classnames[\"default\"])(slideClasses, slideClass),\n tabIndex: \"-1\",\n \"aria-hidden\": !slideClasses[\"slick-active\"],\n style: _objectSpread(_objectSpread({\n outline: \"none\"\n }, child.props.style || {}), childStyle),\n onClick: function onClick(e) {\n child.props && child.props.onClick && child.props.onClick(e);\n\n if (spec.focusOnSelect) {\n spec.focusOnSelect(childOnClickOptions);\n }\n }\n })); // if slide needs to be precloned or postcloned\n\n if (spec.infinite && spec.fade === false) {\n var preCloneNo = childrenCount - index;\n\n if (preCloneNo <= (0, _innerSliderUtils.getPreClones)(spec) && childrenCount !== spec.slidesToShow) {\n key = -preCloneNo;\n\n if (key >= startIndex) {\n child = elem;\n }\n\n slideClasses = getSlideClasses(_objectSpread(_objectSpread({}, spec), {}, {\n index: key\n }));\n preCloneSlides.push( /*#__PURE__*/_react[\"default\"].cloneElement(child, {\n key: \"precloned\" + getKey(child, key),\n \"data-index\": key,\n tabIndex: \"-1\",\n className: (0, _classnames[\"default\"])(slideClasses, slideClass),\n \"aria-hidden\": !slideClasses[\"slick-active\"],\n style: _objectSpread(_objectSpread({}, child.props.style || {}), childStyle),\n onClick: function onClick(e) {\n child.props && child.props.onClick && child.props.onClick(e);\n\n if (spec.focusOnSelect) {\n spec.focusOnSelect(childOnClickOptions);\n }\n }\n }));\n }\n\n if (childrenCount !== spec.slidesToShow) {\n key = childrenCount + index;\n\n if (key < endIndex) {\n child = elem;\n }\n\n slideClasses = getSlideClasses(_objectSpread(_objectSpread({}, spec), {}, {\n index: key\n }));\n postCloneSlides.push( /*#__PURE__*/_react[\"default\"].cloneElement(child, {\n key: \"postcloned\" + getKey(child, key),\n \"data-index\": key,\n tabIndex: \"-1\",\n className: (0, _classnames[\"default\"])(slideClasses, slideClass),\n \"aria-hidden\": !slideClasses[\"slick-active\"],\n style: _objectSpread(_objectSpread({}, child.props.style || {}), childStyle),\n onClick: function onClick(e) {\n child.props && child.props.onClick && child.props.onClick(e);\n\n if (spec.focusOnSelect) {\n spec.focusOnSelect(childOnClickOptions);\n }\n }\n }));\n }\n }\n });\n\n if (spec.rtl) {\n return preCloneSlides.concat(slides, postCloneSlides).reverse();\n } else {\n return preCloneSlides.concat(slides, postCloneSlides);\n }\n};\n\nvar Track = /*#__PURE__*/function (_React$PureComponent) {\n _inherits(Track, _React$PureComponent);\n\n var _super = _createSuper(Track);\n\n function Track() {\n var _this;\n\n _classCallCheck(this, Track);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"node\", null);\n\n _defineProperty(_assertThisInitialized(_this), \"handleRef\", function (ref) {\n _this.node = ref;\n });\n\n return _this;\n }\n\n _createClass(Track, [{\n key: \"render\",\n value: function render() {\n var slides = renderSlides(this.props);\n var _this$props = this.props,\n onMouseEnter = _this$props.onMouseEnter,\n onMouseOver = _this$props.onMouseOver,\n onMouseLeave = _this$props.onMouseLeave;\n var mouseEvents = {\n onMouseEnter: onMouseEnter,\n onMouseOver: onMouseOver,\n onMouseLeave: onMouseLeave\n };\n return /*#__PURE__*/_react[\"default\"].createElement(\"div\", _extends({\n ref: this.handleRef,\n className: \"slick-track\",\n style: this.props.trackStyle\n }, mouseEvents), slides);\n }\n }]);\n\n return Track;\n}(_react[\"default\"].PureComponent);\n\nexports.Track = Track;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.checkSpecKeys = exports.checkNavigable = exports.changeSlide = exports.canUseDOM = exports.canGoNext = void 0;\nexports.clamp = clamp;\nexports.swipeStart = exports.swipeMove = exports.swipeEnd = exports.slidesOnRight = exports.slidesOnLeft = exports.slideHandler = exports.siblingDirection = exports.safePreventDefault = exports.lazyStartIndex = exports.lazySlidesOnRight = exports.lazySlidesOnLeft = exports.lazyEndIndex = exports.keyHandler = exports.initializedState = exports.getWidth = exports.getTrackLeft = exports.getTrackCSS = exports.getTrackAnimateCSS = exports.getTotalSlides = exports.getSwipeDirection = exports.getSlideCount = exports.getRequiredLazySlides = exports.getPreClones = exports.getPostClones = exports.getOnDemandLazySlides = exports.getNavigableIndexes = exports.getHeight = exports.extractObject = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\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\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 clamp(number, lowerBound, upperBound) {\n return Math.max(lowerBound, Math.min(number, upperBound));\n}\n\nvar safePreventDefault = function safePreventDefault(event) {\n var passiveEvents = [\"onTouchStart\", \"onTouchMove\", \"onWheel\"];\n\n if (!passiveEvents.includes(event._reactName)) {\n event.preventDefault();\n }\n};\n\nexports.safePreventDefault = safePreventDefault;\n\nvar getOnDemandLazySlides = function getOnDemandLazySlides(spec) {\n var onDemandSlides = [];\n var startIndex = lazyStartIndex(spec);\n var endIndex = lazyEndIndex(spec);\n\n for (var slideIndex = startIndex; slideIndex < endIndex; slideIndex++) {\n if (spec.lazyLoadedList.indexOf(slideIndex) < 0) {\n onDemandSlides.push(slideIndex);\n }\n }\n\n return onDemandSlides;\n}; // return list of slides that need to be present\n\n\nexports.getOnDemandLazySlides = getOnDemandLazySlides;\n\nvar getRequiredLazySlides = function getRequiredLazySlides(spec) {\n var requiredSlides = [];\n var startIndex = lazyStartIndex(spec);\n var endIndex = lazyEndIndex(spec);\n\n for (var slideIndex = startIndex; slideIndex < endIndex; slideIndex++) {\n requiredSlides.push(slideIndex);\n }\n\n return requiredSlides;\n}; // startIndex that needs to be present\n\n\nexports.getRequiredLazySlides = getRequiredLazySlides;\n\nvar lazyStartIndex = function lazyStartIndex(spec) {\n return spec.currentSlide - lazySlidesOnLeft(spec);\n};\n\nexports.lazyStartIndex = lazyStartIndex;\n\nvar lazyEndIndex = function lazyEndIndex(spec) {\n return spec.currentSlide + lazySlidesOnRight(spec);\n};\n\nexports.lazyEndIndex = lazyEndIndex;\n\nvar lazySlidesOnLeft = function lazySlidesOnLeft(spec) {\n return spec.centerMode ? Math.floor(spec.slidesToShow / 2) + (parseInt(spec.centerPadding) > 0 ? 1 : 0) : 0;\n};\n\nexports.lazySlidesOnLeft = lazySlidesOnLeft;\n\nvar lazySlidesOnRight = function lazySlidesOnRight(spec) {\n return spec.centerMode ? Math.floor((spec.slidesToShow - 1) / 2) + 1 + (parseInt(spec.centerPadding) > 0 ? 1 : 0) : spec.slidesToShow;\n}; // get width of an element\n\n\nexports.lazySlidesOnRight = lazySlidesOnRight;\n\nvar getWidth = function getWidth(elem) {\n return elem && elem.offsetWidth || 0;\n};\n\nexports.getWidth = getWidth;\n\nvar getHeight = function getHeight(elem) {\n return elem && elem.offsetHeight || 0;\n};\n\nexports.getHeight = getHeight;\n\nvar getSwipeDirection = function getSwipeDirection(touchObject) {\n var verticalSwiping = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var xDist, yDist, r, swipeAngle;\n xDist = touchObject.startX - touchObject.curX;\n yDist = touchObject.startY - touchObject.curY;\n r = Math.atan2(yDist, xDist);\n swipeAngle = Math.round(r * 180 / Math.PI);\n\n if (swipeAngle < 0) {\n swipeAngle = 360 - Math.abs(swipeAngle);\n }\n\n if (swipeAngle <= 45 && swipeAngle >= 0 || swipeAngle <= 360 && swipeAngle >= 315) {\n return \"left\";\n }\n\n if (swipeAngle >= 135 && swipeAngle <= 225) {\n return \"right\";\n }\n\n if (verticalSwiping === true) {\n if (swipeAngle >= 35 && swipeAngle <= 135) {\n return \"up\";\n } else {\n return \"down\";\n }\n }\n\n return \"vertical\";\n}; // whether or not we can go next\n\n\nexports.getSwipeDirection = getSwipeDirection;\n\nvar canGoNext = function canGoNext(spec) {\n var canGo = true;\n\n if (!spec.infinite) {\n if (spec.centerMode && spec.currentSlide >= spec.slideCount - 1) {\n canGo = false;\n } else if (spec.slideCount <= spec.slidesToShow || spec.currentSlide >= spec.slideCount - spec.slidesToShow) {\n canGo = false;\n }\n }\n\n return canGo;\n}; // given an object and a list of keys, return new object with given keys\n\n\nexports.canGoNext = canGoNext;\n\nvar extractObject = function extractObject(spec, keys) {\n var newObject = {};\n keys.forEach(function (key) {\n return newObject[key] = spec[key];\n });\n return newObject;\n}; // get initialized state\n\n\nexports.extractObject = extractObject;\n\nvar initializedState = function initializedState(spec) {\n // spec also contains listRef, trackRef\n var slideCount = _react[\"default\"].Children.count(spec.children);\n\n var listNode = spec.listRef;\n var listWidth = Math.ceil(getWidth(listNode));\n var trackNode = spec.trackRef && spec.trackRef.node;\n var trackWidth = Math.ceil(getWidth(trackNode));\n var slideWidth;\n\n if (!spec.vertical) {\n var centerPaddingAdj = spec.centerMode && parseInt(spec.centerPadding) * 2;\n\n if (typeof spec.centerPadding === \"string\" && spec.centerPadding.slice(-1) === \"%\") {\n centerPaddingAdj *= listWidth / 100;\n }\n\n slideWidth = Math.ceil((listWidth - centerPaddingAdj) / spec.slidesToShow);\n } else {\n slideWidth = listWidth;\n }\n\n var slideHeight = listNode && getHeight(listNode.querySelector('[data-index=\"0\"]'));\n var listHeight = slideHeight * spec.slidesToShow;\n var currentSlide = spec.currentSlide === undefined ? spec.initialSlide : spec.currentSlide;\n\n if (spec.rtl && spec.currentSlide === undefined) {\n currentSlide = slideCount - 1 - spec.initialSlide;\n }\n\n var lazyLoadedList = spec.lazyLoadedList || [];\n var slidesToLoad = getOnDemandLazySlides(_objectSpread(_objectSpread({}, spec), {}, {\n currentSlide: currentSlide,\n lazyLoadedList: lazyLoadedList\n }));\n lazyLoadedList = lazyLoadedList.concat(slidesToLoad);\n var state = {\n slideCount: slideCount,\n slideWidth: slideWidth,\n listWidth: listWidth,\n trackWidth: trackWidth,\n currentSlide: currentSlide,\n slideHeight: slideHeight,\n listHeight: listHeight,\n lazyLoadedList: lazyLoadedList\n };\n\n if (spec.autoplaying === null && spec.autoplay) {\n state[\"autoplaying\"] = \"playing\";\n }\n\n return state;\n};\n\nexports.initializedState = initializedState;\n\nvar slideHandler = function slideHandler(spec) {\n var waitForAnimate = spec.waitForAnimate,\n animating = spec.animating,\n fade = spec.fade,\n infinite = spec.infinite,\n index = spec.index,\n slideCount = spec.slideCount,\n lazyLoad = spec.lazyLoad,\n currentSlide = spec.currentSlide,\n centerMode = spec.centerMode,\n slidesToScroll = spec.slidesToScroll,\n slidesToShow = spec.slidesToShow,\n useCSS = spec.useCSS;\n var lazyLoadedList = spec.lazyLoadedList;\n if (waitForAnimate && animating) return {};\n var animationSlide = index,\n finalSlide,\n animationLeft,\n finalLeft;\n var state = {},\n nextState = {};\n var targetSlide = infinite ? index : clamp(index, 0, slideCount - 1);\n\n if (fade) {\n if (!infinite && (index < 0 || index >= slideCount)) return {};\n\n if (index < 0) {\n animationSlide = index + slideCount;\n } else if (index >= slideCount) {\n animationSlide = index - slideCount;\n }\n\n if (lazyLoad && lazyLoadedList.indexOf(animationSlide) < 0) {\n lazyLoadedList = lazyLoadedList.concat(animationSlide);\n }\n\n state = {\n animating: true,\n currentSlide: animationSlide,\n lazyLoadedList: lazyLoadedList,\n targetSlide: animationSlide\n };\n nextState = {\n animating: false,\n targetSlide: animationSlide\n };\n } else {\n finalSlide = animationSlide;\n\n if (animationSlide < 0) {\n finalSlide = animationSlide + slideCount;\n if (!infinite) finalSlide = 0;else if (slideCount % slidesToScroll !== 0) finalSlide = slideCount - slideCount % slidesToScroll;\n } else if (!canGoNext(spec) && animationSlide > currentSlide) {\n animationSlide = finalSlide = currentSlide;\n } else if (centerMode && animationSlide >= slideCount) {\n animationSlide = infinite ? slideCount : slideCount - 1;\n finalSlide = infinite ? 0 : slideCount - 1;\n } else if (animationSlide >= slideCount) {\n finalSlide = animationSlide - slideCount;\n if (!infinite) finalSlide = slideCount - slidesToShow;else if (slideCount % slidesToScroll !== 0) finalSlide = 0;\n }\n\n if (!infinite && animationSlide + slidesToShow >= slideCount) {\n finalSlide = slideCount - slidesToShow;\n }\n\n animationLeft = getTrackLeft(_objectSpread(_objectSpread({}, spec), {}, {\n slideIndex: animationSlide\n }));\n finalLeft = getTrackLeft(_objectSpread(_objectSpread({}, spec), {}, {\n slideIndex: finalSlide\n }));\n\n if (!infinite) {\n if (animationLeft === finalLeft) animationSlide = finalSlide;\n animationLeft = finalLeft;\n }\n\n if (lazyLoad) {\n lazyLoadedList = lazyLoadedList.concat(getOnDemandLazySlides(_objectSpread(_objectSpread({}, spec), {}, {\n currentSlide: animationSlide\n })));\n }\n\n if (!useCSS) {\n state = {\n currentSlide: finalSlide,\n trackStyle: getTrackCSS(_objectSpread(_objectSpread({}, spec), {}, {\n left: finalLeft\n })),\n lazyLoadedList: lazyLoadedList,\n targetSlide: targetSlide\n };\n } else {\n state = {\n animating: true,\n currentSlide: finalSlide,\n trackStyle: getTrackAnimateCSS(_objectSpread(_objectSpread({}, spec), {}, {\n left: animationLeft\n })),\n lazyLoadedList: lazyLoadedList,\n targetSlide: targetSlide\n };\n nextState = {\n animating: false,\n currentSlide: finalSlide,\n trackStyle: getTrackCSS(_objectSpread(_objectSpread({}, spec), {}, {\n left: finalLeft\n })),\n swipeLeft: null,\n targetSlide: targetSlide\n };\n }\n }\n\n return {\n state: state,\n nextState: nextState\n };\n};\n\nexports.slideHandler = slideHandler;\n\nvar changeSlide = function changeSlide(spec, options) {\n var indexOffset, previousInt, slideOffset, unevenOffset, targetSlide;\n var slidesToScroll = spec.slidesToScroll,\n slidesToShow = spec.slidesToShow,\n slideCount = spec.slideCount,\n currentSlide = spec.currentSlide,\n previousTargetSlide = spec.targetSlide,\n lazyLoad = spec.lazyLoad,\n infinite = spec.infinite;\n unevenOffset = slideCount % slidesToScroll !== 0;\n indexOffset = unevenOffset ? 0 : (slideCount - currentSlide) % slidesToScroll;\n\n if (options.message === \"previous\") {\n slideOffset = indexOffset === 0 ? slidesToScroll : slidesToShow - indexOffset;\n targetSlide = currentSlide - slideOffset;\n\n if (lazyLoad && !infinite) {\n previousInt = currentSlide - slideOffset;\n targetSlide = previousInt === -1 ? slideCount - 1 : previousInt;\n }\n\n if (!infinite) {\n targetSlide = previousTargetSlide - slidesToScroll;\n }\n } else if (options.message === \"next\") {\n slideOffset = indexOffset === 0 ? slidesToScroll : indexOffset;\n targetSlide = currentSlide + slideOffset;\n\n if (lazyLoad && !infinite) {\n targetSlide = (currentSlide + slidesToScroll) % slideCount + indexOffset;\n }\n\n if (!infinite) {\n targetSlide = previousTargetSlide + slidesToScroll;\n }\n } else if (options.message === \"dots\") {\n // Click on dots\n targetSlide = options.index * options.slidesToScroll;\n } else if (options.message === \"children\") {\n // Click on the slides\n targetSlide = options.index;\n\n if (infinite) {\n var direction = siblingDirection(_objectSpread(_objectSpread({}, spec), {}, {\n targetSlide: targetSlide\n }));\n\n if (targetSlide > options.currentSlide && direction === \"left\") {\n targetSlide = targetSlide - slideCount;\n } else if (targetSlide < options.currentSlide && direction === \"right\") {\n targetSlide = targetSlide + slideCount;\n }\n }\n } else if (options.message === \"index\") {\n targetSlide = Number(options.index);\n }\n\n return targetSlide;\n};\n\nexports.changeSlide = changeSlide;\n\nvar keyHandler = function keyHandler(e, accessibility, rtl) {\n if (e.target.tagName.match(\"TEXTAREA|INPUT|SELECT\") || !accessibility) return \"\";\n if (e.keyCode === 37) return rtl ? \"next\" : \"previous\";\n if (e.keyCode === 39) return rtl ? \"previous\" : \"next\";\n return \"\";\n};\n\nexports.keyHandler = keyHandler;\n\nvar swipeStart = function swipeStart(e, swipe, draggable) {\n e.target.tagName === \"IMG\" && safePreventDefault(e);\n if (!swipe || !draggable && e.type.indexOf(\"mouse\") !== -1) return \"\";\n return {\n dragging: true,\n touchObject: {\n startX: e.touches ? e.touches[0].pageX : e.clientX,\n startY: e.touches ? e.touches[0].pageY : e.clientY,\n curX: e.touches ? e.touches[0].pageX : e.clientX,\n curY: e.touches ? e.touches[0].pageY : e.clientY\n }\n };\n};\n\nexports.swipeStart = swipeStart;\n\nvar swipeMove = function swipeMove(e, spec) {\n // spec also contains, trackRef and slideIndex\n var scrolling = spec.scrolling,\n animating = spec.animating,\n vertical = spec.vertical,\n swipeToSlide = spec.swipeToSlide,\n verticalSwiping = spec.verticalSwiping,\n rtl = spec.rtl,\n currentSlide = spec.currentSlide,\n edgeFriction = spec.edgeFriction,\n edgeDragged = spec.edgeDragged,\n onEdge = spec.onEdge,\n swiped = spec.swiped,\n swiping = spec.swiping,\n slideCount = spec.slideCount,\n slidesToScroll = spec.slidesToScroll,\n infinite = spec.infinite,\n touchObject = spec.touchObject,\n swipeEvent = spec.swipeEvent,\n listHeight = spec.listHeight,\n listWidth = spec.listWidth;\n if (scrolling) return;\n if (animating) return safePreventDefault(e);\n if (vertical && swipeToSlide && verticalSwiping) safePreventDefault(e);\n var swipeLeft,\n state = {};\n var curLeft = getTrackLeft(spec);\n touchObject.curX = e.touches ? e.touches[0].pageX : e.clientX;\n touchObject.curY = e.touches ? e.touches[0].pageY : e.clientY;\n touchObject.swipeLength = Math.round(Math.sqrt(Math.pow(touchObject.curX - touchObject.startX, 2)));\n var verticalSwipeLength = Math.round(Math.sqrt(Math.pow(touchObject.curY - touchObject.startY, 2)));\n\n if (!verticalSwiping && !swiping && verticalSwipeLength > 10) {\n return {\n scrolling: true\n };\n }\n\n if (verticalSwiping) touchObject.swipeLength = verticalSwipeLength;\n var positionOffset = (!rtl ? 1 : -1) * (touchObject.curX > touchObject.startX ? 1 : -1);\n if (verticalSwiping) positionOffset = touchObject.curY > touchObject.startY ? 1 : -1;\n var dotCount = Math.ceil(slideCount / slidesToScroll);\n var swipeDirection = getSwipeDirection(spec.touchObject, verticalSwiping);\n var touchSwipeLength = touchObject.swipeLength;\n\n if (!infinite) {\n if (currentSlide === 0 && (swipeDirection === \"right\" || swipeDirection === \"down\") || currentSlide + 1 >= dotCount && (swipeDirection === \"left\" || swipeDirection === \"up\") || !canGoNext(spec) && (swipeDirection === \"left\" || swipeDirection === \"up\")) {\n touchSwipeLength = touchObject.swipeLength * edgeFriction;\n\n if (edgeDragged === false && onEdge) {\n onEdge(swipeDirection);\n state[\"edgeDragged\"] = true;\n }\n }\n }\n\n if (!swiped && swipeEvent) {\n swipeEvent(swipeDirection);\n state[\"swiped\"] = true;\n }\n\n if (!vertical) {\n if (!rtl) {\n swipeLeft = curLeft + touchSwipeLength * positionOffset;\n } else {\n swipeLeft = curLeft - touchSwipeLength * positionOffset;\n }\n } else {\n swipeLeft = curLeft + touchSwipeLength * (listHeight / listWidth) * positionOffset;\n }\n\n if (verticalSwiping) {\n swipeLeft = curLeft + touchSwipeLength * positionOffset;\n }\n\n state = _objectSpread(_objectSpread({}, state), {}, {\n touchObject: touchObject,\n swipeLeft: swipeLeft,\n trackStyle: getTrackCSS(_objectSpread(_objectSpread({}, spec), {}, {\n left: swipeLeft\n }))\n });\n\n if (Math.abs(touchObject.curX - touchObject.startX) < Math.abs(touchObject.curY - touchObject.startY) * 0.8) {\n return state;\n }\n\n if (touchObject.swipeLength > 10) {\n state[\"swiping\"] = true;\n safePreventDefault(e);\n }\n\n return state;\n};\n\nexports.swipeMove = swipeMove;\n\nvar swipeEnd = function swipeEnd(e, spec) {\n var dragging = spec.dragging,\n swipe = spec.swipe,\n touchObject = spec.touchObject,\n listWidth = spec.listWidth,\n touchThreshold = spec.touchThreshold,\n verticalSwiping = spec.verticalSwiping,\n listHeight = spec.listHeight,\n swipeToSlide = spec.swipeToSlide,\n scrolling = spec.scrolling,\n onSwipe = spec.onSwipe,\n targetSlide = spec.targetSlide,\n currentSlide = spec.currentSlide,\n infinite = spec.infinite;\n\n if (!dragging) {\n if (swipe) safePreventDefault(e);\n return {};\n }\n\n var minSwipe = verticalSwiping ? listHeight / touchThreshold : listWidth / touchThreshold;\n var swipeDirection = getSwipeDirection(touchObject, verticalSwiping); // reset the state of touch related state variables.\n\n var state = {\n dragging: false,\n edgeDragged: false,\n scrolling: false,\n swiping: false,\n swiped: false,\n swipeLeft: null,\n touchObject: {}\n };\n\n if (scrolling) {\n return state;\n }\n\n if (!touchObject.swipeLength) {\n return state;\n }\n\n if (touchObject.swipeLength > minSwipe) {\n safePreventDefault(e);\n\n if (onSwipe) {\n onSwipe(swipeDirection);\n }\n\n var slideCount, newSlide;\n var activeSlide = infinite ? currentSlide : targetSlide;\n\n switch (swipeDirection) {\n case \"left\":\n case \"up\":\n newSlide = activeSlide + getSlideCount(spec);\n slideCount = swipeToSlide ? checkNavigable(spec, newSlide) : newSlide;\n state[\"currentDirection\"] = 0;\n break;\n\n case \"right\":\n case \"down\":\n newSlide = activeSlide - getSlideCount(spec);\n slideCount = swipeToSlide ? checkNavigable(spec, newSlide) : newSlide;\n state[\"currentDirection\"] = 1;\n break;\n\n default:\n slideCount = activeSlide;\n }\n\n state[\"triggerSlideHandler\"] = slideCount;\n } else {\n // Adjust the track back to it's original position.\n var currentLeft = getTrackLeft(spec);\n state[\"trackStyle\"] = getTrackAnimateCSS(_objectSpread(_objectSpread({}, spec), {}, {\n left: currentLeft\n }));\n }\n\n return state;\n};\n\nexports.swipeEnd = swipeEnd;\n\nvar getNavigableIndexes = function getNavigableIndexes(spec) {\n var max = spec.infinite ? spec.slideCount * 2 : spec.slideCount;\n var breakpoint = spec.infinite ? spec.slidesToShow * -1 : 0;\n var counter = spec.infinite ? spec.slidesToShow * -1 : 0;\n var indexes = [];\n\n while (breakpoint < max) {\n indexes.push(breakpoint);\n breakpoint = counter + spec.slidesToScroll;\n counter += Math.min(spec.slidesToScroll, spec.slidesToShow);\n }\n\n return indexes;\n};\n\nexports.getNavigableIndexes = getNavigableIndexes;\n\nvar checkNavigable = function checkNavigable(spec, index) {\n var navigables = getNavigableIndexes(spec);\n var prevNavigable = 0;\n\n if (index > navigables[navigables.length - 1]) {\n index = navigables[navigables.length - 1];\n } else {\n for (var n in navigables) {\n if (index < navigables[n]) {\n index = prevNavigable;\n break;\n }\n\n prevNavigable = navigables[n];\n }\n }\n\n return index;\n};\n\nexports.checkNavigable = checkNavigable;\n\nvar getSlideCount = function getSlideCount(spec) {\n var centerOffset = spec.centerMode ? spec.slideWidth * Math.floor(spec.slidesToShow / 2) : 0;\n\n if (spec.swipeToSlide) {\n var swipedSlide;\n var slickList = spec.listRef;\n var slides = slickList.querySelectorAll && slickList.querySelectorAll(\".slick-slide\") || [];\n Array.from(slides).every(function (slide) {\n if (!spec.vertical) {\n if (slide.offsetLeft - centerOffset + getWidth(slide) / 2 > spec.swipeLeft * -1) {\n swipedSlide = slide;\n return false;\n }\n } else {\n if (slide.offsetTop + getHeight(slide) / 2 > spec.swipeLeft * -1) {\n swipedSlide = slide;\n return false;\n }\n }\n\n return true;\n });\n\n if (!swipedSlide) {\n return 0;\n }\n\n var currentIndex = spec.rtl === true ? spec.slideCount - spec.currentSlide : spec.currentSlide;\n var slidesTraversed = Math.abs(swipedSlide.dataset.index - currentIndex) || 1;\n return slidesTraversed;\n } else {\n return spec.slidesToScroll;\n }\n};\n\nexports.getSlideCount = getSlideCount;\n\nvar checkSpecKeys = function checkSpecKeys(spec, keysArray) {\n return keysArray.reduce(function (value, key) {\n return value && spec.hasOwnProperty(key);\n }, true) ? null : console.error(\"Keys Missing:\", spec);\n};\n\nexports.checkSpecKeys = checkSpecKeys;\n\nvar getTrackCSS = function getTrackCSS(spec) {\n checkSpecKeys(spec, [\"left\", \"variableWidth\", \"slideCount\", \"slidesToShow\", \"slideWidth\"]);\n var trackWidth, trackHeight;\n var trackChildren = spec.slideCount + 2 * spec.slidesToShow;\n\n if (!spec.vertical) {\n trackWidth = getTotalSlides(spec) * spec.slideWidth;\n } else {\n trackHeight = trackChildren * spec.slideHeight;\n }\n\n var style = {\n opacity: 1,\n transition: \"\",\n WebkitTransition: \"\"\n };\n\n if (spec.useTransform) {\n var WebkitTransform = !spec.vertical ? \"translate3d(\" + spec.left + \"px, 0px, 0px)\" : \"translate3d(0px, \" + spec.left + \"px, 0px)\";\n var transform = !spec.vertical ? \"translate3d(\" + spec.left + \"px, 0px, 0px)\" : \"translate3d(0px, \" + spec.left + \"px, 0px)\";\n var msTransform = !spec.vertical ? \"translateX(\" + spec.left + \"px)\" : \"translateY(\" + spec.left + \"px)\";\n style = _objectSpread(_objectSpread({}, style), {}, {\n WebkitTransform: WebkitTransform,\n transform: transform,\n msTransform: msTransform\n });\n } else {\n if (spec.vertical) {\n style[\"top\"] = spec.left;\n } else {\n style[\"left\"] = spec.left;\n }\n }\n\n if (spec.fade) style = {\n opacity: 1\n };\n if (trackWidth) style.width = trackWidth;\n if (trackHeight) style.height = trackHeight; // Fallback for IE8\n\n if (window && !window.addEventListener && window.attachEvent) {\n if (!spec.vertical) {\n style.marginLeft = spec.left + \"px\";\n } else {\n style.marginTop = spec.left + \"px\";\n }\n }\n\n return style;\n};\n\nexports.getTrackCSS = getTrackCSS;\n\nvar getTrackAnimateCSS = function getTrackAnimateCSS(spec) {\n checkSpecKeys(spec, [\"left\", \"variableWidth\", \"slideCount\", \"slidesToShow\", \"slideWidth\", \"speed\", \"cssEase\"]);\n var style = getTrackCSS(spec); // useCSS is true by default so it can be undefined\n\n if (spec.useTransform) {\n style.WebkitTransition = \"-webkit-transform \" + spec.speed + \"ms \" + spec.cssEase;\n style.transition = \"transform \" + spec.speed + \"ms \" + spec.cssEase;\n } else {\n if (spec.vertical) {\n style.transition = \"top \" + spec.speed + \"ms \" + spec.cssEase;\n } else {\n style.transition = \"left \" + spec.speed + \"ms \" + spec.cssEase;\n }\n }\n\n return style;\n};\n\nexports.getTrackAnimateCSS = getTrackAnimateCSS;\n\nvar getTrackLeft = function getTrackLeft(spec) {\n if (spec.unslick) {\n return 0;\n }\n\n checkSpecKeys(spec, [\"slideIndex\", \"trackRef\", \"infinite\", \"centerMode\", \"slideCount\", \"slidesToShow\", \"slidesToScroll\", \"slideWidth\", \"listWidth\", \"variableWidth\", \"slideHeight\"]);\n var slideIndex = spec.slideIndex,\n trackRef = spec.trackRef,\n infinite = spec.infinite,\n centerMode = spec.centerMode,\n slideCount = spec.slideCount,\n slidesToShow = spec.slidesToShow,\n slidesToScroll = spec.slidesToScroll,\n slideWidth = spec.slideWidth,\n listWidth = spec.listWidth,\n variableWidth = spec.variableWidth,\n slideHeight = spec.slideHeight,\n fade = spec.fade,\n vertical = spec.vertical;\n var slideOffset = 0;\n var targetLeft;\n var targetSlide;\n var verticalOffset = 0;\n\n if (fade || spec.slideCount === 1) {\n return 0;\n }\n\n var slidesToOffset = 0;\n\n if (infinite) {\n slidesToOffset = -getPreClones(spec); // bring active slide to the beginning of visual area\n // if next scroll doesn't have enough children, just reach till the end of original slides instead of shifting slidesToScroll children\n\n if (slideCount % slidesToScroll !== 0 && slideIndex + slidesToScroll > slideCount) {\n slidesToOffset = -(slideIndex > slideCount ? slidesToShow - (slideIndex - slideCount) : slideCount % slidesToScroll);\n } // shift current slide to center of the frame\n\n\n if (centerMode) {\n slidesToOffset += parseInt(slidesToShow / 2);\n }\n } else {\n if (slideCount % slidesToScroll !== 0 && slideIndex + slidesToScroll > slideCount) {\n slidesToOffset = slidesToShow - slideCount % slidesToScroll;\n }\n\n if (centerMode) {\n slidesToOffset = parseInt(slidesToShow / 2);\n }\n }\n\n slideOffset = slidesToOffset * slideWidth;\n verticalOffset = slidesToOffset * slideHeight;\n\n if (!vertical) {\n targetLeft = slideIndex * slideWidth * -1 + slideOffset;\n } else {\n targetLeft = slideIndex * slideHeight * -1 + verticalOffset;\n }\n\n if (variableWidth === true) {\n var targetSlideIndex;\n var trackElem = trackRef && trackRef.node;\n targetSlideIndex = slideIndex + getPreClones(spec);\n targetSlide = trackElem && trackElem.childNodes[targetSlideIndex];\n targetLeft = targetSlide ? targetSlide.offsetLeft * -1 : 0;\n\n if (centerMode === true) {\n targetSlideIndex = infinite ? slideIndex + getPreClones(spec) : slideIndex;\n targetSlide = trackElem && trackElem.children[targetSlideIndex];\n targetLeft = 0;\n\n for (var slide = 0; slide < targetSlideIndex; slide++) {\n targetLeft -= trackElem && trackElem.children[slide] && trackElem.children[slide].offsetWidth;\n }\n\n targetLeft -= parseInt(spec.centerPadding);\n targetLeft += targetSlide && (listWidth - targetSlide.offsetWidth) / 2;\n }\n }\n\n return targetLeft;\n};\n\nexports.getTrackLeft = getTrackLeft;\n\nvar getPreClones = function getPreClones(spec) {\n if (spec.unslick || !spec.infinite) {\n return 0;\n }\n\n if (spec.variableWidth) {\n return spec.slideCount;\n }\n\n return spec.slidesToShow + (spec.centerMode ? 1 : 0);\n};\n\nexports.getPreClones = getPreClones;\n\nvar getPostClones = function getPostClones(spec) {\n if (spec.unslick || !spec.infinite) {\n return 0;\n }\n\n return spec.slideCount;\n};\n\nexports.getPostClones = getPostClones;\n\nvar getTotalSlides = function getTotalSlides(spec) {\n return spec.slideCount === 1 ? 1 : getPreClones(spec) + spec.slideCount + getPostClones(spec);\n};\n\nexports.getTotalSlides = getTotalSlides;\n\nvar siblingDirection = function siblingDirection(spec) {\n if (spec.targetSlide > spec.currentSlide) {\n if (spec.targetSlide > spec.currentSlide + slidesOnRight(spec)) {\n return \"left\";\n }\n\n return \"right\";\n } else {\n if (spec.targetSlide < spec.currentSlide - slidesOnLeft(spec)) {\n return \"right\";\n }\n\n return \"left\";\n }\n};\n\nexports.siblingDirection = siblingDirection;\n\nvar slidesOnRight = function slidesOnRight(_ref) {\n var slidesToShow = _ref.slidesToShow,\n centerMode = _ref.centerMode,\n rtl = _ref.rtl,\n centerPadding = _ref.centerPadding;\n\n // returns no of slides on the right of active slide\n if (centerMode) {\n var right = (slidesToShow - 1) / 2 + 1;\n if (parseInt(centerPadding) > 0) right += 1;\n if (rtl && slidesToShow % 2 === 0) right += 1;\n return right;\n }\n\n if (rtl) {\n return 0;\n }\n\n return slidesToShow - 1;\n};\n\nexports.slidesOnRight = slidesOnRight;\n\nvar slidesOnLeft = function slidesOnLeft(_ref2) {\n var slidesToShow = _ref2.slidesToShow,\n centerMode = _ref2.centerMode,\n rtl = _ref2.rtl,\n centerPadding = _ref2.centerPadding;\n\n // returns no of slides on the left of active slide\n if (centerMode) {\n var left = (slidesToShow - 1) / 2 + 1;\n if (parseInt(centerPadding) > 0) left += 1;\n if (!rtl && slidesToShow % 2 === 0) left += 1;\n return left;\n }\n\n if (rtl) {\n return slidesToShow - 1;\n }\n\n return 0;\n};\n\nexports.slidesOnLeft = slidesOnLeft;\n\nvar canUseDOM = function canUseDOM() {\n return !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\n};\n\nexports.canUseDOM = canUseDOM;","/**\n * @license React\n * react-jsx-runtime.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 f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","/**\n * @license React\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=Symbol.for(\"react.element\"),n=Symbol.for(\"react.portal\"),p=Symbol.for(\"react.fragment\"),q=Symbol.for(\"react.strict_mode\"),r=Symbol.for(\"react.profiler\"),t=Symbol.for(\"react.provider\"),u=Symbol.for(\"react.context\"),v=Symbol.for(\"react.forward_ref\"),w=Symbol.for(\"react.suspense\"),x=Symbol.for(\"react.memo\"),y=Symbol.for(\"react.lazy\"),z=Symbol.iterator;function A(a){if(null===a||\"object\"!==typeof a)return null;a=z&&a[z]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}\nvar B={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,D={};function E(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}E.prototype.isReactComponent={};\nE.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,a,b,\"setState\")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};function F(){}F.prototype=E.prototype;function G(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}var H=G.prototype=new F;\nH.constructor=G;C(H,E.prototype);H.isPureReactComponent=!0;var I=Array.isArray,J=Object.prototype.hasOwnProperty,K={current:null},L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,e){var d,c={},k=null,h=null;if(null!=b)for(d in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)J.call(b,d)&&!L.hasOwnProperty(d)&&(c[d]=b[d]);var g=arguments.length-2;if(1===g)c.children=e;else if(1 result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n });\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n define(Gp, iteratorSymbol, function() {\n return this;\n });\n\n define(Gp, \"toString\", function() {\n return \"[object Generator]\";\n });\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, in modern engines\n // we can explicitly access globalThis. In older engines we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","/**\r\n * A collection of shims that provide minimal functionality of the ES6 collections.\r\n *\r\n * These implementations are not meant to be used outside of the ResizeObserver\r\n * modules as they cover only a limited range of use cases.\r\n */\r\n/* eslint-disable require-jsdoc, valid-jsdoc */\r\nvar MapShim = (function () {\r\n if (typeof Map !== 'undefined') {\r\n return Map;\r\n }\r\n /**\r\n * Returns index in provided array that matches the specified key.\r\n *\r\n * @param {Array} arr\r\n * @param {*} key\r\n * @returns {number}\r\n */\r\n function getIndex(arr, key) {\r\n var result = -1;\r\n arr.some(function (entry, index) {\r\n if (entry[0] === key) {\r\n result = index;\r\n return true;\r\n }\r\n return false;\r\n });\r\n return result;\r\n }\r\n return /** @class */ (function () {\r\n function class_1() {\r\n this.__entries__ = [];\r\n }\r\n Object.defineProperty(class_1.prototype, \"size\", {\r\n /**\r\n * @returns {boolean}\r\n */\r\n get: function () {\r\n return this.__entries__.length;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @param {*} key\r\n * @returns {*}\r\n */\r\n class_1.prototype.get = function (key) {\r\n var index = getIndex(this.__entries__, key);\r\n var entry = this.__entries__[index];\r\n return entry && entry[1];\r\n };\r\n /**\r\n * @param {*} key\r\n * @param {*} value\r\n * @returns {void}\r\n */\r\n class_1.prototype.set = function (key, value) {\r\n var index = getIndex(this.__entries__, key);\r\n if (~index) {\r\n this.__entries__[index][1] = value;\r\n }\r\n else {\r\n this.__entries__.push([key, value]);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.delete = function (key) {\r\n var entries = this.__entries__;\r\n var index = getIndex(entries, key);\r\n if (~index) {\r\n entries.splice(index, 1);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.has = function (key) {\r\n return !!~getIndex(this.__entries__, key);\r\n };\r\n /**\r\n * @returns {void}\r\n */\r\n class_1.prototype.clear = function () {\r\n this.__entries__.splice(0);\r\n };\r\n /**\r\n * @param {Function} callback\r\n * @param {*} [ctx=null]\r\n * @returns {void}\r\n */\r\n class_1.prototype.forEach = function (callback, ctx) {\r\n if (ctx === void 0) { ctx = null; }\r\n for (var _i = 0, _a = this.__entries__; _i < _a.length; _i++) {\r\n var entry = _a[_i];\r\n callback.call(ctx, entry[1], entry[0]);\r\n }\r\n };\r\n return class_1;\r\n }());\r\n})();\n\n/**\r\n * Detects whether window and document objects are available in current environment.\r\n */\r\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document;\n\n// Returns global object of a current environment.\r\nvar global$1 = (function () {\r\n if (typeof global !== 'undefined' && global.Math === Math) {\r\n return global;\r\n }\r\n if (typeof self !== 'undefined' && self.Math === Math) {\r\n return self;\r\n }\r\n if (typeof window !== 'undefined' && window.Math === Math) {\r\n return window;\r\n }\r\n // eslint-disable-next-line no-new-func\r\n return Function('return this')();\r\n})();\n\n/**\r\n * A shim for the requestAnimationFrame which falls back to the setTimeout if\r\n * first one is not supported.\r\n *\r\n * @returns {number} Requests' identifier.\r\n */\r\nvar requestAnimationFrame$1 = (function () {\r\n if (typeof requestAnimationFrame === 'function') {\r\n // It's required to use a bounded function because IE sometimes throws\r\n // an \"Invalid calling object\" error if rAF is invoked without the global\r\n // object on the left hand side.\r\n return requestAnimationFrame.bind(global$1);\r\n }\r\n return function (callback) { return setTimeout(function () { return callback(Date.now()); }, 1000 / 60); };\r\n})();\n\n// Defines minimum timeout before adding a trailing call.\r\nvar trailingTimeout = 2;\r\n/**\r\n * Creates a wrapper function which ensures that provided callback will be\r\n * invoked only once during the specified delay period.\r\n *\r\n * @param {Function} callback - Function to be invoked after the delay period.\r\n * @param {number} delay - Delay after which to invoke callback.\r\n * @returns {Function}\r\n */\r\nfunction throttle (callback, delay) {\r\n var leadingCall = false, trailingCall = false, lastCallTime = 0;\r\n /**\r\n * Invokes the original callback function and schedules new invocation if\r\n * the \"proxy\" was called during current request.\r\n *\r\n * @returns {void}\r\n */\r\n function resolvePending() {\r\n if (leadingCall) {\r\n leadingCall = false;\r\n callback();\r\n }\r\n if (trailingCall) {\r\n proxy();\r\n }\r\n }\r\n /**\r\n * Callback invoked after the specified delay. It will further postpone\r\n * invocation of the original function delegating it to the\r\n * requestAnimationFrame.\r\n *\r\n * @returns {void}\r\n */\r\n function timeoutCallback() {\r\n requestAnimationFrame$1(resolvePending);\r\n }\r\n /**\r\n * Schedules invocation of the original function.\r\n *\r\n * @returns {void}\r\n */\r\n function proxy() {\r\n var timeStamp = Date.now();\r\n if (leadingCall) {\r\n // Reject immediately following calls.\r\n if (timeStamp - lastCallTime < trailingTimeout) {\r\n return;\r\n }\r\n // Schedule new call to be in invoked when the pending one is resolved.\r\n // This is important for \"transitions\" which never actually start\r\n // immediately so there is a chance that we might miss one if change\r\n // happens amids the pending invocation.\r\n trailingCall = true;\r\n }\r\n else {\r\n leadingCall = true;\r\n trailingCall = false;\r\n setTimeout(timeoutCallback, delay);\r\n }\r\n lastCallTime = timeStamp;\r\n }\r\n return proxy;\r\n}\n\n// Minimum delay before invoking the update of observers.\r\nvar REFRESH_DELAY = 20;\r\n// A list of substrings of CSS properties used to find transition events that\r\n// might affect dimensions of observed elements.\r\nvar transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight'];\r\n// Check if MutationObserver is available.\r\nvar mutationObserverSupported = typeof MutationObserver !== 'undefined';\r\n/**\r\n * Singleton controller class which handles updates of ResizeObserver instances.\r\n */\r\nvar ResizeObserverController = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserverController.\r\n *\r\n * @private\r\n */\r\n function ResizeObserverController() {\r\n /**\r\n * Indicates whether DOM listeners have been added.\r\n *\r\n * @private {boolean}\r\n */\r\n this.connected_ = false;\r\n /**\r\n * Tells that controller has subscribed for Mutation Events.\r\n *\r\n * @private {boolean}\r\n */\r\n this.mutationEventsAdded_ = false;\r\n /**\r\n * Keeps reference to the instance of MutationObserver.\r\n *\r\n * @private {MutationObserver}\r\n */\r\n this.mutationsObserver_ = null;\r\n /**\r\n * A list of connected observers.\r\n *\r\n * @private {Array}\r\n */\r\n this.observers_ = [];\r\n this.onTransitionEnd_ = this.onTransitionEnd_.bind(this);\r\n this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY);\r\n }\r\n /**\r\n * Adds observer to observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be added.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.addObserver = function (observer) {\r\n if (!~this.observers_.indexOf(observer)) {\r\n this.observers_.push(observer);\r\n }\r\n // Add listeners if they haven't been added yet.\r\n if (!this.connected_) {\r\n this.connect_();\r\n }\r\n };\r\n /**\r\n * Removes observer from observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be removed.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.removeObserver = function (observer) {\r\n var observers = this.observers_;\r\n var index = observers.indexOf(observer);\r\n // Remove observer if it's present in registry.\r\n if (~index) {\r\n observers.splice(index, 1);\r\n }\r\n // Remove listeners if controller has no connected observers.\r\n if (!observers.length && this.connected_) {\r\n this.disconnect_();\r\n }\r\n };\r\n /**\r\n * Invokes the update of observers. It will continue running updates insofar\r\n * it detects changes.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.refresh = function () {\r\n var changesDetected = this.updateObservers_();\r\n // Continue running updates if changes have been detected as there might\r\n // be future ones caused by CSS transitions.\r\n if (changesDetected) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Updates every observer from observers list and notifies them of queued\r\n * entries.\r\n *\r\n * @private\r\n * @returns {boolean} Returns \"true\" if any observer has detected changes in\r\n * dimensions of it's elements.\r\n */\r\n ResizeObserverController.prototype.updateObservers_ = function () {\r\n // Collect observers that have active observations.\r\n var activeObservers = this.observers_.filter(function (observer) {\r\n return observer.gatherActive(), observer.hasActive();\r\n });\r\n // Deliver notifications in a separate cycle in order to avoid any\r\n // collisions between observers, e.g. when multiple instances of\r\n // ResizeObserver are tracking the same element and the callback of one\r\n // of them changes content dimensions of the observed target. Sometimes\r\n // this may result in notifications being blocked for the rest of observers.\r\n activeObservers.forEach(function (observer) { return observer.broadcastActive(); });\r\n return activeObservers.length > 0;\r\n };\r\n /**\r\n * Initializes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.connect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already added.\r\n if (!isBrowser || this.connected_) {\r\n return;\r\n }\r\n // Subscription to the \"Transitionend\" event is used as a workaround for\r\n // delayed transitions. This way it's possible to capture at least the\r\n // final state of an element.\r\n document.addEventListener('transitionend', this.onTransitionEnd_);\r\n window.addEventListener('resize', this.refresh);\r\n if (mutationObserverSupported) {\r\n this.mutationsObserver_ = new MutationObserver(this.refresh);\r\n this.mutationsObserver_.observe(document, {\r\n attributes: true,\r\n childList: true,\r\n characterData: true,\r\n subtree: true\r\n });\r\n }\r\n else {\r\n document.addEventListener('DOMSubtreeModified', this.refresh);\r\n this.mutationEventsAdded_ = true;\r\n }\r\n this.connected_ = true;\r\n };\r\n /**\r\n * Removes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.disconnect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already removed.\r\n if (!isBrowser || !this.connected_) {\r\n return;\r\n }\r\n document.removeEventListener('transitionend', this.onTransitionEnd_);\r\n window.removeEventListener('resize', this.refresh);\r\n if (this.mutationsObserver_) {\r\n this.mutationsObserver_.disconnect();\r\n }\r\n if (this.mutationEventsAdded_) {\r\n document.removeEventListener('DOMSubtreeModified', this.refresh);\r\n }\r\n this.mutationsObserver_ = null;\r\n this.mutationEventsAdded_ = false;\r\n this.connected_ = false;\r\n };\r\n /**\r\n * \"Transitionend\" event handler.\r\n *\r\n * @private\r\n * @param {TransitionEvent} event\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.onTransitionEnd_ = function (_a) {\r\n var _b = _a.propertyName, propertyName = _b === void 0 ? '' : _b;\r\n // Detect whether transition may affect dimensions of an element.\r\n var isReflowProperty = transitionKeys.some(function (key) {\r\n return !!~propertyName.indexOf(key);\r\n });\r\n if (isReflowProperty) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Returns instance of the ResizeObserverController.\r\n *\r\n * @returns {ResizeObserverController}\r\n */\r\n ResizeObserverController.getInstance = function () {\r\n if (!this.instance_) {\r\n this.instance_ = new ResizeObserverController();\r\n }\r\n return this.instance_;\r\n };\r\n /**\r\n * Holds reference to the controller's instance.\r\n *\r\n * @private {ResizeObserverController}\r\n */\r\n ResizeObserverController.instance_ = null;\r\n return ResizeObserverController;\r\n}());\n\n/**\r\n * Defines non-writable/enumerable properties of the provided target object.\r\n *\r\n * @param {Object} target - Object for which to define properties.\r\n * @param {Object} props - Properties to be defined.\r\n * @returns {Object} Target object.\r\n */\r\nvar defineConfigurable = (function (target, props) {\r\n for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {\r\n var key = _a[_i];\r\n Object.defineProperty(target, key, {\r\n value: props[key],\r\n enumerable: false,\r\n writable: false,\r\n configurable: true\r\n });\r\n }\r\n return target;\r\n});\n\n/**\r\n * Returns the global object associated with provided element.\r\n *\r\n * @param {Object} target\r\n * @returns {Object}\r\n */\r\nvar getWindowOf = (function (target) {\r\n // Assume that the element is an instance of Node, which means that it\r\n // has the \"ownerDocument\" property from which we can retrieve a\r\n // corresponding global object.\r\n var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView;\r\n // Return the local global object if it's not possible extract one from\r\n // provided element.\r\n return ownerGlobal || global$1;\r\n});\n\n// Placeholder of an empty content rectangle.\r\nvar emptyRect = createRectInit(0, 0, 0, 0);\r\n/**\r\n * Converts provided string to a number.\r\n *\r\n * @param {number|string} value\r\n * @returns {number}\r\n */\r\nfunction toFloat(value) {\r\n return parseFloat(value) || 0;\r\n}\r\n/**\r\n * Extracts borders size from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @param {...string} positions - Borders positions (top, right, ...)\r\n * @returns {number}\r\n */\r\nfunction getBordersSize(styles) {\r\n var positions = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n positions[_i - 1] = arguments[_i];\r\n }\r\n return positions.reduce(function (size, position) {\r\n var value = styles['border-' + position + '-width'];\r\n return size + toFloat(value);\r\n }, 0);\r\n}\r\n/**\r\n * Extracts paddings sizes from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @returns {Object} Paddings box.\r\n */\r\nfunction getPaddings(styles) {\r\n var positions = ['top', 'right', 'bottom', 'left'];\r\n var paddings = {};\r\n for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) {\r\n var position = positions_1[_i];\r\n var value = styles['padding-' + position];\r\n paddings[position] = toFloat(value);\r\n }\r\n return paddings;\r\n}\r\n/**\r\n * Calculates content rectangle of provided SVG element.\r\n *\r\n * @param {SVGGraphicsElement} target - Element content rectangle of which needs\r\n * to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getSVGContentRect(target) {\r\n var bbox = target.getBBox();\r\n return createRectInit(0, 0, bbox.width, bbox.height);\r\n}\r\n/**\r\n * Calculates content rectangle of provided HTMLElement.\r\n *\r\n * @param {HTMLElement} target - Element for which to calculate the content rectangle.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getHTMLElementContentRect(target) {\r\n // Client width & height properties can't be\r\n // used exclusively as they provide rounded values.\r\n var clientWidth = target.clientWidth, clientHeight = target.clientHeight;\r\n // By this condition we can catch all non-replaced inline, hidden and\r\n // detached elements. Though elements with width & height properties less\r\n // than 0.5 will be discarded as well.\r\n //\r\n // Without it we would need to implement separate methods for each of\r\n // those cases and it's not possible to perform a precise and performance\r\n // effective test for hidden elements. E.g. even jQuery's ':visible' filter\r\n // gives wrong results for elements with width & height less than 0.5.\r\n if (!clientWidth && !clientHeight) {\r\n return emptyRect;\r\n }\r\n var styles = getWindowOf(target).getComputedStyle(target);\r\n var paddings = getPaddings(styles);\r\n var horizPad = paddings.left + paddings.right;\r\n var vertPad = paddings.top + paddings.bottom;\r\n // Computed styles of width & height are being used because they are the\r\n // only dimensions available to JS that contain non-rounded values. It could\r\n // be possible to utilize the getBoundingClientRect if only it's data wasn't\r\n // affected by CSS transformations let alone paddings, borders and scroll bars.\r\n var width = toFloat(styles.width), height = toFloat(styles.height);\r\n // Width & height include paddings and borders when the 'border-box' box\r\n // model is applied (except for IE).\r\n if (styles.boxSizing === 'border-box') {\r\n // Following conditions are required to handle Internet Explorer which\r\n // doesn't include paddings and borders to computed CSS dimensions.\r\n //\r\n // We can say that if CSS dimensions + paddings are equal to the \"client\"\r\n // properties then it's either IE, and thus we don't need to subtract\r\n // anything, or an element merely doesn't have paddings/borders styles.\r\n if (Math.round(width + horizPad) !== clientWidth) {\r\n width -= getBordersSize(styles, 'left', 'right') + horizPad;\r\n }\r\n if (Math.round(height + vertPad) !== clientHeight) {\r\n height -= getBordersSize(styles, 'top', 'bottom') + vertPad;\r\n }\r\n }\r\n // Following steps can't be applied to the document's root element as its\r\n // client[Width/Height] properties represent viewport area of the window.\r\n // Besides, it's as well not necessary as the itself neither has\r\n // rendered scroll bars nor it can be clipped.\r\n if (!isDocumentElement(target)) {\r\n // In some browsers (only in Firefox, actually) CSS width & height\r\n // include scroll bars size which can be removed at this step as scroll\r\n // bars are the only difference between rounded dimensions + paddings\r\n // and \"client\" properties, though that is not always true in Chrome.\r\n var vertScrollbar = Math.round(width + horizPad) - clientWidth;\r\n var horizScrollbar = Math.round(height + vertPad) - clientHeight;\r\n // Chrome has a rather weird rounding of \"client\" properties.\r\n // E.g. for an element with content width of 314.2px it sometimes gives\r\n // the client width of 315px and for the width of 314.7px it may give\r\n // 314px. And it doesn't happen all the time. So just ignore this delta\r\n // as a non-relevant.\r\n if (Math.abs(vertScrollbar) !== 1) {\r\n width -= vertScrollbar;\r\n }\r\n if (Math.abs(horizScrollbar) !== 1) {\r\n height -= horizScrollbar;\r\n }\r\n }\r\n return createRectInit(paddings.left, paddings.top, width, height);\r\n}\r\n/**\r\n * Checks whether provided element is an instance of the SVGGraphicsElement.\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nvar isSVGGraphicsElement = (function () {\r\n // Some browsers, namely IE and Edge, don't have the SVGGraphicsElement\r\n // interface.\r\n if (typeof SVGGraphicsElement !== 'undefined') {\r\n return function (target) { return target instanceof getWindowOf(target).SVGGraphicsElement; };\r\n }\r\n // If it's so, then check that element is at least an instance of the\r\n // SVGElement and that it has the \"getBBox\" method.\r\n // eslint-disable-next-line no-extra-parens\r\n return function (target) { return (target instanceof getWindowOf(target).SVGElement &&\r\n typeof target.getBBox === 'function'); };\r\n})();\r\n/**\r\n * Checks whether provided element is a document element ().\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nfunction isDocumentElement(target) {\r\n return target === getWindowOf(target).document.documentElement;\r\n}\r\n/**\r\n * Calculates an appropriate content rectangle for provided html or svg element.\r\n *\r\n * @param {Element} target - Element content rectangle of which needs to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getContentRect(target) {\r\n if (!isBrowser) {\r\n return emptyRect;\r\n }\r\n if (isSVGGraphicsElement(target)) {\r\n return getSVGContentRect(target);\r\n }\r\n return getHTMLElementContentRect(target);\r\n}\r\n/**\r\n * Creates rectangle with an interface of the DOMRectReadOnly.\r\n * Spec: https://drafts.fxtf.org/geometry/#domrectreadonly\r\n *\r\n * @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions.\r\n * @returns {DOMRectReadOnly}\r\n */\r\nfunction createReadOnlyRect(_a) {\r\n var x = _a.x, y = _a.y, width = _a.width, height = _a.height;\r\n // If DOMRectReadOnly is available use it as a prototype for the rectangle.\r\n var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object;\r\n var rect = Object.create(Constr.prototype);\r\n // Rectangle's properties are not writable and non-enumerable.\r\n defineConfigurable(rect, {\r\n x: x, y: y, width: width, height: height,\r\n top: y,\r\n right: x + width,\r\n bottom: height + y,\r\n left: x\r\n });\r\n return rect;\r\n}\r\n/**\r\n * Creates DOMRectInit object based on the provided dimensions and the x/y coordinates.\r\n * Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit\r\n *\r\n * @param {number} x - X coordinate.\r\n * @param {number} y - Y coordinate.\r\n * @param {number} width - Rectangle's width.\r\n * @param {number} height - Rectangle's height.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction createRectInit(x, y, width, height) {\r\n return { x: x, y: y, width: width, height: height };\r\n}\n\n/**\r\n * Class that is responsible for computations of the content rectangle of\r\n * provided DOM element and for keeping track of it's changes.\r\n */\r\nvar ResizeObservation = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObservation.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n */\r\n function ResizeObservation(target) {\r\n /**\r\n * Broadcasted width of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastWidth = 0;\r\n /**\r\n * Broadcasted height of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastHeight = 0;\r\n /**\r\n * Reference to the last observed content rectangle.\r\n *\r\n * @private {DOMRectInit}\r\n */\r\n this.contentRect_ = createRectInit(0, 0, 0, 0);\r\n this.target = target;\r\n }\r\n /**\r\n * Updates content rectangle and tells whether it's width or height properties\r\n * have changed since the last broadcast.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObservation.prototype.isActive = function () {\r\n var rect = getContentRect(this.target);\r\n this.contentRect_ = rect;\r\n return (rect.width !== this.broadcastWidth ||\r\n rect.height !== this.broadcastHeight);\r\n };\r\n /**\r\n * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data\r\n * from the corresponding properties of the last observed content rectangle.\r\n *\r\n * @returns {DOMRectInit} Last observed content rectangle.\r\n */\r\n ResizeObservation.prototype.broadcastRect = function () {\r\n var rect = this.contentRect_;\r\n this.broadcastWidth = rect.width;\r\n this.broadcastHeight = rect.height;\r\n return rect;\r\n };\r\n return ResizeObservation;\r\n}());\n\nvar ResizeObserverEntry = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObserverEntry.\r\n *\r\n * @param {Element} target - Element that is being observed.\r\n * @param {DOMRectInit} rectInit - Data of the element's content rectangle.\r\n */\r\n function ResizeObserverEntry(target, rectInit) {\r\n var contentRect = createReadOnlyRect(rectInit);\r\n // According to the specification following properties are not writable\r\n // and are also not enumerable in the native implementation.\r\n //\r\n // Property accessors are not being used as they'd require to define a\r\n // private WeakMap storage which may cause memory leaks in browsers that\r\n // don't support this type of collections.\r\n defineConfigurable(this, { target: target, contentRect: contentRect });\r\n }\r\n return ResizeObserverEntry;\r\n}());\n\nvar ResizeObserverSPI = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback function that is invoked\r\n * when one of the observed elements changes it's content dimensions.\r\n * @param {ResizeObserverController} controller - Controller instance which\r\n * is responsible for the updates of observer.\r\n * @param {ResizeObserver} callbackCtx - Reference to the public\r\n * ResizeObserver instance which will be passed to callback function.\r\n */\r\n function ResizeObserverSPI(callback, controller, callbackCtx) {\r\n /**\r\n * Collection of resize observations that have detected changes in dimensions\r\n * of elements.\r\n *\r\n * @private {Array}\r\n */\r\n this.activeObservations_ = [];\r\n /**\r\n * Registry of the ResizeObservation instances.\r\n *\r\n * @private {Map}\r\n */\r\n this.observations_ = new MapShim();\r\n if (typeof callback !== 'function') {\r\n throw new TypeError('The callback provided as parameter 1 is not a function.');\r\n }\r\n this.callback_ = callback;\r\n this.controller_ = controller;\r\n this.callbackCtx_ = callbackCtx;\r\n }\r\n /**\r\n * Starts observing provided element.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.observe = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is already being observed.\r\n if (observations.has(target)) {\r\n return;\r\n }\r\n observations.set(target, new ResizeObservation(target));\r\n this.controller_.addObserver(this);\r\n // Force the update of observations.\r\n this.controller_.refresh();\r\n };\r\n /**\r\n * Stops observing provided element.\r\n *\r\n * @param {Element} target - Element to stop observing.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.unobserve = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is not being observed.\r\n if (!observations.has(target)) {\r\n return;\r\n }\r\n observations.delete(target);\r\n if (!observations.size) {\r\n this.controller_.removeObserver(this);\r\n }\r\n };\r\n /**\r\n * Stops observing all elements.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.disconnect = function () {\r\n this.clearActive();\r\n this.observations_.clear();\r\n this.controller_.removeObserver(this);\r\n };\r\n /**\r\n * Collects observation instances the associated element of which has changed\r\n * it's content rectangle.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.gatherActive = function () {\r\n var _this = this;\r\n this.clearActive();\r\n this.observations_.forEach(function (observation) {\r\n if (observation.isActive()) {\r\n _this.activeObservations_.push(observation);\r\n }\r\n });\r\n };\r\n /**\r\n * Invokes initial callback function with a list of ResizeObserverEntry\r\n * instances collected from active resize observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.broadcastActive = function () {\r\n // Do nothing if observer doesn't have active observations.\r\n if (!this.hasActive()) {\r\n return;\r\n }\r\n var ctx = this.callbackCtx_;\r\n // Create ResizeObserverEntry instance for every active observation.\r\n var entries = this.activeObservations_.map(function (observation) {\r\n return new ResizeObserverEntry(observation.target, observation.broadcastRect());\r\n });\r\n this.callback_.call(ctx, entries, ctx);\r\n this.clearActive();\r\n };\r\n /**\r\n * Clears the collection of active observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.clearActive = function () {\r\n this.activeObservations_.splice(0);\r\n };\r\n /**\r\n * Tells whether observer has active observations.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObserverSPI.prototype.hasActive = function () {\r\n return this.activeObservations_.length > 0;\r\n };\r\n return ResizeObserverSPI;\r\n}());\n\n// Registry of internal observers. If WeakMap is not available use current shim\r\n// for the Map collection as it has all required methods and because WeakMap\r\n// can't be fully polyfilled anyway.\r\nvar observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim();\r\n/**\r\n * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation\r\n * exposing only those methods and properties that are defined in the spec.\r\n */\r\nvar ResizeObserver = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback that is invoked when\r\n * dimensions of the observed elements change.\r\n */\r\n function ResizeObserver(callback) {\r\n if (!(this instanceof ResizeObserver)) {\r\n throw new TypeError('Cannot call a class as a function.');\r\n }\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n var controller = ResizeObserverController.getInstance();\r\n var observer = new ResizeObserverSPI(callback, controller, this);\r\n observers.set(this, observer);\r\n }\r\n return ResizeObserver;\r\n}());\r\n// Expose public methods of ResizeObserver.\r\n[\r\n 'observe',\r\n 'unobserve',\r\n 'disconnect'\r\n].forEach(function (method) {\r\n ResizeObserver.prototype[method] = function () {\r\n var _a;\r\n return (_a = observers.get(this))[method].apply(_a, arguments);\r\n };\r\n});\n\nvar index = (function () {\r\n // Export existing implementation if available.\r\n if (typeof global$1.ResizeObserver !== 'undefined') {\r\n return global$1.ResizeObserver;\r\n }\r\n return ResizeObserver;\r\n})();\n\nexport default index;\n","/**\n * @license React\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';function f(a,b){var c=a.length;a.push(b);a:for(;0>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","var camel2hyphen = function (str) {\n return str\n .replace(/[A-Z]/g, function (match) {\n return '-' + match.toLowerCase();\n })\n .toLowerCase();\n};\n\nmodule.exports = camel2hyphen;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","var getProto = Object.getPrototypeOf ? function(obj) { return Object.getPrototypeOf(obj); } : function(obj) { return obj.__proto__; };\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach(function(key) { def[key] = function() { return value[key]; }; });\n\t}\n\tdef['default'] = function() { return value; };\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/\";","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","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 { useContext } from 'react';\nimport { ReactReduxContext } from '../components/Context';\n/**\r\n * A hook to access the value of the `ReactReduxContext`. This is a low-level\r\n * hook that you should usually not need to call directly.\r\n *\r\n * @returns {any} the value of the `ReactReduxContext`\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useReduxContext } from 'react-redux'\r\n *\r\n * export const CounterComponent = ({ value }) => {\r\n * const { store } = useReduxContext()\r\n * return
{store.getState()}
\r\n * }\r\n */\n\nexport function useReduxContext() {\n var contextValue = useContext(ReactReduxContext);\n\n if (process.env.NODE_ENV !== 'production' && !contextValue) {\n throw new Error('could not find react-redux context value; please ensure the component is wrapped in a ');\n }\n\n return contextValue;\n}","import { useContext } from 'react';\nimport { ReactReduxContext } from '../components/Context';\nimport { useReduxContext as useDefaultReduxContext } from './useReduxContext';\n/**\r\n * Hook factory, which creates a `useStore` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your ``.\r\n * @returns {Function} A `useStore` hook bound to the specified context.\r\n */\n\nexport function createStoreHook(context) {\n if (context === void 0) {\n context = ReactReduxContext;\n }\n\n var useReduxContext = context === ReactReduxContext ? useDefaultReduxContext : function () {\n return useContext(context);\n };\n return function useStore() {\n var _useReduxContext = useReduxContext(),\n store = _useReduxContext.store;\n\n return store;\n };\n}\n/**\r\n * A hook to access the redux store.\r\n *\r\n * @returns {any} the redux store\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useStore } from 'react-redux'\r\n *\r\n * export const ExampleComponent = () => {\r\n * const store = useStore()\r\n * return
{store.getState()}
\r\n * }\r\n */\n\nexport var useStore = /*#__PURE__*/createStoreHook();","import { ReactReduxContext } from '../components/Context';\nimport { useStore as useDefaultStore, createStoreHook } from './useStore';\n/**\r\n * Hook factory, which creates a `useDispatch` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your ``.\r\n * @returns {Function} A `useDispatch` hook bound to the specified context.\r\n */\n\nexport function createDispatchHook(context) {\n if (context === void 0) {\n context = ReactReduxContext;\n }\n\n var useStore = context === ReactReduxContext ? useDefaultStore : createStoreHook(context);\n return function useDispatch() {\n var store = useStore();\n return store.dispatch;\n };\n}\n/**\r\n * A hook to access the redux `dispatch` function.\r\n *\r\n * @returns {any|function} redux store's `dispatch` function\r\n *\r\n * @example\r\n *\r\n * import React, { useCallback } from 'react'\r\n * import { useDispatch } from 'react-redux'\r\n *\r\n * export const CounterComponent = ({ value }) => {\r\n * const dispatch = useDispatch()\r\n * const increaseCounter = useCallback(() => dispatch({ type: 'increase-counter' }), [])\r\n * return (\r\n *
\r\n * {value}\r\n * \r\n *
\r\n * )\r\n * }\r\n */\n\nexport var useDispatch = /*#__PURE__*/createDispatchHook();","import { useReducer, useRef, useMemo, useContext, useDebugValue } from 'react';\nimport { useReduxContext as useDefaultReduxContext } from './useReduxContext';\nimport { createSubscription } from '../utils/Subscription';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\nimport { ReactReduxContext } from '../components/Context';\n\nvar refEquality = function refEquality(a, b) {\n return a === b;\n};\n\nfunction useSelectorWithStoreAndSubscription(selector, equalityFn, store, contextSub) {\n var _useReducer = useReducer(function (s) {\n return s + 1;\n }, 0),\n forceRender = _useReducer[1];\n\n var subscription = useMemo(function () {\n return createSubscription(store, contextSub);\n }, [store, contextSub]);\n var latestSubscriptionCallbackError = useRef();\n var latestSelector = useRef();\n var latestStoreState = useRef();\n var latestSelectedState = useRef();\n var storeState = store.getState();\n var selectedState;\n\n try {\n if (selector !== latestSelector.current || storeState !== latestStoreState.current || latestSubscriptionCallbackError.current) {\n var newSelectedState = selector(storeState); // ensure latest selected state is reused so that a custom equality function can result in identical references\n\n if (latestSelectedState.current === undefined || !equalityFn(newSelectedState, latestSelectedState.current)) {\n selectedState = newSelectedState;\n } else {\n selectedState = latestSelectedState.current;\n }\n } else {\n selectedState = latestSelectedState.current;\n }\n } catch (err) {\n if (latestSubscriptionCallbackError.current) {\n err.message += \"\\nThe error may be correlated with this previous error:\\n\" + latestSubscriptionCallbackError.current.stack + \"\\n\\n\";\n }\n\n throw err;\n }\n\n useIsomorphicLayoutEffect(function () {\n latestSelector.current = selector;\n latestStoreState.current = storeState;\n latestSelectedState.current = selectedState;\n latestSubscriptionCallbackError.current = undefined;\n });\n useIsomorphicLayoutEffect(function () {\n function checkForUpdates() {\n try {\n var newStoreState = store.getState(); // Avoid calling selector multiple times if the store's state has not changed\n\n if (newStoreState === latestStoreState.current) {\n return;\n }\n\n var _newSelectedState = latestSelector.current(newStoreState);\n\n if (equalityFn(_newSelectedState, latestSelectedState.current)) {\n return;\n }\n\n latestSelectedState.current = _newSelectedState;\n latestStoreState.current = newStoreState;\n } catch (err) {\n // we ignore all errors here, since when the component\n // is re-rendered, the selectors are called again, and\n // will throw again, if neither props nor store state\n // changed\n latestSubscriptionCallbackError.current = err;\n }\n\n forceRender();\n }\n\n subscription.onStateChange = checkForUpdates;\n subscription.trySubscribe();\n checkForUpdates();\n return function () {\n return subscription.tryUnsubscribe();\n };\n }, [store, subscription]);\n return selectedState;\n}\n/**\r\n * Hook factory, which creates a `useSelector` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your ``.\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();","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","export default function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return assertThisInitialized(self);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nimport possibleConstructorReturn from \"./possibleConstructorReturn.js\";\nexport default function _createSuper(Derived) {\n var hasNativeReflectConstruct = isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return possibleConstructorReturn(this, result);\n };\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nexport default function _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n _construct = Reflect.construct;\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeFunction from \"./isNativeFunction.js\";\nimport construct from \"./construct.js\";\nexport default function _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return setPrototypeOf(Wrapper, Class);\n };\n\n return _wrapNativeSuper(Class);\n}","export default function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\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 };","////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Actions represent the type of change to a location value.\n */\nexport enum Action {\n /**\n * A POP indicates a change to an arbitrary index in the history stack, such\n * as a back or forward navigation. It does not describe the direction of the\n * navigation, only that the current index changed.\n *\n * Note: This is the default action for newly created history objects.\n */\n Pop = \"POP\",\n\n /**\n * A PUSH indicates a new entry being added to the history stack, such as when\n * a link is clicked and a new page loads. When this happens, all subsequent\n * entries in the stack are lost.\n */\n Push = \"PUSH\",\n\n /**\n * A REPLACE indicates the entry at the current index in the history stack\n * being replaced by a new one.\n */\n Replace = \"REPLACE\",\n}\n\n/**\n * The pathname, search, and hash values of a URL.\n */\nexport interface Path {\n /**\n * A URL pathname, beginning with a /.\n */\n pathname: string;\n\n /**\n * A URL search string, beginning with a ?.\n */\n search: string;\n\n /**\n * A URL fragment identifier, beginning with a #.\n */\n hash: string;\n}\n\n/**\n * An entry in a history stack. A location contains information about the\n * URL path, as well as possibly some arbitrary state and a key.\n */\nexport interface Location extends Path {\n /**\n * A value of arbitrary data associated with this location.\n */\n state: any;\n\n /**\n * A unique string associated with this location. May be used to safely store\n * and retrieve data in some other storage API, like `localStorage`.\n *\n * Note: This value is always \"default\" on the initial location.\n */\n key: string;\n}\n\n/**\n * A change to the current location.\n */\nexport interface Update {\n /**\n * The action that triggered the change.\n */\n action: Action;\n\n /**\n * The new location.\n */\n location: Location;\n}\n\n/**\n * A function that receives notifications about location changes.\n */\nexport interface Listener {\n (update: Update): void;\n}\n\n/**\n * Describes a location that is the destination of some navigation, either via\n * `history.push` or `history.replace`. May be either a URL or the pieces of a\n * URL path.\n */\nexport type To = string | Partial;\n\n/**\n * A history is an interface to the navigation stack. The history serves as the\n * source of truth for the current location, as well as provides a set of\n * methods that may be used to change it.\n *\n * It is similar to the DOM's `window.history` object, but with a smaller, more\n * focused API.\n */\nexport interface History {\n /**\n * The last action that modified the current location. This will always be\n * Action.Pop when a history instance is first created. This value is mutable.\n */\n readonly action: Action;\n\n /**\n * The current location. This value is mutable.\n */\n readonly location: Location;\n\n /**\n * Returns a valid href for the given `to` value that may be used as\n * the value of an attribute.\n *\n * @param to - The destination URL\n */\n createHref(to: To): string;\n\n /**\n * Pushes a new location onto the history stack, increasing its length by one.\n * If there were any entries in the stack after the current one, they are\n * lost.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n push(to: To, state?: any): void;\n\n /**\n * Replaces the current location in the history stack with a new one. The\n * location that was replaced will no longer be available.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n replace(to: To, state?: any): void;\n\n /**\n * Navigates `n` entries backward/forward in the history stack relative to the\n * current index. For example, a \"back\" navigation would use go(-1).\n *\n * @param delta - The delta in the stack index\n */\n go(delta: number): void;\n\n /**\n * Sets up a listener that will be called whenever the current location\n * changes.\n *\n * @param listener - A function that will be called when the location changes\n * @returns unlisten - A function that may be used to stop listening\n */\n listen(listener: Listener): () => void;\n}\n\ntype HistoryState = {\n usr: any;\n key?: string;\n};\n\nconst PopStateEventType = \"popstate\";\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Memory History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A user-supplied object that describes a location. Used when providing\n * entries to `createMemoryHistory` via its `initialEntries` option.\n */\nexport type InitialEntry = string | Partial;\n\nexport type MemoryHistoryOptions = {\n initialEntries?: InitialEntry[];\n initialIndex?: number;\n v5Compat?: boolean;\n};\n\n/**\n * A memory history stores locations in memory. This is useful in stateful\n * environments where there is no web browser, such as node tests or React\n * Native.\n */\nexport interface MemoryHistory extends History {\n /**\n * The current index in the history stack.\n */\n readonly index: number;\n}\n\n/**\n * Memory history stores the current location in memory. It is designed for use\n * in stateful non-browser environments like tests and React Native.\n */\nexport function createMemoryHistory(\n options: MemoryHistoryOptions = {}\n): MemoryHistory {\n let { initialEntries = [\"/\"], initialIndex, v5Compat = false } = options;\n let entries: Location[]; // Declare so we can access from createMemoryLocation\n entries = initialEntries.map((entry, index) =>\n createMemoryLocation(\n entry,\n typeof entry === \"string\" ? null : entry.state,\n index === 0 ? \"default\" : undefined\n )\n );\n let index = clampIndex(\n initialIndex == null ? entries.length - 1 : initialIndex\n );\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n function clampIndex(n: number): number {\n return Math.min(Math.max(n, 0), entries.length - 1);\n }\n function getCurrentLocation(): Location {\n return entries[index];\n }\n function createMemoryLocation(\n to: To,\n state: any = null,\n key?: string\n ): Location {\n let location = createLocation(\n entries ? getCurrentLocation().pathname : \"/\",\n to,\n state,\n key\n );\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in memory history: ${JSON.stringify(\n to\n )}`\n );\n return location;\n }\n\n let history: MemoryHistory = {\n get index() {\n return index;\n },\n get action() {\n return action;\n },\n get location() {\n return getCurrentLocation();\n },\n createHref(to) {\n return typeof to === \"string\" ? to : createPath(to);\n },\n push(to, state) {\n action = Action.Push;\n let nextLocation = createMemoryLocation(to, state);\n index += 1;\n entries.splice(index, entries.length, nextLocation);\n if (v5Compat && listener) {\n listener({ action, location: nextLocation });\n }\n },\n replace(to, state) {\n action = Action.Replace;\n let nextLocation = createMemoryLocation(to, state);\n entries[index] = nextLocation;\n if (v5Compat && listener) {\n listener({ action, location: nextLocation });\n }\n },\n go(delta) {\n action = Action.Pop;\n index = clampIndex(index + delta);\n if (listener) {\n listener({ action, location: getCurrentLocation() });\n }\n },\n listen(fn: Listener) {\n listener = fn;\n return () => {\n listener = null;\n };\n },\n };\n\n return history;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Browser History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A browser history stores the current location in regular URLs in a web\n * browser environment. This is the standard for most web apps and provides the\n * cleanest URLs the browser's address bar.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#browserhistory\n */\nexport interface BrowserHistory extends UrlHistory {}\n\nexport type BrowserHistoryOptions = UrlHistoryOptions;\n\n/**\n * Browser history stores the location in regular URLs. This is the standard for\n * most web apps, but it requires some configuration on the server to ensure you\n * serve the same app at multiple URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createbrowserhistory\n */\nexport function createBrowserHistory(\n options: BrowserHistoryOptions = {}\n): BrowserHistory {\n function createBrowserLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let { pathname, search, hash } = window.location;\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createBrowserHref(window: Window, to: To) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n\n return getUrlBasedHistory(\n createBrowserLocation,\n createBrowserHref,\n null,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Hash History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A hash history stores the current location in the fragment identifier portion\n * of the URL in a web browser environment.\n *\n * This is ideal for apps that do not control the server for some reason\n * (because the fragment identifier is never sent to the server), including some\n * shared hosting environments that do not provide fine-grained controls over\n * which pages are served at which URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#hashhistory\n */\nexport interface HashHistory extends UrlHistory {}\n\nexport type HashHistoryOptions = UrlHistoryOptions;\n\n/**\n * Hash history stores the location in window.location.hash. This makes it ideal\n * for situations where you don't want to send the location to the server for\n * some reason, either because you do cannot configure it or the URL space is\n * reserved for something else.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createhashhistory\n */\nexport function createHashHistory(\n options: HashHistoryOptions = {}\n): HashHistory {\n function createHashLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n } = parsePath(window.location.hash.substr(1));\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createHashHref(window: Window, to: To) {\n let base = window.document.querySelector(\"base\");\n let href = \"\";\n\n if (base && base.getAttribute(\"href\")) {\n let url = window.location.href;\n let hashIndex = url.indexOf(\"#\");\n href = hashIndex === -1 ? url : url.slice(0, hashIndex);\n }\n\n return href + \"#\" + (typeof to === \"string\" ? to : createPath(to));\n }\n\n function validateHashLocation(location: Location, to: To) {\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in hash history.push(${JSON.stringify(\n to\n )})`\n );\n }\n\n return getUrlBasedHistory(\n createHashLocation,\n createHashHref,\n validateHashLocation,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region UTILS\n////////////////////////////////////////////////////////////////////////////////\n\nfunction warning(cond: any, message: string) {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging history!\n //\n // This error is thrown as a convenience so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\n\nfunction createKey() {\n return Math.random().toString(36).substr(2, 8);\n}\n\n/**\n * For browser-based histories, we combine the state and key into an object\n */\nfunction getHistoryState(location: Location): HistoryState {\n return {\n usr: location.state,\n key: location.key,\n };\n}\n\n/**\n * Creates a Location object with a unique key from the given Path\n */\nexport function createLocation(\n current: string | Location,\n to: To,\n state: any = null,\n key?: string\n): Readonly {\n let location: Readonly = {\n pathname: typeof current === \"string\" ? current : current.pathname,\n search: \"\",\n hash: \"\",\n ...(typeof to === \"string\" ? parsePath(to) : to),\n state,\n // TODO: This could be cleaned up. push/replace should probably just take\n // full Locations now and avoid the need to run through this flow at all\n // But that's a pretty big refactor to the current test suite so going to\n // keep as is for the time being and just let any incoming keys take precedence\n key: (to && (to as Location).key) || key || createKey(),\n };\n return location;\n}\n\n/**\n * Creates a string URL path from the given pathname, search, and hash components.\n */\nexport function createPath({\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n}: Partial) {\n if (search && search !== \"?\")\n pathname += search.charAt(0) === \"?\" ? search : \"?\" + search;\n if (hash && hash !== \"#\")\n pathname += hash.charAt(0) === \"#\" ? hash : \"#\" + hash;\n return pathname;\n}\n\n/**\n * Parses a string URL path into its separate pathname, search, and hash components.\n */\nexport function parsePath(path: string): Partial {\n let parsedPath: Partial = {};\n\n if (path) {\n let hashIndex = path.indexOf(\"#\");\n if (hashIndex >= 0) {\n parsedPath.hash = path.substr(hashIndex);\n path = path.substr(0, hashIndex);\n }\n\n let searchIndex = path.indexOf(\"?\");\n if (searchIndex >= 0) {\n parsedPath.search = path.substr(searchIndex);\n path = path.substr(0, searchIndex);\n }\n\n if (path) {\n parsedPath.pathname = path;\n }\n }\n\n return parsedPath;\n}\n\nexport interface UrlHistory extends History {}\n\nexport type UrlHistoryOptions = {\n window?: Window;\n v5Compat?: boolean;\n};\n\nfunction getUrlBasedHistory(\n getLocation: (window: Window, globalHistory: Window[\"history\"]) => Location,\n createHref: (window: Window, to: To) => string,\n validateLocation: ((location: Location, to: To) => void) | null,\n options: UrlHistoryOptions = {}\n): UrlHistory {\n let { window = document.defaultView!, v5Compat = false } = options;\n let globalHistory = window.history;\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n function handlePop() {\n action = Action.Pop;\n if (listener) {\n listener({ action, location: history.location });\n }\n }\n\n function push(to: To, state?: any) {\n action = Action.Push;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n let historyState = getHistoryState(location);\n let url = history.createHref(location);\n\n // try...catch because iOS limits us to 100 pushState calls :/\n try {\n globalHistory.pushState(historyState, \"\", url);\n } catch (error) {\n // They are going to lose state here, but there is no real\n // way to warn them about it since the page will refresh...\n window.location.assign(url);\n }\n\n if (v5Compat && listener) {\n listener({ action, location });\n }\n }\n\n function replace(to: To, state?: any) {\n action = Action.Replace;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n let historyState = getHistoryState(location);\n let url = history.createHref(location);\n globalHistory.replaceState(historyState, \"\", url);\n\n if (v5Compat && listener) {\n listener({ action, location: location });\n }\n }\n\n let history: History = {\n get action() {\n return action;\n },\n get location() {\n return getLocation(window, globalHistory);\n },\n listen(fn: Listener) {\n if (listener) {\n throw new Error(\"A history only accepts one active listener\");\n }\n window.addEventListener(PopStateEventType, handlePop);\n listener = fn;\n\n return () => {\n window.removeEventListener(PopStateEventType, handlePop);\n listener = null;\n };\n },\n createHref(to) {\n return createHref(window, to);\n },\n push,\n replace,\n go(n) {\n return globalHistory.go(n);\n },\n };\n\n return history;\n}\n\n//#endregion\n","import type { Location, Path, To } from \"./history\";\nimport { parsePath } from \"./history\";\n\n/**\n * Map of routeId -> data returned from a loader/action/error\n */\nexport interface RouteData {\n [routeId: string]: any;\n}\n\nexport enum ResultType {\n data = \"data\",\n deferred = \"deferred\",\n redirect = \"redirect\",\n error = \"error\",\n}\n\n/**\n * Successful result from a loader or action\n */\nexport interface SuccessResult {\n type: ResultType.data;\n data: any;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Successful defer() result from a loader or action\n */\nexport interface DeferredResult {\n type: ResultType.deferred;\n deferredData: DeferredData;\n}\n\n/**\n * Redirect result from a loader or action\n */\nexport interface RedirectResult {\n type: ResultType.redirect;\n status: number;\n location: string;\n revalidate: boolean;\n}\n\n/**\n * Unsuccessful result from a loader or action\n */\nexport interface ErrorResult {\n type: ResultType.error;\n error: any;\n headers?: Headers;\n}\n\n/**\n * Result from a loader or action - potentially successful or unsuccessful\n */\nexport type DataResult =\n | SuccessResult\n | DeferredResult\n | RedirectResult\n | ErrorResult;\n\nexport type FormMethod = \"get\" | \"post\" | \"put\" | \"patch\" | \"delete\";\nexport type FormEncType =\n | \"application/x-www-form-urlencoded\"\n | \"multipart/form-data\";\n\n/**\n * @private\n * Internal interface to pass around for action submissions, not intended for\n * external consumption\n */\nexport interface Submission {\n formMethod: Exclude;\n formAction: string;\n formEncType: FormEncType;\n formData: FormData;\n}\n\n/**\n * @private\n * Arguments passed to route loader/action functions. Same for now but we keep\n * this as a private implementation detail in case they diverge in the future.\n */\ninterface DataFunctionArgs {\n request: Request;\n params: Params;\n}\n\n/**\n * Arguments passed to loader functions\n */\nexport interface LoaderFunctionArgs extends DataFunctionArgs {}\n\n/**\n * Arguments passed to action functions\n */\nexport interface ActionFunctionArgs extends DataFunctionArgs {}\n\n/**\n * Route loader function signature\n */\nexport interface LoaderFunction {\n (args: LoaderFunctionArgs): Promise | Response | Promise | any;\n}\n\n/**\n * Route action function signature\n */\nexport interface ActionFunction {\n (args: ActionFunctionArgs): Promise | Response | Promise | any;\n}\n\n/**\n * Route shouldRevalidate function signature. This runs after any submission\n * (navigation or fetcher), so we flatten the navigation/fetcher submission\n * onto the arguments. It shouldn't matter whether it came from a navigation\n * or a fetcher, what really matters is the URLs and the formData since loaders\n * have to re-run based on the data models that were potentially mutated.\n */\nexport interface ShouldRevalidateFunction {\n (args: {\n currentUrl: URL;\n currentParams: AgnosticDataRouteMatch[\"params\"];\n nextUrl: URL;\n nextParams: AgnosticDataRouteMatch[\"params\"];\n formMethod?: Submission[\"formMethod\"];\n formAction?: Submission[\"formAction\"];\n formEncType?: Submission[\"formEncType\"];\n formData?: Submission[\"formData\"];\n actionResult?: DataResult;\n defaultShouldRevalidate: boolean;\n }): boolean;\n}\n\n/**\n * Base RouteObject with common props shared by all types of routes\n */\ntype AgnosticBaseRouteObject = {\n caseSensitive?: boolean;\n path?: string;\n id?: string;\n loader?: LoaderFunction;\n action?: ActionFunction;\n hasErrorBoundary?: boolean;\n shouldRevalidate?: ShouldRevalidateFunction;\n handle?: any;\n};\n\n/**\n * Index routes must not have children\n */\nexport type AgnosticIndexRouteObject = AgnosticBaseRouteObject & {\n children?: undefined;\n index: true;\n};\n\n/**\n * Non-index routes may have children, but cannot have index\n */\nexport type AgnosticNonIndexRouteObject = AgnosticBaseRouteObject & {\n children?: AgnosticRouteObject[];\n index?: false;\n};\n\n/**\n * A route object represents a logical route, with (optionally) its child\n * routes organized in a tree-like structure.\n */\nexport type AgnosticRouteObject =\n | AgnosticIndexRouteObject\n | AgnosticNonIndexRouteObject;\n\nexport type AgnosticDataIndexRouteObject = AgnosticIndexRouteObject & {\n id: string;\n};\n\nexport type AgnosticDataNonIndexRouteObject = AgnosticNonIndexRouteObject & {\n children?: AgnosticDataRouteObject[];\n id: string;\n};\n\n/**\n * A data route object, which is just a RouteObject with a required unique ID\n */\nexport type AgnosticDataRouteObject =\n | AgnosticDataIndexRouteObject\n | AgnosticDataNonIndexRouteObject;\n\n// Recursive helper for finding path parameters in the absence of wildcards\ntype _PathParam =\n // split path into individual path segments\n Path extends `${infer L}/${infer R}`\n ? _PathParam | _PathParam\n : // find params after `:`\n Path extends `${string}:${infer Param}`\n ? Param\n : // otherwise, there aren't any params present\n never;\n\n/**\n * Examples:\n * \"/a/b/*\" -> \"*\"\n * \":a\" -> \"a\"\n * \"/a/:b\" -> \"b\"\n * \"/a/blahblahblah:b\" -> \"b\"\n * \"/:a/:b\" -> \"a\" | \"b\"\n * \"/:a/b/:c/*\" -> \"a\" | \"c\" | \"*\"\n */\ntype PathParam =\n // check if path is just a wildcard\n Path extends \"*\"\n ? \"*\"\n : // look for wildcard at the end of the path\n Path extends `${infer Rest}/*`\n ? \"*\" | _PathParam\n : // look for params in the absence of wildcards\n _PathParam;\n\n// Attempt to parse the given string segment. If it fails, then just return the\n// plain string type as a default fallback. Otherwise return the union of the\n// parsed string literals that were referenced as dynamic segments in the route.\nexport type ParamParseKey =\n // if could not find path params, fallback to `string`\n [PathParam] extends [never] ? string : PathParam;\n\n/**\n * The parameters that were parsed from the URL path.\n */\nexport type Params = {\n readonly [key in Key]: string | undefined;\n};\n\n/**\n * A RouteMatch contains info about how a route matched a URL.\n */\nexport interface AgnosticRouteMatch<\n ParamKey extends string = string,\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The route object that was used to match.\n */\n route: RouteObjectType;\n}\n\nexport interface AgnosticDataRouteMatch\n extends AgnosticRouteMatch {}\n\nfunction isIndexRoute(\n route: AgnosticRouteObject\n): route is AgnosticIndexRouteObject {\n return route.index === true;\n}\n\n// Walk the route tree generating unique IDs where necessary so we are working\n// solely with AgnosticDataRouteObject's within the Router\nexport function convertRoutesToDataRoutes(\n routes: AgnosticRouteObject[],\n parentPath: number[] = [],\n allIds: Set = new Set()\n): AgnosticDataRouteObject[] {\n return routes.map((route, index) => {\n let treePath = [...parentPath, index];\n let id = typeof route.id === \"string\" ? route.id : treePath.join(\"-\");\n invariant(\n route.index !== true || !route.children,\n `Cannot specify children on an index route`\n );\n invariant(\n !allIds.has(id),\n `Found a route id collision on id \"${id}\". Route ` +\n \"id's must be globally unique within Data Router usages\"\n );\n allIds.add(id);\n\n if (isIndexRoute(route)) {\n let indexRoute: AgnosticDataIndexRouteObject = { ...route, id };\n return indexRoute;\n } else {\n let pathOrLayoutRoute: AgnosticDataNonIndexRouteObject = {\n ...route,\n id,\n children: route.children\n ? convertRoutesToDataRoutes(route.children, treePath, allIds)\n : undefined,\n };\n return pathOrLayoutRoute;\n }\n });\n}\n\n/**\n * Matches the given routes to a location and returns the match data.\n *\n * @see https://reactrouter.com/docs/en/v6/utils/match-routes\n */\nexport function matchRoutes<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n locationArg: Partial | string,\n basename = \"/\"\n): AgnosticRouteMatch[] | null {\n let location =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n let pathname = stripBasename(location.pathname || \"/\", basename);\n\n if (pathname == null) {\n return null;\n }\n\n let branches = flattenRoutes(routes);\n rankRouteBranches(branches);\n\n let matches = null;\n for (let i = 0; matches == null && i < branches.length; ++i) {\n matches = matchRouteBranch(branches[i], pathname);\n }\n\n return matches;\n}\n\ninterface RouteMeta<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n relativePath: string;\n caseSensitive: boolean;\n childrenIndex: number;\n route: RouteObjectType;\n}\n\ninterface RouteBranch<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n path: string;\n score: number;\n routesMeta: RouteMeta[];\n}\n\nfunction flattenRoutes<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n branches: RouteBranch[] = [],\n parentsMeta: RouteMeta[] = [],\n parentPath = \"\"\n): RouteBranch[] {\n routes.forEach((route, index) => {\n let meta: RouteMeta = {\n relativePath: route.path || \"\",\n caseSensitive: route.caseSensitive === true,\n childrenIndex: index,\n route,\n };\n\n if (meta.relativePath.startsWith(\"/\")) {\n invariant(\n meta.relativePath.startsWith(parentPath),\n `Absolute route path \"${meta.relativePath}\" nested under path ` +\n `\"${parentPath}\" is not valid. An absolute child route path ` +\n `must start with the combined path of all its parent routes.`\n );\n\n meta.relativePath = meta.relativePath.slice(parentPath.length);\n }\n\n let path = joinPaths([parentPath, meta.relativePath]);\n let routesMeta = parentsMeta.concat(meta);\n\n // Add the children before adding this route to the array so we traverse the\n // route tree depth-first and child routes appear before their parents in\n // the \"flattened\" version.\n if (route.children && route.children.length > 0) {\n invariant(\n // Our types know better, but runtime JS may not!\n // @ts-expect-error\n route.index !== true,\n `Index routes must not have child routes. Please remove ` +\n `all child routes from route path \"${path}\".`\n );\n\n flattenRoutes(route.children, branches, routesMeta, path);\n }\n\n // Routes without a path shouldn't ever match by themselves unless they are\n // index routes, so don't add them to the list of possible branches.\n if (route.path == null && !route.index) {\n return;\n }\n\n branches.push({ path, score: computeScore(path, route.index), routesMeta });\n });\n\n return branches;\n}\n\nfunction rankRouteBranches(branches: RouteBranch[]): void {\n branches.sort((a, b) =>\n a.score !== b.score\n ? b.score - a.score // Higher score first\n : compareIndexes(\n a.routesMeta.map((meta) => meta.childrenIndex),\n b.routesMeta.map((meta) => meta.childrenIndex)\n )\n );\n}\n\nconst paramRe = /^:\\w+$/;\nconst dynamicSegmentValue = 3;\nconst indexRouteValue = 2;\nconst emptySegmentValue = 1;\nconst staticSegmentValue = 10;\nconst splatPenalty = -2;\nconst isSplat = (s: string) => s === \"*\";\n\nfunction computeScore(path: string, index: boolean | undefined): number {\n let segments = path.split(\"/\");\n let initialScore = segments.length;\n if (segments.some(isSplat)) {\n initialScore += splatPenalty;\n }\n\n if (index) {\n initialScore += indexRouteValue;\n }\n\n return segments\n .filter((s) => !isSplat(s))\n .reduce(\n (score, segment) =>\n score +\n (paramRe.test(segment)\n ? dynamicSegmentValue\n : segment === \"\"\n ? emptySegmentValue\n : staticSegmentValue),\n initialScore\n );\n}\n\nfunction compareIndexes(a: number[], b: number[]): number {\n let siblings =\n a.length === b.length && a.slice(0, -1).every((n, i) => n === b[i]);\n\n return siblings\n ? // If two routes are siblings, we should try to match the earlier sibling\n // first. This allows people to have fine-grained control over the matching\n // behavior by simply putting routes with identical paths in the order they\n // want them tried.\n a[a.length - 1] - b[b.length - 1]\n : // Otherwise, it doesn't really make sense to rank non-siblings by index,\n // so they sort equally.\n 0;\n}\n\nfunction matchRouteBranch<\n ParamKey extends string = string,\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n branch: RouteBranch,\n pathname: string\n): AgnosticRouteMatch[] | null {\n let { routesMeta } = branch;\n\n let matchedParams = {};\n let matchedPathname = \"/\";\n let matches: AgnosticRouteMatch[] = [];\n for (let i = 0; i < routesMeta.length; ++i) {\n let meta = routesMeta[i];\n let end = i === routesMeta.length - 1;\n let remainingPathname =\n matchedPathname === \"/\"\n ? pathname\n : pathname.slice(matchedPathname.length) || \"/\";\n let match = matchPath(\n { path: meta.relativePath, caseSensitive: meta.caseSensitive, end },\n remainingPathname\n );\n\n if (!match) return null;\n\n Object.assign(matchedParams, match.params);\n\n let route = meta.route;\n\n matches.push({\n // TODO: Can this as be avoided?\n params: matchedParams as Params,\n pathname: joinPaths([matchedPathname, match.pathname]),\n pathnameBase: normalizePathname(\n joinPaths([matchedPathname, match.pathnameBase])\n ),\n route,\n });\n\n if (match.pathnameBase !== \"/\") {\n matchedPathname = joinPaths([matchedPathname, match.pathnameBase]);\n }\n }\n\n return matches;\n}\n\n/**\n * Returns a path with params interpolated.\n *\n * @see https://reactrouter.com/docs/en/v6/utils/generate-path\n */\nexport function generatePath(\n path: Path,\n params: {\n [key in PathParam]: string;\n } = {} as any\n): string {\n return path\n .replace(/:(\\w+)/g, (_, key: PathParam) => {\n invariant(params[key] != null, `Missing \":${key}\" param`);\n return params[key]!;\n })\n .replace(/(\\/?)\\*/, (_, prefix, __, str) => {\n const star = \"*\" as PathParam;\n\n if (params[star] == null) {\n // If no splat was provided, trim the trailing slash _unless_ it's\n // the entire path\n return str === \"/*\" ? \"/\" : \"\";\n }\n\n // Apply the splat\n return `${prefix}${params[star]}`;\n });\n}\n\n/**\n * A PathPattern is used to match on some portion of a URL pathname.\n */\nexport interface PathPattern {\n /**\n * A string to match against a URL pathname. May contain `:id`-style segments\n * to indicate placeholders for dynamic parameters. May also end with `/*` to\n * indicate matching the rest of the URL pathname.\n */\n path: Path;\n /**\n * Should be `true` if the static portions of the `path` should be matched in\n * the same case.\n */\n caseSensitive?: boolean;\n /**\n * Should be `true` if this pattern should match the entire URL pathname.\n */\n end?: boolean;\n}\n\n/**\n * A PathMatch contains info about how a PathPattern matched on a URL pathname.\n */\nexport interface PathMatch {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The pattern that was used to match.\n */\n pattern: PathPattern;\n}\n\ntype Mutable = {\n -readonly [P in keyof T]: T[P];\n};\n\n/**\n * Performs pattern matching on a URL pathname and returns information about\n * the match.\n *\n * @see https://reactrouter.com/docs/en/v6/utils/match-path\n */\nexport function matchPath<\n ParamKey extends ParamParseKey,\n Path extends string\n>(\n pattern: PathPattern | Path,\n pathname: string\n): PathMatch | null {\n if (typeof pattern === \"string\") {\n pattern = { path: pattern, caseSensitive: false, end: true };\n }\n\n let [matcher, paramNames] = compilePath(\n pattern.path,\n pattern.caseSensitive,\n pattern.end\n );\n\n let match = pathname.match(matcher);\n if (!match) return null;\n\n let matchedPathname = match[0];\n let pathnameBase = matchedPathname.replace(/(.)\\/+$/, \"$1\");\n let captureGroups = match.slice(1);\n let params: Params = paramNames.reduce>(\n (memo, paramName, index) => {\n // We need to compute the pathnameBase here using the raw splat value\n // instead of using params[\"*\"] later because it will be decoded then\n if (paramName === \"*\") {\n let splatValue = captureGroups[index] || \"\";\n pathnameBase = matchedPathname\n .slice(0, matchedPathname.length - splatValue.length)\n .replace(/(.)\\/+$/, \"$1\");\n }\n\n memo[paramName] = safelyDecodeURIComponent(\n captureGroups[index] || \"\",\n paramName\n );\n return memo;\n },\n {}\n );\n\n return {\n params,\n pathname: matchedPathname,\n pathnameBase,\n pattern,\n };\n}\n\nfunction compilePath(\n path: string,\n caseSensitive = false,\n end = true\n): [RegExp, string[]] {\n warning(\n path === \"*\" || !path.endsWith(\"*\") || path.endsWith(\"/*\"),\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n\n let paramNames: string[] = [];\n let regexpSource =\n \"^\" +\n path\n .replace(/\\/*\\*?$/, \"\") // Ignore trailing / and /*, we'll handle it below\n .replace(/^\\/*/, \"/\") // Make sure it has a leading /\n .replace(/[\\\\.*+^$?{}|()[\\]]/g, \"\\\\$&\") // Escape special regex chars\n .replace(/:(\\w+)/g, (_: string, paramName: string) => {\n paramNames.push(paramName);\n return \"([^\\\\/]+)\";\n });\n\n if (path.endsWith(\"*\")) {\n paramNames.push(\"*\");\n regexpSource +=\n path === \"*\" || path === \"/*\"\n ? \"(.*)$\" // Already matched the initial /, just match the rest\n : \"(?:\\\\/(.+)|\\\\/*)$\"; // Don't include the / in params[\"*\"]\n } else if (end) {\n // When matching to the end, ignore trailing slashes\n regexpSource += \"\\\\/*$\";\n } else if (path !== \"\" && path !== \"/\") {\n // If our path is non-empty and contains anything beyond an initial slash,\n // then we have _some_ form of path in our regex so we should expect to\n // match only if we find the end of this path segment. Look for an optional\n // non-captured trailing slash (to match a portion of the URL) or the end\n // of the path (if we've matched to the end). We used to do this with a\n // word boundary but that gives false positives on routes like\n // /user-preferences since `-` counts as a word boundary.\n regexpSource += \"(?:(?=\\\\/|$))\";\n } else {\n // Nothing to match for \"\" or \"/\"\n }\n\n let matcher = new RegExp(regexpSource, caseSensitive ? undefined : \"i\");\n\n return [matcher, paramNames];\n}\n\nfunction safelyDecodeURIComponent(value: string, paramName: string) {\n try {\n return decodeURIComponent(value);\n } catch (error) {\n warning(\n false,\n `The value for the URL param \"${paramName}\" will not be decoded because` +\n ` the string \"${value}\" is a malformed URL segment. This is probably` +\n ` due to a bad percent encoding (${error}).`\n );\n\n return value;\n }\n}\n\n/**\n * @private\n */\nexport function stripBasename(\n pathname: string,\n basename: string\n): string | null {\n if (basename === \"/\") return pathname;\n\n if (!pathname.toLowerCase().startsWith(basename.toLowerCase())) {\n return null;\n }\n\n // We want to leave trailing slash behavior in the user's control, so if they\n // specify a basename with a trailing slash, we should support it\n let startIndex = basename.endsWith(\"/\")\n ? basename.length - 1\n : basename.length;\n let nextChar = pathname.charAt(startIndex);\n if (nextChar && nextChar !== \"/\") {\n // pathname does not start with basename/\n return null;\n }\n\n return pathname.slice(startIndex) || \"/\";\n}\n\n/**\n * @private\n */\nexport function invariant(value: boolean, message?: string): asserts value;\nexport function invariant(\n value: T | null | undefined,\n message?: string\n): asserts value is T;\nexport function invariant(value: any, message?: string) {\n if (value === false || value === null || typeof value === \"undefined\") {\n throw new Error(message);\n }\n}\n\n/**\n * @private\n */\nexport function warning(cond: any, message: string): void {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging React Router!\n //\n // This error is thrown as a convenience so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\n\n/**\n * Returns a resolved path object relative to the given pathname.\n *\n * @see https://reactrouter.com/docs/en/v6/utils/resolve-path\n */\nexport function resolvePath(to: To, fromPathname = \"/\"): Path {\n let {\n pathname: toPathname,\n search = \"\",\n hash = \"\",\n } = typeof to === \"string\" ? parsePath(to) : to;\n\n let pathname = toPathname\n ? toPathname.startsWith(\"/\")\n ? toPathname\n : resolvePathname(toPathname, fromPathname)\n : fromPathname;\n\n return {\n pathname,\n search: normalizeSearch(search),\n hash: normalizeHash(hash),\n };\n}\n\nfunction resolvePathname(relativePath: string, fromPathname: string): string {\n let segments = fromPathname.replace(/\\/+$/, \"\").split(\"/\");\n let relativeSegments = relativePath.split(\"/\");\n\n relativeSegments.forEach((segment) => {\n if (segment === \"..\") {\n // Keep the root \"\" segment so the pathname starts at /\n if (segments.length > 1) segments.pop();\n } else if (segment !== \".\") {\n segments.push(segment);\n }\n });\n\n return segments.length > 1 ? segments.join(\"/\") : \"/\";\n}\n\nfunction getInvalidPathError(\n char: string,\n field: string,\n dest: string,\n path: Partial\n) {\n return (\n `Cannot include a '${char}' character in a manually specified ` +\n `\\`to.${field}\\` field [${JSON.stringify(\n path\n )}]. Please separate it out to the ` +\n `\\`to.${dest}\\` field. Alternatively you may provide the full path as ` +\n `a string in and the router will parse it for you.`\n );\n}\n\n/**\n * @private\n */\nexport function resolveTo(\n toArg: To,\n routePathnames: string[],\n locationPathname: string,\n isPathRelative = false\n): Path {\n let to: Partial;\n if (typeof toArg === \"string\") {\n to = parsePath(toArg);\n } else {\n to = { ...toArg };\n\n invariant(\n !to.pathname || !to.pathname.includes(\"?\"),\n getInvalidPathError(\"?\", \"pathname\", \"search\", to)\n );\n invariant(\n !to.pathname || !to.pathname.includes(\"#\"),\n getInvalidPathError(\"#\", \"pathname\", \"hash\", to)\n );\n invariant(\n !to.search || !to.search.includes(\"#\"),\n getInvalidPathError(\"#\", \"search\", \"hash\", to)\n );\n }\n\n let isEmptyPath = toArg === \"\" || to.pathname === \"\";\n let toPathname = isEmptyPath ? \"/\" : to.pathname;\n\n let from: string;\n\n // Routing is relative to the current pathname if explicitly requested.\n //\n // If a pathname is explicitly provided in `to`, it should be relative to the\n // route context. This is explained in `Note on `` values` in our\n // migration guide from v5 as a means of disambiguation between `to` values\n // that begin with `/` and those that do not. However, this is problematic for\n // `to` values that do not provide a pathname. `to` can simply be a search or\n // hash string, in which case we should assume that the navigation is relative\n // to the current location's pathname and *not* the route pathname.\n if (isPathRelative || toPathname == null) {\n from = locationPathname;\n } else {\n let routePathnameIndex = routePathnames.length - 1;\n\n if (toPathname.startsWith(\"..\")) {\n let toSegments = toPathname.split(\"/\");\n\n // Each leading .. segment means \"go up one route\" instead of \"go up one\n // URL segment\". This is a key difference from how works and a\n // major reason we call this a \"to\" value instead of a \"href\".\n while (toSegments[0] === \"..\") {\n toSegments.shift();\n routePathnameIndex -= 1;\n }\n\n to.pathname = toSegments.join(\"/\");\n }\n\n // If there are more \"..\" segments than parent routes, resolve relative to\n // the root / URL.\n from = routePathnameIndex >= 0 ? routePathnames[routePathnameIndex] : \"/\";\n }\n\n let path = resolvePath(to, from);\n\n // Ensure the pathname has a trailing slash if the original \"to\" had one\n let hasExplicitTrailingSlash =\n toPathname && toPathname !== \"/\" && toPathname.endsWith(\"/\");\n // Or if this was a link to the current path which has a trailing slash\n let hasCurrentTrailingSlash =\n (isEmptyPath || toPathname === \".\") && locationPathname.endsWith(\"/\");\n if (\n !path.pathname.endsWith(\"/\") &&\n (hasExplicitTrailingSlash || hasCurrentTrailingSlash)\n ) {\n path.pathname += \"/\";\n }\n\n return path;\n}\n\n/**\n * @private\n */\nexport function getToPathname(to: To): string | undefined {\n // Empty strings should be treated the same as / paths\n return to === \"\" || (to as Path).pathname === \"\"\n ? \"/\"\n : typeof to === \"string\"\n ? parsePath(to).pathname\n : to.pathname;\n}\n\n/**\n * @private\n */\nexport const joinPaths = (paths: string[]): string =>\n paths.join(\"/\").replace(/\\/\\/+/g, \"/\");\n\n/**\n * @private\n */\nexport const normalizePathname = (pathname: string): string =>\n pathname.replace(/\\/+$/, \"\").replace(/^\\/*/, \"/\");\n\n/**\n * @private\n */\nexport const normalizeSearch = (search: string): string =>\n !search || search === \"?\"\n ? \"\"\n : search.startsWith(\"?\")\n ? search\n : \"?\" + search;\n\n/**\n * @private\n */\nexport const normalizeHash = (hash: string): string =>\n !hash || hash === \"#\" ? \"\" : hash.startsWith(\"#\") ? hash : \"#\" + hash;\n\nexport type JsonFunction = (\n data: Data,\n init?: number | ResponseInit\n) => Response;\n\n/**\n * This is a shortcut for creating `application/json` responses. Converts `data`\n * to JSON and sets the `Content-Type` header.\n */\nexport const json: JsonFunction = (data, init = {}) => {\n let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n let headers = new Headers(responseInit.headers);\n if (!headers.has(\"Content-Type\")) {\n headers.set(\"Content-Type\", \"application/json; charset=utf-8\");\n }\n\n return new Response(JSON.stringify(data), {\n ...responseInit,\n headers,\n });\n};\n\nexport interface TrackedPromise extends Promise {\n _tracked?: boolean;\n _data?: any;\n _error?: any;\n}\n\nexport class AbortedDeferredError extends Error {}\n\nexport class DeferredData {\n private pendingKeys: Set = new Set();\n private controller: AbortController;\n private abortPromise: Promise;\n private unlistenAbortSignal: () => void;\n private subscriber?: (aborted: boolean) => void = undefined;\n data: Record;\n\n constructor(data: Record) {\n invariant(\n data && typeof data === \"object\" && !Array.isArray(data),\n \"defer() only accepts plain objects\"\n );\n\n // Set up an AbortController + Promise we can race against to exit early\n // cancellation\n let reject: (e: AbortedDeferredError) => void;\n this.abortPromise = new Promise((_, r) => (reject = r));\n this.controller = new AbortController();\n let onAbort = () =>\n reject(new AbortedDeferredError(\"Deferred data aborted\"));\n this.unlistenAbortSignal = () =>\n this.controller.signal.removeEventListener(\"abort\", onAbort);\n this.controller.signal.addEventListener(\"abort\", onAbort);\n\n this.data = Object.entries(data).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: this.trackPromise(key, value),\n }),\n {}\n );\n }\n\n private trackPromise(\n key: string | number,\n value: Promise | unknown\n ): TrackedPromise | unknown {\n if (!(value instanceof Promise)) {\n return value;\n }\n\n this.pendingKeys.add(key);\n\n // We store a little wrapper promise that will be extended with\n // _data/_error props upon resolve/reject\n let promise: TrackedPromise = Promise.race([value, this.abortPromise]).then(\n (data) => this.onSettle(promise, key, null, data as unknown),\n (error) => this.onSettle(promise, key, error as unknown)\n );\n\n // Register rejection listeners to avoid uncaught promise rejections on\n // errors or aborted deferred values\n promise.catch(() => {});\n\n Object.defineProperty(promise, \"_tracked\", { get: () => true });\n return promise;\n }\n\n private onSettle(\n promise: TrackedPromise,\n key: string | number,\n error: unknown,\n data?: unknown\n ): unknown {\n if (\n this.controller.signal.aborted &&\n error instanceof AbortedDeferredError\n ) {\n this.unlistenAbortSignal();\n Object.defineProperty(promise, \"_error\", { get: () => error });\n return Promise.reject(error);\n }\n\n this.pendingKeys.delete(key);\n\n if (this.done) {\n // Nothing left to abort!\n this.unlistenAbortSignal();\n }\n\n const subscriber = this.subscriber;\n if (error) {\n Object.defineProperty(promise, \"_error\", { get: () => error });\n subscriber && subscriber(false);\n return Promise.reject(error);\n }\n\n Object.defineProperty(promise, \"_data\", { get: () => data });\n subscriber && subscriber(false);\n return data;\n }\n\n subscribe(fn: (aborted: boolean) => void) {\n this.subscriber = fn;\n }\n\n cancel() {\n this.controller.abort();\n this.pendingKeys.forEach((v, k) => this.pendingKeys.delete(k));\n let subscriber = this.subscriber;\n subscriber && subscriber(true);\n }\n\n async resolveData(signal: AbortSignal) {\n let aborted = false;\n if (!this.done) {\n let onAbort = () => this.cancel();\n signal.addEventListener(\"abort\", onAbort);\n aborted = await new Promise((resolve) => {\n this.subscribe((aborted) => {\n signal.removeEventListener(\"abort\", onAbort);\n if (aborted || this.done) {\n resolve(aborted);\n }\n });\n });\n }\n return aborted;\n }\n\n get done() {\n return this.pendingKeys.size === 0;\n }\n\n get unwrappedData() {\n invariant(\n this.data !== null && this.done,\n \"Can only unwrap data on initialized and settled deferreds\"\n );\n\n return Object.entries(this.data).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: unwrapTrackedPromise(value),\n }),\n {}\n );\n }\n}\n\nfunction isTrackedPromise(value: any): value is TrackedPromise {\n return (\n value instanceof Promise && (value as TrackedPromise)._tracked === true\n );\n}\n\nfunction unwrapTrackedPromise(value: any) {\n if (!isTrackedPromise(value)) {\n return value;\n }\n\n if (value._error) {\n throw value._error;\n }\n return value._data;\n}\n\nexport function defer(data: Record) {\n return new DeferredData(data);\n}\n\nexport type RedirectFunction = (\n url: string,\n init?: number | ResponseInit\n) => Response;\n\n/**\n * A redirect response. Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const redirect: RedirectFunction = (url, init = 302) => {\n let responseInit = init;\n if (typeof responseInit === \"number\") {\n responseInit = { status: responseInit };\n } else if (typeof responseInit.status === \"undefined\") {\n responseInit.status = 302;\n }\n\n let headers = new Headers(responseInit.headers);\n headers.set(\"Location\", url);\n\n return new Response(null, {\n ...responseInit,\n headers,\n });\n};\n\n/**\n * @private\n * Utility class we use to hold auto-unwrapped 4xx/5xx Response bodies\n */\nexport class ErrorResponse {\n status: number;\n statusText: string;\n data: any;\n\n constructor(status: number, statusText: string | undefined, data: any) {\n this.status = status;\n this.statusText = statusText || \"\";\n this.data = data;\n }\n}\n\n/**\n * Check if the given error is an ErrorResponse generated from a 4xx/5xx\n * Response throw from an action/loader\n */\nexport function isRouteErrorResponse(e: any): e is ErrorResponse {\n return e instanceof ErrorResponse;\n}\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\nimport * as React from \"react\";\n\n/**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\nfunction isPolyfill(x: any, y: any) {\n return (\n (x === y && (x !== 0 || 1 / x === 1 / y)) || (x !== x && y !== y) // eslint-disable-line no-self-compare\n );\n}\n\nconst is: (x: any, y: any) => boolean =\n typeof Object.is === \"function\" ? Object.is : isPolyfill;\n\n// Intentionally not using named imports because Rollup uses dynamic\n// dispatch for CommonJS interop named imports.\nconst { useState, useEffect, useLayoutEffect, useDebugValue } = React;\n\nlet didWarnOld18Alpha = false;\nlet didWarnUncachedGetSnapshot = false;\n\n// Disclaimer: This shim breaks many of the rules of React, and only works\n// because of a very particular set of implementation details and assumptions\n// -- change any one of them and it will break. The most important assumption\n// is that updates are always synchronous, because concurrent rendering is\n// only available in versions of React that also have a built-in\n// useSyncExternalStore API. And we only use this shim when the built-in API\n// does not exist.\n//\n// Do not assume that the clever hacks used by this hook also work in general.\n// The point of this shim is to replace the need for hacks by other libraries.\nexport function useSyncExternalStore(\n subscribe: (fn: () => void) => () => void,\n getSnapshot: () => T,\n // Note: The shim does not use getServerSnapshot, because pre-18 versions of\n // React do not expose a way to check if we're hydrating. So users of the shim\n // will need to track that themselves and return the correct value\n // from `getSnapshot`.\n getServerSnapshot?: () => T\n): T {\n if (__DEV__) {\n if (!didWarnOld18Alpha) {\n if (\"startTransition\" in React) {\n didWarnOld18Alpha = true;\n console.error(\n \"You are using an outdated, pre-release alpha of React 18 that \" +\n \"does not support useSyncExternalStore. The \" +\n \"use-sync-external-store shim will not work correctly. Upgrade \" +\n \"to a newer pre-release.\"\n );\n }\n }\n }\n\n // Read the current snapshot from the store on every render. Again, this\n // breaks the rules of React, and only works here because of specific\n // implementation details, most importantly that updates are\n // always synchronous.\n const value = getSnapshot();\n if (__DEV__) {\n if (!didWarnUncachedGetSnapshot) {\n const cachedValue = getSnapshot();\n if (!is(value, cachedValue)) {\n console.error(\n \"The result of getSnapshot should be cached to avoid an infinite loop\"\n );\n didWarnUncachedGetSnapshot = true;\n }\n }\n }\n\n // Because updates are synchronous, we don't queue them. Instead we force a\n // re-render whenever the subscribed state changes by updating an some\n // arbitrary useState hook. Then, during render, we call getSnapshot to read\n // the current value.\n //\n // Because we don't actually use the state returned by the useState hook, we\n // can save a bit of memory by storing other stuff in that slot.\n //\n // To implement the early bailout, we need to track some things on a mutable\n // object. Usually, we would put that in a useRef hook, but we can stash it in\n // our useState hook instead.\n //\n // To force a re-render, we call forceUpdate({inst}). That works because the\n // new object always fails an equality check.\n const [{ inst }, forceUpdate] = useState({ inst: { value, getSnapshot } });\n\n // Track the latest getSnapshot function with a ref. This needs to be updated\n // in the layout phase so we can access it during the tearing check that\n // happens on subscribe.\n useLayoutEffect(() => {\n inst.value = value;\n inst.getSnapshot = getSnapshot;\n\n // Whenever getSnapshot or subscribe changes, we need to check in the\n // commit phase if there was an interleaved mutation. In concurrent mode\n // this can happen all the time, but even in synchronous mode, an earlier\n // effect may have mutated the store.\n if (checkIfSnapshotChanged(inst)) {\n // Force a re-render.\n forceUpdate({ inst });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [subscribe, value, getSnapshot]);\n\n useEffect(() => {\n // Check for changes right before subscribing. Subsequent changes will be\n // detected in the subscription handler.\n if (checkIfSnapshotChanged(inst)) {\n // Force a re-render.\n forceUpdate({ inst });\n }\n const handleStoreChange = () => {\n // TODO: Because there is no cross-renderer API for batching updates, it's\n // up to the consumer of this library to wrap their subscription event\n // with unstable_batchedUpdates. Should we try to detect when this isn't\n // the case and print a warning in development?\n\n // The store changed. Check if the snapshot changed since the last time we\n // read from the store.\n if (checkIfSnapshotChanged(inst)) {\n // Force a re-render.\n forceUpdate({ inst });\n }\n };\n // Subscribe to the store and return a clean-up function.\n return subscribe(handleStoreChange);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [subscribe]);\n\n useDebugValue(value);\n return value;\n}\n\nfunction checkIfSnapshotChanged(inst: any) {\n const latestGetSnapshot = inst.getSnapshot;\n const prevValue = inst.value;\n try {\n const nextValue = latestGetSnapshot();\n return !is(prevValue, nextValue);\n } catch (error) {\n return true;\n }\n}\n","/**\n * Inlined into the react-router repo since use-sync-external-store does not\n * provide a UMD-compatible package, so we need this to be able to distribute\n * UMD react-router bundles\n */\n\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 * @flow\n */\n\nimport * as React from \"react\";\n\nimport { useSyncExternalStore as client } from \"./useSyncExternalStoreShimClient\";\nimport { useSyncExternalStore as server } from \"./useSyncExternalStoreShimServer\";\n\nconst canUseDOM: boolean = !!(\n typeof window !== \"undefined\" &&\n typeof window.document !== \"undefined\" &&\n typeof window.document.createElement !== \"undefined\"\n);\nconst isServerEnvironment = !canUseDOM;\nconst shim = isServerEnvironment ? server : client;\n\nexport const useSyncExternalStore =\n \"useSyncExternalStore\" in React\n ? ((module) => module.useSyncExternalStore)(React)\n : shim;\n","import * as React from \"react\";\nimport type {\n AgnosticRouteMatch,\n AgnosticIndexRouteObject,\n AgnosticNonIndexRouteObject,\n History,\n Location,\n Router,\n StaticHandlerContext,\n To,\n TrackedPromise,\n} from \"@remix-run/router\";\nimport type { Action as NavigationType } from \"@remix-run/router\";\n\n// Create react-specific types from the agnostic types in @remix-run/router to\n// export from react-router\nexport interface IndexRouteObject {\n caseSensitive?: AgnosticIndexRouteObject[\"caseSensitive\"];\n path?: AgnosticIndexRouteObject[\"path\"];\n id?: AgnosticIndexRouteObject[\"id\"];\n loader?: AgnosticIndexRouteObject[\"loader\"];\n action?: AgnosticIndexRouteObject[\"action\"];\n hasErrorBoundary?: AgnosticIndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: AgnosticIndexRouteObject[\"shouldRevalidate\"];\n handle?: AgnosticIndexRouteObject[\"handle\"];\n index: true;\n children?: undefined;\n element?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n}\n\nexport interface NonIndexRouteObject {\n caseSensitive?: AgnosticNonIndexRouteObject[\"caseSensitive\"];\n path?: AgnosticNonIndexRouteObject[\"path\"];\n id?: AgnosticNonIndexRouteObject[\"id\"];\n loader?: AgnosticNonIndexRouteObject[\"loader\"];\n action?: AgnosticNonIndexRouteObject[\"action\"];\n hasErrorBoundary?: AgnosticNonIndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: AgnosticNonIndexRouteObject[\"shouldRevalidate\"];\n handle?: AgnosticNonIndexRouteObject[\"handle\"];\n index?: false;\n children?: RouteObject[];\n element?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n}\n\nexport type RouteObject = IndexRouteObject | NonIndexRouteObject;\n\nexport type DataRouteObject = RouteObject & {\n children?: DataRouteObject[];\n id: string;\n};\n\nexport interface RouteMatch<\n ParamKey extends string = string,\n RouteObjectType extends RouteObject = RouteObject\n> extends AgnosticRouteMatch {}\n\nexport interface DataRouteMatch extends RouteMatch {}\n\n// Contexts for data routers\nexport const DataStaticRouterContext =\n React.createContext(null);\nif (__DEV__) {\n DataStaticRouterContext.displayName = \"DataStaticRouterContext\";\n}\n\nexport interface DataRouterContextObject extends NavigationContextObject {\n router: Router;\n}\n\nexport const DataRouterContext =\n React.createContext(null);\nif (__DEV__) {\n DataRouterContext.displayName = \"DataRouter\";\n}\n\nexport const DataRouterStateContext = React.createContext<\n Router[\"state\"] | null\n>(null);\nif (__DEV__) {\n DataRouterStateContext.displayName = \"DataRouterState\";\n}\n\nexport const AwaitContext = React.createContext(null);\nif (__DEV__) {\n AwaitContext.displayName = \"Await\";\n}\n\nexport type RelativeRoutingType = \"route\" | \"path\";\n\nexport interface NavigateOptions {\n replace?: boolean;\n state?: any;\n preventScrollReset?: boolean;\n relative?: RelativeRoutingType;\n}\n\n/**\n * A Navigator is a \"location changer\"; it's how you get to different locations.\n *\n * Every history instance conforms to the Navigator interface, but the\n * distinction is useful primarily when it comes to the low-level API\n * where both the location and a navigator must be provided separately in order\n * to avoid \"tearing\" that may occur in a suspense-enabled app if the action\n * and/or location were to be read directly from the history instance.\n */\nexport interface Navigator {\n createHref: History[\"createHref\"];\n go: History[\"go\"];\n push(to: To, state?: any, opts?: NavigateOptions): void;\n replace(to: To, state?: any, opts?: NavigateOptions): void;\n}\n\ninterface NavigationContextObject {\n basename: string;\n navigator: Navigator;\n static: boolean;\n}\n\nexport const NavigationContext = React.createContext(\n null!\n);\n\nif (__DEV__) {\n NavigationContext.displayName = \"Navigation\";\n}\n\ninterface LocationContextObject {\n location: Location;\n navigationType: NavigationType;\n}\n\nexport const LocationContext = React.createContext(\n null!\n);\n\nif (__DEV__) {\n LocationContext.displayName = \"Location\";\n}\n\nexport interface RouteContextObject {\n outlet: React.ReactElement | null;\n matches: RouteMatch[];\n}\n\nexport const RouteContext = React.createContext({\n outlet: null,\n matches: [],\n});\n\nif (__DEV__) {\n RouteContext.displayName = \"Route\";\n}\n\nexport const RouteErrorContext = React.createContext(null);\n\nif (__DEV__) {\n RouteErrorContext.displayName = \"RouteError\";\n}\n","import * as React from \"react\";\nimport type {\n Location,\n ParamParseKey,\n Params,\n Path,\n PathMatch,\n PathPattern,\n Router as RemixRouter,\n To,\n} from \"@remix-run/router\";\nimport {\n Action as NavigationType,\n invariant,\n isRouteErrorResponse,\n joinPaths,\n matchPath,\n matchRoutes,\n parsePath,\n resolveTo,\n warning,\n} from \"@remix-run/router\";\n\nimport type {\n NavigateOptions,\n RouteContextObject,\n RouteMatch,\n RouteObject,\n DataRouteMatch,\n RelativeRoutingType,\n} from \"./context\";\nimport {\n DataRouterContext,\n DataRouterStateContext,\n LocationContext,\n NavigationContext,\n RouteContext,\n RouteErrorContext,\n AwaitContext,\n DataStaticRouterContext,\n} from \"./context\";\n\n/**\n * Returns the full href for the given \"to\" value. This is useful for building\n * custom links that are also accessible and preserve right-click behavior.\n *\n * @see https://reactrouter.com/docs/en/v6/hooks/use-href\n */\nexport function useHref(\n to: To,\n { relative }: { relative?: RelativeRoutingType } = {}\n): string {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useHref() may be used only in the context of a component.`\n );\n\n let { basename, navigator } = React.useContext(NavigationContext);\n let { hash, pathname, search } = useResolvedPath(to, { relative });\n\n let joinedPathname = pathname;\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to creating the href. If this is a root navigation, then just use the raw\n // basename which allows the basename to have full control over the presence\n // of a trailing slash on root links\n if (basename !== \"/\") {\n joinedPathname =\n pathname === \"/\" ? basename : joinPaths([basename, pathname]);\n }\n\n return navigator.createHref({ pathname: joinedPathname, search, hash });\n}\n\n/**\n * Returns true if this component is a descendant of a .\n *\n * @see https://reactrouter.com/docs/en/v6/hooks/use-in-router-context\n */\nexport function useInRouterContext(): boolean {\n return React.useContext(LocationContext) != null;\n}\n\n/**\n * Returns the current location object, which represents the current URL in web\n * browsers.\n *\n * Note: If you're using this it may mean you're doing some of your own\n * \"routing\" in your app, and we'd like to know what your use case is. We may\n * be able to provide something higher-level to better suit your needs.\n *\n * @see https://reactrouter.com/docs/en/v6/hooks/use-location\n */\nexport function useLocation(): Location {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useLocation() may be used only in the context of a component.`\n );\n\n return React.useContext(LocationContext).location;\n}\n\n/**\n * Returns the current navigation action which describes how the router came to\n * the current location, either by a pop, push, or replace on the history stack.\n *\n * @see https://reactrouter.com/docs/en/v6/hooks/use-navigation-type\n */\nexport function useNavigationType(): NavigationType {\n return React.useContext(LocationContext).navigationType;\n}\n\n/**\n * Returns true if the URL for the given \"to\" value matches the current URL.\n * This is useful for components that need to know \"active\" state, e.g.\n * .\n *\n * @see https://reactrouter.com/docs/en/v6/hooks/use-match\n */\nexport function useMatch<\n ParamKey extends ParamParseKey,\n Path extends string\n>(pattern: PathPattern | Path): PathMatch | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useMatch() may be used only in the context of a component.`\n );\n\n let { pathname } = useLocation();\n return React.useMemo(\n () => matchPath(pattern, pathname),\n [pathname, pattern]\n );\n}\n\n/**\n * The interface for the navigate() function returned from useNavigate().\n */\nexport interface NavigateFunction {\n (to: To, options?: NavigateOptions): void;\n (delta: number): void;\n}\n\n/**\n * When processing relative navigation we want to ignore ancestor routes that\n * do not contribute to the path, such that index/pathless layout routes don't\n * interfere.\n *\n * For example, when moving a route element into an index route and/or a\n * pathless layout route, relative link behavior contained within should stay\n * the same. Both of the following examples should link back to the root:\n *\n * \n * \n * \n *\n * \n * \n * }> // <-- Does not contribute\n * // <-- Does not contribute\n * \n * \n */\nfunction getPathContributingMatches(matches: RouteMatch[]) {\n return matches.filter(\n (match, index) =>\n index === 0 ||\n (!match.route.index &&\n match.pathnameBase !== matches[index - 1].pathnameBase)\n );\n}\n\n/**\n * Returns an imperative method for changing the location. Used by s, but\n * may also be used by other elements to change the location.\n *\n * @see https://reactrouter.com/docs/en/v6/hooks/use-navigate\n */\nexport function useNavigate(): NavigateFunction {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useNavigate() may be used only in the context of a component.`\n );\n\n let { basename, navigator } = React.useContext(NavigationContext);\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n\n let routePathnamesJson = JSON.stringify(\n getPathContributingMatches(matches).map((match) => match.pathnameBase)\n );\n\n let activeRef = React.useRef(false);\n React.useEffect(() => {\n activeRef.current = true;\n });\n\n let navigate: NavigateFunction = React.useCallback(\n (to: To | number, options: NavigateOptions = {}) => {\n warning(\n activeRef.current,\n `You should call navigate() in a React.useEffect(), not when ` +\n `your component is first rendered.`\n );\n\n if (!activeRef.current) return;\n\n if (typeof to === \"number\") {\n navigator.go(to);\n return;\n }\n\n let path = resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname,\n options.relative === \"path\"\n );\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to handing off to history. If this is a root navigation, then we\n // navigate to the raw basename which allows the basename to have full\n // control over the presence of a trailing slash on root links\n if (basename !== \"/\") {\n path.pathname =\n path.pathname === \"/\"\n ? basename\n : joinPaths([basename, path.pathname]);\n }\n\n (!!options.replace ? navigator.replace : navigator.push)(\n path,\n options.state,\n options\n );\n },\n [basename, navigator, routePathnamesJson, locationPathname]\n );\n\n return navigate;\n}\n\nconst OutletContext = React.createContext(null);\n\n/**\n * Returns the context (if provided) for the child route at this level of the route\n * hierarchy.\n * @see https://reactrouter.com/docs/en/v6/hooks/use-outlet-context\n */\nexport function useOutletContext(): Context {\n return React.useContext(OutletContext) as Context;\n}\n\n/**\n * Returns the element for the child route at this level of the route\n * hierarchy. Used internally by to render child routes.\n *\n * @see https://reactrouter.com/docs/en/v6/hooks/use-outlet\n */\nexport function useOutlet(context?: unknown): React.ReactElement | null {\n let outlet = React.useContext(RouteContext).outlet;\n if (outlet) {\n return (\n {outlet}\n );\n }\n return outlet;\n}\n\n/**\n * Returns an object of key/value pairs of the dynamic params from the current\n * URL that were matched by the route path.\n *\n * @see https://reactrouter.com/docs/en/v6/hooks/use-params\n */\nexport function useParams<\n ParamsOrKey extends string | Record = string\n>(): Readonly<\n [ParamsOrKey] extends [string] ? Params : Partial\n> {\n let { matches } = React.useContext(RouteContext);\n let routeMatch = matches[matches.length - 1];\n return routeMatch ? (routeMatch.params as any) : {};\n}\n\n/**\n * Resolves the pathname of the given `to` value against the current location.\n *\n * @see https://reactrouter.com/docs/en/v6/hooks/use-resolved-path\n */\nexport function useResolvedPath(\n to: To,\n { relative }: { relative?: RelativeRoutingType } = {}\n): Path {\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n\n let routePathnamesJson = JSON.stringify(\n getPathContributingMatches(matches).map((match) => match.pathnameBase)\n );\n\n return React.useMemo(\n () =>\n resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname,\n relative === \"path\"\n ),\n [to, routePathnamesJson, locationPathname, relative]\n );\n}\n\n/**\n * Returns the element of the route that matched the current location, prepared\n * with the correct context to render the remainder of the route tree. Route\n * elements in the tree must render an to render their child route's\n * element.\n *\n * @see https://reactrouter.com/docs/en/v6/hooks/use-routes\n */\nexport function useRoutes(\n routes: RouteObject[],\n locationArg?: Partial | string\n): React.ReactElement | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useRoutes() may be used only in the context of a component.`\n );\n\n let dataRouterStateContext = React.useContext(DataRouterStateContext);\n let { matches: parentMatches } = React.useContext(RouteContext);\n let routeMatch = parentMatches[parentMatches.length - 1];\n let parentParams = routeMatch ? routeMatch.params : {};\n let parentPathname = routeMatch ? routeMatch.pathname : \"/\";\n let parentPathnameBase = routeMatch ? routeMatch.pathnameBase : \"/\";\n let parentRoute = routeMatch && routeMatch.route;\n\n if (__DEV__) {\n // You won't get a warning about 2 different under a \n // without a trailing *, but this is a best-effort warning anyway since we\n // cannot even give the warning unless they land at the parent route.\n //\n // Example:\n //\n // \n // {/* This route path MUST end with /* because otherwise\n // it will never match /blog/post/123 */}\n // } />\n // } />\n // \n //\n // function Blog() {\n // return (\n // \n // } />\n // \n // );\n // }\n let parentPath = (parentRoute && parentRoute.path) || \"\";\n warningOnce(\n parentPathname,\n !parentRoute || parentPath.endsWith(\"*\"),\n `You rendered descendant (or called \\`useRoutes()\\`) at ` +\n `\"${parentPathname}\" (under ) but the ` +\n `parent route path has no trailing \"*\". This means if you navigate ` +\n `deeper, the parent won't match anymore and therefore the child ` +\n `routes will never render.\\n\\n` +\n `Please change the parent to .`\n );\n }\n\n let locationFromContext = useLocation();\n\n let location;\n if (locationArg) {\n let parsedLocationArg =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n invariant(\n parentPathnameBase === \"/\" ||\n parsedLocationArg.pathname?.startsWith(parentPathnameBase),\n `When overriding the location using \\`\\` or \\`useRoutes(routes, location)\\`, ` +\n `the location pathname must begin with the portion of the URL pathname that was ` +\n `matched by all parent routes. The current pathname base is \"${parentPathnameBase}\" ` +\n `but pathname \"${parsedLocationArg.pathname}\" was given in the \\`location\\` prop.`\n );\n\n location = parsedLocationArg;\n } else {\n location = locationFromContext;\n }\n\n let pathname = location.pathname || \"/\";\n let remainingPathname =\n parentPathnameBase === \"/\"\n ? pathname\n : pathname.slice(parentPathnameBase.length) || \"/\";\n\n let matches = matchRoutes(routes, { pathname: remainingPathname });\n\n if (__DEV__) {\n warning(\n parentRoute || matches != null,\n `No routes matched location \"${location.pathname}${location.search}${location.hash}\" `\n );\n\n warning(\n matches == null ||\n matches[matches.length - 1].route.element !== undefined,\n `Matched leaf route at location \"${location.pathname}${location.search}${location.hash}\" does not have an element. ` +\n `This means it will render an with a null value by default resulting in an \"empty\" page.`\n );\n }\n\n let renderedMatches = _renderMatches(\n matches &&\n matches.map((match) =>\n Object.assign({}, match, {\n params: Object.assign({}, parentParams, match.params),\n pathname: joinPaths([parentPathnameBase, match.pathname]),\n pathnameBase:\n match.pathnameBase === \"/\"\n ? parentPathnameBase\n : joinPaths([parentPathnameBase, match.pathnameBase]),\n })\n ),\n parentMatches,\n dataRouterStateContext || undefined\n );\n\n // When a user passes in a `locationArg`, the associated routes need to\n // be wrapped in a new `LocationContext.Provider` in order for `useLocation`\n // to use the scoped location instead of the global location.\n if (locationArg) {\n return (\n \n {renderedMatches}\n \n );\n }\n\n return renderedMatches;\n}\n\nfunction DefaultErrorElement() {\n let error = useRouteError();\n let message = isRouteErrorResponse(error)\n ? `${error.status} ${error.statusText}`\n : error instanceof Error\n ? error.message\n : JSON.stringify(error);\n let stack = error instanceof Error ? error.stack : null;\n let lightgrey = \"rgba(200,200,200, 0.5)\";\n let preStyles = { padding: \"0.5rem\", backgroundColor: lightgrey };\n let codeStyles = { padding: \"2px 4px\", backgroundColor: lightgrey };\n return (\n <>\n

Unhandled Thrown Error!

\n

{message}

\n {stack ?
{stack}
: null}\n

💿 Hey developer 👋

\n

\n You can provide a way better UX than this when your app throws errors by\n providing your own \n errorElement props on \n <Route>\n

\n \n );\n}\n\ntype RenderErrorBoundaryProps = React.PropsWithChildren<{\n location: Location;\n error: any;\n component: React.ReactNode;\n}>;\n\ntype RenderErrorBoundaryState = {\n location: Location;\n error: any;\n};\n\nexport class RenderErrorBoundary extends React.Component<\n RenderErrorBoundaryProps,\n RenderErrorBoundaryState\n> {\n constructor(props: RenderErrorBoundaryProps) {\n super(props);\n this.state = {\n location: props.location,\n error: props.error,\n };\n }\n\n static getDerivedStateFromError(error: any) {\n return { error: error };\n }\n\n static getDerivedStateFromProps(\n props: RenderErrorBoundaryProps,\n state: RenderErrorBoundaryState\n ) {\n // When we get into an error state, the user will likely click \"back\" to the\n // previous page that didn't have an error. Because this wraps the entire\n // application, that will have no effect--the error page continues to display.\n // This gives us a mechanism to recover from the error when the location changes.\n //\n // Whether we're in an error state or not, we update the location in state\n // so that when we are in an error state, it gets reset when a new location\n // comes in and the user recovers from the error.\n if (state.location !== props.location) {\n return {\n error: props.error,\n location: props.location,\n };\n }\n\n // If we're not changing locations, preserve the location but still surface\n // any new errors that may come through. We retain the existing error, we do\n // this because the error provided from the app state may be cleared without\n // the location changing.\n return {\n error: props.error || state.error,\n location: state.location,\n };\n }\n\n componentDidCatch(error: any, errorInfo: any) {\n console.error(\n \"React Router caught the following error during render\",\n error,\n errorInfo\n );\n }\n\n render() {\n return this.state.error ? (\n \n ) : (\n this.props.children\n );\n }\n}\n\ninterface RenderedRouteProps {\n routeContext: RouteContextObject;\n match: RouteMatch;\n children: React.ReactNode | null;\n}\n\nfunction RenderedRoute({ routeContext, match, children }: RenderedRouteProps) {\n let dataStaticRouterContext = React.useContext(DataStaticRouterContext);\n\n // Track how deep we got in our render pass to emulate SSR componentDidCatch\n // in a DataStaticRouter\n if (dataStaticRouterContext && match.route.errorElement) {\n dataStaticRouterContext._deepestRenderedBoundaryId = match.route.id;\n }\n\n return (\n \n {children}\n \n );\n}\n\nexport function _renderMatches(\n matches: RouteMatch[] | null,\n parentMatches: RouteMatch[] = [],\n dataRouterState?: RemixRouter[\"state\"]\n): React.ReactElement | null {\n if (matches == null) {\n if (dataRouterState?.errors) {\n // Don't bail if we have data router errors so we can render them in the\n // boundary. Use the pre-matched (or shimmed) matches\n matches = dataRouterState.matches as DataRouteMatch[];\n } else {\n return null;\n }\n }\n\n let renderedMatches = matches;\n\n // If we have data errors, trim matches to the highest error boundary\n let errors = dataRouterState?.errors;\n if (errors != null) {\n let errorIndex = renderedMatches.findIndex(\n (m) => m.route.id && errors?.[m.route.id]\n );\n invariant(\n errorIndex >= 0,\n `Could not find a matching route for the current errors: ${errors}`\n );\n renderedMatches = renderedMatches.slice(\n 0,\n Math.min(renderedMatches.length, errorIndex + 1)\n );\n }\n\n return renderedMatches.reduceRight((outlet, match, index) => {\n let error = match.route.id ? errors?.[match.route.id] : null;\n // Only data routers handle errors\n let errorElement = dataRouterState\n ? match.route.errorElement || \n : null;\n let getChildren = () => (\n \n {error\n ? errorElement\n : match.route.element !== undefined\n ? match.route.element\n : outlet}\n \n );\n // Only wrap in an error boundary within data router usages when we have an\n // errorElement on this route. Otherwise let it bubble up to an ancestor\n // errorElement\n return dataRouterState && (match.route.errorElement || index === 0) ? (\n \n ) : (\n getChildren()\n );\n }, null as React.ReactElement | null);\n}\n\nenum DataRouterHook {\n UseRevalidator = \"useRevalidator\",\n}\n\nenum DataRouterStateHook {\n UseLoaderData = \"useLoaderData\",\n UseActionData = \"useActionData\",\n UseRouteError = \"useRouteError\",\n UseNavigation = \"useNavigation\",\n UseRouteLoaderData = \"useRouteLoaderData\",\n UseMatches = \"useMatches\",\n UseRevalidator = \"useRevalidator\",\n}\n\nfunction getDataRouterConsoleError(\n hookName: DataRouterHook | DataRouterStateHook\n) {\n return `${hookName} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`;\n}\n\nfunction useDataRouterContext(hookName: DataRouterHook) {\n let ctx = React.useContext(DataRouterContext);\n invariant(ctx, getDataRouterConsoleError(hookName));\n return ctx;\n}\n\nfunction useDataRouterState(hookName: DataRouterStateHook) {\n let state = React.useContext(DataRouterStateContext);\n invariant(state, getDataRouterConsoleError(hookName));\n return state;\n}\n\n/**\n * Returns the current navigation, defaulting to an \"idle\" navigation when\n * no navigation is in progress\n */\nexport function useNavigation() {\n let state = useDataRouterState(DataRouterStateHook.UseNavigation);\n return state.navigation;\n}\n\n/**\n * Returns a revalidate function for manually triggering revalidation, as well\n * as the current state of any manual revalidations\n */\nexport function useRevalidator() {\n let dataRouterContext = useDataRouterContext(DataRouterHook.UseRevalidator);\n let state = useDataRouterState(DataRouterStateHook.UseRevalidator);\n return {\n revalidate: dataRouterContext.router.revalidate,\n state: state.revalidation,\n };\n}\n\n/**\n * Returns the active route matches, useful for accessing loaderData for\n * parent/child routes or the route \"handle\" property\n */\nexport function useMatches() {\n let { matches, loaderData } = useDataRouterState(\n DataRouterStateHook.UseMatches\n );\n return React.useMemo(\n () =>\n matches.map((match) => {\n let { pathname, params } = match;\n // Note: This structure matches that created by createUseMatchesMatch\n // in the @remix-run/router , so if you change this please also change\n // that :) Eventually we'll DRY this up\n return {\n id: match.route.id,\n pathname,\n params,\n data: loaderData[match.route.id] as unknown,\n handle: match.route.handle as unknown,\n };\n }),\n [matches, loaderData]\n );\n}\n\n/**\n * Returns the loader data for the nearest ancestor Route loader\n */\nexport function useLoaderData(): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseLoaderData);\n\n let route = React.useContext(RouteContext);\n invariant(route, `useLoaderData must be used inside a RouteContext`);\n\n let thisRoute = route.matches[route.matches.length - 1];\n invariant(\n thisRoute.route.id,\n `useLoaderData can only be used on routes that contain a unique \"id\"`\n );\n\n return state.loaderData[thisRoute.route.id];\n}\n\n/**\n * Returns the loaderData for the given routeId\n */\nexport function useRouteLoaderData(routeId: string): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseRouteLoaderData);\n return state.loaderData[routeId];\n}\n\n/**\n * Returns the action data for the nearest ancestor Route action\n */\nexport function useActionData(): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseActionData);\n\n let route = React.useContext(RouteContext);\n invariant(route, `useActionData must be used inside a RouteContext`);\n\n return Object.values(state?.actionData || {})[0];\n}\n\n/**\n * Returns the nearest ancestor Route error, which could be a loader/action\n * error or a render error. This is intended to be called from your\n * errorElement to display a proper error message.\n */\nexport function useRouteError(): unknown {\n let error = React.useContext(RouteErrorContext);\n let state = useDataRouterState(DataRouterStateHook.UseRouteError);\n let route = React.useContext(RouteContext);\n let thisRoute = route.matches[route.matches.length - 1];\n\n // If this was a render error, we put it in a RouteError context inside\n // of RenderErrorBoundary\n if (error) {\n return error;\n }\n\n invariant(route, `useRouteError must be used inside a RouteContext`);\n invariant(\n thisRoute.route.id,\n `useRouteError can only be used on routes that contain a unique \"id\"`\n );\n\n // Otherwise look for errors from our data router state\n return state.errors?.[thisRoute.route.id];\n}\n\n/**\n * Returns the happy-path data from the nearest ancestor value\n */\nexport function useAsyncValue(): unknown {\n let value = React.useContext(AwaitContext);\n return value?._data;\n}\n\n/**\n * Returns the error from the nearest ancestor value\n */\nexport function useAsyncError(): unknown {\n let value = React.useContext(AwaitContext);\n return value?._error;\n}\n\nconst alreadyWarned: Record = {};\n\nfunction warningOnce(key: string, cond: boolean, message: string) {\n if (!cond && !alreadyWarned[key]) {\n alreadyWarned[key] = true;\n warning(false, message);\n }\n}\n","import * as React from \"react\";\nimport type {\n TrackedPromise,\n InitialEntry,\n Location,\n MemoryHistory,\n Router as RemixRouter,\n RouterState,\n To,\n} from \"@remix-run/router\";\nimport {\n Action as NavigationType,\n AbortedDeferredError,\n createMemoryHistory,\n invariant,\n parsePath,\n stripBasename,\n warning,\n} from \"@remix-run/router\";\nimport { useSyncExternalStore as useSyncExternalStoreShim } from \"./use-sync-external-store-shim\";\n\nimport type {\n DataRouteObject,\n IndexRouteObject,\n RouteMatch,\n RouteObject,\n Navigator,\n NonIndexRouteObject,\n RelativeRoutingType,\n} from \"./context\";\nimport {\n LocationContext,\n NavigationContext,\n DataRouterContext,\n DataRouterStateContext,\n AwaitContext,\n} from \"./context\";\nimport {\n useAsyncValue,\n useInRouterContext,\n useNavigate,\n useOutlet,\n useRoutes,\n _renderMatches,\n} from \"./hooks\";\n\nexport interface RouterProviderProps {\n fallbackElement?: React.ReactNode;\n router: RemixRouter;\n}\n\n/**\n * Given a Remix Router instance, render the appropriate UI\n */\nexport function RouterProvider({\n fallbackElement,\n router,\n}: RouterProviderProps): React.ReactElement {\n // Sync router state to our component state to force re-renders\n let state: RouterState = useSyncExternalStoreShim(\n router.subscribe,\n () => router.state,\n // We have to provide this so React@18 doesn't complain during hydration,\n // but we pass our serialized hydration data into the router so state here\n // is already synced with what the server saw\n () => router.state\n );\n\n let navigator = React.useMemo((): Navigator => {\n return {\n createHref: router.createHref,\n go: (n) => router.navigate(n),\n push: (to, state, opts) =>\n router.navigate(to, {\n state,\n preventScrollReset: opts?.preventScrollReset,\n }),\n replace: (to, state, opts) =>\n router.navigate(to, {\n replace: true,\n state,\n preventScrollReset: opts?.preventScrollReset,\n }),\n };\n }, [router]);\n\n let basename = router.basename || \"/\";\n\n return (\n \n \n \n {router.state.initialized ? : fallbackElement}\n
\n \n \n );\n}\n\nexport interface MemoryRouterProps {\n basename?: string;\n children?: React.ReactNode;\n initialEntries?: InitialEntry[];\n initialIndex?: number;\n}\n\n/**\n * A that stores all entries in memory.\n *\n * @see https://reactrouter.com/docs/en/v6/routers/memory-router\n */\nexport function MemoryRouter({\n basename,\n children,\n initialEntries,\n initialIndex,\n}: MemoryRouterProps): React.ReactElement {\n let historyRef = React.useRef();\n if (historyRef.current == null) {\n historyRef.current = createMemoryHistory({\n initialEntries,\n initialIndex,\n v5Compat: true,\n });\n }\n\n let history = historyRef.current;\n let [state, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\n\n return (\n \n );\n}\n\nexport interface NavigateProps {\n to: To;\n replace?: boolean;\n state?: any;\n relative?: RelativeRoutingType;\n}\n\n/**\n * Changes the current location.\n *\n * Note: This API is mostly useful in React.Component subclasses that are not\n * able to use hooks. In functional components, we recommend you use the\n * `useNavigate` hook instead.\n *\n * @see https://reactrouter.com/docs/en/v6/components/navigate\n */\nexport function Navigate({\n to,\n replace,\n state,\n relative,\n}: NavigateProps): null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of\n // the router loaded. We can help them understand how to avoid that.\n ` may be used only in the context of a component.`\n );\n\n warning(\n !React.useContext(NavigationContext).static,\n ` must not be used on the initial render in a . ` +\n `This is a no-op, but you should modify your code so the is ` +\n `only ever rendered in response to some user interaction or state change.`\n );\n\n let dataRouterState = React.useContext(DataRouterStateContext);\n let navigate = useNavigate();\n\n React.useEffect(() => {\n // Avoid kicking off multiple navigations if we're in the middle of a\n // data-router navigation, since components get re-rendered when we enter\n // a submitting/loading state\n if (dataRouterState && dataRouterState.navigation.state !== \"idle\") {\n return;\n }\n navigate(to, { replace, state, relative });\n });\n\n return null;\n}\n\nexport interface OutletProps {\n context?: unknown;\n}\n\n/**\n * Renders the child route's element, if there is one.\n *\n * @see https://reactrouter.com/docs/en/v6/components/outlet\n */\nexport function Outlet(props: OutletProps): React.ReactElement | null {\n return useOutlet(props.context);\n}\n\nexport interface PathRouteProps {\n caseSensitive?: NonIndexRouteObject[\"caseSensitive\"];\n path?: NonIndexRouteObject[\"path\"];\n id?: NonIndexRouteObject[\"id\"];\n loader?: NonIndexRouteObject[\"loader\"];\n action?: NonIndexRouteObject[\"action\"];\n hasErrorBoundary?: NonIndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: NonIndexRouteObject[\"shouldRevalidate\"];\n handle?: NonIndexRouteObject[\"handle\"];\n index?: false;\n children?: React.ReactNode;\n element?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n}\n\nexport interface LayoutRouteProps extends PathRouteProps {}\n\nexport interface IndexRouteProps {\n caseSensitive?: IndexRouteObject[\"caseSensitive\"];\n path?: IndexRouteObject[\"path\"];\n id?: IndexRouteObject[\"id\"];\n loader?: IndexRouteObject[\"loader\"];\n action?: IndexRouteObject[\"action\"];\n hasErrorBoundary?: IndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: IndexRouteObject[\"shouldRevalidate\"];\n handle?: IndexRouteObject[\"handle\"];\n index: true;\n children?: undefined;\n element?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n}\n\nexport type RouteProps = PathRouteProps | LayoutRouteProps | IndexRouteProps;\n\n/**\n * Declares an element that should be rendered at a certain URL path.\n *\n * @see https://reactrouter.com/docs/en/v6/components/route\n */\nexport function Route(_props: RouteProps): React.ReactElement | null {\n invariant(\n false,\n `A is only ever to be used as the child of element, ` +\n `never rendered directly. Please wrap your in a .`\n );\n}\n\nexport interface RouterProps {\n basename?: string;\n children?: React.ReactNode;\n location: Partial | string;\n navigationType?: NavigationType;\n navigator: Navigator;\n static?: boolean;\n}\n\n/**\n * Provides location context for the rest of the app.\n *\n * Note: You usually won't render a directly. Instead, you'll render a\n * router that is more specific to your environment such as a \n * in web browsers or a for server rendering.\n *\n * @see https://reactrouter.com/docs/en/v6/routers/router\n */\nexport function Router({\n basename: basenameProp = \"/\",\n children = null,\n location: locationProp,\n navigationType = NavigationType.Pop,\n navigator,\n static: staticProp = false,\n}: RouterProps): React.ReactElement | null {\n invariant(\n !useInRouterContext(),\n `You cannot render a inside another .` +\n ` You should never have more than one in your app.`\n );\n\n // Preserve trailing slashes on basename, so we can let the user control\n // the enforcement of trailing slashes throughout the app\n let basename = basenameProp.replace(/^\\/*/, \"/\");\n let navigationContext = React.useMemo(\n () => ({ basename, navigator, static: staticProp }),\n [basename, navigator, staticProp]\n );\n\n if (typeof locationProp === \"string\") {\n locationProp = parsePath(locationProp);\n }\n\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n state = null,\n key = \"default\",\n } = locationProp;\n\n let location = React.useMemo(() => {\n let trailingPathname = stripBasename(pathname, basename);\n\n if (trailingPathname == null) {\n return null;\n }\n\n return {\n pathname: trailingPathname,\n search,\n hash,\n state,\n key,\n };\n }, [basename, pathname, search, hash, state, key]);\n\n warning(\n location != null,\n ` is not able to match the URL ` +\n `\"${pathname}${search}${hash}\" because it does not start with the ` +\n `basename, so the won't render anything.`\n );\n\n if (location == null) {\n return null;\n }\n\n return (\n \n \n \n );\n}\n\nexport interface RoutesProps {\n children?: React.ReactNode;\n location?: Partial | string;\n}\n\n/**\n * A container for a nested tree of elements that renders the branch\n * that best matches the current location.\n *\n * @see https://reactrouter.com/docs/en/v6/components/routes\n */\nexport function Routes({\n children,\n location,\n}: RoutesProps): React.ReactElement | null {\n let dataRouterContext = React.useContext(DataRouterContext);\n // When in a DataRouterContext _without_ children, we use the router routes\n // directly. If we have children, then we're in a descendant tree and we\n // need to use child routes.\n let routes =\n dataRouterContext && !children\n ? (dataRouterContext.router.routes as DataRouteObject[])\n : createRoutesFromChildren(children);\n return useRoutes(routes, location);\n}\n\nexport interface AwaitResolveRenderFunction {\n (data: Awaited): React.ReactElement;\n}\n\nexport interface AwaitProps {\n children: React.ReactNode | AwaitResolveRenderFunction;\n errorElement?: React.ReactNode;\n resolve: TrackedPromise | any;\n}\n\n/**\n * Component to use for rendering lazily loaded data from returning defer()\n * in a loader function\n */\nexport function Await({ children, errorElement, resolve }: AwaitProps) {\n return (\n \n {children}\n \n );\n}\n\ntype AwaitErrorBoundaryProps = React.PropsWithChildren<{\n errorElement?: React.ReactNode;\n resolve: TrackedPromise | any;\n}>;\n\ntype AwaitErrorBoundaryState = {\n error: any;\n};\n\nenum AwaitRenderStatus {\n pending,\n success,\n error,\n}\n\nconst neverSettledPromise = new Promise(() => {});\n\nclass AwaitErrorBoundary extends React.Component<\n AwaitErrorBoundaryProps,\n AwaitErrorBoundaryState\n> {\n constructor(props: AwaitErrorBoundaryProps) {\n super(props);\n this.state = { error: null };\n }\n\n static getDerivedStateFromError(error: any) {\n return { error };\n }\n\n componentDidCatch(error: any, errorInfo: any) {\n console.error(\n \" caught the following error during render\",\n error,\n errorInfo\n );\n }\n\n render() {\n let { children, errorElement, resolve } = this.props;\n\n let promise: TrackedPromise | null = null;\n let status: AwaitRenderStatus = AwaitRenderStatus.pending;\n\n if (!(resolve instanceof Promise)) {\n // Didn't get a promise - provide as a resolved promise\n status = AwaitRenderStatus.success;\n promise = Promise.resolve();\n Object.defineProperty(promise, \"_tracked\", { get: () => true });\n Object.defineProperty(promise, \"_data\", { get: () => resolve });\n } else if (this.state.error) {\n // Caught a render error, provide it as a rejected promise\n status = AwaitRenderStatus.error;\n let renderError = this.state.error;\n promise = Promise.reject().catch(() => {}); // Avoid unhandled rejection warnings\n Object.defineProperty(promise, \"_tracked\", { get: () => true });\n Object.defineProperty(promise, \"_error\", { get: () => renderError });\n } else if ((resolve as TrackedPromise)._tracked) {\n // Already tracked promise - check contents\n promise = resolve;\n status =\n promise._error !== undefined\n ? AwaitRenderStatus.error\n : promise._data !== undefined\n ? AwaitRenderStatus.success\n : AwaitRenderStatus.pending;\n } else {\n // Raw (untracked) promise - track it\n status = AwaitRenderStatus.pending;\n Object.defineProperty(resolve, \"_tracked\", { get: () => true });\n promise = resolve.then(\n (data: any) =>\n Object.defineProperty(resolve, \"_data\", { get: () => data }),\n (error: any) =>\n Object.defineProperty(resolve, \"_error\", { get: () => error })\n );\n }\n\n if (\n status === AwaitRenderStatus.error &&\n promise._error instanceof AbortedDeferredError\n ) {\n // Freeze the UI by throwing a never resolved promise\n throw neverSettledPromise;\n }\n\n if (status === AwaitRenderStatus.error && !errorElement) {\n // No errorElement, throw to the nearest route-level error boundary\n throw promise._error;\n }\n\n if (status === AwaitRenderStatus.error) {\n // Render via our errorElement\n return ;\n }\n\n if (status === AwaitRenderStatus.success) {\n // Render children with resolved value\n return ;\n }\n\n // Throw to the suspense boundary\n throw promise;\n }\n}\n\n/**\n * @private\n * Indirection to leverage useAsyncValue for a render-prop API on \n */\nfunction ResolveAwait({\n children,\n}: {\n children: React.ReactNode | AwaitResolveRenderFunction;\n}) {\n let data = useAsyncValue();\n if (typeof children === \"function\") {\n return children(data);\n }\n return <>{children};\n}\n\n///////////////////////////////////////////////////////////////////////////////\n// UTILS\n///////////////////////////////////////////////////////////////////////////////\n\n/**\n * Creates a route config from a React \"children\" object, which is usually\n * either a `` element or an array of them. Used internally by\n * `` to create a route config from its children.\n *\n * @see https://reactrouter.com/docs/en/v6/utils/create-routes-from-children\n */\nexport function createRoutesFromChildren(\n children: React.ReactNode,\n parentPath: number[] = []\n): RouteObject[] {\n let routes: RouteObject[] = [];\n\n React.Children.forEach(children, (element, index) => {\n if (!React.isValidElement(element)) {\n // Ignore non-elements. This allows people to more easily inline\n // conditionals in their route config.\n return;\n }\n\n if (element.type === React.Fragment) {\n // Transparently support React.Fragment and its children.\n routes.push.apply(\n routes,\n createRoutesFromChildren(element.props.children, parentPath)\n );\n return;\n }\n\n invariant(\n element.type === Route,\n `[${\n typeof element.type === \"string\" ? element.type : element.type.name\n }] is not a component. All component children of must be a or `\n );\n\n invariant(\n !element.props.index || !element.props.children,\n \"An index route cannot have child routes.\"\n );\n\n let treePath = [...parentPath, index];\n let route: RouteObject = {\n id: element.props.id || treePath.join(\"-\"),\n caseSensitive: element.props.caseSensitive,\n element: element.props.element,\n index: element.props.index,\n path: element.props.path,\n loader: element.props.loader,\n action: element.props.action,\n errorElement: element.props.errorElement,\n hasErrorBoundary: element.props.errorElement != null,\n shouldRevalidate: element.props.shouldRevalidate,\n handle: element.props.handle,\n };\n\n if (element.props.children) {\n route.children = createRoutesFromChildren(\n element.props.children,\n treePath\n );\n }\n\n routes.push(route);\n });\n\n return routes;\n}\n\n/**\n * Renders the result of `matchRoutes()` into a React element.\n */\nexport function renderMatches(\n matches: RouteMatch[] | null\n): React.ReactElement | null {\n return _renderMatches(matches);\n}\n\n/**\n * @private\n * Walk the route tree and add hasErrorBoundary if it's not provided, so that\n * users providing manual route arrays can just specify errorElement\n */\nexport function enhanceManualRouteObjects(\n routes: RouteObject[]\n): RouteObject[] {\n return routes.map((route) => {\n let routeClone = { ...route };\n if (routeClone.hasErrorBoundary == null) {\n routeClone.hasErrorBoundary = routeClone.errorElement != null;\n }\n if (routeClone.children) {\n routeClone.children = enhanceManualRouteObjects(routeClone.children);\n }\n return routeClone;\n });\n}\n","import _objectSpread from '@babel/runtime/helpers/esm/objectSpread2';\n\n/**\n * Adapted from React: https://github.com/facebook/react/blob/master/packages/shared/formatProdErrorMessage.js\n *\n * Do not require this module directly! Use normal throw error calls. These messages will be replaced with error codes\n * during build.\n * @param {number} code\n */\nfunction formatProdErrorMessage(code) {\n return \"Minified Redux error #\" + code + \"; visit https://redux.js.org/Errors?code=\" + code + \" for the full message or \" + 'use the non-minified dev environment for full errors. ';\n}\n\n// Inlined version of the `symbol-observable` polyfill\nvar $$observable = (function () {\n return typeof Symbol === 'function' && Symbol.observable || '@@observable';\n})();\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nvar randomString = function randomString() {\n return Math.random().toString(36).substring(7).split('').join('.');\n};\n\nvar ActionTypes = {\n INIT: \"@@redux/INIT\" + randomString(),\n REPLACE: \"@@redux/REPLACE\" + randomString(),\n PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() {\n return \"@@redux/PROBE_UNKNOWN_ACTION\" + randomString();\n }\n};\n\n/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\n */\nfunction isPlainObject(obj) {\n if (typeof obj !== 'object' || obj === null) return false;\n var proto = obj;\n\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n\n return Object.getPrototypeOf(obj) === proto;\n}\n\n// Inlined / shortened version of `kindOf` from https://github.com/jonschlinkert/kind-of\nfunction miniKindOf(val) {\n if (val === void 0) return 'undefined';\n if (val === null) return 'null';\n var type = typeof val;\n\n switch (type) {\n case 'boolean':\n case 'string':\n case 'number':\n case 'symbol':\n case 'function':\n {\n return type;\n }\n }\n\n if (Array.isArray(val)) return 'array';\n if (isDate(val)) return 'date';\n if (isError(val)) return 'error';\n var constructorName = ctorName(val);\n\n switch (constructorName) {\n case 'Symbol':\n case 'Promise':\n case 'WeakMap':\n case 'WeakSet':\n case 'Map':\n case 'Set':\n return constructorName;\n } // other\n\n\n return type.slice(8, -1).toLowerCase().replace(/\\s/g, '');\n}\n\nfunction ctorName(val) {\n return typeof val.constructor === 'function' ? val.constructor.name : null;\n}\n\nfunction isError(val) {\n return val instanceof Error || typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number';\n}\n\nfunction isDate(val) {\n if (val instanceof Date) return true;\n return typeof val.toDateString === 'function' && typeof val.getDate === 'function' && typeof val.setDate === 'function';\n}\n\nfunction kindOf(val) {\n var typeOfVal = typeof val;\n\n if (process.env.NODE_ENV !== 'production') {\n typeOfVal = miniKindOf(val);\n }\n\n return typeOfVal;\n}\n\n/**\n * Creates a Redux store that holds the state tree.\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n\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/**\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 };\n","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","import defineProperty from \"./defineProperty.js\";\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nexport default function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n}","const default_user = {\n token: \"\",\n};\nexport const user = {\n ...default_user,\n};\n\nconst User = (state = user, { type, payload }) => {\n // console.log('login_reducer', type, payload);\n switch (type) {\n case \"login\":\n\n return {\n ...state,\n token: payload.token\n };\n case \"logout\":\n return { ...state, ...default_user };\n // case \"others\":\n // return { ...state, token: payload.token, others: payload.others };\n // case 'current_page':\n // return { ...state, current_page: payload };\n // case 'set_admin_select_remember':\n // // console.log('set_admin_select_remember',payload);\n // return { ...state, admin_select_remember: payload }\n default:\n return state;\n }\n};\nexport default User;\n","import { combineReducers, createStore } from \"redux\";\n// import Admin from \"./adminreducer\";\nimport User from \"./loginreducer\";\nimport RequestPickupData from \"./pickupreducer\";\n// import Table1 from \"./table1reducer\";\n// import Table2 from \"./table2reducer\";\n\n// import Current_tab from \"./reducer/CurrentTab\";\n// import QIN_reducer from \"./reducer/QIN_reducer\";\n// import theme_reducer from \"./reducer/theme_reducer\";\n\nconst rootReducer = combineReducers({\n // admin:Admin,\n user: User,\n // requestPickupData:RequestPickupData,\n // table2:Table2\n})\n\nconst store = createStore(rootReducer);\n\nexport default store;","import React, { useEffect, useState } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\n\nexport const Navbar = () => {\n const navigate = useNavigate();\n const [active_nav_tab, setactive_nav_tab] = useState(\"request-pickup\");\n useEffect(() => {\n setactive_nav_tab(window.location.pathname.slice(1));\n }, [window.location.pathname])\n\n\n return (\n {\n document.getElementById(\"navbar\").classList.toggle(\"active\");\n }}\n >\n
\n
\n
\n
\n
\n \n // document.getElementById(\"navbar\").classList.toggle(\"active\")\n // }\n id=\"menu_items\"\n >\n {/*
*/}\n
\n {\n navigate(\"/request-pickup\");\n setactive_nav_tab(\"request-pickup\");\n window.location.reload();\n }}\n >\n Request Pickup\n
\n {\n navigate(\"/my-orders\");\n setactive_nav_tab(\"my-orders\");\n window.location.reload();\n }}\n >\n My Orders\n
\n {\n navigate(\"/profile\");\n setactive_nav_tab(\"profile\");\n window.location.reload();\n }}\n >\n Profile\n \n {\n navigate(\"/pricelist\");\n setactive_nav_tab(\"pricelist\");\n }}\n >\n Pricelist\n \n {\n navigate(\"/FAQ\");\n setactive_nav_tab(\"FAQ\");\n }}\n >\n FAQ\n \n {/* {\n navigate(\"/\");\n }}\n >\n HIW\n */}\n {/* {\n navigate(\"/login\");\n }}\n >\n Logout\n */}\n \n \n \n );\n};\n","import React, { useEffect, useReducer } from \"react\";\nimport { useSelector } from \"react-redux\";\n// import logo from \"../../img/logo.svg\";\nimport logo from \"../../img/logo.png\";\nimport { Navbar } from \"./Navbar\";\nimport { useNavigate } from \"react-router-dom\";\n\nexport const Juliette = ({ juliette_bg, menu }) => {\n const store_data = useSelector((store) => store);\n // console.log('jc_store_data', menu);\n const navigate = useNavigate();\n // useEffect(() => {\n // // console.log(store_data);\n // }, [store_data]);\n\n return (\n
\n {menu &&
}\n {\n if (!menu) return;\n navigate(\"/request-pickup\")\n }} />\n {menu && }\n
\n );\n};\n","var _path, _path2, _path3, _path4, _path5;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _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 _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 * as React from \"react\";\n\nfunction SvgPasswordNotShown(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 17,\n height: 17,\n viewBox: \"0 0 17 17\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14.3438 14.8749C14.274 14.875 14.2049 14.8613 14.1404 14.8346C14.076 14.8079 14.0175 14.7686 13.9682 14.7192L2.28075 3.03168C2.18533 2.93124 2.13291 2.7975 2.13469 2.65897C2.13646 2.52044 2.19228 2.38808 2.29024 2.29012C2.38821 2.19216 2.52056 2.13634 2.65909 2.13457C2.79762 2.13279 2.93136 2.1852 3.0318 2.28063L14.7193 13.9681C14.7935 14.0424 14.8441 14.1371 14.8646 14.2401C14.8851 14.3431 14.8745 14.4499 14.8344 14.5469C14.7942 14.644 14.7261 14.7269 14.6388 14.7853C14.5515 14.8437 14.4488 14.8749 14.3438 14.8749Z\",\n fill: \"white\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8.48876 12.7499C7.11117 12.7499 5.78271 12.3422 4.54025 11.538C3.40902 10.8076 2.39068 9.76133 1.59513 8.51655V8.51389C2.2572 7.56528 2.98236 6.76309 3.7613 6.11629C3.76835 6.1104 3.7741 6.10311 3.77818 6.09489C3.78227 6.08666 3.7846 6.07768 3.78504 6.0685C3.78548 6.05933 3.78401 6.05017 3.78072 6.04159C3.77743 6.03301 3.77241 6.02521 3.76595 6.01868L3.10454 5.35827C3.09279 5.34642 3.07701 5.33943 3.06033 5.33869C3.04366 5.33795 3.02732 5.34352 3.01456 5.35428C2.18714 6.05155 1.41915 6.90686 0.720892 7.90827C0.600758 8.08069 0.534595 8.28494 0.530812 8.49505C0.527028 8.70517 0.585794 8.91167 0.699642 9.08831C1.57654 10.4606 2.70511 11.6164 3.96284 12.4302C5.37896 13.3476 6.90298 13.8124 8.48876 13.8124C9.34473 13.8098 10.1946 13.6687 11.0056 13.3948C11.0163 13.3911 11.0259 13.3848 11.0334 13.3765C11.041 13.3681 11.0463 13.3579 11.0489 13.3469C11.0515 13.3359 11.0512 13.3244 11.0481 13.3136C11.045 13.3027 11.0391 13.2928 11.0311 13.2848L10.3146 12.5683C10.2981 12.5522 10.2777 12.5407 10.2554 12.5349C10.2331 12.5291 10.2097 12.5291 10.1874 12.5351C9.63252 12.678 9.06178 12.7502 8.48876 12.7499Z\",\n fill: \"white\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16.2974 7.92227C15.4188 6.56359 14.279 5.40945 13.0013 4.58436C11.5879 3.67061 10.0273 3.1875 8.48868 3.1875C7.64179 3.189 6.8012 3.33301 6.0021 3.6135C5.99145 3.6172 5.98193 3.62356 5.97441 3.63196C5.9669 3.64037 5.96165 3.65054 5.95916 3.66154C5.95667 3.67253 5.95702 3.68398 5.96017 3.6948C5.96333 3.70563 5.96919 3.71547 5.9772 3.7234L6.69273 4.43893C6.70938 4.4553 6.73006 4.46699 6.75268 4.47282C6.7753 4.47865 6.79906 4.47841 6.82155 4.47213C7.36508 4.3251 7.92562 4.25041 8.48868 4.25C9.83972 4.25 11.1642 4.66271 12.4249 5.47852C13.5774 6.22227 14.6077 7.2675 15.4052 8.5C15.4058 8.50076 15.4061 8.50169 15.4061 8.50266C15.4061 8.50362 15.4058 8.50455 15.4052 8.50531C14.8263 9.41671 14.1079 10.2316 13.2762 10.9202C13.2691 10.926 13.2633 10.9333 13.2592 10.9416C13.255 10.9498 13.2526 10.9588 13.2522 10.9681C13.2517 10.9773 13.2531 10.9865 13.2564 10.9951C13.2597 11.0037 13.2648 11.0116 13.2713 11.0181L13.932 11.6785C13.9437 11.6903 13.9594 11.6973 13.976 11.6981C13.9926 11.6989 14.0089 11.6935 14.0217 11.6829C14.9095 10.9353 15.678 10.0566 16.3007 9.07707C16.4108 8.90446 16.469 8.70389 16.4684 8.49918C16.4678 8.29447 16.4084 8.09424 16.2974 7.92227Z\",\n fill: \"white\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8.49988 5.3125C8.26113 5.31237 8.02311 5.3391 7.79033 5.39219C7.77857 5.39463 7.7677 5.40021 7.75886 5.40834C7.75003 5.41648 7.74356 5.42685 7.74016 5.43837C7.73675 5.44988 7.73653 5.46211 7.73952 5.47374C7.74251 5.48537 7.74859 5.49597 7.75713 5.50441L11.4955 9.24176C11.5039 9.25029 11.5145 9.25638 11.5261 9.25937C11.5378 9.26236 11.55 9.26214 11.5615 9.25873C11.573 9.25532 11.5834 9.24886 11.5915 9.24002C11.5997 9.23119 11.6053 9.22031 11.6077 9.20855C11.7141 8.74173 11.714 8.25693 11.6074 7.79015C11.5008 7.32337 11.2904 6.88661 10.9918 6.51231C10.6932 6.138 10.3141 5.83577 9.88274 5.62806C9.45134 5.42035 8.97868 5.31249 8.49988 5.3125Z\",\n fill: \"white\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5.50435 7.75823C5.49591 7.74969 5.48531 7.7436 5.47368 7.74062C5.46204 7.73763 5.44982 7.73785 5.43831 7.74125C5.42679 7.74466 5.41642 7.75113 5.40828 7.75996C5.40015 7.7688 5.39457 7.77967 5.39213 7.79143C5.27171 8.31748 5.28683 8.8655 5.43607 9.38411C5.5853 9.90272 5.86377 10.375 6.24536 10.7566C6.62696 11.1381 7.09919 11.4166 7.61781 11.5658C8.13642 11.7151 8.68443 11.7302 9.21049 11.6098C9.22224 11.6073 9.23312 11.6018 9.24196 11.5936C9.25079 11.5855 9.25726 11.5751 9.26066 11.5636C9.26407 11.5521 9.26429 11.5399 9.2613 11.5282C9.25831 11.5166 9.25223 11.506 9.24369 11.4976L5.50435 7.75823Z\",\n fill: \"white\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgPasswordNotShown);\nexport default __webpack_public_path__ + \"static/media/password_not_shown.6b078c12702a204e97c172d4df6143ef.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _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 _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 * as React from \"react\";\n\nfunction SvgPasswordShown(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 17,\n height: 17,\n viewBox: \"0 0 17 17\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8.2041 3.59375C5.70302 3.59375 3.13744 5.04132 1.1177 7.93647C1.06005 8.02002 1.02846 8.11878 1.02691 8.22027C1.02537 8.32177 1.05395 8.42144 1.10904 8.5067C2.6609 10.9359 5.19215 12.8356 8.2041 12.8356C11.1833 12.8356 13.7666 10.9301 15.3213 8.49547C15.3751 8.41188 15.4037 8.31458 15.4037 8.21517C15.4037 8.11576 15.3751 8.01845 15.3213 7.93486C13.763 5.52813 11.1609 3.59375 8.2041 3.59375Z\",\n stroke: \"white\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8.21501 10.7818C9.63283 10.7818 10.7822 9.63247 10.7822 8.21465C10.7822 6.79683 9.63283 5.64746 8.21501 5.64746C6.7972 5.64746 5.64783 6.79683 5.64783 8.21465C5.64783 9.63247 6.7972 10.7818 8.21501 10.7818Z\",\n stroke: \"white\",\n strokeMiterlimit: 10\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgPasswordShown);\nexport default __webpack_public_path__ + \"static/media/password_shown.b15d79de4a880f18a8fcc099f3492f20.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _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 _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 * as React from \"react\";\n\nfunction SvgFacebook(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 26,\n height: 26,\n viewBox: \"0 0 26 26\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M25.5 18.2375C25.5 22.7875 22.7875 25.5 18.2375 25.5H16.75C16.0625 25.5 15.5 24.9375 15.5 24.25V17.0375C15.5 16.7 15.775 16.4125 16.1125 16.4125L18.3125 16.375C18.4875 16.3625 18.6375 16.2375 18.675 16.0625L19.1125 13.675C19.15 13.45 18.975 13.2375 18.7375 13.2375L16.075 13.275C15.725 13.275 15.45 13 15.4375 12.6625L15.3875 9.6C15.3875 9.4 15.55 9.22501 15.7625 9.22501L18.7625 9.175C18.975 9.175 19.1375 9.01251 19.1375 8.80001L19.0875 5.79999C19.0875 5.58749 18.925 5.425 18.7125 5.425L15.3375 5.47501C13.2625 5.51251 11.6125 7.2125 11.65 9.2875L11.7125 12.725C11.725 13.075 11.45 13.35 11.1 13.3625L9.6 13.3875C9.3875 13.3875 9.22501 13.55 9.22501 13.7625L9.26251 16.1375C9.26251 16.35 9.425 16.5125 9.6375 16.5125L11.1375 16.4875C11.4875 16.4875 11.7625 16.7625 11.775 17.1L11.8875 24.225C11.9 24.925 11.3375 25.5 10.6375 25.5H7.7625C3.2125 25.5 0.5 22.7875 0.5 18.225V7.7625C0.5 3.2125 3.2125 0.5 7.7625 0.5H18.2375C22.7875 0.5 25.5 3.2125 25.5 7.7625V18.2375Z\",\n fill: \"white\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgFacebook);\nexport default __webpack_public_path__ + \"static/media/facebook.164c759f396684a6ec8ba12af8a3019e.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _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 _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 * as React from \"react\";\n\nfunction SvgLinkedin(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 28,\n height: 28,\n viewBox: \"0 0 28 28\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M25.0256 0.875H3.11797C1.9209 0.875 0.875 1.73633 0.875 2.91934V24.8756C0.875 26.065 1.9209 27.125 3.11797 27.125H25.0191C26.2227 27.125 27.125 26.058 27.125 24.8756V2.91934C27.132 1.73633 26.2227 0.875 25.0256 0.875ZM9.01191 22.7557H5.25137V11.0633H9.01191V22.7557ZM7.26172 9.28555H7.23477C6.03125 9.28555 5.25195 8.38965 5.25195 7.26816C5.25195 6.12617 6.05176 5.25137 7.28223 5.25137C8.5127 5.25137 9.26562 6.11973 9.29258 7.26816C9.29199 8.38965 8.51269 9.28555 7.26172 9.28555ZM22.7557 22.7557H18.9951V16.3625C18.9951 14.8309 18.4479 13.7844 17.0873 13.7844C16.0479 13.7844 15.4326 14.4875 15.159 15.1725C15.0564 15.4186 15.0289 15.7537 15.0289 16.0959V22.7557H11.2684V11.0633H15.0289V12.6904C15.5762 11.9111 16.4311 10.7896 18.4203 10.7896C20.8889 10.7896 22.7562 12.4168 22.7562 15.9248L22.7557 22.7557Z\",\n fill: \"white\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgLinkedin);\nexport default __webpack_public_path__ + \"static/media/linkedin.dbe59be41fe9055d03d8fbb27dbedc27.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _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 _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 * as React from \"react\";\n\nfunction SvgMicrosoft(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"24px\",\n height: \"24px\",\n viewBox: \"0 0 24 24\",\n role: \"img\",\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"#fff\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11.4 24H0V12.6h11.4V24zM24 24H12.6V12.6H24V24zM11.4 11.4H0V0h11.4v11.4zm12.6 0H12.6V0H24v11.4z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgMicrosoft);\nexport default __webpack_public_path__ + \"static/media/microsoft.d09e1b13028fc665b2d06e2e5136ad50.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _path3;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _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 _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 * as React from \"react\";\n\nfunction SvgGoogle(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 30,\n height: 30,\n viewBox: \"0 0 30 30\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15.25 7.3375C15.1625 7.3375 15.075 7.3375 15 7.35V2.51249C15.0875 2.49999 15.1625 2.5 15.25 2.5C18.075 2.5 20.5 3.3625 22.4875 4.825C23.1125 5.275 23.1625 6.1875 22.6125 6.725L20.875 8.42501C20.45 8.83751 19.8 8.9125 19.3125 8.575C18.375 7.925 17.0375 7.3375 15.25 7.3375Z\",\n fill: \"white\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M27.25 15.2746C27.25 19.0871 25.8875 22.2871 23.525 24.4746C21.4625 26.3871 18.625 27.4996 15.25 27.4996C15.1625 27.4996 15.0875 27.4996 15 27.4871V22.6496C15.0875 22.6621 15.1625 22.6621 15.25 22.6621C17.1125 22.6621 18.525 22.1496 19.5875 21.4121C21.25 20.2496 22 18.5121 22.1375 17.3621H16.5C15.8125 17.3621 15.25 16.7996 15.25 16.1121V13.9746C15.25 13.2871 15.8125 12.7246 16.5 12.7246H25.9375C26.575 12.7246 27.1125 13.1996 27.175 13.8371C27.225 14.2746 27.25 14.7371 27.25 15.2746Z\",\n fill: \"white\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n opacity: 0.4,\n d: \"M8.12402 12.5247C7.87402 13.2997 7.72402 14.1372 7.72402 14.9997C7.72402 15.8622 7.87402 16.6872 8.13652 17.4747C9.11152 20.4122 11.8115 22.5497 14.999 22.6497V27.4872C10.224 27.3997 6.11152 24.6247 4.09902 20.6122H4.08652C3.23652 18.9122 2.74902 17.0122 2.74902 14.9997C2.74902 12.9872 3.23652 11.0872 4.08652 9.38721C6.09902 5.37471 10.2115 2.59971 14.999 2.51221V7.34972C12.049 7.43722 9.53652 9.26221 8.38652 11.8497C8.28652 12.0747 8.19902 12.2997 8.12402 12.5247Z\",\n fill: \"white\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgGoogle);\nexport default __webpack_public_path__ + \"static/media/google.b40d3e9a28b21c9f338d45029a66eb5c.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _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 _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 * as React from \"react\";\n\nfunction SvgApple(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 30,\n height: 30,\n viewBox: \"0 0 30 30\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M23.8751 23.95C24.6126 22.825 24.8876 22.25 25.4501 20.9875C21.3001 19.4125 20.6376 13.5 24.7376 11.2375C23.4876 9.66249 21.7251 8.75 20.0626 8.75C18.8626 8.75 18.0376 9.06251 17.3001 9.35001C16.6751 9.58751 16.1126 9.8 15.4126 9.8C14.6626 9.8 14.0001 9.56251 13.3001 9.31251C12.5376 9.03751 11.7376 8.75 10.7376 8.75C8.87507 8.75 6.88758 9.8875 5.62508 11.8375C3.85008 14.5875 4.16258 19.7375 7.02508 24.1375C8.05008 25.7125 9.42508 27.475 11.2126 27.5C11.9626 27.5125 12.4501 27.2875 12.9876 27.05C13.6001 26.775 14.2626 26.475 15.4251 26.475C16.5876 26.4625 17.2376 26.775 17.8501 27.05C18.3751 27.2875 18.8501 27.5125 19.5876 27.5C21.4001 27.475 22.8501 25.525 23.8751 23.95Z\",\n fill: \"white\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M19.8005 2.5C20.0005 3.875 19.438 5.23751 18.7005 6.18751C17.913 7.21251 16.538 8.0125 15.213 7.9625C14.9755 6.6375 15.588 5.27499 16.338 4.36249C17.1755 3.36249 18.588 2.5875 19.8005 2.5Z\",\n fill: \"white\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgApple);\nexport default __webpack_public_path__ + \"static/media/apple.ddd149fab6187e27bfc3e1b2ab9631ef.svg\";\nexport { ForwardRef as ReactComponent };","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nexport default function _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n\n if (!it) {\n if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n\n var F = function F() {};\n\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = it.call(o);\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst stringToByteArray = function (str: string): number[] {\n // TODO(user): Use native implementations if/when available\n const out: number[] = [];\n let p = 0;\n for (let i = 0; i < str.length; i++) {\n let c = str.charCodeAt(i);\n if (c < 128) {\n out[p++] = c;\n } else if (c < 2048) {\n out[p++] = (c >> 6) | 192;\n out[p++] = (c & 63) | 128;\n } else if (\n (c & 0xfc00) === 0xd800 &&\n i + 1 < str.length &&\n (str.charCodeAt(i + 1) & 0xfc00) === 0xdc00\n ) {\n // Surrogate Pair\n c = 0x10000 + ((c & 0x03ff) << 10) + (str.charCodeAt(++i) & 0x03ff);\n out[p++] = (c >> 18) | 240;\n out[p++] = ((c >> 12) & 63) | 128;\n out[p++] = ((c >> 6) & 63) | 128;\n out[p++] = (c & 63) | 128;\n } else {\n out[p++] = (c >> 12) | 224;\n out[p++] = ((c >> 6) & 63) | 128;\n out[p++] = (c & 63) | 128;\n }\n }\n return out;\n};\n\n/**\n * Turns an array of numbers into the string given by the concatenation of the\n * characters to which the numbers correspond.\n * @param bytes Array of numbers representing characters.\n * @return Stringification of the array.\n */\nconst byteArrayToString = function (bytes: number[]): string {\n // TODO(user): Use native implementations if/when available\n const out: string[] = [];\n let pos = 0,\n c = 0;\n while (pos < bytes.length) {\n const c1 = bytes[pos++];\n if (c1 < 128) {\n out[c++] = String.fromCharCode(c1);\n } else if (c1 > 191 && c1 < 224) {\n const c2 = bytes[pos++];\n out[c++] = String.fromCharCode(((c1 & 31) << 6) | (c2 & 63));\n } else if (c1 > 239 && c1 < 365) {\n // Surrogate Pair\n const c2 = bytes[pos++];\n const c3 = bytes[pos++];\n const c4 = bytes[pos++];\n const u =\n (((c1 & 7) << 18) | ((c2 & 63) << 12) | ((c3 & 63) << 6) | (c4 & 63)) -\n 0x10000;\n out[c++] = String.fromCharCode(0xd800 + (u >> 10));\n out[c++] = String.fromCharCode(0xdc00 + (u & 1023));\n } else {\n const c2 = bytes[pos++];\n const c3 = bytes[pos++];\n out[c++] = String.fromCharCode(\n ((c1 & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63)\n );\n }\n }\n return out.join('');\n};\n\ninterface Base64 {\n byteToCharMap_: { [key: number]: string } | null;\n charToByteMap_: { [key: string]: number } | null;\n byteToCharMapWebSafe_: { [key: number]: string } | null;\n charToByteMapWebSafe_: { [key: string]: number } | null;\n ENCODED_VALS_BASE: string;\n readonly ENCODED_VALS: string;\n readonly ENCODED_VALS_WEBSAFE: string;\n HAS_NATIVE_SUPPORT: boolean;\n encodeByteArray(input: number[] | Uint8Array, webSafe?: boolean): string;\n encodeString(input: string, webSafe?: boolean): string;\n decodeString(input: string, webSafe: boolean): string;\n decodeStringToByteArray(input: string, webSafe: boolean): number[];\n init_(): void;\n}\n\n// We define it as an object literal instead of a class because a class compiled down to es5 can't\n// be treeshaked. https://github.com/rollup/rollup/issues/1691\n// Static lookup maps, lazily populated by init_()\nexport const base64: Base64 = {\n /**\n * Maps bytes to characters.\n */\n byteToCharMap_: null,\n\n /**\n * Maps characters to bytes.\n */\n charToByteMap_: null,\n\n /**\n * Maps bytes to websafe characters.\n * @private\n */\n byteToCharMapWebSafe_: null,\n\n /**\n * Maps websafe characters to bytes.\n * @private\n */\n charToByteMapWebSafe_: null,\n\n /**\n * Our default alphabet, shared between\n * ENCODED_VALS and ENCODED_VALS_WEBSAFE\n */\n ENCODED_VALS_BASE:\n 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' + 'abcdefghijklmnopqrstuvwxyz' + '0123456789',\n\n /**\n * Our default alphabet. Value 64 (=) is special; it means \"nothing.\"\n */\n get ENCODED_VALS() {\n return this.ENCODED_VALS_BASE + '+/=';\n },\n\n /**\n * Our websafe alphabet.\n */\n get ENCODED_VALS_WEBSAFE() {\n return this.ENCODED_VALS_BASE + '-_.';\n },\n\n /**\n * Whether this browser supports the atob and btoa functions. This extension\n * started at Mozilla but is now implemented by many browsers. We use the\n * ASSUME_* variables to avoid pulling in the full useragent detection library\n * but still allowing the standard per-browser compilations.\n *\n */\n HAS_NATIVE_SUPPORT: typeof atob === 'function',\n\n /**\n * Base64-encode an array of bytes.\n *\n * @param input An array of bytes (numbers with\n * value in [0, 255]) to encode.\n * @param webSafe Boolean indicating we should use the\n * alternative alphabet.\n * @return The base64 encoded string.\n */\n encodeByteArray(input: number[] | Uint8Array, webSafe?: boolean): string {\n if (!Array.isArray(input)) {\n throw Error('encodeByteArray takes an array as a parameter');\n }\n\n this.init_();\n\n const byteToCharMap = webSafe\n ? this.byteToCharMapWebSafe_!\n : this.byteToCharMap_!;\n\n const output = [];\n\n for (let i = 0; i < input.length; i += 3) {\n const byte1 = input[i];\n const haveByte2 = i + 1 < input.length;\n const byte2 = haveByte2 ? input[i + 1] : 0;\n const haveByte3 = i + 2 < input.length;\n const byte3 = haveByte3 ? input[i + 2] : 0;\n\n const outByte1 = byte1 >> 2;\n const outByte2 = ((byte1 & 0x03) << 4) | (byte2 >> 4);\n let outByte3 = ((byte2 & 0x0f) << 2) | (byte3 >> 6);\n let outByte4 = byte3 & 0x3f;\n\n if (!haveByte3) {\n outByte4 = 64;\n\n if (!haveByte2) {\n outByte3 = 64;\n }\n }\n\n output.push(\n byteToCharMap[outByte1],\n byteToCharMap[outByte2],\n byteToCharMap[outByte3],\n byteToCharMap[outByte4]\n );\n }\n\n return output.join('');\n },\n\n /**\n * Base64-encode a string.\n *\n * @param input A string to encode.\n * @param webSafe If true, we should use the\n * alternative alphabet.\n * @return The base64 encoded string.\n */\n encodeString(input: string, webSafe?: boolean): string {\n // Shortcut for Mozilla browsers that implement\n // a native base64 encoder in the form of \"btoa/atob\"\n if (this.HAS_NATIVE_SUPPORT && !webSafe) {\n return btoa(input);\n }\n return this.encodeByteArray(stringToByteArray(input), webSafe);\n },\n\n /**\n * Base64-decode a string.\n *\n * @param input to decode.\n * @param webSafe True if we should use the\n * alternative alphabet.\n * @return string representing the decoded value.\n */\n decodeString(input: string, webSafe: boolean): string {\n // Shortcut for Mozilla browsers that implement\n // a native base64 encoder in the form of \"btoa/atob\"\n if (this.HAS_NATIVE_SUPPORT && !webSafe) {\n return atob(input);\n }\n return byteArrayToString(this.decodeStringToByteArray(input, webSafe));\n },\n\n /**\n * Base64-decode a string.\n *\n * In base-64 decoding, groups of four characters are converted into three\n * bytes. If the encoder did not apply padding, the input length may not\n * be a multiple of 4.\n *\n * In this case, the last group will have fewer than 4 characters, and\n * padding will be inferred. If the group has one or two characters, it decodes\n * to one byte. If the group has three characters, it decodes to two bytes.\n *\n * @param input Input to decode.\n * @param webSafe True if we should use the web-safe alphabet.\n * @return bytes representing the decoded value.\n */\n decodeStringToByteArray(input: string, webSafe: boolean): number[] {\n this.init_();\n\n const charToByteMap = webSafe\n ? this.charToByteMapWebSafe_!\n : this.charToByteMap_!;\n\n const output: number[] = [];\n\n for (let i = 0; i < input.length; ) {\n const byte1 = charToByteMap[input.charAt(i++)];\n\n const haveByte2 = i < input.length;\n const byte2 = haveByte2 ? charToByteMap[input.charAt(i)] : 0;\n ++i;\n\n const haveByte3 = i < input.length;\n const byte3 = haveByte3 ? charToByteMap[input.charAt(i)] : 64;\n ++i;\n\n const haveByte4 = i < input.length;\n const byte4 = haveByte4 ? charToByteMap[input.charAt(i)] : 64;\n ++i;\n\n if (byte1 == null || byte2 == null || byte3 == null || byte4 == null) {\n throw Error();\n }\n\n const outByte1 = (byte1 << 2) | (byte2 >> 4);\n output.push(outByte1);\n\n if (byte3 !== 64) {\n const outByte2 = ((byte2 << 4) & 0xf0) | (byte3 >> 2);\n output.push(outByte2);\n\n if (byte4 !== 64) {\n const outByte3 = ((byte3 << 6) & 0xc0) | byte4;\n output.push(outByte3);\n }\n }\n }\n\n return output;\n },\n\n /**\n * Lazy static initialization function. Called before\n * accessing any of the static map variables.\n * @private\n */\n init_() {\n if (!this.byteToCharMap_) {\n this.byteToCharMap_ = {};\n this.charToByteMap_ = {};\n this.byteToCharMapWebSafe_ = {};\n this.charToByteMapWebSafe_ = {};\n\n // We want quick mappings back and forth, so we precompute two maps.\n for (let i = 0; i < this.ENCODED_VALS.length; i++) {\n this.byteToCharMap_[i] = this.ENCODED_VALS.charAt(i);\n this.charToByteMap_[this.byteToCharMap_[i]] = i;\n this.byteToCharMapWebSafe_[i] = this.ENCODED_VALS_WEBSAFE.charAt(i);\n this.charToByteMapWebSafe_[this.byteToCharMapWebSafe_[i]] = i;\n\n // Be forgiving when decoding and correctly decode both encodings.\n if (i >= this.ENCODED_VALS_BASE.length) {\n this.charToByteMap_[this.ENCODED_VALS_WEBSAFE.charAt(i)] = i;\n this.charToByteMapWebSafe_[this.ENCODED_VALS.charAt(i)] = i;\n }\n }\n }\n }\n};\n\n/**\n * URL-safe base64 encoding\n */\nexport const base64Encode = function (str: string): string {\n const utf8Bytes = stringToByteArray(str);\n return base64.encodeByteArray(utf8Bytes, true);\n};\n\n/**\n * URL-safe base64 encoding (without \".\" padding in the end).\n * e.g. Used in JSON Web Token (JWT) parts.\n */\nexport const base64urlEncodeWithoutPadding = function (str: string): string {\n // Use base64url encoding and remove padding in the end (dot characters).\n return base64Encode(str).replace(/\\./g, '');\n};\n\n/**\n * URL-safe base64 decoding\n *\n * NOTE: DO NOT use the global atob() function - it does NOT support the\n * base64Url variant encoding.\n *\n * @param str To be decoded\n * @return Decoded result, if possible\n */\nexport const base64Decode = function (str: string): string | null {\n try {\n return base64.decodeString(str, true);\n } catch (e) {\n console.error('base64Decode failed: ', e);\n }\n return null;\n};\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport class Deferred {\n promise: Promise;\n reject: (value?: unknown) => void = () => {};\n resolve: (value?: unknown) => void = () => {};\n constructor() {\n this.promise = new Promise((resolve, reject) => {\n this.resolve = resolve as (value?: unknown) => void;\n this.reject = reject as (value?: unknown) => void;\n });\n }\n\n /**\n * Our API internals are not promiseified and cannot because our callback APIs have subtle expectations around\n * invoking promises inline, which Promises are forbidden to do. This method accepts an optional node-style callback\n * and returns a node-style callback which will resolve or reject the Deferred's promise.\n */\n wrapCallback(\n callback?: (error?: unknown, value?: unknown) => void\n ): (error: unknown, value?: unknown) => void {\n return (error, value?) => {\n if (error) {\n this.reject(error);\n } else {\n this.resolve(value);\n }\n if (typeof callback === 'function') {\n // Attaching noop handler just in case developer wasn't expecting\n // promises\n this.promise.catch(() => {});\n\n // Some of our callbacks don't expect a value and our own tests\n // assert that the parameter length is 1\n if (callback.length === 1) {\n callback(error);\n } else {\n callback(error, value);\n }\n }\n };\n }\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CONSTANTS } from './constants';\n\n/**\n * Returns navigator.userAgent string or '' if it's not defined.\n * @return user agent string\n */\nexport function getUA(): string {\n if (\n typeof navigator !== 'undefined' &&\n typeof navigator['userAgent'] === 'string'\n ) {\n return navigator['userAgent'];\n } else {\n return '';\n }\n}\n\n/**\n * Detect Cordova / PhoneGap / Ionic frameworks on a mobile device.\n *\n * Deliberately does not rely on checking `file://` URLs (as this fails PhoneGap\n * in the Ripple emulator) nor Cordova `onDeviceReady`, which would normally\n * wait for a callback.\n */\nexport function isMobileCordova(): boolean {\n return (\n typeof window !== 'undefined' &&\n // @ts-ignore Setting up an broadly applicable index signature for Window\n // just to deal with this case would probably be a bad idea.\n !!(window['cordova'] || window['phonegap'] || window['PhoneGap']) &&\n /ios|iphone|ipod|ipad|android|blackberry|iemobile/i.test(getUA())\n );\n}\n\n/**\n * Detect Node.js.\n *\n * @return true if Node.js environment is detected.\n */\n// Node detection logic from: https://github.com/iliakan/detect-node/\nexport function isNode(): boolean {\n try {\n return (\n Object.prototype.toString.call(global.process) === '[object process]'\n );\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Detect Browser Environment\n */\nexport function isBrowser(): boolean {\n return typeof self === 'object' && self.self === self;\n}\n\n/**\n * Detect browser extensions (Chrome and Firefox at least).\n */\ninterface BrowserRuntime {\n id?: unknown;\n}\ndeclare const chrome: { runtime?: BrowserRuntime };\ndeclare const browser: { runtime?: BrowserRuntime };\nexport function isBrowserExtension(): boolean {\n const runtime =\n typeof chrome === 'object'\n ? chrome.runtime\n : typeof browser === 'object'\n ? browser.runtime\n : undefined;\n return typeof runtime === 'object' && runtime.id !== undefined;\n}\n\n/**\n * Detect React Native.\n *\n * @return true if ReactNative environment is detected.\n */\nexport function isReactNative(): boolean {\n return (\n typeof navigator === 'object' && navigator['product'] === 'ReactNative'\n );\n}\n\n/** Detects Electron apps. */\nexport function isElectron(): boolean {\n return getUA().indexOf('Electron/') >= 0;\n}\n\n/** Detects Internet Explorer. */\nexport function isIE(): boolean {\n const ua = getUA();\n return ua.indexOf('MSIE ') >= 0 || ua.indexOf('Trident/') >= 0;\n}\n\n/** Detects Universal Windows Platform apps. */\nexport function isUWP(): boolean {\n return getUA().indexOf('MSAppHost/') >= 0;\n}\n\n/**\n * Detect whether the current SDK build is the Node version.\n *\n * @return true if it's the Node SDK build.\n */\nexport function isNodeSdk(): boolean {\n return CONSTANTS.NODE_CLIENT === true || CONSTANTS.NODE_ADMIN === true;\n}\n\n/** Returns true if we are running in Safari. */\nexport function isSafari(): boolean {\n return (\n !isNode() &&\n navigator.userAgent.includes('Safari') &&\n !navigator.userAgent.includes('Chrome')\n );\n}\n\n/**\n * This method checks if indexedDB is supported by current browser/service worker context\n * @return true if indexedDB is supported by current browser/service worker context\n */\nexport function isIndexedDBAvailable(): boolean {\n return typeof indexedDB === 'object';\n}\n\n/**\n * This method validates browser/sw context for indexedDB by opening a dummy indexedDB database and reject\n * if errors occur during the database open operation.\n *\n * @throws exception if current browser/sw context can't run idb.open (ex: Safari iframe, Firefox\n * private browsing)\n */\nexport function validateIndexedDBOpenable(): Promise {\n return new Promise((resolve, reject) => {\n try {\n let preExist: boolean = true;\n const DB_CHECK_NAME =\n 'validate-browser-context-for-indexeddb-analytics-module';\n const request = self.indexedDB.open(DB_CHECK_NAME);\n request.onsuccess = () => {\n request.result.close();\n // delete database only when it doesn't pre-exist\n if (!preExist) {\n self.indexedDB.deleteDatabase(DB_CHECK_NAME);\n }\n resolve(true);\n };\n request.onupgradeneeded = () => {\n preExist = false;\n };\n\n request.onerror = () => {\n reject(request.error?.message || '');\n };\n } catch (error) {\n reject(error);\n }\n });\n}\n\n/**\n *\n * This method checks whether cookie is enabled within current browser\n * @return true if cookie is enabled within current browser\n */\nexport function areCookiesEnabled(): boolean {\n if (typeof navigator === 'undefined' || !navigator.cookieEnabled) {\n return false;\n }\n return true;\n}\n\n/**\n * Polyfill for `globalThis` object.\n * @returns the `globalThis` object for the given environment.\n */\nexport function getGlobal(): typeof globalThis {\n if (typeof self !== 'undefined') {\n return self;\n }\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n throw new Error('Unable to locate global object.');\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @fileoverview Standardized Firebase Error.\n *\n * Usage:\n *\n * // Typescript string literals for type-safe codes\n * type Err =\n * 'unknown' |\n * 'object-not-found'\n * ;\n *\n * // Closure enum for type-safe error codes\n * // at-enum {string}\n * var Err = {\n * UNKNOWN: 'unknown',\n * OBJECT_NOT_FOUND: 'object-not-found',\n * }\n *\n * let errors: Map = {\n * 'generic-error': \"Unknown error\",\n * 'file-not-found': \"Could not find file: {$file}\",\n * };\n *\n * // Type-safe function - must pass a valid error code as param.\n * let error = new ErrorFactory('service', 'Service', errors);\n *\n * ...\n * throw error.create(Err.GENERIC);\n * ...\n * throw error.create(Err.FILE_NOT_FOUND, {'file': fileName});\n * ...\n * // Service: Could not file file: foo.txt (service/file-not-found).\n *\n * catch (e) {\n * assert(e.message === \"Could not find file: foo.txt.\");\n * if (e.code === 'service/file-not-found') {\n * console.log(\"Could not read file: \" + e['file']);\n * }\n * }\n */\n\nexport type ErrorMap = {\n readonly [K in ErrorCode]: string;\n};\n\nconst ERROR_NAME = 'FirebaseError';\n\nexport interface StringLike {\n toString(): string;\n}\n\nexport interface ErrorData {\n [key: string]: unknown;\n}\n\n// Based on code from:\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Custom_Error_Types\nexport class FirebaseError extends Error {\n /** The custom name for all FirebaseErrors. */\n readonly name: string = ERROR_NAME;\n\n constructor(\n /** The error code for this error. */\n readonly code: string,\n message: string,\n /** Custom data for this error. */\n public customData?: Record\n ) {\n super(message);\n\n // Fix For ES5\n // https://github.com/Microsoft/TypeScript-wiki/blob/master/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work\n Object.setPrototypeOf(this, FirebaseError.prototype);\n\n // Maintains proper stack trace for where our error was thrown.\n // Only available on V8.\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, ErrorFactory.prototype.create);\n }\n }\n}\n\nexport class ErrorFactory<\n ErrorCode extends string,\n ErrorParams extends { readonly [K in ErrorCode]?: ErrorData } = {}\n> {\n constructor(\n private readonly service: string,\n private readonly serviceName: string,\n private readonly errors: ErrorMap\n ) {}\n\n create(\n code: K,\n ...data: K extends keyof ErrorParams ? [ErrorParams[K]] : []\n ): FirebaseError {\n const customData = (data[0] as ErrorData) || {};\n const fullCode = `${this.service}/${code}`;\n const template = this.errors[code];\n\n const message = template ? replaceTemplate(template, customData) : 'Error';\n // Service Name: Error message (service/code).\n const fullMessage = `${this.serviceName}: ${message} (${fullCode}).`;\n\n const error = new FirebaseError(fullCode, fullMessage, customData);\n\n return error;\n }\n}\n\nfunction replaceTemplate(template: string, data: ErrorData): string {\n return template.replace(PATTERN, (_, key) => {\n const value = data[key];\n return value != null ? String(value) : `<${key}?>`;\n });\n}\n\nconst PATTERN = /\\{\\$([^}]+)}/g;\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport function contains(obj: T, key: string): boolean {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nexport function safeGet(\n obj: T,\n key: K\n): T[K] | undefined {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n return obj[key];\n } else {\n return undefined;\n }\n}\n\nexport function isEmpty(obj: object): obj is {} {\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n return false;\n }\n }\n return true;\n}\n\nexport function map(\n obj: { [key in K]: V },\n fn: (value: V, key: K, obj: { [key in K]: V }) => U,\n contextObj?: unknown\n): { [key in K]: U } {\n const res: Partial<{ [key in K]: U }> = {};\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n res[key] = fn.call(contextObj, obj[key], key, obj);\n }\n }\n return res as { [key in K]: U };\n}\n\n/**\n * Deep equal two objects. Support Arrays and Objects.\n */\nexport function deepEqual(a: object, b: object): boolean {\n if (a === b) {\n return true;\n }\n\n const aKeys = Object.keys(a);\n const bKeys = Object.keys(b);\n for (const k of aKeys) {\n if (!bKeys.includes(k)) {\n return false;\n }\n\n const aProp = (a as Record)[k];\n const bProp = (b as Record)[k];\n if (isObject(aProp) && isObject(bProp)) {\n if (!deepEqual(aProp, bProp)) {\n return false;\n }\n } else if (aProp !== bProp) {\n return false;\n }\n }\n\n for (const k of bKeys) {\n if (!aKeys.includes(k)) {\n return false;\n }\n }\n return true;\n}\n\nfunction isObject(thing: unknown): thing is object {\n return thing !== null && typeof thing === 'object';\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Returns a querystring-formatted string (e.g. &arg=val&arg2=val2) from a\n * params object (e.g. {arg: 'val', arg2: 'val2'})\n * Note: You must prepend it with ? when adding it to a URL.\n */\nexport function querystring(querystringParams: {\n [key: string]: string | number;\n}): string {\n const params = [];\n for (const [key, value] of Object.entries(querystringParams)) {\n if (Array.isArray(value)) {\n value.forEach(arrayVal => {\n params.push(\n encodeURIComponent(key) + '=' + encodeURIComponent(arrayVal)\n );\n });\n } else {\n params.push(encodeURIComponent(key) + '=' + encodeURIComponent(value));\n }\n }\n return params.length ? '&' + params.join('&') : '';\n}\n\n/**\n * Decodes a querystring (e.g. ?arg=val&arg2=val2) into a params object\n * (e.g. {arg: 'val', arg2: 'val2'})\n */\nexport function querystringDecode(querystring: string): Record {\n const obj: Record = {};\n const tokens = querystring.replace(/^\\?/, '').split('&');\n\n tokens.forEach(token => {\n if (token) {\n const [key, value] = token.split('=');\n obj[decodeURIComponent(key)] = decodeURIComponent(value);\n }\n });\n return obj;\n}\n\n/**\n * Extract the query string part of a URL, including the leading question mark (if present).\n */\nexport function extractQuerystring(url: string): string {\n const queryStart = url.indexOf('?');\n if (!queryStart) {\n return '';\n }\n const fragmentStart = url.indexOf('#', queryStart);\n return url.substring(\n queryStart,\n fragmentStart > 0 ? fragmentStart : undefined\n );\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport type NextFn = (value: T) => void;\nexport type ErrorFn = (error: Error) => void;\nexport type CompleteFn = () => void;\n\nexport interface Observer {\n // Called once for each value in a stream of values.\n next: NextFn;\n\n // A stream terminates by a single call to EITHER error() or complete().\n error: ErrorFn;\n\n // No events will be sent to next() once complete() is called.\n complete: CompleteFn;\n}\n\nexport type PartialObserver = Partial>;\n\n// TODO: Support also Unsubscribe.unsubscribe?\nexport type Unsubscribe = () => void;\n\n/**\n * The Subscribe interface has two forms - passing the inline function\n * callbacks, or a object interface with callback properties.\n */\nexport interface Subscribe {\n (next?: NextFn, error?: ErrorFn, complete?: CompleteFn): Unsubscribe;\n (observer: PartialObserver): Unsubscribe;\n}\n\nexport interface Observable {\n // Subscribe method\n subscribe: Subscribe;\n}\n\nexport type Executor = (observer: Observer) => void;\n\n/**\n * Helper to make a Subscribe function (just like Promise helps make a\n * Thenable).\n *\n * @param executor Function which can make calls to a single Observer\n * as a proxy.\n * @param onNoObservers Callback when count of Observers goes to zero.\n */\nexport function createSubscribe(\n executor: Executor,\n onNoObservers?: Executor\n): Subscribe {\n const proxy = new ObserverProxy(executor, onNoObservers);\n return proxy.subscribe.bind(proxy);\n}\n\n/**\n * Implement fan-out for any number of Observers attached via a subscribe\n * function.\n */\nclass ObserverProxy implements Observer {\n private observers: Array> | undefined = [];\n private unsubscribes: Unsubscribe[] = [];\n private onNoObservers: Executor | undefined;\n private observerCount = 0;\n // Micro-task scheduling by calling task.then().\n private task = Promise.resolve();\n private finalized = false;\n private finalError?: Error;\n\n /**\n * @param executor Function which can make calls to a single Observer\n * as a proxy.\n * @param onNoObservers Callback when count of Observers goes to zero.\n */\n constructor(executor: Executor, onNoObservers?: Executor) {\n this.onNoObservers = onNoObservers;\n // Call the executor asynchronously so subscribers that are called\n // synchronously after the creation of the subscribe function\n // can still receive the very first value generated in the executor.\n this.task\n .then(() => {\n executor(this);\n })\n .catch(e => {\n this.error(e);\n });\n }\n\n next(value: T): void {\n this.forEachObserver((observer: Observer) => {\n observer.next(value);\n });\n }\n\n error(error: Error): void {\n this.forEachObserver((observer: Observer) => {\n observer.error(error);\n });\n this.close(error);\n }\n\n complete(): void {\n this.forEachObserver((observer: Observer) => {\n observer.complete();\n });\n this.close();\n }\n\n /**\n * Subscribe function that can be used to add an Observer to the fan-out list.\n *\n * - We require that no event is sent to a subscriber sychronously to their\n * call to subscribe().\n */\n subscribe(\n nextOrObserver?: NextFn | PartialObserver,\n error?: ErrorFn,\n complete?: CompleteFn\n ): Unsubscribe {\n let observer: Observer;\n\n if (\n nextOrObserver === undefined &&\n error === undefined &&\n complete === undefined\n ) {\n throw new Error('Missing Observer.');\n }\n\n // Assemble an Observer object when passed as callback functions.\n if (\n implementsAnyMethods(nextOrObserver as { [key: string]: unknown }, [\n 'next',\n 'error',\n 'complete'\n ])\n ) {\n observer = nextOrObserver as Observer;\n } else {\n observer = {\n next: nextOrObserver as NextFn,\n error,\n complete\n } as Observer;\n }\n\n if (observer.next === undefined) {\n observer.next = noop as NextFn;\n }\n if (observer.error === undefined) {\n observer.error = noop as ErrorFn;\n }\n if (observer.complete === undefined) {\n observer.complete = noop as CompleteFn;\n }\n\n const unsub = this.unsubscribeOne.bind(this, this.observers!.length);\n\n // Attempt to subscribe to a terminated Observable - we\n // just respond to the Observer with the final error or complete\n // event.\n if (this.finalized) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.task.then(() => {\n try {\n if (this.finalError) {\n observer.error(this.finalError);\n } else {\n observer.complete();\n }\n } catch (e) {\n // nothing\n }\n return;\n });\n }\n\n this.observers!.push(observer as Observer);\n\n return unsub;\n }\n\n // Unsubscribe is synchronous - we guarantee that no events are sent to\n // any unsubscribed Observer.\n private unsubscribeOne(i: number): void {\n if (this.observers === undefined || this.observers[i] === undefined) {\n return;\n }\n\n delete this.observers[i];\n\n this.observerCount -= 1;\n if (this.observerCount === 0 && this.onNoObservers !== undefined) {\n this.onNoObservers(this);\n }\n }\n\n private forEachObserver(fn: (observer: Observer) => void): void {\n if (this.finalized) {\n // Already closed by previous event....just eat the additional values.\n return;\n }\n\n // Since sendOne calls asynchronously - there is no chance that\n // this.observers will become undefined.\n for (let i = 0; i < this.observers!.length; i++) {\n this.sendOne(i, fn);\n }\n }\n\n // Call the Observer via one of it's callback function. We are careful to\n // confirm that the observe has not been unsubscribed since this asynchronous\n // function had been queued.\n private sendOne(i: number, fn: (observer: Observer) => void): void {\n // Execute the callback asynchronously\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.task.then(() => {\n if (this.observers !== undefined && this.observers[i] !== undefined) {\n try {\n fn(this.observers[i]);\n } catch (e) {\n // Ignore exceptions raised in Observers or missing methods of an\n // Observer.\n // Log error to console. b/31404806\n if (typeof console !== 'undefined' && console.error) {\n console.error(e);\n }\n }\n }\n });\n }\n\n private close(err?: Error): void {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n if (err !== undefined) {\n this.finalError = err;\n }\n // Proxy is no longer needed - garbage collect references\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.task.then(() => {\n this.observers = undefined;\n this.onNoObservers = undefined;\n });\n }\n}\n\n/** Turn synchronous function into one called asynchronously. */\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function async(fn: Function, onError?: ErrorFn): Function {\n return (...args: unknown[]) => {\n Promise.resolve(true)\n .then(() => {\n fn(...args);\n })\n .catch((error: Error) => {\n if (onError) {\n onError(error);\n }\n });\n };\n}\n\n/**\n * Return true if the object passed in implements any of the named methods.\n */\nfunction implementsAnyMethods(\n obj: { [key: string]: unknown },\n methods: string[]\n): boolean {\n if (typeof obj !== 'object' || obj === null) {\n return false;\n }\n\n for (const method of methods) {\n if (method in obj && typeof obj[method] === 'function') {\n return true;\n }\n }\n\n return false;\n}\n\nfunction noop(): void {\n // do nothing\n}\n","/**\n * @license\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport interface Compat {\n _delegate: T;\n}\n\nexport function getModularInstance(\n service: Compat | ExpService\n): ExpService {\n if (service && (service as Compat)._delegate) {\n return (service as Compat)._delegate;\n } else {\n return service as ExpService;\n }\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {\n InstantiationMode,\n InstanceFactory,\n ComponentType,\n Dictionary,\n Name,\n onInstanceCreatedCallback\n} from './types';\n\n/**\n * Component for service name T, e.g. `auth`, `auth-internal`\n */\nexport class Component {\n multipleInstances = false;\n /**\n * Properties to be added to the service namespace\n */\n serviceProps: Dictionary = {};\n\n instantiationMode = InstantiationMode.LAZY;\n\n onInstanceCreated: onInstanceCreatedCallback | null = null;\n\n /**\n *\n * @param name The public service name, e.g. app, auth, firestore, database\n * @param instanceFactory Service factory responsible for creating the public interface\n * @param type whether the service provided by the component is public or private\n */\n constructor(\n readonly name: T,\n readonly instanceFactory: InstanceFactory,\n readonly type: ComponentType\n ) {}\n\n setInstantiationMode(mode: InstantiationMode): this {\n this.instantiationMode = mode;\n return this;\n }\n\n setMultipleInstances(multipleInstances: boolean): this {\n this.multipleInstances = multipleInstances;\n return this;\n }\n\n setServiceProps(props: Dictionary): this {\n this.serviceProps = props;\n return this;\n }\n\n setInstanceCreatedCallback(callback: onInstanceCreatedCallback): this {\n this.onInstanceCreated = callback;\n return this;\n }\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport const DEFAULT_ENTRY_NAME = '[DEFAULT]';\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Deferred } from '@firebase/util';\nimport { ComponentContainer } from './component_container';\nimport { DEFAULT_ENTRY_NAME } from './constants';\nimport {\n InitializeOptions,\n InstantiationMode,\n Name,\n NameServiceMapping,\n OnInitCallBack\n} from './types';\nimport { Component } from './component';\n\n/**\n * Provider for instance for service name T, e.g. 'auth', 'auth-internal'\n * NameServiceMapping[T] is an alias for the type of the instance\n */\nexport class Provider {\n private component: Component | null = null;\n private readonly instances: Map = new Map();\n private readonly instancesDeferred: Map<\n string,\n Deferred\n > = new Map();\n private readonly instancesOptions: Map> =\n new Map();\n private onInitCallbacks: Map>> = new Map();\n\n constructor(\n private readonly name: T,\n private readonly container: ComponentContainer\n ) {}\n\n /**\n * @param identifier A provider can provide mulitple instances of a service\n * if this.component.multipleInstances is true.\n */\n get(identifier?: string): Promise {\n // if multipleInstances is not supported, use the default name\n const normalizedIdentifier = this.normalizeInstanceIdentifier(identifier);\n\n if (!this.instancesDeferred.has(normalizedIdentifier)) {\n const deferred = new Deferred();\n this.instancesDeferred.set(normalizedIdentifier, deferred);\n\n if (\n this.isInitialized(normalizedIdentifier) ||\n this.shouldAutoInitialize()\n ) {\n // initialize the service if it can be auto-initialized\n try {\n const instance = this.getOrInitializeService({\n instanceIdentifier: normalizedIdentifier\n });\n if (instance) {\n deferred.resolve(instance);\n }\n } catch (e) {\n // when the instance factory throws an exception during get(), it should not cause\n // a fatal error. We just return the unresolved promise in this case.\n }\n }\n }\n\n return this.instancesDeferred.get(normalizedIdentifier)!.promise;\n }\n\n /**\n *\n * @param options.identifier A provider can provide mulitple instances of a service\n * if this.component.multipleInstances is true.\n * @param options.optional If optional is false or not provided, the method throws an error when\n * the service is not immediately available.\n * If optional is true, the method returns null if the service is not immediately available.\n */\n getImmediate(options: {\n identifier?: string;\n optional: true;\n }): NameServiceMapping[T] | null;\n getImmediate(options?: {\n identifier?: string;\n optional?: false;\n }): NameServiceMapping[T];\n getImmediate(options?: {\n identifier?: string;\n optional?: boolean;\n }): NameServiceMapping[T] | null {\n // if multipleInstances is not supported, use the default name\n const normalizedIdentifier = this.normalizeInstanceIdentifier(\n options?.identifier\n );\n const optional = options?.optional ?? false;\n\n if (\n this.isInitialized(normalizedIdentifier) ||\n this.shouldAutoInitialize()\n ) {\n try {\n return this.getOrInitializeService({\n instanceIdentifier: normalizedIdentifier\n });\n } catch (e) {\n if (optional) {\n return null;\n } else {\n throw e;\n }\n }\n } else {\n // In case a component is not initialized and should/can not be auto-initialized at the moment, return null if the optional flag is set, or throw\n if (optional) {\n return null;\n } else {\n throw Error(`Service ${this.name} is not available`);\n }\n }\n }\n\n getComponent(): Component | null {\n return this.component;\n }\n\n setComponent(component: Component): void {\n if (component.name !== this.name) {\n throw Error(\n `Mismatching Component ${component.name} for Provider ${this.name}.`\n );\n }\n\n if (this.component) {\n throw Error(`Component for ${this.name} has already been provided`);\n }\n\n this.component = component;\n\n // return early without attempting to initialize the component if the component requires explicit initialization (calling `Provider.initialize()`)\n if (!this.shouldAutoInitialize()) {\n return;\n }\n\n // if the service is eager, initialize the default instance\n if (isComponentEager(component)) {\n try {\n this.getOrInitializeService({ instanceIdentifier: DEFAULT_ENTRY_NAME });\n } catch (e) {\n // when the instance factory for an eager Component throws an exception during the eager\n // initialization, it should not cause a fatal error.\n // TODO: Investigate if we need to make it configurable, because some component may want to cause\n // a fatal error in this case?\n }\n }\n\n // Create service instances for the pending promises and resolve them\n // NOTE: if this.multipleInstances is false, only the default instance will be created\n // and all promises with resolve with it regardless of the identifier.\n for (const [\n instanceIdentifier,\n instanceDeferred\n ] of this.instancesDeferred.entries()) {\n const normalizedIdentifier =\n this.normalizeInstanceIdentifier(instanceIdentifier);\n\n try {\n // `getOrInitializeService()` should always return a valid instance since a component is guaranteed. use ! to make typescript happy.\n const instance = this.getOrInitializeService({\n instanceIdentifier: normalizedIdentifier\n })!;\n instanceDeferred.resolve(instance);\n } catch (e) {\n // when the instance factory throws an exception, it should not cause\n // a fatal error. We just leave the promise unresolved.\n }\n }\n }\n\n clearInstance(identifier: string = DEFAULT_ENTRY_NAME): void {\n this.instancesDeferred.delete(identifier);\n this.instancesOptions.delete(identifier);\n this.instances.delete(identifier);\n }\n\n // app.delete() will call this method on every provider to delete the services\n // TODO: should we mark the provider as deleted?\n async delete(): Promise {\n const services = Array.from(this.instances.values());\n\n await Promise.all([\n ...services\n .filter(service => 'INTERNAL' in service) // legacy services\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .map(service => (service as any).INTERNAL!.delete()),\n ...services\n .filter(service => '_delete' in service) // modularized services\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .map(service => (service as any)._delete())\n ]);\n }\n\n isComponentSet(): boolean {\n return this.component != null;\n }\n\n isInitialized(identifier: string = DEFAULT_ENTRY_NAME): boolean {\n return this.instances.has(identifier);\n }\n\n getOptions(identifier: string = DEFAULT_ENTRY_NAME): Record {\n return this.instancesOptions.get(identifier) || {};\n }\n\n initialize(opts: InitializeOptions = {}): NameServiceMapping[T] {\n const { options = {} } = opts;\n const normalizedIdentifier = this.normalizeInstanceIdentifier(\n opts.instanceIdentifier\n );\n if (this.isInitialized(normalizedIdentifier)) {\n throw Error(\n `${this.name}(${normalizedIdentifier}) has already been initialized`\n );\n }\n\n if (!this.isComponentSet()) {\n throw Error(`Component ${this.name} has not been registered yet`);\n }\n\n const instance = this.getOrInitializeService({\n instanceIdentifier: normalizedIdentifier,\n options\n })!;\n\n // resolve any pending promise waiting for the service instance\n for (const [\n instanceIdentifier,\n instanceDeferred\n ] of this.instancesDeferred.entries()) {\n const normalizedDeferredIdentifier =\n this.normalizeInstanceIdentifier(instanceIdentifier);\n if (normalizedIdentifier === normalizedDeferredIdentifier) {\n instanceDeferred.resolve(instance);\n }\n }\n\n return instance;\n }\n\n /**\n *\n * @param callback - a function that will be invoked after the provider has been initialized by calling provider.initialize().\n * The function is invoked SYNCHRONOUSLY, so it should not execute any longrunning tasks in order to not block the program.\n *\n * @param identifier An optional instance identifier\n * @returns a function to unregister the callback\n */\n onInit(callback: OnInitCallBack, identifier?: string): () => void {\n const normalizedIdentifier = this.normalizeInstanceIdentifier(identifier);\n const existingCallbacks =\n this.onInitCallbacks.get(normalizedIdentifier) ??\n new Set>();\n existingCallbacks.add(callback);\n this.onInitCallbacks.set(normalizedIdentifier, existingCallbacks);\n\n const existingInstance = this.instances.get(normalizedIdentifier);\n if (existingInstance) {\n callback(existingInstance, normalizedIdentifier);\n }\n\n return () => {\n existingCallbacks.delete(callback);\n };\n }\n\n /**\n * Invoke onInit callbacks synchronously\n * @param instance the service instance`\n */\n private invokeOnInitCallbacks(\n instance: NameServiceMapping[T],\n identifier: string\n ): void {\n const callbacks = this.onInitCallbacks.get(identifier);\n if (!callbacks) {\n return;\n }\n for (const callback of callbacks) {\n try {\n callback(instance, identifier);\n } catch {\n // ignore errors in the onInit callback\n }\n }\n }\n\n private getOrInitializeService({\n instanceIdentifier,\n options = {}\n }: {\n instanceIdentifier: string;\n options?: Record;\n }): NameServiceMapping[T] | null {\n let instance = this.instances.get(instanceIdentifier);\n if (!instance && this.component) {\n instance = this.component.instanceFactory(this.container, {\n instanceIdentifier: normalizeIdentifierForFactory(instanceIdentifier),\n options\n });\n this.instances.set(instanceIdentifier, instance);\n this.instancesOptions.set(instanceIdentifier, options);\n\n /**\n * Invoke onInit listeners.\n * Note this.component.onInstanceCreated is different, which is used by the component creator,\n * while onInit listeners are registered by consumers of the provider.\n */\n this.invokeOnInitCallbacks(instance, instanceIdentifier);\n\n /**\n * Order is important\n * onInstanceCreated() should be called after this.instances.set(instanceIdentifier, instance); which\n * makes `isInitialized()` return true.\n */\n if (this.component.onInstanceCreated) {\n try {\n this.component.onInstanceCreated(\n this.container,\n instanceIdentifier,\n instance\n );\n } catch {\n // ignore errors in the onInstanceCreatedCallback\n }\n }\n }\n\n return instance || null;\n }\n\n private normalizeInstanceIdentifier(\n identifier: string = DEFAULT_ENTRY_NAME\n ): string {\n if (this.component) {\n return this.component.multipleInstances ? identifier : DEFAULT_ENTRY_NAME;\n } else {\n return identifier; // assume multiple instances are supported before the component is provided.\n }\n }\n\n private shouldAutoInitialize(): boolean {\n return (\n !!this.component &&\n this.component.instantiationMode !== InstantiationMode.EXPLICIT\n );\n }\n}\n\n// undefined should be passed to the service factory for the default instance\nfunction normalizeIdentifierForFactory(identifier: string): string | undefined {\n return identifier === DEFAULT_ENTRY_NAME ? undefined : identifier;\n}\n\nfunction isComponentEager(component: Component): boolean {\n return component.instantiationMode === InstantiationMode.EAGER;\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport type LogLevelString =\n | 'debug'\n | 'verbose'\n | 'info'\n | 'warn'\n | 'error'\n | 'silent';\n\nexport interface LogOptions {\n level: LogLevelString;\n}\n\nexport type LogCallback = (callbackParams: LogCallbackParams) => void;\n\nexport interface LogCallbackParams {\n level: LogLevelString;\n message: string;\n args: unknown[];\n type: string;\n}\n\n/**\n * A container for all of the Logger instances\n */\nexport const instances: Logger[] = [];\n\n/**\n * The JS SDK supports 5 log levels and also allows a user the ability to\n * silence the logs altogether.\n *\n * The order is a follows:\n * DEBUG < VERBOSE < INFO < WARN < ERROR\n *\n * All of the log types above the current log level will be captured (i.e. if\n * you set the log level to `INFO`, errors will still be logged, but `DEBUG` and\n * `VERBOSE` logs will not)\n */\nexport enum LogLevel {\n DEBUG,\n VERBOSE,\n INFO,\n WARN,\n ERROR,\n SILENT\n}\n\nconst levelStringToEnum: { [key in LogLevelString]: LogLevel } = {\n 'debug': LogLevel.DEBUG,\n 'verbose': LogLevel.VERBOSE,\n 'info': LogLevel.INFO,\n 'warn': LogLevel.WARN,\n 'error': LogLevel.ERROR,\n 'silent': LogLevel.SILENT\n};\n\n/**\n * The default log level\n */\nconst defaultLogLevel: LogLevel = LogLevel.INFO;\n\n/**\n * We allow users the ability to pass their own log handler. We will pass the\n * type of log, the current log level, and any other arguments passed (i.e. the\n * messages that the user wants to log) to this function.\n */\nexport type LogHandler = (\n loggerInstance: Logger,\n logType: LogLevel,\n ...args: unknown[]\n) => void;\n\n/**\n * By default, `console.debug` is not displayed in the developer console (in\n * chrome). To avoid forcing users to have to opt-in to these logs twice\n * (i.e. once for firebase, and once in the console), we are sending `DEBUG`\n * logs to the `console.log` function.\n */\nconst ConsoleMethod = {\n [LogLevel.DEBUG]: 'log',\n [LogLevel.VERBOSE]: 'log',\n [LogLevel.INFO]: 'info',\n [LogLevel.WARN]: 'warn',\n [LogLevel.ERROR]: 'error'\n};\n\n/**\n * The default log handler will forward DEBUG, VERBOSE, INFO, WARN, and ERROR\n * messages on to their corresponding console counterparts (if the log method\n * is supported by the current log level)\n */\nconst defaultLogHandler: LogHandler = (instance, logType, ...args): void => {\n if (logType < instance.logLevel) {\n return;\n }\n const now = new Date().toISOString();\n const method = ConsoleMethod[logType as keyof typeof ConsoleMethod];\n if (method) {\n console[method as 'log' | 'info' | 'warn' | 'error'](\n `[${now}] ${instance.name}:`,\n ...args\n );\n } else {\n throw new Error(\n `Attempted to log a message with an invalid logType (value: ${logType})`\n );\n }\n};\n\nexport class Logger {\n /**\n * Gives you an instance of a Logger to capture messages according to\n * Firebase's logging scheme.\n *\n * @param name The name that the logs will be associated with\n */\n constructor(public name: string) {\n /**\n * Capture the current instance for later use\n */\n instances.push(this);\n }\n\n /**\n * The log level of the given Logger instance.\n */\n private _logLevel = defaultLogLevel;\n\n get logLevel(): LogLevel {\n return this._logLevel;\n }\n\n set logLevel(val: LogLevel) {\n if (!(val in LogLevel)) {\n throw new TypeError(`Invalid value \"${val}\" assigned to \\`logLevel\\``);\n }\n this._logLevel = val;\n }\n\n // Workaround for setter/getter having to be the same type.\n setLogLevel(val: LogLevel | LogLevelString): void {\n this._logLevel = typeof val === 'string' ? levelStringToEnum[val] : val;\n }\n\n /**\n * The main (internal) log handler for the Logger instance.\n * Can be set to a new function in internal package code but not by user.\n */\n private _logHandler: LogHandler = defaultLogHandler;\n get logHandler(): LogHandler {\n return this._logHandler;\n }\n set logHandler(val: LogHandler) {\n if (typeof val !== 'function') {\n throw new TypeError('Value assigned to `logHandler` must be a function');\n }\n this._logHandler = val;\n }\n\n /**\n * The optional, additional, user-defined log handler for the Logger instance.\n */\n private _userLogHandler: LogHandler | null = null;\n get userLogHandler(): LogHandler | null {\n return this._userLogHandler;\n }\n set userLogHandler(val: LogHandler | null) {\n this._userLogHandler = val;\n }\n\n /**\n * The functions below are all based on the `console` interface\n */\n\n debug(...args: unknown[]): void {\n this._userLogHandler && this._userLogHandler(this, LogLevel.DEBUG, ...args);\n this._logHandler(this, LogLevel.DEBUG, ...args);\n }\n log(...args: unknown[]): void {\n this._userLogHandler &&\n this._userLogHandler(this, LogLevel.VERBOSE, ...args);\n this._logHandler(this, LogLevel.VERBOSE, ...args);\n }\n info(...args: unknown[]): void {\n this._userLogHandler && this._userLogHandler(this, LogLevel.INFO, ...args);\n this._logHandler(this, LogLevel.INFO, ...args);\n }\n warn(...args: unknown[]): void {\n this._userLogHandler && this._userLogHandler(this, LogLevel.WARN, ...args);\n this._logHandler(this, LogLevel.WARN, ...args);\n }\n error(...args: unknown[]): void {\n this._userLogHandler && this._userLogHandler(this, LogLevel.ERROR, ...args);\n this._logHandler(this, LogLevel.ERROR, ...args);\n }\n}\n\nexport function setLogLevel(level: LogLevelString | LogLevel): void {\n instances.forEach(inst => {\n inst.setLogLevel(level);\n });\n}\n\nexport function setUserLogHandler(\n logCallback: LogCallback | null,\n options?: LogOptions\n): void {\n for (const instance of instances) {\n let customLogLevel: LogLevel | null = null;\n if (options && options.level) {\n customLogLevel = levelStringToEnum[options.level];\n }\n if (logCallback === null) {\n instance.userLogHandler = null;\n } else {\n instance.userLogHandler = (\n instance: Logger,\n level: LogLevel,\n ...args: unknown[]\n ) => {\n const message = args\n .map(arg => {\n if (arg == null) {\n return null;\n } else if (typeof arg === 'string') {\n return arg;\n } else if (typeof arg === 'number' || typeof arg === 'boolean') {\n return arg.toString();\n } else if (arg instanceof Error) {\n return arg.message;\n } else {\n try {\n return JSON.stringify(arg);\n } catch (ignored) {\n return null;\n }\n }\n })\n .filter(arg => arg)\n .join(' ');\n if (level >= (customLogLevel ?? instance.logLevel)) {\n logCallback({\n level: LogLevel[level].toLowerCase() as LogLevelString,\n message,\n args,\n type: instance.name\n });\n }\n };\n }\n }\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Provider } from './provider';\nimport { Component } from './component';\nimport { Name } from './types';\n\n/**\n * ComponentContainer that provides Providers for service name T, e.g. `auth`, `auth-internal`\n */\nexport class ComponentContainer {\n private readonly providers = new Map>();\n\n constructor(private readonly name: string) {}\n\n /**\n *\n * @param component Component being added\n * @param overwrite When a component with the same name has already been registered,\n * if overwrite is true: overwrite the existing component with the new component and create a new\n * provider with the new component. It can be useful in tests where you want to use different mocks\n * for different tests.\n * if overwrite is false: throw an exception\n */\n addComponent(component: Component): void {\n const provider = this.getProvider(component.name);\n if (provider.isComponentSet()) {\n throw new Error(\n `Component ${component.name} has already been registered with ${this.name}`\n );\n }\n\n provider.setComponent(component);\n }\n\n addOrOverwriteComponent(component: Component): void {\n const provider = this.getProvider(component.name);\n if (provider.isComponentSet()) {\n // delete the existing provider from the container, so we can register the new component\n this.providers.delete(component.name);\n }\n\n this.addComponent(component);\n }\n\n /**\n * getProvider provides a type safe interface where it can only be called with a field name\n * present in NameServiceMapping interface.\n *\n * Firebase SDKs providing services should extend NameServiceMapping interface to register\n * themselves.\n */\n getProvider(name: T): Provider {\n if (this.providers.has(name)) {\n return this.providers.get(name) as unknown as Provider;\n }\n\n // create a Provider for a service that hasn't registered with Firebase\n const provider = new Provider(name, this);\n this.providers.set(name, provider as unknown as Provider);\n\n return provider as Provider;\n }\n\n getProviders(): Array> {\n return Array.from(this.providers.values());\n }\n}\n","const instanceOfAny = (object, constructors) => constructors.some((c) => object instanceof c);\n\nlet idbProxyableTypes;\nlet cursorAdvanceMethods;\n// This is a function to prevent it throwing up in node environments.\nfunction getIdbProxyableTypes() {\n return (idbProxyableTypes ||\n (idbProxyableTypes = [\n IDBDatabase,\n IDBObjectStore,\n IDBIndex,\n IDBCursor,\n IDBTransaction,\n ]));\n}\n// This is a function to prevent it throwing up in node environments.\nfunction getCursorAdvanceMethods() {\n return (cursorAdvanceMethods ||\n (cursorAdvanceMethods = [\n IDBCursor.prototype.advance,\n IDBCursor.prototype.continue,\n IDBCursor.prototype.continuePrimaryKey,\n ]));\n}\nconst cursorRequestMap = new WeakMap();\nconst transactionDoneMap = new WeakMap();\nconst transactionStoreNamesMap = new WeakMap();\nconst transformCache = new WeakMap();\nconst reverseTransformCache = new WeakMap();\nfunction promisifyRequest(request) {\n const promise = new Promise((resolve, reject) => {\n const unlisten = () => {\n request.removeEventListener('success', success);\n request.removeEventListener('error', error);\n };\n const success = () => {\n resolve(wrap(request.result));\n unlisten();\n };\n const error = () => {\n reject(request.error);\n unlisten();\n };\n request.addEventListener('success', success);\n request.addEventListener('error', error);\n });\n promise\n .then((value) => {\n // Since cursoring reuses the IDBRequest (*sigh*), we cache it for later retrieval\n // (see wrapFunction).\n if (value instanceof IDBCursor) {\n cursorRequestMap.set(value, request);\n }\n // Catching to avoid \"Uncaught Promise exceptions\"\n })\n .catch(() => { });\n // This mapping exists in reverseTransformCache but doesn't doesn't exist in transformCache. This\n // is because we create many promises from a single IDBRequest.\n reverseTransformCache.set(promise, request);\n return promise;\n}\nfunction cacheDonePromiseForTransaction(tx) {\n // Early bail if we've already created a done promise for this transaction.\n if (transactionDoneMap.has(tx))\n return;\n const done = new Promise((resolve, reject) => {\n const unlisten = () => {\n tx.removeEventListener('complete', complete);\n tx.removeEventListener('error', error);\n tx.removeEventListener('abort', error);\n };\n const complete = () => {\n resolve();\n unlisten();\n };\n const error = () => {\n reject(tx.error || new DOMException('AbortError', 'AbortError'));\n unlisten();\n };\n tx.addEventListener('complete', complete);\n tx.addEventListener('error', error);\n tx.addEventListener('abort', error);\n });\n // Cache it for later retrieval.\n transactionDoneMap.set(tx, done);\n}\nlet idbProxyTraps = {\n get(target, prop, receiver) {\n if (target instanceof IDBTransaction) {\n // Special handling for transaction.done.\n if (prop === 'done')\n return transactionDoneMap.get(target);\n // Polyfill for objectStoreNames because of Edge.\n if (prop === 'objectStoreNames') {\n return target.objectStoreNames || transactionStoreNamesMap.get(target);\n }\n // Make tx.store return the only store in the transaction, or undefined if there are many.\n if (prop === 'store') {\n return receiver.objectStoreNames[1]\n ? undefined\n : receiver.objectStore(receiver.objectStoreNames[0]);\n }\n }\n // Else transform whatever we get back.\n return wrap(target[prop]);\n },\n set(target, prop, value) {\n target[prop] = value;\n return true;\n },\n has(target, prop) {\n if (target instanceof IDBTransaction &&\n (prop === 'done' || prop === 'store')) {\n return true;\n }\n return prop in target;\n },\n};\nfunction replaceTraps(callback) {\n idbProxyTraps = callback(idbProxyTraps);\n}\nfunction wrapFunction(func) {\n // Due to expected object equality (which is enforced by the caching in `wrap`), we\n // only create one new func per func.\n // Edge doesn't support objectStoreNames (booo), so we polyfill it here.\n if (func === IDBDatabase.prototype.transaction &&\n !('objectStoreNames' in IDBTransaction.prototype)) {\n return function (storeNames, ...args) {\n const tx = func.call(unwrap(this), storeNames, ...args);\n transactionStoreNamesMap.set(tx, storeNames.sort ? storeNames.sort() : [storeNames]);\n return wrap(tx);\n };\n }\n // Cursor methods are special, as the behaviour is a little more different to standard IDB. In\n // IDB, you advance the cursor and wait for a new 'success' on the IDBRequest that gave you the\n // cursor. It's kinda like a promise that can resolve with many values. That doesn't make sense\n // with real promises, so each advance methods returns a new promise for the cursor object, or\n // undefined if the end of the cursor has been reached.\n if (getCursorAdvanceMethods().includes(func)) {\n return function (...args) {\n // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n // the original object.\n func.apply(unwrap(this), args);\n return wrap(cursorRequestMap.get(this));\n };\n }\n return function (...args) {\n // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n // the original object.\n return wrap(func.apply(unwrap(this), args));\n };\n}\nfunction transformCachableValue(value) {\n if (typeof value === 'function')\n return wrapFunction(value);\n // This doesn't return, it just creates a 'done' promise for the transaction,\n // which is later returned for transaction.done (see idbObjectHandler).\n if (value instanceof IDBTransaction)\n cacheDonePromiseForTransaction(value);\n if (instanceOfAny(value, getIdbProxyableTypes()))\n return new Proxy(value, idbProxyTraps);\n // Return the same value back if we're not going to transform it.\n return value;\n}\nfunction wrap(value) {\n // We sometimes generate multiple promises from a single IDBRequest (eg when cursoring), because\n // IDB is weird and a single IDBRequest can yield many responses, so these can't be cached.\n if (value instanceof IDBRequest)\n return promisifyRequest(value);\n // If we've already transformed this value before, reuse the transformed value.\n // This is faster, but it also provides object equality.\n if (transformCache.has(value))\n return transformCache.get(value);\n const newValue = transformCachableValue(value);\n // Not all types are transformed.\n // These may be primitive types, so they can't be WeakMap keys.\n if (newValue !== value) {\n transformCache.set(value, newValue);\n reverseTransformCache.set(newValue, value);\n }\n return newValue;\n}\nconst unwrap = (value) => reverseTransformCache.get(value);\n\nexport { reverseTransformCache as a, instanceOfAny as i, replaceTraps as r, unwrap as u, wrap as w };\n","import { w as wrap, r as replaceTraps } from './wrap-idb-value.js';\nexport { u as unwrap, w as wrap } from './wrap-idb-value.js';\n\n/**\n * Open a database.\n *\n * @param name Name of the database.\n * @param version Schema version.\n * @param callbacks Additional callbacks.\n */\nfunction openDB(name, version, { blocked, upgrade, blocking, terminated } = {}) {\n const request = indexedDB.open(name, version);\n const openPromise = wrap(request);\n if (upgrade) {\n request.addEventListener('upgradeneeded', (event) => {\n upgrade(wrap(request.result), event.oldVersion, event.newVersion, wrap(request.transaction));\n });\n }\n if (blocked)\n request.addEventListener('blocked', () => blocked());\n openPromise\n .then((db) => {\n if (terminated)\n db.addEventListener('close', () => terminated());\n if (blocking)\n db.addEventListener('versionchange', () => blocking());\n })\n .catch(() => { });\n return openPromise;\n}\n/**\n * Delete a database.\n *\n * @param name Name of the database.\n */\nfunction deleteDB(name, { blocked } = {}) {\n const request = indexedDB.deleteDatabase(name);\n if (blocked)\n request.addEventListener('blocked', () => blocked());\n return wrap(request).then(() => undefined);\n}\n\nconst readMethods = ['get', 'getKey', 'getAll', 'getAllKeys', 'count'];\nconst writeMethods = ['put', 'add', 'delete', 'clear'];\nconst cachedMethods = new Map();\nfunction getMethod(target, prop) {\n if (!(target instanceof IDBDatabase &&\n !(prop in target) &&\n typeof prop === 'string')) {\n return;\n }\n if (cachedMethods.get(prop))\n return cachedMethods.get(prop);\n const targetFuncName = prop.replace(/FromIndex$/, '');\n const useIndex = prop !== targetFuncName;\n const isWrite = writeMethods.includes(targetFuncName);\n if (\n // Bail if the target doesn't exist on the target. Eg, getAll isn't in Edge.\n !(targetFuncName in (useIndex ? IDBIndex : IDBObjectStore).prototype) ||\n !(isWrite || readMethods.includes(targetFuncName))) {\n return;\n }\n const method = async function (storeName, ...args) {\n // isWrite ? 'readwrite' : undefined gzipps better, but fails in Edge :(\n const tx = this.transaction(storeName, isWrite ? 'readwrite' : 'readonly');\n let target = tx.store;\n if (useIndex)\n target = target.index(args.shift());\n // Must reject if op rejects.\n // If it's a write operation, must reject if tx.done rejects.\n // Must reject with op rejection first.\n // Must resolve with op value.\n // Must handle both promises (no unhandled rejections)\n return (await Promise.all([\n target[targetFuncName](...args),\n isWrite && tx.done,\n ]))[0];\n };\n cachedMethods.set(prop, method);\n return method;\n}\nreplaceTraps((oldTraps) => ({\n ...oldTraps,\n get: (target, prop, receiver) => getMethod(target, prop) || oldTraps.get(target, prop, receiver),\n has: (target, prop) => !!getMethod(target, prop) || oldTraps.has(target, prop),\n}));\n\nexport { deleteDB, openDB };\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n ComponentContainer,\n ComponentType,\n Provider,\n Name\n} from '@firebase/component';\nimport { PlatformLoggerService, VersionService } from './types';\n\nexport class PlatformLoggerServiceImpl implements PlatformLoggerService {\n constructor(private readonly container: ComponentContainer) {}\n // In initial implementation, this will be called by installations on\n // auth token refresh, and installations will send this string.\n getPlatformInfoString(): string {\n const providers = this.container.getProviders();\n // Loop through providers and get library/version pairs from any that are\n // version components.\n return providers\n .map(provider => {\n if (isVersionServiceProvider(provider)) {\n const service = provider.getImmediate() as VersionService;\n return `${service.library}/${service.version}`;\n } else {\n return null;\n }\n })\n .filter(logString => logString)\n .join(' ');\n }\n}\n/**\n *\n * @param provider check if this provider provides a VersionService\n *\n * NOTE: Using Provider<'app-version'> is a hack to indicate that the provider\n * provides VersionService. The provider is not necessarily a 'app-version'\n * provider.\n */\nfunction isVersionServiceProvider(provider: Provider): boolean {\n const component = provider.getComponent();\n return component?.type === ComponentType.VERSION;\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Logger } from '@firebase/logger';\n\nexport const logger = new Logger('@firebase/app');\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { name as appName } from '../package.json';\nimport { name as appCompatName } from '../../app-compat/package.json';\nimport { name as analyticsCompatName } from '../../../packages/analytics-compat/package.json';\nimport { name as analyticsName } from '../../../packages/analytics/package.json';\nimport { name as appCheckCompatName } from '../../../packages/app-check-compat/package.json';\nimport { name as appCheckName } from '../../../packages/app-check/package.json';\nimport { name as authName } from '../../../packages/auth/package.json';\nimport { name as authCompatName } from '../../../packages/auth-compat/package.json';\nimport { name as databaseName } from '../../../packages/database/package.json';\nimport { name as databaseCompatName } from '../../../packages/database-compat/package.json';\nimport { name as functionsName } from '../../../packages/functions/package.json';\nimport { name as functionsCompatName } from '../../../packages/functions-compat/package.json';\nimport { name as installationsName } from '../../../packages/installations/package.json';\nimport { name as installationsCompatName } from '../../../packages/installations-compat/package.json';\nimport { name as messagingName } from '../../../packages/messaging/package.json';\nimport { name as messagingCompatName } from '../../../packages/messaging-compat/package.json';\nimport { name as performanceName } from '../../../packages/performance/package.json';\nimport { name as performanceCompatName } from '../../../packages/performance-compat/package.json';\nimport { name as remoteConfigName } from '../../../packages/remote-config/package.json';\nimport { name as remoteConfigCompatName } from '../../../packages/remote-config-compat/package.json';\nimport { name as storageName } from '../../../packages/storage/package.json';\nimport { name as storageCompatName } from '../../../packages/storage-compat/package.json';\nimport { name as firestoreName } from '../../../packages/firestore/package.json';\nimport { name as firestoreCompatName } from '../../../packages/firestore-compat/package.json';\nimport { name as packageName } from '../../../packages/firebase/package.json';\n\n/**\n * The default app name\n *\n * @internal\n */\nexport const DEFAULT_ENTRY_NAME = '[DEFAULT]';\n\nexport const PLATFORM_LOG_STRING = {\n [appName]: 'fire-core',\n [appCompatName]: 'fire-core-compat',\n [analyticsName]: 'fire-analytics',\n [analyticsCompatName]: 'fire-analytics-compat',\n [appCheckName]: 'fire-app-check',\n [appCheckCompatName]: 'fire-app-check-compat',\n [authName]: 'fire-auth',\n [authCompatName]: 'fire-auth-compat',\n [databaseName]: 'fire-rtdb',\n [databaseCompatName]: 'fire-rtdb-compat',\n [functionsName]: 'fire-fn',\n [functionsCompatName]: 'fire-fn-compat',\n [installationsName]: 'fire-iid',\n [installationsCompatName]: 'fire-iid-compat',\n [messagingName]: 'fire-fcm',\n [messagingCompatName]: 'fire-fcm-compat',\n [performanceName]: 'fire-perf',\n [performanceCompatName]: 'fire-perf-compat',\n [remoteConfigName]: 'fire-rc',\n [remoteConfigCompatName]: 'fire-rc-compat',\n [storageName]: 'fire-gcs',\n [storageCompatName]: 'fire-gcs-compat',\n [firestoreName]: 'fire-fst',\n [firestoreCompatName]: 'fire-fst-compat',\n 'fire-js': 'fire-js', // Platform identifier for JS SDK.\n [packageName]: 'fire-js-all'\n} as const;\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FirebaseApp } from './public-types';\nimport { Component, Provider, Name } from '@firebase/component';\nimport { logger } from './logger';\nimport { DEFAULT_ENTRY_NAME } from './constants';\nimport { FirebaseAppImpl } from './firebaseApp';\n\n/**\n * @internal\n */\nexport const _apps = new Map();\n\n/**\n * Registered components.\n *\n * @internal\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const _components = new Map>();\n\n/**\n * @param component - the component being added to this app's container\n *\n * @internal\n */\nexport function _addComponent(\n app: FirebaseApp,\n component: Component\n): void {\n try {\n (app as FirebaseAppImpl).container.addComponent(component);\n } catch (e) {\n logger.debug(\n `Component ${component.name} failed to register with FirebaseApp ${app.name}`,\n e\n );\n }\n}\n\n/**\n *\n * @internal\n */\nexport function _addOrOverwriteComponent(\n app: FirebaseApp,\n component: Component\n): void {\n (app as FirebaseAppImpl).container.addOrOverwriteComponent(component);\n}\n\n/**\n *\n * @param component - the component to register\n * @returns whether or not the component is registered successfully\n *\n * @internal\n */\nexport function _registerComponent(\n component: Component\n): boolean {\n const componentName = component.name;\n if (_components.has(componentName)) {\n logger.debug(\n `There were multiple attempts to register component ${componentName}.`\n );\n\n return false;\n }\n\n _components.set(componentName, component);\n\n // add the component to existing app instances\n for (const app of _apps.values()) {\n _addComponent(app as FirebaseAppImpl, component);\n }\n\n return true;\n}\n\n/**\n *\n * @param app - FirebaseApp instance\n * @param name - service name\n *\n * @returns the provider for the service with the matching name\n *\n * @internal\n */\nexport function _getProvider(\n app: FirebaseApp,\n name: T\n): Provider {\n const heartbeatController = (app as FirebaseAppImpl).container\n .getProvider('heartbeat')\n .getImmediate({ optional: true });\n if (heartbeatController) {\n void heartbeatController.triggerHeartbeat();\n }\n return (app as FirebaseAppImpl).container.getProvider(name);\n}\n\n/**\n *\n * @param app - FirebaseApp instance\n * @param name - service name\n * @param instanceIdentifier - service instance identifier in case the service supports multiple instances\n *\n * @internal\n */\nexport function _removeServiceInstance(\n app: FirebaseApp,\n name: T,\n instanceIdentifier: string = DEFAULT_ENTRY_NAME\n): void {\n _getProvider(app, name).clearInstance(instanceIdentifier);\n}\n\n/**\n * Test only\n *\n * @internal\n */\nexport function _clearComponents(): void {\n _components.clear();\n}\n\n/**\n * Exported in order to be used in app-compat package\n */\nexport { DEFAULT_ENTRY_NAME as _DEFAULT_ENTRY_NAME };\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ErrorFactory, ErrorMap } from '@firebase/util';\n\nexport const enum AppError {\n NO_APP = 'no-app',\n BAD_APP_NAME = 'bad-app-name',\n DUPLICATE_APP = 'duplicate-app',\n APP_DELETED = 'app-deleted',\n INVALID_APP_ARGUMENT = 'invalid-app-argument',\n INVALID_LOG_ARGUMENT = 'invalid-log-argument',\n STORAGE_OPEN = 'storage-open',\n STORAGE_GET = 'storage-get',\n STORAGE_WRITE = 'storage-set',\n STORAGE_DELETE = 'storage-delete'\n}\n\nconst ERRORS: ErrorMap = {\n [AppError.NO_APP]:\n \"No Firebase App '{$appName}' has been created - \" +\n 'call Firebase App.initializeApp()',\n [AppError.BAD_APP_NAME]: \"Illegal App name: '{$appName}\",\n [AppError.DUPLICATE_APP]:\n \"Firebase App named '{$appName}' already exists with different options or config\",\n [AppError.APP_DELETED]: \"Firebase App named '{$appName}' already deleted\",\n [AppError.INVALID_APP_ARGUMENT]:\n 'firebase.{$appName}() takes either no argument or a ' +\n 'Firebase App instance.',\n [AppError.INVALID_LOG_ARGUMENT]:\n 'First argument to `onLog` must be null or a function.',\n [AppError.STORAGE_OPEN]:\n 'Error thrown when opening storage. Original error: {$originalErrorMessage}.',\n [AppError.STORAGE_GET]:\n 'Error thrown when reading from storage. Original error: {$originalErrorMessage}.',\n [AppError.STORAGE_WRITE]:\n 'Error thrown when writing to storage. Original error: {$originalErrorMessage}.',\n [AppError.STORAGE_DELETE]:\n 'Error thrown when deleting from storage. Original error: {$originalErrorMessage}.'\n};\n\ninterface ErrorParams {\n [AppError.NO_APP]: { appName: string };\n [AppError.BAD_APP_NAME]: { appName: string };\n [AppError.DUPLICATE_APP]: { appName: string };\n [AppError.APP_DELETED]: { appName: string };\n [AppError.INVALID_APP_ARGUMENT]: { appName: string };\n [AppError.STORAGE_OPEN]: { originalErrorMessage?: string };\n [AppError.STORAGE_GET]: { originalErrorMessage?: string };\n [AppError.STORAGE_WRITE]: { originalErrorMessage?: string };\n [AppError.STORAGE_DELETE]: { originalErrorMessage?: string };\n}\n\nexport const ERROR_FACTORY = new ErrorFactory(\n 'app',\n 'Firebase',\n ERRORS\n);\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n FirebaseApp,\n FirebaseOptions,\n FirebaseAppSettings\n} from './public-types';\nimport {\n ComponentContainer,\n Component,\n ComponentType\n} from '@firebase/component';\nimport { ERROR_FACTORY, AppError } from './errors';\n\nexport class FirebaseAppImpl implements FirebaseApp {\n private readonly _options: FirebaseOptions;\n private readonly _name: string;\n /**\n * Original config values passed in as a constructor parameter.\n * It is only used to compare with another config object to support idempotent initializeApp().\n *\n * Updating automaticDataCollectionEnabled on the App instance will not change its value in _config.\n */\n private readonly _config: Required;\n private _automaticDataCollectionEnabled: boolean;\n private _isDeleted = false;\n private readonly _container: ComponentContainer;\n\n constructor(\n options: FirebaseOptions,\n config: Required,\n container: ComponentContainer\n ) {\n this._options = { ...options };\n this._config = { ...config };\n this._name = config.name;\n this._automaticDataCollectionEnabled =\n config.automaticDataCollectionEnabled;\n this._container = container;\n this.container.addComponent(\n new Component('app', () => this, ComponentType.PUBLIC)\n );\n }\n\n get automaticDataCollectionEnabled(): boolean {\n this.checkDestroyed();\n return this._automaticDataCollectionEnabled;\n }\n\n set automaticDataCollectionEnabled(val: boolean) {\n this.checkDestroyed();\n this._automaticDataCollectionEnabled = val;\n }\n\n get name(): string {\n this.checkDestroyed();\n return this._name;\n }\n\n get options(): FirebaseOptions {\n this.checkDestroyed();\n return this._options;\n }\n\n get config(): Required {\n this.checkDestroyed();\n return this._config;\n }\n\n get container(): ComponentContainer {\n return this._container;\n }\n\n get isDeleted(): boolean {\n return this._isDeleted;\n }\n\n set isDeleted(val: boolean) {\n this._isDeleted = val;\n }\n\n /**\n * This function will throw an Error if the App has already been deleted -\n * use before performing API actions on the App.\n */\n private checkDestroyed(): void {\n if (this.isDeleted) {\n throw ERROR_FACTORY.create(AppError.APP_DELETED, { appName: this._name });\n }\n }\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n FirebaseApp,\n FirebaseOptions,\n FirebaseAppSettings\n} from './public-types';\nimport { DEFAULT_ENTRY_NAME, PLATFORM_LOG_STRING } from './constants';\nimport { ERROR_FACTORY, AppError } from './errors';\nimport {\n ComponentContainer,\n Component,\n Name,\n ComponentType\n} from '@firebase/component';\nimport { version } from '../../firebase/package.json';\nimport { FirebaseAppImpl } from './firebaseApp';\nimport { _apps, _components, _registerComponent } from './internal';\nimport { logger } from './logger';\nimport {\n LogLevelString,\n setLogLevel as setLogLevelImpl,\n LogCallback,\n LogOptions,\n setUserLogHandler\n} from '@firebase/logger';\nimport { deepEqual } from '@firebase/util';\n\nexport { FirebaseError } from '@firebase/util';\n\n/**\n * The current SDK version.\n *\n * @public\n */\nexport const SDK_VERSION = version;\n\n/**\n * Creates and initializes a {@link @firebase/app#FirebaseApp} instance.\n *\n * See\n * {@link\n * https://firebase.google.com/docs/web/setup#add_firebase_to_your_app\n * | Add Firebase to your app} and\n * {@link\n * https://firebase.google.com/docs/web/setup#multiple-projects\n * | Initialize multiple projects} for detailed documentation.\n *\n * @example\n * ```javascript\n *\n * // Initialize default app\n * // Retrieve your own options values by adding a web app on\n * // https://console.firebase.google.com\n * initializeApp({\n * apiKey: \"AIza....\", // Auth / General Use\n * authDomain: \"YOUR_APP.firebaseapp.com\", // Auth with popup/redirect\n * databaseURL: \"https://YOUR_APP.firebaseio.com\", // Realtime Database\n * storageBucket: \"YOUR_APP.appspot.com\", // Storage\n * messagingSenderId: \"123456789\" // Cloud Messaging\n * });\n * ```\n *\n * @example\n * ```javascript\n *\n * // Initialize another app\n * const otherApp = initializeApp({\n * databaseURL: \"https://.firebaseio.com\",\n * storageBucket: \".appspot.com\"\n * }, \"otherApp\");\n * ```\n *\n * @param options - Options to configure the app's services.\n * @param name - Optional name of the app to initialize. If no name\n * is provided, the default is `\"[DEFAULT]\"`.\n *\n * @returns The initialized app.\n *\n * @public\n */\nexport function initializeApp(\n options: FirebaseOptions,\n name?: string\n): FirebaseApp;\n/**\n * Creates and initializes a FirebaseApp instance.\n *\n * @param options - Options to configure the app's services.\n * @param config - FirebaseApp Configuration\n *\n * @public\n */\nexport function initializeApp(\n options: FirebaseOptions,\n config?: FirebaseAppSettings\n): FirebaseApp;\nexport function initializeApp(\n options: FirebaseOptions,\n rawConfig = {}\n): FirebaseApp {\n if (typeof rawConfig !== 'object') {\n const name = rawConfig;\n rawConfig = { name };\n }\n\n const config: Required = {\n name: DEFAULT_ENTRY_NAME,\n automaticDataCollectionEnabled: false,\n ...rawConfig\n };\n const name = config.name;\n\n if (typeof name !== 'string' || !name) {\n throw ERROR_FACTORY.create(AppError.BAD_APP_NAME, {\n appName: String(name)\n });\n }\n\n const existingApp = _apps.get(name) as FirebaseAppImpl;\n if (existingApp) {\n // return the existing app if options and config deep equal the ones in the existing app.\n if (\n deepEqual(options, existingApp.options) &&\n deepEqual(config, existingApp.config)\n ) {\n return existingApp;\n } else {\n throw ERROR_FACTORY.create(AppError.DUPLICATE_APP, { appName: name });\n }\n }\n\n const container = new ComponentContainer(name);\n for (const component of _components.values()) {\n container.addComponent(component);\n }\n\n const newApp = new FirebaseAppImpl(options, config, container);\n\n _apps.set(name, newApp);\n\n return newApp;\n}\n\n/**\n * Retrieves a {@link @firebase/app#FirebaseApp} instance.\n *\n * When called with no arguments, the default app is returned. When an app name\n * is provided, the app corresponding to that name is returned.\n *\n * An exception is thrown if the app being retrieved has not yet been\n * initialized.\n *\n * @example\n * ```javascript\n * // Return the default app\n * const app = getApp();\n * ```\n *\n * @example\n * ```javascript\n * // Return a named app\n * const otherApp = getApp(\"otherApp\");\n * ```\n *\n * @param name - Optional name of the app to return. If no name is\n * provided, the default is `\"[DEFAULT]\"`.\n *\n * @returns The app corresponding to the provided app name.\n * If no app name is provided, the default app is returned.\n *\n * @public\n */\nexport function getApp(name: string = DEFAULT_ENTRY_NAME): FirebaseApp {\n const app = _apps.get(name);\n if (!app) {\n throw ERROR_FACTORY.create(AppError.NO_APP, { appName: name });\n }\n\n return app;\n}\n\n/**\n * A (read-only) array of all initialized apps.\n * @public\n */\nexport function getApps(): FirebaseApp[] {\n return Array.from(_apps.values());\n}\n\n/**\n * Renders this app unusable and frees the resources of all associated\n * services.\n *\n * @example\n * ```javascript\n * deleteApp(app)\n * .then(function() {\n * console.log(\"App deleted successfully\");\n * })\n * .catch(function(error) {\n * console.log(\"Error deleting app:\", error);\n * });\n * ```\n *\n * @public\n */\nexport async function deleteApp(app: FirebaseApp): Promise {\n const name = app.name;\n if (_apps.has(name)) {\n _apps.delete(name);\n await Promise.all(\n (app as FirebaseAppImpl).container\n .getProviders()\n .map(provider => provider.delete())\n );\n (app as FirebaseAppImpl).isDeleted = true;\n }\n}\n\n/**\n * Registers a library's name and version for platform logging purposes.\n * @param library - Name of 1p or 3p library (e.g. firestore, angularfire)\n * @param version - Current version of that library.\n * @param variant - Bundle variant, e.g., node, rn, etc.\n *\n * @public\n */\nexport function registerVersion(\n libraryKeyOrName: string,\n version: string,\n variant?: string\n): void {\n // TODO: We can use this check to whitelist strings when/if we set up\n // a good whitelist system.\n let library = PLATFORM_LOG_STRING[libraryKeyOrName] ?? libraryKeyOrName;\n if (variant) {\n library += `-${variant}`;\n }\n const libraryMismatch = library.match(/\\s|\\//);\n const versionMismatch = version.match(/\\s|\\//);\n if (libraryMismatch || versionMismatch) {\n const warning = [\n `Unable to register library \"${library}\" with version \"${version}\":`\n ];\n if (libraryMismatch) {\n warning.push(\n `library name \"${library}\" contains illegal characters (whitespace or \"/\")`\n );\n }\n if (libraryMismatch && versionMismatch) {\n warning.push('and');\n }\n if (versionMismatch) {\n warning.push(\n `version name \"${version}\" contains illegal characters (whitespace or \"/\")`\n );\n }\n logger.warn(warning.join(' '));\n return;\n }\n _registerComponent(\n new Component(\n `${library}-version` as Name,\n () => ({ library, version }),\n ComponentType.VERSION\n )\n );\n}\n\n/**\n * Sets log handler for all Firebase SDKs.\n * @param logCallback - An optional custom log handler that executes user code whenever\n * the Firebase SDK makes a logging call.\n *\n * @public\n */\nexport function onLog(\n logCallback: LogCallback | null,\n options?: LogOptions\n): void {\n if (logCallback !== null && typeof logCallback !== 'function') {\n throw ERROR_FACTORY.create(AppError.INVALID_LOG_ARGUMENT);\n }\n setUserLogHandler(logCallback, options);\n}\n\n/**\n * Sets log level for all Firebase SDKs.\n *\n * All of the log types above the current log level are captured (i.e. if\n * you set the log level to `info`, errors are logged, but `debug` and\n * `verbose` logs are not).\n *\n * @public\n */\nexport function setLogLevel(logLevel: LogLevelString): void {\n setLogLevelImpl(logLevel);\n}\n","/**\n * @license\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DBSchema, openDB, IDBPDatabase } from 'idb';\nimport { AppError, ERROR_FACTORY } from './errors';\nimport { FirebaseApp } from './public-types';\nimport { HeartbeatsInIndexedDB } from './types';\n\nconst DB_NAME = 'firebase-heartbeat-database';\nconst DB_VERSION = 1;\nconst STORE_NAME = 'firebase-heartbeat-store';\n\ninterface AppDB extends DBSchema {\n 'firebase-heartbeat-store': {\n key: string;\n value: HeartbeatsInIndexedDB;\n };\n}\n\nlet dbPromise: Promise> | null = null;\nfunction getDbPromise(): Promise> {\n if (!dbPromise) {\n dbPromise = openDB(DB_NAME, DB_VERSION, {\n upgrade: (db, oldVersion) => {\n // We don't use 'break' in this switch statement, the fall-through\n // behavior is what we want, because if there are multiple versions between\n // the old version and the current version, we want ALL the migrations\n // that correspond to those versions to run, not only the last one.\n // eslint-disable-next-line default-case\n switch (oldVersion) {\n case 0:\n db.createObjectStore(STORE_NAME);\n }\n }\n }).catch(e => {\n throw ERROR_FACTORY.create(AppError.STORAGE_OPEN, {\n originalErrorMessage: e.message\n });\n });\n }\n return dbPromise;\n}\n\nexport async function readHeartbeatsFromIndexedDB(\n app: FirebaseApp\n): Promise {\n try {\n const db = await getDbPromise();\n return db\n .transaction(STORE_NAME)\n .objectStore(STORE_NAME)\n .get(computeKey(app)) as Promise;\n } catch (e) {\n throw ERROR_FACTORY.create(AppError.STORAGE_GET, {\n originalErrorMessage: e.message\n });\n }\n}\n\nexport async function writeHeartbeatsToIndexedDB(\n app: FirebaseApp,\n heartbeatObject: HeartbeatsInIndexedDB\n): Promise {\n try {\n const db = await getDbPromise();\n const tx = db.transaction(STORE_NAME, 'readwrite');\n const objectStore = tx.objectStore(STORE_NAME);\n await objectStore.put(heartbeatObject, computeKey(app));\n return tx.done;\n } catch (e) {\n throw ERROR_FACTORY.create(AppError.STORAGE_WRITE, {\n originalErrorMessage: e.message\n });\n }\n}\n\nfunction computeKey(app: FirebaseApp): string {\n return `${app.name}!${app.options.appId}`;\n}\n","/**\n * @license\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ComponentContainer } from '@firebase/component';\nimport {\n base64urlEncodeWithoutPadding,\n isIndexedDBAvailable,\n validateIndexedDBOpenable\n} from '@firebase/util';\nimport {\n readHeartbeatsFromIndexedDB,\n writeHeartbeatsToIndexedDB\n} from './indexeddb';\nimport { FirebaseApp } from './public-types';\nimport {\n HeartbeatsByUserAgent,\n HeartbeatService,\n HeartbeatsInIndexedDB,\n HeartbeatStorage,\n SingleDateHeartbeat\n} from './types';\n\nconst MAX_HEADER_BYTES = 1024;\n// 30 days\nconst STORED_HEARTBEAT_RETENTION_MAX_MILLIS = 30 * 24 * 60 * 60 * 1000;\n\nexport class HeartbeatServiceImpl implements HeartbeatService {\n /**\n * The persistence layer for heartbeats\n * Leave public for easier testing.\n */\n _storage: HeartbeatStorageImpl;\n\n /**\n * In-memory cache for heartbeats, used by getHeartbeatsHeader() to generate\n * the header string.\n * Stores one record per date. This will be consolidated into the standard\n * format of one record per user agent string before being sent as a header.\n * Populated from indexedDB when the controller is instantiated and should\n * be kept in sync with indexedDB.\n * Leave public for easier testing.\n */\n _heartbeatsCache: HeartbeatsInIndexedDB | null = null;\n\n /**\n * the initialization promise for populating heartbeatCache.\n * If getHeartbeatsHeader() is called before the promise resolves\n * (hearbeatsCache == null), it should wait for this promise\n * Leave public for easier testing.\n */\n _heartbeatsCachePromise: Promise;\n constructor(private readonly container: ComponentContainer) {\n const app = this.container.getProvider('app').getImmediate();\n this._storage = new HeartbeatStorageImpl(app);\n this._heartbeatsCachePromise = this._storage.read().then(result => {\n this._heartbeatsCache = result;\n return result;\n });\n }\n\n /**\n * Called to report a heartbeat. The function will generate\n * a HeartbeatsByUserAgent object, update heartbeatsCache, and persist it\n * to IndexedDB.\n * Note that we only store one heartbeat per day. So if a heartbeat for today is\n * already logged, subsequent calls to this function in the same day will be ignored.\n */\n async triggerHeartbeat(): Promise {\n const platformLogger = this.container\n .getProvider('platform-logger')\n .getImmediate();\n\n // This is the \"Firebase user agent\" string from the platform logger\n // service, not the browser user agent.\n const agent = platformLogger.getPlatformInfoString();\n const date = getUTCDateString();\n if (this._heartbeatsCache === null) {\n this._heartbeatsCache = await this._heartbeatsCachePromise;\n }\n // Do not store a heartbeat if one is already stored for this day\n // or if a header has already been sent today.\n if (\n this._heartbeatsCache.lastSentHeartbeatDate === date ||\n this._heartbeatsCache.heartbeats.some(\n singleDateHeartbeat => singleDateHeartbeat.date === date\n )\n ) {\n return;\n } else {\n // There is no entry for this date. Create one.\n this._heartbeatsCache.heartbeats.push({ date, agent });\n }\n // Remove entries older than 30 days.\n this._heartbeatsCache.heartbeats = this._heartbeatsCache.heartbeats.filter(\n singleDateHeartbeat => {\n const hbTimestamp = new Date(singleDateHeartbeat.date).valueOf();\n const now = Date.now();\n return now - hbTimestamp <= STORED_HEARTBEAT_RETENTION_MAX_MILLIS;\n }\n );\n return this._storage.overwrite(this._heartbeatsCache);\n }\n\n /**\n * Returns a base64 encoded string which can be attached to the heartbeat-specific header directly.\n * It also clears all heartbeats from memory as well as in IndexedDB.\n *\n * NOTE: Consuming product SDKs should not send the header if this method\n * returns an empty string.\n */\n async getHeartbeatsHeader(): Promise {\n if (this._heartbeatsCache === null) {\n await this._heartbeatsCachePromise;\n }\n // If it's still null or the array is empty, there is no data to send.\n if (\n this._heartbeatsCache === null ||\n this._heartbeatsCache.heartbeats.length === 0\n ) {\n return '';\n }\n const date = getUTCDateString();\n // Extract as many heartbeats from the cache as will fit under the size limit.\n const { heartbeatsToSend, unsentEntries } = extractHeartbeatsForHeader(\n this._heartbeatsCache.heartbeats\n );\n const headerString = base64urlEncodeWithoutPadding(\n JSON.stringify({ version: 2, heartbeats: heartbeatsToSend })\n );\n // Store last sent date to prevent another being logged/sent for the same day.\n this._heartbeatsCache.lastSentHeartbeatDate = date;\n if (unsentEntries.length > 0) {\n // Store any unsent entries if they exist.\n this._heartbeatsCache.heartbeats = unsentEntries;\n // This seems more likely than emptying the array (below) to lead to some odd state\n // since the cache isn't empty and this will be called again on the next request,\n // and is probably safest if we await it.\n await this._storage.overwrite(this._heartbeatsCache);\n } else {\n this._heartbeatsCache.heartbeats = [];\n // Do not wait for this, to reduce latency.\n void this._storage.overwrite(this._heartbeatsCache);\n }\n return headerString;\n }\n}\n\nfunction getUTCDateString(): string {\n const today = new Date();\n // Returns date format 'YYYY-MM-DD'\n return today.toISOString().substring(0, 10);\n}\n\nexport function extractHeartbeatsForHeader(\n heartbeatsCache: SingleDateHeartbeat[],\n maxSize = MAX_HEADER_BYTES\n): {\n heartbeatsToSend: HeartbeatsByUserAgent[];\n unsentEntries: SingleDateHeartbeat[];\n} {\n // Heartbeats grouped by user agent in the standard format to be sent in\n // the header.\n const heartbeatsToSend: HeartbeatsByUserAgent[] = [];\n // Single date format heartbeats that are not sent.\n let unsentEntries = heartbeatsCache.slice();\n for (const singleDateHeartbeat of heartbeatsCache) {\n // Look for an existing entry with the same user agent.\n const heartbeatEntry = heartbeatsToSend.find(\n hb => hb.agent === singleDateHeartbeat.agent\n );\n if (!heartbeatEntry) {\n // If no entry for this user agent exists, create one.\n heartbeatsToSend.push({\n agent: singleDateHeartbeat.agent,\n dates: [singleDateHeartbeat.date]\n });\n if (countBytes(heartbeatsToSend) > maxSize) {\n // If the header would exceed max size, remove the added heartbeat\n // entry and stop adding to the header.\n heartbeatsToSend.pop();\n break;\n }\n } else {\n heartbeatEntry.dates.push(singleDateHeartbeat.date);\n // If the header would exceed max size, remove the added date\n // and stop adding to the header.\n if (countBytes(heartbeatsToSend) > maxSize) {\n heartbeatEntry.dates.pop();\n break;\n }\n }\n // Pop unsent entry from queue. (Skipped if adding the entry exceeded\n // quota and the loop breaks early.)\n unsentEntries = unsentEntries.slice(1);\n }\n return {\n heartbeatsToSend,\n unsentEntries\n };\n}\n\nexport class HeartbeatStorageImpl implements HeartbeatStorage {\n private _canUseIndexedDBPromise: Promise;\n constructor(public app: FirebaseApp) {\n this._canUseIndexedDBPromise = this.runIndexedDBEnvironmentCheck();\n }\n async runIndexedDBEnvironmentCheck(): Promise {\n if (!isIndexedDBAvailable()) {\n return false;\n } else {\n return validateIndexedDBOpenable()\n .then(() => true)\n .catch(() => false);\n }\n }\n /**\n * Read all heartbeats.\n */\n async read(): Promise {\n const canUseIndexedDB = await this._canUseIndexedDBPromise;\n if (!canUseIndexedDB) {\n return { heartbeats: [] };\n } else {\n const idbHeartbeatObject = await readHeartbeatsFromIndexedDB(this.app);\n return idbHeartbeatObject || { heartbeats: [] };\n }\n }\n // overwrite the storage with the provided heartbeats\n async overwrite(heartbeatsObject: HeartbeatsInIndexedDB): Promise {\n const canUseIndexedDB = await this._canUseIndexedDBPromise;\n if (!canUseIndexedDB) {\n return;\n } else {\n const existingHeartbeatsObject = await this.read();\n return writeHeartbeatsToIndexedDB(this.app, {\n lastSentHeartbeatDate:\n heartbeatsObject.lastSentHeartbeatDate ??\n existingHeartbeatsObject.lastSentHeartbeatDate,\n heartbeats: heartbeatsObject.heartbeats\n });\n }\n }\n // add heartbeats\n async add(heartbeatsObject: HeartbeatsInIndexedDB): Promise {\n const canUseIndexedDB = await this._canUseIndexedDBPromise;\n if (!canUseIndexedDB) {\n return;\n } else {\n const existingHeartbeatsObject = await this.read();\n return writeHeartbeatsToIndexedDB(this.app, {\n lastSentHeartbeatDate:\n heartbeatsObject.lastSentHeartbeatDate ??\n existingHeartbeatsObject.lastSentHeartbeatDate,\n heartbeats: [\n ...existingHeartbeatsObject.heartbeats,\n ...heartbeatsObject.heartbeats\n ]\n });\n }\n }\n}\n\n/**\n * Calculate bytes of a HeartbeatsByUserAgent array after being wrapped\n * in a platform logging header JSON object, stringified, and converted\n * to base 64.\n */\nexport function countBytes(heartbeatsCache: HeartbeatsByUserAgent[]): number {\n // base64 has a restricted set of characters, all of which should be 1 byte.\n return base64urlEncodeWithoutPadding(\n // heartbeatsCache wrapper properties\n JSON.stringify({ version: 2, heartbeats: heartbeatsCache })\n ).length;\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, ComponentType } from '@firebase/component';\nimport { PlatformLoggerServiceImpl } from './platformLoggerService';\nimport { name, version } from '../package.json';\nimport { _registerComponent } from './internal';\nimport { registerVersion } from './api';\nimport { HeartbeatServiceImpl } from './heartbeatService';\n\nexport function registerCoreComponents(variant?: string): void {\n _registerComponent(\n new Component(\n 'platform-logger',\n container => new PlatformLoggerServiceImpl(container),\n ComponentType.PRIVATE\n )\n );\n _registerComponent(\n new Component(\n 'heartbeat',\n container => new HeartbeatServiceImpl(container),\n ComponentType.PRIVATE\n )\n );\n\n // Register `app` package.\n registerVersion(name, version, variant);\n // BUILD_TARGET will be replaced by values like esm5, esm2017, cjs5, etc during the compilation\n registerVersion(name, version, '__BUILD_TARGET__');\n // Register platform SDK identifier (no version).\n registerVersion('fire-js', '');\n}\n","/**\n * Firebase App\n *\n * @remarks This package coordinates the communication between the different Firebase components\n * @packageDocumentation\n */\n\n/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { registerCoreComponents } from './registerCoreComponents';\n\nexport * from './api';\nexport * from './internal';\nexport * from './public-types';\n\nregisterCoreComponents('__RUNTIME_ENV__');\n","import getPrototypeOf from \"./getPrototypeOf.js\";\nexport default function _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n}","import superPropBase from \"./superPropBase.js\";\nexport default function _get() {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get;\n } else {\n _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(arguments.length < 3 ? target : receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get.apply(this, arguments);\n}","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { registerVersion } from '@firebase/app';\nimport { name, version } from '../package.json';\n\nregisterVersion(name, version, 'app');\nexport * from '@firebase/app';\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, 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","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AuthErrorMap, User } from '../model/public_types';\nimport { ErrorFactory, ErrorMap } from '@firebase/util';\n\nimport { IdTokenMfaResponse } from '../api/authentication/mfa';\nimport { AppName } from '../model/auth';\nimport { AuthCredential } from './credentials';\n\n/**\n * Enumeration of Firebase Auth error codes.\n * \n * @internal\n */\nexport const enum AuthErrorCode {\n ADMIN_ONLY_OPERATION = 'admin-restricted-operation',\n ARGUMENT_ERROR = 'argument-error',\n APP_NOT_AUTHORIZED = 'app-not-authorized',\n APP_NOT_INSTALLED = 'app-not-installed',\n CAPTCHA_CHECK_FAILED = 'captcha-check-failed',\n CODE_EXPIRED = 'code-expired',\n CORDOVA_NOT_READY = 'cordova-not-ready',\n CORS_UNSUPPORTED = 'cors-unsupported',\n CREDENTIAL_ALREADY_IN_USE = 'credential-already-in-use',\n CREDENTIAL_MISMATCH = 'custom-token-mismatch',\n CREDENTIAL_TOO_OLD_LOGIN_AGAIN = 'requires-recent-login',\n DEPENDENT_SDK_INIT_BEFORE_AUTH = 'dependent-sdk-initialized-before-auth',\n DYNAMIC_LINK_NOT_ACTIVATED = 'dynamic-link-not-activated',\n EMAIL_CHANGE_NEEDS_VERIFICATION = 'email-change-needs-verification',\n EMAIL_EXISTS = 'email-already-in-use',\n EMULATOR_CONFIG_FAILED = 'emulator-config-failed',\n EXPIRED_OOB_CODE = 'expired-action-code',\n EXPIRED_POPUP_REQUEST = 'cancelled-popup-request',\n INTERNAL_ERROR = 'internal-error',\n INVALID_API_KEY = 'invalid-api-key',\n INVALID_APP_CREDENTIAL = 'invalid-app-credential',\n INVALID_APP_ID = 'invalid-app-id',\n INVALID_AUTH = 'invalid-user-token',\n INVALID_AUTH_EVENT = 'invalid-auth-event',\n INVALID_CERT_HASH = 'invalid-cert-hash',\n INVALID_CODE = 'invalid-verification-code',\n INVALID_CONTINUE_URI = 'invalid-continue-uri',\n INVALID_CORDOVA_CONFIGURATION = 'invalid-cordova-configuration',\n INVALID_CUSTOM_TOKEN = 'invalid-custom-token',\n INVALID_DYNAMIC_LINK_DOMAIN = 'invalid-dynamic-link-domain',\n INVALID_EMAIL = 'invalid-email',\n INVALID_EMULATOR_SCHEME = 'invalid-emulator-scheme',\n INVALID_IDP_RESPONSE = 'invalid-credential',\n INVALID_MESSAGE_PAYLOAD = 'invalid-message-payload',\n INVALID_MFA_SESSION = 'invalid-multi-factor-session',\n INVALID_OAUTH_CLIENT_ID = 'invalid-oauth-client-id',\n INVALID_OAUTH_PROVIDER = 'invalid-oauth-provider',\n INVALID_OOB_CODE = 'invalid-action-code',\n INVALID_ORIGIN = 'unauthorized-domain',\n INVALID_PASSWORD = 'wrong-password',\n INVALID_PERSISTENCE = 'invalid-persistence-type',\n INVALID_PHONE_NUMBER = 'invalid-phone-number',\n INVALID_PROVIDER_ID = 'invalid-provider-id',\n INVALID_RECIPIENT_EMAIL = 'invalid-recipient-email',\n INVALID_SENDER = 'invalid-sender',\n INVALID_SESSION_INFO = 'invalid-verification-id',\n INVALID_TENANT_ID = 'invalid-tenant-id',\n LOGIN_BLOCKED = 'login-blocked',\n MFA_INFO_NOT_FOUND = 'multi-factor-info-not-found',\n MFA_REQUIRED = 'multi-factor-auth-required',\n MISSING_ANDROID_PACKAGE_NAME = 'missing-android-pkg-name',\n MISSING_APP_CREDENTIAL = 'missing-app-credential',\n MISSING_AUTH_DOMAIN = 'auth-domain-config-required',\n MISSING_CODE = 'missing-verification-code',\n MISSING_CONTINUE_URI = 'missing-continue-uri',\n MISSING_IFRAME_START = 'missing-iframe-start',\n MISSING_IOS_BUNDLE_ID = 'missing-ios-bundle-id',\n MISSING_OR_INVALID_NONCE = 'missing-or-invalid-nonce',\n MISSING_MFA_INFO = 'missing-multi-factor-info',\n MISSING_MFA_SESSION = 'missing-multi-factor-session',\n MISSING_PHONE_NUMBER = 'missing-phone-number',\n MISSING_SESSION_INFO = 'missing-verification-id',\n MODULE_DESTROYED = 'app-deleted',\n NEED_CONFIRMATION = 'account-exists-with-different-credential',\n NETWORK_REQUEST_FAILED = 'network-request-failed',\n NULL_USER = 'null-user',\n NO_AUTH_EVENT = 'no-auth-event',\n NO_SUCH_PROVIDER = 'no-such-provider',\n OPERATION_NOT_ALLOWED = 'operation-not-allowed',\n OPERATION_NOT_SUPPORTED = 'operation-not-supported-in-this-environment',\n POPUP_BLOCKED = 'popup-blocked',\n POPUP_CLOSED_BY_USER = 'popup-closed-by-user',\n PROVIDER_ALREADY_LINKED = 'provider-already-linked',\n QUOTA_EXCEEDED = 'quota-exceeded',\n REDIRECT_CANCELLED_BY_USER = 'redirect-cancelled-by-user',\n REDIRECT_OPERATION_PENDING = 'redirect-operation-pending',\n REJECTED_CREDENTIAL = 'rejected-credential',\n SECOND_FACTOR_ALREADY_ENROLLED = 'second-factor-already-in-use',\n SECOND_FACTOR_LIMIT_EXCEEDED = 'maximum-second-factor-count-exceeded',\n TENANT_ID_MISMATCH = 'tenant-id-mismatch',\n TIMEOUT = 'timeout',\n TOKEN_EXPIRED = 'user-token-expired',\n TOO_MANY_ATTEMPTS_TRY_LATER = 'too-many-requests',\n UNAUTHORIZED_DOMAIN = 'unauthorized-continue-uri',\n UNSUPPORTED_FIRST_FACTOR = 'unsupported-first-factor',\n UNSUPPORTED_PERSISTENCE = 'unsupported-persistence-type',\n UNSUPPORTED_TENANT_OPERATION = 'unsupported-tenant-operation',\n UNVERIFIED_EMAIL = 'unverified-email',\n USER_CANCELLED = 'user-cancelled',\n USER_DELETED = 'user-not-found',\n USER_DISABLED = 'user-disabled',\n USER_MISMATCH = 'user-mismatch',\n USER_SIGNED_OUT = 'user-signed-out',\n WEAK_PASSWORD = 'weak-password',\n WEB_STORAGE_UNSUPPORTED = 'web-storage-unsupported',\n ALREADY_INITIALIZED = 'already-initialized'\n}\n\nfunction _debugErrorMap(): ErrorMap {\n return {\n [AuthErrorCode.ADMIN_ONLY_OPERATION]:\n 'This operation is restricted to administrators only.',\n [AuthErrorCode.ARGUMENT_ERROR]: '',\n [AuthErrorCode.APP_NOT_AUTHORIZED]:\n \"This app, identified by the domain where it's hosted, is not \" +\n 'authorized to use Firebase Authentication with the provided API key. ' +\n 'Review your key configuration in the Google API console.',\n [AuthErrorCode.APP_NOT_INSTALLED]:\n 'The requested mobile application corresponding to the identifier (' +\n 'Android package name or iOS bundle ID) provided is not installed on ' +\n 'this device.',\n [AuthErrorCode.CAPTCHA_CHECK_FAILED]:\n 'The reCAPTCHA response token provided is either invalid, expired, ' +\n 'already used or the domain associated with it does not match the list ' +\n 'of whitelisted domains.',\n [AuthErrorCode.CODE_EXPIRED]:\n 'The SMS code has expired. Please re-send the verification code to try ' +\n 'again.',\n [AuthErrorCode.CORDOVA_NOT_READY]: 'Cordova framework is not ready.',\n [AuthErrorCode.CORS_UNSUPPORTED]: 'This browser is not supported.',\n [AuthErrorCode.CREDENTIAL_ALREADY_IN_USE]:\n 'This credential is already associated with a different user account.',\n [AuthErrorCode.CREDENTIAL_MISMATCH]:\n 'The custom token corresponds to a different audience.',\n [AuthErrorCode.CREDENTIAL_TOO_OLD_LOGIN_AGAIN]:\n 'This operation is sensitive and requires recent authentication. Log in ' +\n 'again before retrying this request.',\n [AuthErrorCode.DEPENDENT_SDK_INIT_BEFORE_AUTH]:\n 'Another Firebase SDK was initialized and is trying to use Auth before Auth is ' +\n 'initialized. Please be sure to call `initializeAuth` or `getAuth` before ' +\n 'starting any other Firebase SDK.',\n [AuthErrorCode.DYNAMIC_LINK_NOT_ACTIVATED]:\n 'Please activate Dynamic Links in the Firebase Console and agree to the terms and ' +\n 'conditions.',\n [AuthErrorCode.EMAIL_CHANGE_NEEDS_VERIFICATION]:\n 'Multi-factor users must always have a verified email.',\n [AuthErrorCode.EMAIL_EXISTS]:\n 'The email address is already in use by another account.',\n [AuthErrorCode.EMULATOR_CONFIG_FAILED]:\n 'Auth instance has already been used to make a network call. Auth can ' +\n 'no longer be configured to use the emulator. Try calling ' +\n '\"connectAuthEmulator()\" sooner.',\n [AuthErrorCode.EXPIRED_OOB_CODE]: 'The action code has expired.',\n [AuthErrorCode.EXPIRED_POPUP_REQUEST]:\n 'This operation has been cancelled due to another conflicting popup being opened.',\n [AuthErrorCode.INTERNAL_ERROR]: 'An internal AuthError has occurred.',\n [AuthErrorCode.INVALID_APP_CREDENTIAL]:\n 'The phone verification request contains an invalid application verifier.' +\n ' The reCAPTCHA token response is either invalid or expired.',\n [AuthErrorCode.INVALID_APP_ID]:\n 'The mobile app identifier is not registed for the current project.',\n [AuthErrorCode.INVALID_AUTH]:\n \"This user's credential isn't valid for this project. This can happen \" +\n \"if the user's token has been tampered with, or if the user isn't for \" +\n 'the project associated with this API key.',\n [AuthErrorCode.INVALID_AUTH_EVENT]: 'An internal AuthError has occurred.',\n [AuthErrorCode.INVALID_CODE]:\n 'The SMS verification code used to create the phone auth credential is ' +\n 'invalid. Please resend the verification code sms and be sure to use the ' +\n 'verification code provided by the user.',\n [AuthErrorCode.INVALID_CONTINUE_URI]:\n 'The continue URL provided in the request is invalid.',\n [AuthErrorCode.INVALID_CORDOVA_CONFIGURATION]:\n 'The following Cordova plugins must be installed to enable OAuth sign-in: ' +\n 'cordova-plugin-buildinfo, cordova-universal-links-plugin, ' +\n 'cordova-plugin-browsertab, cordova-plugin-inappbrowser and ' +\n 'cordova-plugin-customurlscheme.',\n [AuthErrorCode.INVALID_CUSTOM_TOKEN]:\n 'The custom token format is incorrect. Please check the documentation.',\n [AuthErrorCode.INVALID_DYNAMIC_LINK_DOMAIN]:\n 'The provided dynamic link domain is not configured or authorized for the current project.',\n [AuthErrorCode.INVALID_EMAIL]: 'The email address is badly formatted.',\n [AuthErrorCode.INVALID_EMULATOR_SCHEME]:\n 'Emulator URL must start with a valid scheme (http:// or https://).',\n [AuthErrorCode.INVALID_API_KEY]:\n 'Your API key is invalid, please check you have copied it correctly.',\n [AuthErrorCode.INVALID_CERT_HASH]:\n 'The SHA-1 certificate hash provided is invalid.',\n [AuthErrorCode.INVALID_IDP_RESPONSE]:\n 'The supplied auth credential is malformed or has expired.',\n [AuthErrorCode.INVALID_MESSAGE_PAYLOAD]:\n 'The email template corresponding to this action contains invalid characters in its message. ' +\n 'Please fix by going to the Auth email templates section in the Firebase Console.',\n [AuthErrorCode.INVALID_MFA_SESSION]:\n 'The request does not contain a valid proof of first factor successful sign-in.',\n [AuthErrorCode.INVALID_OAUTH_PROVIDER]:\n 'EmailAuthProvider is not supported for this operation. This operation ' +\n 'only supports OAuth providers.',\n [AuthErrorCode.INVALID_OAUTH_CLIENT_ID]:\n 'The OAuth client ID provided is either invalid or does not match the ' +\n 'specified API key.',\n [AuthErrorCode.INVALID_ORIGIN]:\n 'This domain is not authorized for OAuth operations for your Firebase ' +\n 'project. Edit the list of authorized domains from the Firebase console.',\n [AuthErrorCode.INVALID_OOB_CODE]:\n 'The action code is invalid. This can happen if the code is malformed, ' +\n 'expired, or has already been used.',\n [AuthErrorCode.INVALID_PASSWORD]:\n 'The password is invalid or the user does not have a password.',\n [AuthErrorCode.INVALID_PERSISTENCE]:\n 'The specified persistence type is invalid. It can only be local, session or none.',\n [AuthErrorCode.INVALID_PHONE_NUMBER]:\n 'The format of the phone number provided is incorrect. Please enter the ' +\n 'phone number in a format that can be parsed into E.164 format. E.164 ' +\n 'phone numbers are written in the format [+][country code][subscriber ' +\n 'number including area code].',\n [AuthErrorCode.INVALID_PROVIDER_ID]:\n 'The specified provider ID is invalid.',\n [AuthErrorCode.INVALID_RECIPIENT_EMAIL]:\n 'The email corresponding to this action failed to send as the provided ' +\n 'recipient email address is invalid.',\n [AuthErrorCode.INVALID_SENDER]:\n 'The email template corresponding to this action contains an invalid sender email or name. ' +\n 'Please fix by going to the Auth email templates section in the Firebase Console.',\n [AuthErrorCode.INVALID_SESSION_INFO]:\n 'The verification ID used to create the phone auth credential is invalid.',\n [AuthErrorCode.INVALID_TENANT_ID]:\n \"The Auth instance's tenant ID is invalid.\",\n [AuthErrorCode.LOGIN_BLOCKED]: \"Login blocked by user-provided method: {$originalMessage}\",\n [AuthErrorCode.MISSING_ANDROID_PACKAGE_NAME]:\n 'An Android Package Name must be provided if the Android App is required to be installed.',\n [AuthErrorCode.MISSING_AUTH_DOMAIN]:\n 'Be sure to include authDomain when calling firebase.initializeApp(), ' +\n 'by following the instructions in the Firebase console.',\n [AuthErrorCode.MISSING_APP_CREDENTIAL]:\n 'The phone verification request is missing an application verifier ' +\n 'assertion. A reCAPTCHA response token needs to be provided.',\n [AuthErrorCode.MISSING_CODE]:\n 'The phone auth credential was created with an empty SMS verification code.',\n [AuthErrorCode.MISSING_CONTINUE_URI]:\n 'A continue URL must be provided in the request.',\n [AuthErrorCode.MISSING_IFRAME_START]: 'An internal AuthError has occurred.',\n [AuthErrorCode.MISSING_IOS_BUNDLE_ID]:\n 'An iOS Bundle ID must be provided if an App Store ID is provided.',\n [AuthErrorCode.MISSING_OR_INVALID_NONCE]:\n 'The request does not contain a valid nonce. This can occur if the ' +\n 'SHA-256 hash of the provided raw nonce does not match the hashed nonce ' +\n 'in the ID token payload.',\n [AuthErrorCode.MISSING_MFA_INFO]:\n 'No second factor identifier is provided.',\n [AuthErrorCode.MISSING_MFA_SESSION]:\n 'The request is missing proof of first factor successful sign-in.',\n [AuthErrorCode.MISSING_PHONE_NUMBER]:\n 'To send verification codes, provide a phone number for the recipient.',\n [AuthErrorCode.MISSING_SESSION_INFO]:\n 'The phone auth credential was created with an empty verification ID.',\n [AuthErrorCode.MODULE_DESTROYED]:\n 'This instance of FirebaseApp has been deleted.',\n [AuthErrorCode.MFA_INFO_NOT_FOUND]:\n 'The user does not have a second factor matching the identifier provided.',\n [AuthErrorCode.MFA_REQUIRED]:\n 'Proof of ownership of a second factor is required to complete sign-in.',\n [AuthErrorCode.NEED_CONFIRMATION]:\n 'An account already exists with the same email address but different ' +\n 'sign-in credentials. Sign in using a provider associated with this ' +\n 'email address.',\n [AuthErrorCode.NETWORK_REQUEST_FAILED]:\n 'A network AuthError (such as timeout, interrupted connection or unreachable host) has occurred.',\n [AuthErrorCode.NO_AUTH_EVENT]: 'An internal AuthError has occurred.',\n [AuthErrorCode.NO_SUCH_PROVIDER]:\n 'User was not linked to an account with the given provider.',\n [AuthErrorCode.NULL_USER]:\n 'A null user object was provided as the argument for an operation which ' +\n 'requires a non-null user object.',\n [AuthErrorCode.OPERATION_NOT_ALLOWED]:\n 'The given sign-in provider is disabled for this Firebase project. ' +\n 'Enable it in the Firebase console, under the sign-in method tab of the ' +\n 'Auth section.',\n [AuthErrorCode.OPERATION_NOT_SUPPORTED]:\n 'This operation is not supported in the environment this application is ' +\n 'running on. \"location.protocol\" must be http, https or chrome-extension' +\n ' and web storage must be enabled.',\n [AuthErrorCode.POPUP_BLOCKED]:\n 'Unable to establish a connection with the popup. It may have been blocked by the browser.',\n [AuthErrorCode.POPUP_CLOSED_BY_USER]:\n 'The popup has been closed by the user before finalizing the operation.',\n [AuthErrorCode.PROVIDER_ALREADY_LINKED]:\n 'User can only be linked to one identity for the given provider.',\n [AuthErrorCode.QUOTA_EXCEEDED]:\n \"The project's quota for this operation has been exceeded.\",\n [AuthErrorCode.REDIRECT_CANCELLED_BY_USER]:\n 'The redirect operation has been cancelled by the user before finalizing.',\n [AuthErrorCode.REDIRECT_OPERATION_PENDING]:\n 'A redirect sign-in operation is already pending.',\n [AuthErrorCode.REJECTED_CREDENTIAL]:\n 'The request contains malformed or mismatching credentials.',\n [AuthErrorCode.SECOND_FACTOR_ALREADY_ENROLLED]:\n 'The second factor is already enrolled on this account.',\n [AuthErrorCode.SECOND_FACTOR_LIMIT_EXCEEDED]:\n 'The maximum allowed number of second factors on a user has been exceeded.',\n [AuthErrorCode.TENANT_ID_MISMATCH]:\n \"The provided tenant ID does not match the Auth instance's tenant ID\",\n [AuthErrorCode.TIMEOUT]: 'The operation has timed out.',\n [AuthErrorCode.TOKEN_EXPIRED]:\n \"The user's credential is no longer valid. The user must sign in again.\",\n [AuthErrorCode.TOO_MANY_ATTEMPTS_TRY_LATER]:\n 'We have blocked all requests from this device due to unusual activity. ' +\n 'Try again later.',\n [AuthErrorCode.UNAUTHORIZED_DOMAIN]:\n 'The domain of the continue URL is not whitelisted. Please whitelist ' +\n 'the domain in the Firebase console.',\n [AuthErrorCode.UNSUPPORTED_FIRST_FACTOR]:\n 'Enrolling a second factor or signing in with a multi-factor account requires sign-in with a supported first factor.',\n [AuthErrorCode.UNSUPPORTED_PERSISTENCE]:\n 'The current environment does not support the specified persistence type.',\n [AuthErrorCode.UNSUPPORTED_TENANT_OPERATION]:\n 'This operation is not supported in a multi-tenant context.',\n [AuthErrorCode.UNVERIFIED_EMAIL]:\n 'The operation requires a verified email.',\n [AuthErrorCode.USER_CANCELLED]:\n 'The user did not grant your application the permissions it requested.',\n [AuthErrorCode.USER_DELETED]:\n 'There is no user record corresponding to this identifier. The user may ' +\n 'have been deleted.',\n [AuthErrorCode.USER_DISABLED]:\n 'The user account has been disabled by an administrator.',\n [AuthErrorCode.USER_MISMATCH]:\n 'The supplied credentials do not correspond to the previously signed in user.',\n [AuthErrorCode.USER_SIGNED_OUT]: '',\n [AuthErrorCode.WEAK_PASSWORD]:\n 'The password must be 6 characters long or more.',\n [AuthErrorCode.WEB_STORAGE_UNSUPPORTED]:\n 'This browser is not supported or 3rd party cookies and data may be disabled.',\n [AuthErrorCode.ALREADY_INITIALIZED]:\n 'initializeAuth() has already been called with ' +\n 'different options. To avoid this error, call initializeAuth() with the ' +\n 'same options as when it was originally called, or call getAuth() to return the' +\n ' already initialized instance.'\n };\n}\n\nexport interface ErrorMapRetriever extends AuthErrorMap {\n (): ErrorMap;\n}\n\nfunction _prodErrorMap(): ErrorMap {\n // We will include this one message in the prod error map since by the very\n // nature of this error, developers will never be able to see the message\n // using the debugErrorMap (which is installed during auth initialization).\n return {\n [AuthErrorCode.DEPENDENT_SDK_INIT_BEFORE_AUTH]:\n 'Another Firebase SDK was initialized and is trying to use Auth before Auth is ' +\n 'initialized. Please be sure to call `initializeAuth` or `getAuth` before ' +\n 'starting any other Firebase SDK.'\n } as ErrorMap;\n}\n\n/**\n * A verbose error map with detailed descriptions for most error codes.\n *\n * See discussion at {@link AuthErrorMap}\n *\n * @public\n */\nexport const debugErrorMap: AuthErrorMap = _debugErrorMap;\n\n/**\n * A minimal error map with all verbose error messages stripped.\n *\n * See discussion at {@link AuthErrorMap}\n *\n * @public\n */\nexport const prodErrorMap: AuthErrorMap = _prodErrorMap;\n\nexport interface NamedErrorParams {\n appName: AppName;\n credential?: AuthCredential;\n email?: string;\n phoneNumber?: string;\n tenantId?: string;\n user?: User;\n _serverResponse?: object;\n}\n\n/**\n * @internal\n */\ntype GenericAuthErrorParams = {\n [key in Exclude<\n AuthErrorCode,\n | AuthErrorCode.ARGUMENT_ERROR\n | AuthErrorCode.DEPENDENT_SDK_INIT_BEFORE_AUTH\n | AuthErrorCode.INTERNAL_ERROR\n | AuthErrorCode.MFA_REQUIRED\n | AuthErrorCode.NO_AUTH_EVENT\n | AuthErrorCode.OPERATION_NOT_SUPPORTED\n >]: {\n appName?: AppName;\n email?: string;\n phoneNumber?: string;\n message?: string;\n };\n};\n\n/**\n * @internal\n */\nexport interface AuthErrorParams extends GenericAuthErrorParams {\n [AuthErrorCode.ARGUMENT_ERROR]: { appName?: AppName };\n [AuthErrorCode.DEPENDENT_SDK_INIT_BEFORE_AUTH]: { appName?: AppName };\n [AuthErrorCode.INTERNAL_ERROR]: { appName?: AppName };\n [AuthErrorCode.LOGIN_BLOCKED]: { appName?: AppName, originalMessage?: string };\n [AuthErrorCode.OPERATION_NOT_SUPPORTED]: { appName?: AppName };\n [AuthErrorCode.NO_AUTH_EVENT]: { appName?: AppName };\n [AuthErrorCode.MFA_REQUIRED]: {\n appName: AppName;\n _serverResponse: IdTokenMfaResponse;\n };\n [AuthErrorCode.INVALID_CORDOVA_CONFIGURATION]: {\n appName: AppName;\n missingPlugin?: string;\n };\n}\n\nexport const _DEFAULT_AUTH_ERROR_FACTORY = new ErrorFactory<\n AuthErrorCode,\n AuthErrorParams\n>('auth', 'Firebase', _prodErrorMap());\n\n/**\n * A map of potential `Auth` error codes, for easier comparison with errors\n * thrown by the SDK.\n *\n * @remarks\n * Note that you can't tree-shake individual keys\n * in the map, so by using the map you might substantially increase your\n * bundle size.\n *\n * @public\n */\nexport const AUTH_ERROR_CODES_MAP_DO_NOT_USE_INTERNALLY = {\n ADMIN_ONLY_OPERATION: 'auth/admin-restricted-operation',\n ARGUMENT_ERROR: 'auth/argument-error',\n APP_NOT_AUTHORIZED: 'auth/app-not-authorized',\n APP_NOT_INSTALLED: 'auth/app-not-installed',\n CAPTCHA_CHECK_FAILED: 'auth/captcha-check-failed',\n CODE_EXPIRED: 'auth/code-expired',\n CORDOVA_NOT_READY: 'auth/cordova-not-ready',\n CORS_UNSUPPORTED: 'auth/cors-unsupported',\n CREDENTIAL_ALREADY_IN_USE: 'auth/credential-already-in-use',\n CREDENTIAL_MISMATCH: 'auth/custom-token-mismatch',\n CREDENTIAL_TOO_OLD_LOGIN_AGAIN: 'auth/requires-recent-login',\n DEPENDENT_SDK_INIT_BEFORE_AUTH: 'auth/dependent-sdk-initialized-before-auth',\n DYNAMIC_LINK_NOT_ACTIVATED: 'auth/dynamic-link-not-activated',\n EMAIL_CHANGE_NEEDS_VERIFICATION: 'auth/email-change-needs-verification',\n EMAIL_EXISTS: 'auth/email-already-in-use',\n EMULATOR_CONFIG_FAILED: 'auth/emulator-config-failed',\n EXPIRED_OOB_CODE: 'auth/expired-action-code',\n EXPIRED_POPUP_REQUEST: 'auth/cancelled-popup-request',\n INTERNAL_ERROR: 'auth/internal-error',\n INVALID_API_KEY: 'auth/invalid-api-key',\n INVALID_APP_CREDENTIAL: 'auth/invalid-app-credential',\n INVALID_APP_ID: 'auth/invalid-app-id',\n INVALID_AUTH: 'auth/invalid-user-token',\n INVALID_AUTH_EVENT: 'auth/invalid-auth-event',\n INVALID_CERT_HASH: 'auth/invalid-cert-hash',\n INVALID_CODE: 'auth/invalid-verification-code',\n INVALID_CONTINUE_URI: 'auth/invalid-continue-uri',\n INVALID_CORDOVA_CONFIGURATION: 'auth/invalid-cordova-configuration',\n INVALID_CUSTOM_TOKEN: 'auth/invalid-custom-token',\n INVALID_DYNAMIC_LINK_DOMAIN: 'auth/invalid-dynamic-link-domain',\n INVALID_EMAIL: 'auth/invalid-email',\n INVALID_EMULATOR_SCHEME: 'auth/invalid-emulator-scheme',\n INVALID_IDP_RESPONSE: 'auth/invalid-credential',\n INVALID_MESSAGE_PAYLOAD: 'auth/invalid-message-payload',\n INVALID_MFA_SESSION: 'auth/invalid-multi-factor-session',\n INVALID_OAUTH_CLIENT_ID: 'auth/invalid-oauth-client-id',\n INVALID_OAUTH_PROVIDER: 'auth/invalid-oauth-provider',\n INVALID_OOB_CODE: 'auth/invalid-action-code',\n INVALID_ORIGIN: 'auth/unauthorized-domain',\n INVALID_PASSWORD: 'auth/wrong-password',\n INVALID_PERSISTENCE: 'auth/invalid-persistence-type',\n INVALID_PHONE_NUMBER: 'auth/invalid-phone-number',\n INVALID_PROVIDER_ID: 'auth/invalid-provider-id',\n INVALID_RECIPIENT_EMAIL: 'auth/invalid-recipient-email',\n INVALID_SENDER: 'auth/invalid-sender',\n INVALID_SESSION_INFO: 'auth/invalid-verification-id',\n INVALID_TENANT_ID: 'auth/invalid-tenant-id',\n MFA_INFO_NOT_FOUND: 'auth/multi-factor-info-not-found',\n MFA_REQUIRED: 'auth/multi-factor-auth-required',\n MISSING_ANDROID_PACKAGE_NAME: 'auth/missing-android-pkg-name',\n MISSING_APP_CREDENTIAL: 'auth/missing-app-credential',\n MISSING_AUTH_DOMAIN: 'auth/auth-domain-config-required',\n MISSING_CODE: 'auth/missing-verification-code',\n MISSING_CONTINUE_URI: 'auth/missing-continue-uri',\n MISSING_IFRAME_START: 'auth/missing-iframe-start',\n MISSING_IOS_BUNDLE_ID: 'auth/missing-ios-bundle-id',\n MISSING_OR_INVALID_NONCE: 'auth/missing-or-invalid-nonce',\n MISSING_MFA_INFO: 'auth/missing-multi-factor-info',\n MISSING_MFA_SESSION: 'auth/missing-multi-factor-session',\n MISSING_PHONE_NUMBER: 'auth/missing-phone-number',\n MISSING_SESSION_INFO: 'auth/missing-verification-id',\n MODULE_DESTROYED: 'auth/app-deleted',\n NEED_CONFIRMATION: 'auth/account-exists-with-different-credential',\n NETWORK_REQUEST_FAILED: 'auth/network-request-failed',\n NULL_USER: 'auth/null-user',\n NO_AUTH_EVENT: 'auth/no-auth-event',\n NO_SUCH_PROVIDER: 'auth/no-such-provider',\n OPERATION_NOT_ALLOWED: 'auth/operation-not-allowed',\n OPERATION_NOT_SUPPORTED: 'auth/operation-not-supported-in-this-environment',\n POPUP_BLOCKED: 'auth/popup-blocked',\n POPUP_CLOSED_BY_USER: 'auth/popup-closed-by-user',\n PROVIDER_ALREADY_LINKED: 'auth/provider-already-linked',\n QUOTA_EXCEEDED: 'auth/quota-exceeded',\n REDIRECT_CANCELLED_BY_USER: 'auth/redirect-cancelled-by-user',\n REDIRECT_OPERATION_PENDING: 'auth/redirect-operation-pending',\n REJECTED_CREDENTIAL: 'auth/rejected-credential',\n SECOND_FACTOR_ALREADY_ENROLLED: 'auth/second-factor-already-in-use',\n SECOND_FACTOR_LIMIT_EXCEEDED: 'auth/maximum-second-factor-count-exceeded',\n TENANT_ID_MISMATCH: 'auth/tenant-id-mismatch',\n TIMEOUT: 'auth/timeout',\n TOKEN_EXPIRED: 'auth/user-token-expired',\n TOO_MANY_ATTEMPTS_TRY_LATER: 'auth/too-many-requests',\n UNAUTHORIZED_DOMAIN: 'auth/unauthorized-continue-uri',\n UNSUPPORTED_FIRST_FACTOR: 'auth/unsupported-first-factor',\n UNSUPPORTED_PERSISTENCE: 'auth/unsupported-persistence-type',\n UNSUPPORTED_TENANT_OPERATION: 'auth/unsupported-tenant-operation',\n UNVERIFIED_EMAIL: 'auth/unverified-email',\n USER_CANCELLED: 'auth/user-cancelled',\n USER_DELETED: 'auth/user-not-found',\n USER_DISABLED: 'auth/user-disabled',\n USER_MISMATCH: 'auth/user-mismatch',\n USER_SIGNED_OUT: 'auth/user-signed-out',\n WEAK_PASSWORD: 'auth/weak-password',\n WEB_STORAGE_UNSUPPORTED: 'auth/web-storage-unsupported',\n ALREADY_INITIALIZED: 'auth/already-initialized'\n} as const;\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Logger, LogLevel } from '@firebase/logger';\nimport { SDK_VERSION } from '@firebase/app';\n\nexport { LogLevel };\n\nconst logClient = new Logger('@firebase/auth');\n\n// Helper methods are needed because variables can't be exported as read/write\nexport function _getLogLevel(): LogLevel {\n return logClient.logLevel;\n}\n\nexport function _setLogLevel(newLevel: LogLevel): void {\n logClient.logLevel = newLevel;\n}\n\nexport function _logDebug(msg: string, ...args: string[]): void {\n if (logClient.logLevel <= LogLevel.DEBUG) {\n logClient.debug(`Auth (${SDK_VERSION}): ${msg}`, ...args);\n }\n}\n\nexport function _logError(msg: string, ...args: string[]): void {\n if (logClient.logLevel <= LogLevel.ERROR) {\n logClient.error(`Auth (${SDK_VERSION}): ${msg}`, ...args);\n }\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Auth } from '../../model/public_types';\nimport { ErrorFactory, FirebaseError } from '@firebase/util';\nimport { AuthInternal } from '../../model/auth';\nimport {\n _DEFAULT_AUTH_ERROR_FACTORY,\n AuthErrorCode,\n AuthErrorParams,\n prodErrorMap,\n ErrorMapRetriever\n} from '../errors';\nimport { _logError } from './log';\n\ntype AuthErrorListParams = K extends keyof AuthErrorParams\n ? [AuthErrorParams[K]]\n : [];\ntype LessAppName = Omit;\n\n/**\n * Unconditionally fails, throwing a developer facing INTERNAL_ERROR\n *\n * @example\n * ```javascript\n * fail(auth, AuthErrorCode.MFA_REQUIRED); // Error: the MFA_REQUIRED error needs more params than appName\n * fail(auth, AuthErrorCode.MFA_REQUIRED, {serverResponse}); // Compiles\n * fail(AuthErrorCode.INTERNAL_ERROR); // Compiles; internal error does not need appName\n * fail(AuthErrorCode.USER_DELETED); // Error: USER_DELETED requires app name\n * fail(auth, AuthErrorCode.USER_DELETED); // Compiles; USER_DELETED _only_ needs app name\n * ```\n *\n * @param appName App name for tagging the error\n * @throws FirebaseError\n */\nexport function _fail(\n code: K,\n ...data: {} extends AuthErrorParams[K]\n ? [AuthErrorParams[K]?]\n : [AuthErrorParams[K]]\n): never;\nexport function _fail(\n auth: Auth,\n code: K,\n ...data: {} extends LessAppName ? [LessAppName?] : [LessAppName]\n): never;\nexport function _fail(\n authOrCode: Auth | K,\n ...rest: unknown[]\n): never {\n throw createErrorInternal(authOrCode, ...rest);\n}\n\nexport function _createError(\n code: K,\n ...data: {} extends AuthErrorParams[K]\n ? [AuthErrorParams[K]?]\n : [AuthErrorParams[K]]\n): FirebaseError;\nexport function _createError(\n auth: Auth,\n code: K,\n ...data: {} extends LessAppName ? [LessAppName?] : [LessAppName]\n): FirebaseError;\nexport function _createError(\n authOrCode: Auth | K,\n ...rest: unknown[]\n): FirebaseError {\n return createErrorInternal(authOrCode, ...rest);\n}\n\nexport function _errorWithCustomMessage(auth: Auth, code: AuthErrorCode, message: string): FirebaseError {\n const errorMap = {...(prodErrorMap as ErrorMapRetriever)(), [code]: message};\n const factory = new ErrorFactory(\n 'auth',\n 'Firebase',\n errorMap\n );\n return factory.create(code, {\n appName: auth.name,\n });\n}\n\nexport function _assertInstanceOf(auth: Auth, object: object, instance: unknown): void {\n const constructorInstance = (instance as { new (...args: unknown[]): unknown });\n if (!(object instanceof constructorInstance)) {\n if (constructorInstance.name !== object.constructor.name) {\n _fail(auth, AuthErrorCode.ARGUMENT_ERROR);\n }\n\n throw _errorWithCustomMessage(auth, AuthErrorCode.ARGUMENT_ERROR,\n `Type of ${object.constructor.name} does not match expected instance.` +\n `Did you pass a reference from a different Auth SDK?`);\n }\n}\n\nfunction createErrorInternal(\n authOrCode: Auth | K,\n ...rest: unknown[]\n): FirebaseError {\n if (typeof authOrCode !== 'string') {\n const code = rest[0] as K;\n const fullParams = [...rest.slice(1)] as AuthErrorListParams;\n if (fullParams[0]) {\n fullParams[0].appName = authOrCode.name;\n }\n\n return (authOrCode as AuthInternal)._errorFactory.create(\n code,\n ...fullParams\n );\n }\n\n return _DEFAULT_AUTH_ERROR_FACTORY.create(\n authOrCode,\n ...(rest as AuthErrorListParams)\n );\n}\n\nexport function _assert(\n assertion: unknown,\n code: K,\n ...data: {} extends AuthErrorParams[K]\n ? [AuthErrorParams[K]?]\n : [AuthErrorParams[K]]\n): asserts assertion;\nexport function _assert(\n assertion: unknown,\n auth: Auth,\n code: K,\n ...data: {} extends LessAppName ? [LessAppName?] : [LessAppName]\n): asserts assertion;\nexport function _assert(\n assertion: unknown,\n authOrCode: Auth | K,\n ...rest: unknown[]\n): asserts assertion {\n if (!assertion) {\n throw createErrorInternal(authOrCode, ...rest);\n }\n}\n\n// We really do want to accept literally any function type here\n// eslint-disable-next-line @typescript-eslint/ban-types\ntype TypeExpectation = Function | string | MapType;\n\ninterface MapType extends Record {}\n\nclass Optional {\n constructor(readonly type: TypeExpectation) {}\n}\n\nexport function opt(type: TypeExpectation): Optional {\n return new Optional(type);\n}\n\n/**\n * Asserts the runtime types of arguments. The 'expected' field can be one of\n * a class, a string (representing a \"typeof\" call), or a record map of name\n * to type. Furthermore, the opt() function can be used to mark a field as\n * optional. For example:\n *\n * function foo(auth: Auth, profile: {displayName?: string}, update = false) {\n * assertTypes(arguments, [AuthImpl, {displayName: opt('string')}, opt('boolean')]);\n * }\n *\n * opt() can be used for any type:\n * function foo(auth?: Auth) {\n * assertTypes(arguments, [opt(AuthImpl)]);\n * }\n *\n * The string types can be or'd together, and you can use \"null\" as well (note\n * that typeof null === 'object'; this is an edge case). For example:\n *\n * function foo(profile: {displayName?: string | null}) {\n * assertTypes(arguments, [{displayName: opt('string|null')}]);\n * }\n *\n * @param args\n * @param expected\n */\nexport function assertTypes(\n args: Omit,\n ...expected: Array\n): void {\n if (args.length > expected.length) {\n _fail(AuthErrorCode.ARGUMENT_ERROR, {});\n }\n\n for (let i = 0; i < expected.length; i++) {\n let expect = expected[i];\n const arg = args[i];\n\n if (expect instanceof Optional) {\n // If the arg is undefined, then it matches \"optional\" and we can move to\n // the next arg\n if (typeof arg === 'undefined') {\n continue;\n }\n expect = expect.type;\n }\n\n if (typeof expect === 'string') {\n // Handle the edge case for null because typeof null === 'object'\n if (expect.includes('null') && arg === null) {\n continue;\n }\n\n const required = expect.split('|');\n _assert(required.includes(typeof arg), AuthErrorCode.ARGUMENT_ERROR, {});\n } else if (typeof expect === 'object') {\n // Recursively check record arguments\n const record = arg as Record;\n const map = expect as MapType;\n const keys = Object.keys(expect);\n\n assertTypes(\n keys.map(k => record[k]),\n ...keys.map(k => map[k])\n );\n } else {\n _assert(arg instanceof expect, AuthErrorCode.ARGUMENT_ERROR, {});\n }\n }\n}\n\n/**\n * Unconditionally fails, throwing an internal error with the given message.\n *\n * @param failure type of failure encountered\n * @throws Error\n */\nexport function debugFail(failure: string): never {\n // Log the failure in addition to throw an exception, just in case the\n // exception is swallowed.\n const message = `INTERNAL ASSERTION FAILED: ` + failure;\n _logError(message);\n\n // NOTE: We don't use FirebaseError here because these are internal failures\n // that cannot be handled by the user. (Also it would create a circular\n // dependency between the error and assert modules which doesn't work.)\n throw new Error(message);\n}\n\n/**\n * Fails if the given assertion condition is false, throwing an Error with the\n * given message if it did.\n *\n * @param assertion\n * @param message\n */\nexport function debugAssert(\n assertion: unknown,\n message: string\n): asserts assertion {\n if (!assertion) {\n debugFail(message);\n }\n}\n\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { debugAssert } from './assert';\n\n/**\n * Our API has a lot of one-off constants that are used to do things.\n * Unfortunately we can't export these as classes instantiated directly since\n * the constructor may side effect and therefore can't be proven to be safely\n * culled. Instead, we export these classes themselves as a lowerCamelCase\n * constant, and instantiate them under the hood.\n */\nexport interface SingletonInstantiator {\n new (): T;\n}\n\nconst instanceCache: Map = new Map();\n\nexport function _getInstance(cls: unknown): T {\n debugAssert(cls instanceof Function, 'Expected a class definition');\n let instance = instanceCache.get(cls) as T | undefined;\n\n if (instance) {\n debugAssert(\n instance instanceof cls,\n 'Instance stored in cache mismatched with class'\n );\n return instance;\n }\n\n instance = new (cls as SingletonInstantiator)();\n instanceCache.set(cls, instance);\n return instance;\n}\n\nexport function _clearInstanceMap(): void {\n instanceCache.clear();\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { _getProvider, FirebaseApp } from '@firebase/app';\nimport { deepEqual } from '@firebase/util';\nimport { Auth, Dependencies } from '../../model/public_types';\n\nimport { AuthErrorCode } from '../errors';\nimport { PersistenceInternal } from '../persistence';\nimport { _fail } from '../util/assert';\nimport { _getInstance } from '../util/instantiator';\nimport { AuthImpl } from './auth_impl';\n\n/**\n * Initializes an {@link Auth} instance with fine-grained control over\n * {@link Dependencies}.\n *\n * @remarks\n *\n * This function allows more control over the {@link Auth} instance than\n * {@link getAuth}. `getAuth` uses platform-specific defaults to supply\n * the {@link Dependencies}. In general, `getAuth` is the easiest way to\n * initialize Auth and works for most use cases. Use `initializeAuth` if you\n * need control over which persistence layer is used, or to minimize bundle\n * size if you're not using either `signInWithPopup` or `signInWithRedirect`.\n *\n * For example, if your app only uses anonymous accounts and you only want\n * accounts saved for the current session, initialize `Auth` with:\n *\n * ```js\n * const auth = initializeAuth(app, {\n * persistence: browserSessionPersistence,\n * popupRedirectResolver: undefined,\n * });\n * ```\n *\n * @public\n */\nexport function initializeAuth(app: FirebaseApp, deps?: Dependencies): Auth {\n const provider = _getProvider(app, 'auth');\n\n if (provider.isInitialized()) {\n const auth = provider.getImmediate() as AuthImpl;\n const initialOptions = provider.getOptions() as Dependencies;\n if (deepEqual(initialOptions, deps ?? {})) {\n return auth;\n } else {\n _fail(auth, AuthErrorCode.ALREADY_INITIALIZED);\n }\n }\n\n const auth = provider.initialize({ options: deps }) as AuthImpl;\n\n return auth;\n}\n\nexport function _initializeAuthInstance(\n auth: AuthImpl,\n deps?: Dependencies\n): void {\n const persistence = deps?.persistence || [];\n const hierarchy = (\n Array.isArray(persistence) ? persistence : [persistence]\n ).map(_getInstance);\n if (deps?.errorMap) {\n auth._updateErrorMap(deps.errorMap);\n }\n\n // This promise is intended to float; auth initialization happens in the\n // background, meanwhile the auth object may be used by the app.\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n auth._initializeWithPersistence(hierarchy, deps?.popupRedirectResolver);\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport function _getCurrentUrl(): string {\n return (typeof self !== 'undefined' && self.location?.href) || '';\n}\n\nexport function _isHttpOrHttps(): boolean {\n return _getCurrentScheme() === 'http:' || _getCurrentScheme() === 'https:';\n}\n\nexport function _getCurrentScheme(): string | null {\n return (typeof self !== 'undefined' && self.location?.protocol) || null;\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { isBrowserExtension } from '@firebase/util';\nimport { _isHttpOrHttps } from './location';\n\n/**\n * Determine whether the browser is working online\n */\nexport function _isOnline(): boolean {\n if (\n typeof navigator !== 'undefined' &&\n navigator &&\n 'onLine' in navigator &&\n typeof navigator.onLine === 'boolean' &&\n // Apply only for traditional web apps and Chrome extensions.\n // This is especially true for Cordova apps which have unreliable\n // navigator.onLine behavior unless cordova-plugin-network-information is\n // installed which overwrites the native navigator.onLine value and\n // defines navigator.connection.\n (_isHttpOrHttps() || isBrowserExtension() || 'connection' in navigator)\n ) {\n return navigator.onLine;\n }\n // If we can't determine the state, assume it is online.\n return true;\n}\n\nexport function _getUserLanguage(): string | null {\n if (typeof navigator === 'undefined') {\n return null;\n }\n const navigatorLanguage: NavigatorLanguage = navigator;\n return (\n // Most reliable, but only supported in Chrome/Firefox.\n (navigatorLanguage.languages && navigatorLanguage.languages[0]) ||\n // Supported in most browsers, but returns the language of the browser\n // UI, not the language set in browser settings.\n navigatorLanguage.language ||\n // Couldn't determine language.\n null\n );\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { isMobileCordova, isReactNative } from '@firebase/util';\nimport { _isOnline } from './navigator';\nimport { debugAssert } from './assert';\n\nexport const enum DelayMin {\n OFFLINE = 5000\n}\n\n/**\n * A structure to help pick between a range of long and short delay durations\n * depending on the current environment. In general, the long delay is used for\n * mobile environments whereas short delays are used for desktop environments.\n */\nexport class Delay {\n // The default value for the offline delay timeout in ms.\n\n private readonly isMobile: boolean;\n constructor(\n private readonly shortDelay: number,\n private readonly longDelay: number\n ) {\n // Internal error when improperly initialized.\n debugAssert(\n longDelay > shortDelay,\n 'Short delay should be less than long delay!'\n );\n this.isMobile = isMobileCordova() || isReactNative();\n }\n\n get(): number {\n if (!_isOnline()) {\n // Pick the shorter timeout.\n return Math.min(DelayMin.OFFLINE, this.shortDelay);\n }\n // If running in a mobile environment, return the long delay, otherwise\n // return the short delay.\n // This could be improved in the future to dynamically change based on other\n // variables instead of just reading the current environment.\n return this.isMobile ? this.longDelay : this.shortDelay;\n }\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ConfigInternal } from '../../model/auth';\nimport { debugAssert } from './assert';\n\nexport function _emulatorUrl(config: ConfigInternal, path?: string): string {\n debugAssert(config.emulator, 'Emulator should always be set here');\n const { url } = config.emulator;\n\n if (!path) {\n return url;\n }\n\n return `${url}${path.startsWith('/') ? path.slice(1) : path}`;\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { debugFail } from './assert';\n\nexport class FetchProvider {\n private static fetchImpl: typeof fetch | null;\n private static headersImpl: typeof Headers | null;\n private static responseImpl: typeof Response | null;\n\n static initialize(\n fetchImpl: typeof fetch,\n headersImpl?: typeof Headers,\n responseImpl?: typeof Response\n ): void {\n this.fetchImpl = fetchImpl;\n if (headersImpl) {\n this.headersImpl = headersImpl;\n }\n if (responseImpl) {\n this.responseImpl = responseImpl;\n }\n }\n\n static fetch(): typeof fetch {\n if (this.fetchImpl) {\n return this.fetchImpl;\n }\n if (typeof self !== 'undefined' && 'fetch' in self) {\n return self.fetch;\n }\n debugFail(\n 'Could not find fetch implementation, make sure you call FetchProvider.initialize() with an appropriate polyfill'\n );\n }\n\n static headers(): typeof Headers {\n if (this.headersImpl) {\n return this.headersImpl;\n }\n if (typeof self !== 'undefined' && 'Headers' in self) {\n return self.Headers;\n }\n debugFail(\n 'Could not find Headers implementation, make sure you call FetchProvider.initialize() with an appropriate polyfill'\n );\n }\n\n static response(): typeof Response {\n if (this.responseImpl) {\n return this.responseImpl;\n }\n if (typeof self !== 'undefined' && 'Response' in self) {\n return self.Response;\n }\n debugFail(\n 'Could not find Response implementation, make sure you call FetchProvider.initialize() with an appropriate polyfill'\n );\n }\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AuthErrorCode } from '../core/errors';\n\n/**\n * Errors that can be returned by the backend\n */\nexport const enum ServerError {\n ADMIN_ONLY_OPERATION = 'ADMIN_ONLY_OPERATION',\n BLOCKING_FUNCTION_ERROR_RESPONSE = 'BLOCKING_FUNCTION_ERROR_RESPONSE',\n CAPTCHA_CHECK_FAILED = 'CAPTCHA_CHECK_FAILED',\n CORS_UNSUPPORTED = 'CORS_UNSUPPORTED',\n CREDENTIAL_MISMATCH = 'CREDENTIAL_MISMATCH',\n CREDENTIAL_TOO_OLD_LOGIN_AGAIN = 'CREDENTIAL_TOO_OLD_LOGIN_AGAIN',\n DYNAMIC_LINK_NOT_ACTIVATED = 'DYNAMIC_LINK_NOT_ACTIVATED',\n EMAIL_CHANGE_NEEDS_VERIFICATION = 'EMAIL_CHANGE_NEEDS_VERIFICATION',\n EMAIL_EXISTS = 'EMAIL_EXISTS',\n EMAIL_NOT_FOUND = 'EMAIL_NOT_FOUND',\n EXPIRED_OOB_CODE = 'EXPIRED_OOB_CODE',\n FEDERATED_USER_ID_ALREADY_LINKED = 'FEDERATED_USER_ID_ALREADY_LINKED',\n INVALID_APP_CREDENTIAL = 'INVALID_APP_CREDENTIAL',\n INVALID_APP_ID = 'INVALID_APP_ID',\n INVALID_CERT_HASH = 'INVALID_CERT_HASH',\n INVALID_CODE = 'INVALID_CODE',\n INVALID_CONTINUE_URI = 'INVALID_CONTINUE_URI',\n INVALID_CUSTOM_TOKEN = 'INVALID_CUSTOM_TOKEN',\n INVALID_DYNAMIC_LINK_DOMAIN = 'INVALID_DYNAMIC_LINK_DOMAIN',\n INVALID_EMAIL = 'INVALID_EMAIL',\n INVALID_ID_TOKEN = 'INVALID_ID_TOKEN',\n INVALID_IDP_RESPONSE = 'INVALID_IDP_RESPONSE',\n INVALID_IDENTIFIER = 'INVALID_IDENTIFIER',\n INVALID_MESSAGE_PAYLOAD = 'INVALID_MESSAGE_PAYLOAD',\n INVALID_MFA_PENDING_CREDENTIAL = 'INVALID_MFA_PENDING_CREDENTIAL',\n INVALID_OAUTH_CLIENT_ID = 'INVALID_OAUTH_CLIENT_ID',\n INVALID_OOB_CODE = 'INVALID_OOB_CODE',\n INVALID_PASSWORD = 'INVALID_PASSWORD',\n INVALID_PENDING_TOKEN = 'INVALID_PENDING_TOKEN',\n INVALID_PHONE_NUMBER = 'INVALID_PHONE_NUMBER',\n INVALID_PROVIDER_ID = 'INVALID_PROVIDER_ID',\n INVALID_RECIPIENT_EMAIL = 'INVALID_RECIPIENT_EMAIL',\n INVALID_SENDER = 'INVALID_SENDER',\n INVALID_SESSION_INFO = 'INVALID_SESSION_INFO',\n INVALID_TEMPORARY_PROOF = 'INVALID_TEMPORARY_PROOF',\n INVALID_TENANT_ID = 'INVALID_TENANT_ID',\n MFA_ENROLLMENT_NOT_FOUND = 'MFA_ENROLLMENT_NOT_FOUND',\n MISSING_ANDROID_PACKAGE_NAME = 'MISSING_ANDROID_PACKAGE_NAME',\n MISSING_APP_CREDENTIAL = 'MISSING_APP_CREDENTIAL',\n MISSING_CODE = 'MISSING_CODE',\n MISSING_CONTINUE_URI = 'MISSING_CONTINUE_URI',\n MISSING_CUSTOM_TOKEN = 'MISSING_CUSTOM_TOKEN',\n MISSING_IOS_BUNDLE_ID = 'MISSING_IOS_BUNDLE_ID',\n MISSING_MFA_ENROLLMENT_ID = 'MISSING_MFA_ENROLLMENT_ID',\n MISSING_MFA_PENDING_CREDENTIAL = 'MISSING_MFA_PENDING_CREDENTIAL',\n MISSING_OOB_CODE = 'MISSING_OOB_CODE',\n MISSING_OR_INVALID_NONCE = 'MISSING_OR_INVALID_NONCE',\n MISSING_PASSWORD = 'MISSING_PASSWORD',\n MISSING_REQ_TYPE = 'MISSING_REQ_TYPE',\n MISSING_PHONE_NUMBER = 'MISSING_PHONE_NUMBER',\n MISSING_SESSION_INFO = 'MISSING_SESSION_INFO',\n OPERATION_NOT_ALLOWED = 'OPERATION_NOT_ALLOWED',\n PASSWORD_LOGIN_DISABLED = 'PASSWORD_LOGIN_DISABLED',\n QUOTA_EXCEEDED = 'QUOTA_EXCEEDED',\n RESET_PASSWORD_EXCEED_LIMIT = 'RESET_PASSWORD_EXCEED_LIMIT',\n REJECTED_CREDENTIAL = 'REJECTED_CREDENTIAL',\n SECOND_FACTOR_EXISTS = 'SECOND_FACTOR_EXISTS',\n SECOND_FACTOR_LIMIT_EXCEEDED = 'SECOND_FACTOR_LIMIT_EXCEEDED',\n SESSION_EXPIRED = 'SESSION_EXPIRED',\n TENANT_ID_MISMATCH = 'TENANT_ID_MISMATCH',\n TOKEN_EXPIRED = 'TOKEN_EXPIRED',\n TOO_MANY_ATTEMPTS_TRY_LATER = 'TOO_MANY_ATTEMPTS_TRY_LATER',\n UNSUPPORTED_FIRST_FACTOR = 'UNSUPPORTED_FIRST_FACTOR',\n UNSUPPORTED_TENANT_OPERATION = 'UNSUPPORTED_TENANT_OPERATION',\n UNAUTHORIZED_DOMAIN = 'UNAUTHORIZED_DOMAIN',\n UNVERIFIED_EMAIL = 'UNVERIFIED_EMAIL',\n USER_CANCELLED = 'USER_CANCELLED',\n USER_DISABLED = 'USER_DISABLED',\n USER_NOT_FOUND = 'USER_NOT_FOUND',\n WEAK_PASSWORD = 'WEAK_PASSWORD'\n}\n\n/**\n * API Response in the event of an error\n */\nexport interface JsonError {\n error: {\n code: number;\n message: string;\n errors?: [\n {\n message: ServerError;\n domain: string;\n reason: string;\n }\n ];\n };\n}\n\n/**\n * Type definition for a map from server errors to developer visible errors\n */\nexport declare type ServerErrorMap = {\n readonly [K in ApiError]: AuthErrorCode;\n};\n\n/**\n * Map from errors returned by the server to errors to developer visible errors\n */\nexport const SERVER_ERROR_MAP: Partial> = {\n // Custom token errors.\n [ServerError.CREDENTIAL_MISMATCH]: AuthErrorCode.CREDENTIAL_MISMATCH,\n // This can only happen if the SDK sends a bad request.\n [ServerError.MISSING_CUSTOM_TOKEN]: AuthErrorCode.INTERNAL_ERROR,\n\n // Create Auth URI errors.\n [ServerError.INVALID_IDENTIFIER]: AuthErrorCode.INVALID_EMAIL,\n // This can only happen if the SDK sends a bad request.\n [ServerError.MISSING_CONTINUE_URI]: AuthErrorCode.INTERNAL_ERROR,\n\n // Sign in with email and password errors (some apply to sign up too).\n [ServerError.INVALID_PASSWORD]: AuthErrorCode.INVALID_PASSWORD,\n // This can only happen if the SDK sends a bad request.\n [ServerError.MISSING_PASSWORD]: AuthErrorCode.INTERNAL_ERROR,\n\n // Sign up with email and password errors.\n [ServerError.EMAIL_EXISTS]: AuthErrorCode.EMAIL_EXISTS,\n [ServerError.PASSWORD_LOGIN_DISABLED]: AuthErrorCode.OPERATION_NOT_ALLOWED,\n\n // Verify assertion for sign in with credential errors:\n [ServerError.INVALID_IDP_RESPONSE]: AuthErrorCode.INVALID_IDP_RESPONSE,\n [ServerError.INVALID_PENDING_TOKEN]: AuthErrorCode.INVALID_IDP_RESPONSE,\n [ServerError.FEDERATED_USER_ID_ALREADY_LINKED]:\n AuthErrorCode.CREDENTIAL_ALREADY_IN_USE,\n\n // This can only happen if the SDK sends a bad request.\n [ServerError.MISSING_REQ_TYPE]: AuthErrorCode.INTERNAL_ERROR,\n\n // Send Password reset email errors:\n [ServerError.EMAIL_NOT_FOUND]: AuthErrorCode.USER_DELETED,\n [ServerError.RESET_PASSWORD_EXCEED_LIMIT]:\n AuthErrorCode.TOO_MANY_ATTEMPTS_TRY_LATER,\n\n [ServerError.EXPIRED_OOB_CODE]: AuthErrorCode.EXPIRED_OOB_CODE,\n [ServerError.INVALID_OOB_CODE]: AuthErrorCode.INVALID_OOB_CODE,\n // This can only happen if the SDK sends a bad request.\n [ServerError.MISSING_OOB_CODE]: AuthErrorCode.INTERNAL_ERROR,\n\n // Operations that require ID token in request:\n [ServerError.CREDENTIAL_TOO_OLD_LOGIN_AGAIN]:\n AuthErrorCode.CREDENTIAL_TOO_OLD_LOGIN_AGAIN,\n [ServerError.INVALID_ID_TOKEN]: AuthErrorCode.INVALID_AUTH,\n [ServerError.TOKEN_EXPIRED]: AuthErrorCode.TOKEN_EXPIRED,\n [ServerError.USER_NOT_FOUND]: AuthErrorCode.TOKEN_EXPIRED,\n\n // Other errors.\n [ServerError.TOO_MANY_ATTEMPTS_TRY_LATER]:\n AuthErrorCode.TOO_MANY_ATTEMPTS_TRY_LATER,\n\n // Phone Auth related errors.\n [ServerError.INVALID_CODE]: AuthErrorCode.INVALID_CODE,\n [ServerError.INVALID_SESSION_INFO]: AuthErrorCode.INVALID_SESSION_INFO,\n [ServerError.INVALID_TEMPORARY_PROOF]: AuthErrorCode.INVALID_IDP_RESPONSE,\n [ServerError.MISSING_SESSION_INFO]: AuthErrorCode.MISSING_SESSION_INFO,\n [ServerError.SESSION_EXPIRED]: AuthErrorCode.CODE_EXPIRED,\n\n // Other action code errors when additional settings passed.\n // MISSING_CONTINUE_URI is getting mapped to INTERNAL_ERROR above.\n // This is OK as this error will be caught by client side validation.\n [ServerError.MISSING_ANDROID_PACKAGE_NAME]:\n AuthErrorCode.MISSING_ANDROID_PACKAGE_NAME,\n [ServerError.UNAUTHORIZED_DOMAIN]: AuthErrorCode.UNAUTHORIZED_DOMAIN,\n\n // getProjectConfig errors when clientId is passed.\n [ServerError.INVALID_OAUTH_CLIENT_ID]: AuthErrorCode.INVALID_OAUTH_CLIENT_ID,\n\n // User actions (sign-up or deletion) disabled errors.\n [ServerError.ADMIN_ONLY_OPERATION]: AuthErrorCode.ADMIN_ONLY_OPERATION,\n\n // Multi factor related errors.\n [ServerError.INVALID_MFA_PENDING_CREDENTIAL]:\n AuthErrorCode.INVALID_MFA_SESSION,\n [ServerError.MFA_ENROLLMENT_NOT_FOUND]: AuthErrorCode.MFA_INFO_NOT_FOUND,\n [ServerError.MISSING_MFA_ENROLLMENT_ID]: AuthErrorCode.MISSING_MFA_INFO,\n [ServerError.MISSING_MFA_PENDING_CREDENTIAL]:\n AuthErrorCode.MISSING_MFA_SESSION,\n [ServerError.SECOND_FACTOR_EXISTS]:\n AuthErrorCode.SECOND_FACTOR_ALREADY_ENROLLED,\n [ServerError.SECOND_FACTOR_LIMIT_EXCEEDED]:\n AuthErrorCode.SECOND_FACTOR_LIMIT_EXCEEDED,\n\n // Blocking functions related errors.\n [ServerError.BLOCKING_FUNCTION_ERROR_RESPONSE]: AuthErrorCode.INTERNAL_ERROR,\n};\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FirebaseError, querystring } from '@firebase/util';\n\nimport { AuthErrorCode, NamedErrorParams } from '../core/errors';\nimport { _createError, _errorWithCustomMessage, _fail } from '../core/util/assert';\nimport { Delay } from '../core/util/delay';\nimport { _emulatorUrl } from '../core/util/emulator';\nimport { FetchProvider } from '../core/util/fetch_provider';\nimport { Auth } from '../model/public_types';\nimport { AuthInternal, ConfigInternal } from '../model/auth';\nimport { IdTokenResponse, TaggedWithTokenResponse } from '../model/id_token';\nimport { IdTokenMfaResponse } from './authentication/mfa';\nimport { SERVER_ERROR_MAP, ServerError, ServerErrorMap } from './errors';\n\nexport const enum HttpMethod {\n POST = 'POST',\n GET = 'GET'\n}\n\nexport const enum HttpHeader {\n CONTENT_TYPE = 'Content-Type',\n X_FIREBASE_LOCALE = 'X-Firebase-Locale',\n X_CLIENT_VERSION = 'X-Client-Version',\n X_FIREBASE_GMPID = 'X-Firebase-gmpid',\n X_FIREBASE_CLIENT = 'X-Firebase-Client',\n}\n\nexport const enum Endpoint {\n CREATE_AUTH_URI = '/v1/accounts:createAuthUri',\n DELETE_ACCOUNT = '/v1/accounts:delete',\n RESET_PASSWORD = '/v1/accounts:resetPassword',\n SIGN_UP = '/v1/accounts:signUp',\n SIGN_IN_WITH_CUSTOM_TOKEN = '/v1/accounts:signInWithCustomToken',\n SIGN_IN_WITH_EMAIL_LINK = '/v1/accounts:signInWithEmailLink',\n SIGN_IN_WITH_IDP = '/v1/accounts:signInWithIdp',\n SIGN_IN_WITH_PASSWORD = '/v1/accounts:signInWithPassword',\n SIGN_IN_WITH_PHONE_NUMBER = '/v1/accounts:signInWithPhoneNumber',\n SEND_VERIFICATION_CODE = '/v1/accounts:sendVerificationCode',\n SEND_OOB_CODE = '/v1/accounts:sendOobCode',\n SET_ACCOUNT_INFO = '/v1/accounts:update',\n GET_ACCOUNT_INFO = '/v1/accounts:lookup',\n GET_RECAPTCHA_PARAM = '/v1/recaptchaParams',\n START_PHONE_MFA_ENROLLMENT = '/v2/accounts/mfaEnrollment:start',\n FINALIZE_PHONE_MFA_ENROLLMENT = '/v2/accounts/mfaEnrollment:finalize',\n START_PHONE_MFA_SIGN_IN = '/v2/accounts/mfaSignIn:start',\n FINALIZE_PHONE_MFA_SIGN_IN = '/v2/accounts/mfaSignIn:finalize',\n WITHDRAW_MFA = '/v2/accounts/mfaEnrollment:withdraw',\n GET_PROJECT_CONFIG = '/v1/projects'\n}\n\nexport const DEFAULT_API_TIMEOUT_MS = new Delay(30_000, 60_000);\n\nexport function _addTidIfNecessary(\n auth: Auth,\n request: T\n): T {\n if (auth.tenantId && !request.tenantId) {\n return {\n ...request,\n tenantId: auth.tenantId\n };\n }\n return request;\n}\n\nexport async function _performApiRequest(\n auth: Auth,\n method: HttpMethod,\n path: Endpoint,\n request?: T,\n customErrorMap: Partial> = {}\n): Promise {\n return _performFetchWithErrorHandling(auth, customErrorMap, async () => {\n let body = {};\n let params = {};\n if (request) {\n if (method === HttpMethod.GET) {\n params = request;\n } else {\n body = {\n body: JSON.stringify(request)\n };\n }\n }\n\n const query = querystring({\n key: auth.config.apiKey,\n ...params\n }).slice(1);\n\n const headers = await (auth as AuthInternal)._getAdditionalHeaders();\n headers[HttpHeader.CONTENT_TYPE] = 'application/json';\n\n if (auth.languageCode) {\n headers[HttpHeader.X_FIREBASE_LOCALE] = auth.languageCode;\n }\n\n return FetchProvider.fetch()(\n _getFinalTarget(auth, auth.config.apiHost, path, query),\n {\n method,\n headers,\n referrerPolicy: 'no-referrer',\n ...body\n }\n );\n });\n}\n\nexport async function _performFetchWithErrorHandling(\n auth: Auth,\n customErrorMap: Partial>,\n fetchFn: () => Promise\n): Promise {\n (auth as AuthInternal)._canInitEmulator = false;\n const errorMap = { ...SERVER_ERROR_MAP, ...customErrorMap };\n try {\n const networkTimeout = new NetworkTimeout(auth);\n const response: Response = await Promise.race>([\n fetchFn(),\n networkTimeout.promise\n ]);\n\n // If we've reached this point, the fetch succeeded and the networkTimeout\n // didn't throw; clear the network timeout delay so that Node won't hang\n networkTimeout.clearNetworkTimeout();\n\n const json = await response.json();\n if ('needConfirmation' in json) {\n throw _makeTaggedError(auth, AuthErrorCode.NEED_CONFIRMATION, json);\n }\n\n if (response.ok && !('errorMessage' in json)) {\n return json;\n } else {\n const errorMessage = response.ok ? json.errorMessage : json.error.message;\n const [serverErrorCode, serverErrorMessage] = errorMessage.split(' : ');\n if (serverErrorCode === ServerError.FEDERATED_USER_ID_ALREADY_LINKED) {\n throw _makeTaggedError(\n auth,\n AuthErrorCode.CREDENTIAL_ALREADY_IN_USE,\n json\n );\n } else if (serverErrorCode === ServerError.EMAIL_EXISTS) {\n throw _makeTaggedError(auth, AuthErrorCode.EMAIL_EXISTS, json);\n } else if (serverErrorCode === ServerError.USER_DISABLED) {\n throw _makeTaggedError(auth, AuthErrorCode.USER_DISABLED, json);\n }\n const authError =\n errorMap[serverErrorCode as ServerError] ||\n ((serverErrorCode\n .toLowerCase()\n .replace(/[_\\s]+/g, '-') as unknown) as AuthErrorCode);\n if (serverErrorMessage) {\n throw _errorWithCustomMessage(auth, authError, serverErrorMessage);\n } else {\n _fail(auth, authError);\n }\n }\n } catch (e) {\n if (e instanceof FirebaseError) {\n throw e;\n }\n _fail(auth, AuthErrorCode.NETWORK_REQUEST_FAILED);\n }\n}\n\nexport async function _performSignInRequest(\n auth: Auth,\n method: HttpMethod,\n path: Endpoint,\n request?: T,\n customErrorMap: Partial> = {}\n): Promise {\n const serverResponse = (await _performApiRequest(\n auth,\n method,\n path,\n request,\n customErrorMap\n )) as V;\n if ('mfaPendingCredential' in serverResponse) {\n _fail(auth, AuthErrorCode.MFA_REQUIRED, {\n _serverResponse: serverResponse\n });\n }\n\n return serverResponse;\n}\n\nexport function _getFinalTarget(\n auth: Auth,\n host: string,\n path: string,\n query: string\n): string {\n const base = `${host}${path}?${query}`;\n\n if (!(auth as AuthInternal).config.emulator) {\n return `${auth.config.apiScheme}://${base}`;\n }\n\n return _emulatorUrl(auth.config as ConfigInternal, base);\n}\n\nclass NetworkTimeout {\n // Node timers and browser timers are fundamentally incompatible, but we\n // don't care about the value here\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private timer: any | null = null;\n readonly promise = new Promise((_, reject) => {\n this.timer = setTimeout(() => {\n return reject(_createError(this.auth, AuthErrorCode.NETWORK_REQUEST_FAILED));\n }, DEFAULT_API_TIMEOUT_MS.get());\n });\n\n clearNetworkTimeout(): void {\n clearTimeout(this.timer);\n }\n\n constructor(private readonly auth: Auth) {}\n}\n\ninterface PotentialResponse extends IdTokenResponse {\n email?: string;\n phoneNumber?: string;\n}\n\nexport function _makeTaggedError(\n auth: Auth,\n code: AuthErrorCode,\n response: PotentialResponse\n): FirebaseError {\n const errorParams: NamedErrorParams = {\n appName: auth.name\n };\n\n if (response.email) {\n errorParams.email = response.email;\n }\n if (response.phoneNumber) {\n errorParams.phoneNumber = response.phoneNumber;\n }\n\n const error = _createError(auth, code, errorParams);\n\n // We know customData is defined on error because errorParams is defined\n (error.customData! as TaggedWithTokenResponse)._tokenResponse = response;\n return error;\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Endpoint, HttpMethod, _performApiRequest } from '../index';\nimport { MfaEnrollment } from './mfa';\nimport { Auth } from '../../model/public_types';\n\nexport interface DeleteAccountRequest {\n idToken: string;\n}\n\nexport async function deleteAccount(\n auth: Auth,\n request: DeleteAccountRequest\n): Promise {\n return _performApiRequest(\n auth,\n HttpMethod.POST,\n Endpoint.DELETE_ACCOUNT,\n request\n );\n}\n\nexport interface ProviderUserInfo {\n providerId: string;\n rawId?: string;\n email?: string;\n displayName?: string;\n photoUrl?: string;\n phoneNumber?: string;\n}\n\nexport interface DeleteLinkedAccountsRequest {\n idToken: string;\n deleteProvider: string[];\n}\n\nexport interface DeleteLinkedAccountsResponse {\n providerUserInfo: ProviderUserInfo[];\n}\n\nexport async function deleteLinkedAccounts(\n auth: Auth,\n request: DeleteLinkedAccountsRequest\n): Promise {\n return _performApiRequest<\n DeleteLinkedAccountsRequest,\n DeleteLinkedAccountsResponse\n >(auth, HttpMethod.POST, Endpoint.SET_ACCOUNT_INFO, request);\n}\n\nexport interface APIUserInfo {\n localId?: string;\n displayName?: string;\n photoUrl?: string;\n email?: string;\n emailVerified?: boolean;\n phoneNumber?: string;\n lastLoginAt?: number;\n createdAt?: number;\n tenantId?: string;\n passwordHash?: string;\n providerUserInfo?: ProviderUserInfo[];\n mfaInfo?: MfaEnrollment[];\n}\n\nexport interface GetAccountInfoRequest {\n idToken: string;\n}\n\nexport interface GetAccountInfoResponse {\n users: APIUserInfo[];\n}\n\nexport async function getAccountInfo(\n auth: Auth,\n request: GetAccountInfoRequest\n): Promise {\n return _performApiRequest(\n auth,\n HttpMethod.POST,\n Endpoint.GET_ACCOUNT_INFO,\n request\n );\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport function utcTimestampToDateString(\n utcTimestamp?: string | number\n): string | undefined {\n if (!utcTimestamp) {\n return undefined;\n }\n try {\n // Convert to date object.\n const date = new Date(Number(utcTimestamp));\n // Test date is valid.\n if (!isNaN(date.getTime())) {\n // Convert to UTC date string.\n return date.toUTCString();\n }\n } catch (e) {\n // Do nothing. undefined will be returned.\n }\n return undefined;\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { IdTokenResult, ParsedToken, User } from '../../model/public_types';\nimport { base64Decode, getModularInstance } from '@firebase/util';\n\nimport { UserInternal } from '../../model/user';\nimport { _assert } from '../util/assert';\nimport { _logError } from '../util/log';\nimport { utcTimestampToDateString } from '../util/time';\nimport { AuthErrorCode } from '../errors';\n\n/**\n * Returns a JSON Web Token (JWT) used to identify the user to a Firebase service.\n *\n * @remarks\n * Returns the current token if it has not expired or if it will not expire in the next five\n * minutes. Otherwise, this will refresh the token and return a new one.\n *\n * @param user - The user.\n * @param forceRefresh - Force refresh regardless of token expiration.\n *\n * @public\n */\nexport function getIdToken(user: User, forceRefresh = false): Promise {\n return getModularInstance(user).getIdToken(forceRefresh);\n}\n\n/**\n * Returns a deserialized JSON Web Token (JWT) used to identitfy the user to a Firebase service.\n *\n * @remarks\n * Returns the current token if it has not expired or if it will not expire in the next five\n * minutes. Otherwise, this will refresh the token and return a new one.\n *\n * @param user - The user.\n * @param forceRefresh - Force refresh regardless of token expiration.\n *\n * @public\n */\nexport async function getIdTokenResult(\n user: User,\n forceRefresh = false\n): Promise {\n const userInternal = getModularInstance(user) as UserInternal;\n const token = await userInternal.getIdToken(forceRefresh);\n const claims = _parseToken(token);\n\n _assert(\n claims && claims.exp && claims.auth_time && claims.iat,\n userInternal.auth,\n AuthErrorCode.INTERNAL_ERROR\n );\n const firebase =\n typeof claims.firebase === 'object' ? claims.firebase : undefined;\n\n const signInProvider: string | undefined = firebase?.['sign_in_provider'];\n\n return {\n claims,\n token,\n authTime: utcTimestampToDateString(\n secondsStringToMilliseconds(claims.auth_time)\n )!,\n issuedAtTime: utcTimestampToDateString(\n secondsStringToMilliseconds(claims.iat)\n )!,\n expirationTime: utcTimestampToDateString(\n secondsStringToMilliseconds(claims.exp)\n )!,\n signInProvider: signInProvider || null,\n signInSecondFactor: firebase?.['sign_in_second_factor'] || null\n };\n}\n\nfunction secondsStringToMilliseconds(seconds: string): number {\n return Number(seconds) * 1000;\n}\n\nexport function _parseToken(token: string): ParsedToken | null {\n const [algorithm, payload, signature] = token.split('.');\n if (\n algorithm === undefined ||\n payload === undefined ||\n signature === undefined\n ) {\n _logError('JWT malformed, contained fewer than 3 sections');\n return null;\n }\n\n try {\n const decoded = base64Decode(payload);\n if (!decoded) {\n _logError('Failed to decode base64 JWT payload');\n return null;\n }\n return JSON.parse(decoded);\n } catch (e) {\n _logError('Caught error parsing JWT payload as JSON', e);\n return null;\n }\n}\n\n/**\n * Extract expiresIn TTL from a token by subtracting the expiration from the issuance.\n */\nexport function _tokenExpiresIn(token: string): number {\n const parsedToken = _parseToken(token);\n _assert(parsedToken, AuthErrorCode.INTERNAL_ERROR);\n _assert(typeof parsedToken.exp !== 'undefined', AuthErrorCode.INTERNAL_ERROR);\n _assert(typeof parsedToken.iat !== 'undefined', AuthErrorCode.INTERNAL_ERROR);\n return Number(parsedToken.exp) - Number(parsedToken.iat);\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FirebaseError } from '@firebase/util';\n\nimport { UserInternal } from '../../model/user';\nimport { AuthErrorCode } from '../errors';\n\nexport async function _logoutIfInvalidated(\n user: UserInternal,\n promise: Promise,\n bypassAuthState = false\n): Promise {\n if (bypassAuthState) {\n return promise;\n }\n try {\n return await promise;\n } catch (e) {\n if (e instanceof FirebaseError && isUserInvalidated(e)) {\n if (user.auth.currentUser === user) {\n await user.auth.signOut();\n }\n }\n\n throw e;\n }\n}\n\nfunction isUserInvalidated({ code }: FirebaseError): boolean {\n return (\n code === `auth/${AuthErrorCode.USER_DISABLED}` ||\n code === `auth/${AuthErrorCode.TOKEN_EXPIRED}`\n );\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { UserInternal } from '../../model/user';\nimport { AuthErrorCode } from '../errors';\n\n// Refresh the token five minutes before expiration\nexport const enum Duration {\n OFFSET = 5 * 1000 * 60,\n RETRY_BACKOFF_MIN = 30 * 1000,\n RETRY_BACKOFF_MAX = 16 * 60 * 1000\n}\n\nexport class ProactiveRefresh {\n private isRunning = false;\n\n // Node timers and browser timers return fundamentally different types.\n // We don't actually care what the value is but TS won't accept unknown and\n // we can't cast properly in both environments.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private timerId: any | null = null;\n private errorBackoff = Duration.RETRY_BACKOFF_MIN;\n\n constructor(private readonly user: UserInternal) {}\n\n _start(): void {\n if (this.isRunning) {\n return;\n }\n\n this.isRunning = true;\n this.schedule();\n }\n\n _stop(): void {\n if (!this.isRunning) {\n return;\n }\n\n this.isRunning = false;\n if (this.timerId !== null) {\n clearTimeout(this.timerId);\n }\n }\n\n private getInterval(wasError: boolean): number {\n if (wasError) {\n const interval = this.errorBackoff;\n this.errorBackoff = Math.min(\n this.errorBackoff * 2,\n Duration.RETRY_BACKOFF_MAX\n );\n return interval;\n } else {\n // Reset the error backoff\n this.errorBackoff = Duration.RETRY_BACKOFF_MIN;\n const expTime = this.user.stsTokenManager.expirationTime ?? 0;\n const interval = expTime - Date.now() - Duration.OFFSET;\n\n return Math.max(0, interval);\n }\n }\n\n private schedule(wasError = false): void {\n if (!this.isRunning) {\n // Just in case...\n return;\n }\n\n const interval = this.getInterval(wasError);\n this.timerId = setTimeout(async () => {\n await this.iteration();\n }, interval);\n }\n\n private async iteration(): Promise {\n try {\n await this.user.getIdToken(true);\n } catch (e) {\n // Only retry on network errors\n if (e.code === `auth/${AuthErrorCode.NETWORK_REQUEST_FAILED}`) {\n this.schedule(/* wasError */ true);\n }\n\n return;\n }\n this.schedule();\n }\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { UserMetadata as UserMetadataType } from '../../model/public_types';\n\nimport { utcTimestampToDateString } from '../util/time';\n\nexport class UserMetadata implements UserMetadataType {\n creationTime?: string;\n lastSignInTime?: string;\n\n constructor(\n private createdAt?: string | number,\n private lastLoginAt?: string | number\n ) {\n this._initializeTime();\n }\n\n private _initializeTime(): void {\n this.lastSignInTime = utcTimestampToDateString(this.lastLoginAt);\n this.creationTime = utcTimestampToDateString(this.createdAt);\n }\n\n _copy(metadata: UserMetadata): void {\n this.createdAt = metadata.createdAt;\n this.lastLoginAt = metadata.lastLoginAt;\n this._initializeTime();\n }\n\n toJSON(): object {\n return {\n createdAt: this.createdAt,\n lastLoginAt: this.lastLoginAt\n };\n }\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { User, UserInfo } from '../../model/public_types';\n\nimport {\n getAccountInfo,\n ProviderUserInfo\n} from '../../api/account_management/account';\nimport { UserInternal } from '../../model/user';\nimport { AuthErrorCode } from '../errors';\nimport { _assert } from '../util/assert';\nimport { _logoutIfInvalidated } from './invalidation';\nimport { UserMetadata } from './user_metadata';\nimport { getModularInstance } from '@firebase/util';\n\nexport async function _reloadWithoutSaving(user: UserInternal): Promise {\n const auth = user.auth;\n const idToken = await user.getIdToken();\n const response = await _logoutIfInvalidated(\n user,\n getAccountInfo(auth, { idToken })\n );\n\n _assert(response?.users.length, auth, AuthErrorCode.INTERNAL_ERROR);\n\n const coreAccount = response.users[0];\n\n user._notifyReloadListener(coreAccount);\n\n const newProviderData = coreAccount.providerUserInfo?.length\n ? extractProviderData(coreAccount.providerUserInfo)\n : [];\n\n const providerData = mergeProviderData(user.providerData, newProviderData);\n\n // Preserves the non-nonymous status of the stored user, even if no more\n // credentials (federated or email/password) are linked to the user. If\n // the user was previously anonymous, then use provider data to update.\n // On the other hand, if it was not anonymous before, it should never be\n // considered anonymous now.\n const oldIsAnonymous = user.isAnonymous;\n const newIsAnonymous =\n !(user.email && coreAccount.passwordHash) && !providerData?.length;\n const isAnonymous = !oldIsAnonymous ? false : newIsAnonymous;\n\n const updates: Partial = {\n uid: coreAccount.localId,\n displayName: coreAccount.displayName || null,\n photoURL: coreAccount.photoUrl || null,\n email: coreAccount.email || null,\n emailVerified: coreAccount.emailVerified || false,\n phoneNumber: coreAccount.phoneNumber || null,\n tenantId: coreAccount.tenantId || null,\n providerData,\n metadata: new UserMetadata(coreAccount.createdAt, coreAccount.lastLoginAt),\n isAnonymous\n };\n\n Object.assign(user, updates);\n}\n\n/**\n * Reloads user account data, if signed in.\n *\n * @param user - The user.\n *\n * @public\n */\nexport async function reload(user: User): Promise {\n const userInternal: UserInternal = getModularInstance(user) as UserInternal;\n await _reloadWithoutSaving(userInternal);\n\n // Even though the current user hasn't changed, update\n // current user will trigger a persistence update w/ the\n // new info.\n await userInternal.auth._persistUserIfCurrent(userInternal);\n userInternal.auth._notifyListenersIfCurrent(userInternal);\n}\n\nfunction mergeProviderData(\n original: UserInfo[],\n newData: UserInfo[]\n): UserInfo[] {\n const deduped = original.filter(\n o => !newData.some(n => n.providerId === o.providerId)\n );\n return [...deduped, ...newData];\n}\n\nfunction extractProviderData(providers: ProviderUserInfo[]): UserInfo[] {\n return providers.map(({ providerId, ...provider }) => {\n return {\n providerId,\n uid: provider.rawId || '',\n displayName: provider.displayName || null,\n email: provider.email || null,\n phoneNumber: provider.phoneNumber || null,\n photoURL: provider.photoUrl || null\n };\n });\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable camelcase */\n\nimport { querystring } from '@firebase/util';\n\nimport {\n _getFinalTarget,\n _performFetchWithErrorHandling,\n HttpMethod,\n HttpHeader\n} from '../index';\nimport { FetchProvider } from '../../core/util/fetch_provider';\nimport { Auth } from '../../model/public_types';\nimport { AuthInternal } from '../../model/auth';\n\nexport const enum Endpoint {\n TOKEN = '/v1/token'\n}\n\n/** The server responses with snake_case; we convert to camelCase */\ninterface RequestStsTokenServerResponse {\n access_token: string;\n expires_in: string;\n refresh_token: string;\n}\n\nexport interface RequestStsTokenResponse {\n accessToken: string;\n expiresIn: string;\n refreshToken: string;\n}\n\nexport async function requestStsToken(\n auth: Auth,\n refreshToken: string\n): Promise {\n const response = await _performFetchWithErrorHandling(\n auth,\n {},\n async () => {\n const body = querystring({\n 'grant_type': 'refresh_token',\n 'refresh_token': refreshToken\n }).slice(1);\n const { tokenApiHost, apiKey } = auth.config;\n const url = _getFinalTarget(\n auth,\n tokenApiHost,\n Endpoint.TOKEN,\n `key=${apiKey}`\n );\n\n const headers = await (auth as AuthInternal)._getAdditionalHeaders();\n headers[HttpHeader.CONTENT_TYPE] = 'application/x-www-form-urlencoded';\n\n return FetchProvider.fetch()(url, {\n method: HttpMethod.POST,\n headers,\n body\n });\n }\n );\n\n // The response comes back in snake_case. Convert to camel:\n return {\n accessToken: response.access_token,\n expiresIn: response.expires_in,\n refreshToken: response.refresh_token\n };\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FinalizeMfaResponse } from '../../api/authentication/mfa';\nimport { requestStsToken } from '../../api/authentication/token';\nimport { AuthInternal } from '../../model/auth';\nimport { IdTokenResponse } from '../../model/id_token';\nimport { AuthErrorCode } from '../errors';\nimport { PersistedBlob } from '../persistence';\nimport { _assert, debugFail } from '../util/assert';\nimport { _tokenExpiresIn } from './id_token_result';\n\n/**\n * The number of milliseconds before the official expiration time of a token\n * to refresh that token, to provide a buffer for RPCs to complete.\n */\nexport const enum Buffer {\n TOKEN_REFRESH = 30_000\n}\n\n/**\n * We need to mark this class as internal explicitly to exclude it in the public typings, because\n * it references AuthInternal which has a circular dependency with UserInternal.\n *\n * @internal\n */\nexport class StsTokenManager {\n refreshToken: string | null = null;\n accessToken: string | null = null;\n expirationTime: number | null = null;\n\n get isExpired(): boolean {\n return (\n !this.expirationTime ||\n Date.now() > this.expirationTime - Buffer.TOKEN_REFRESH\n );\n }\n\n updateFromServerResponse(\n response: IdTokenResponse | FinalizeMfaResponse\n ): void {\n _assert(response.idToken, AuthErrorCode.INTERNAL_ERROR);\n _assert(\n typeof response.idToken !== 'undefined',\n AuthErrorCode.INTERNAL_ERROR\n );\n _assert(\n typeof response.refreshToken !== 'undefined',\n AuthErrorCode.INTERNAL_ERROR\n );\n const expiresIn =\n 'expiresIn' in response && typeof response.expiresIn !== 'undefined'\n ? Number(response.expiresIn)\n : _tokenExpiresIn(response.idToken);\n this.updateTokensAndExpiration(\n response.idToken,\n response.refreshToken,\n expiresIn\n );\n }\n\n async getToken(\n auth: AuthInternal,\n forceRefresh = false\n ): Promise {\n _assert(\n !this.accessToken || this.refreshToken,\n auth,\n AuthErrorCode.TOKEN_EXPIRED\n );\n\n if (!forceRefresh && this.accessToken && !this.isExpired) {\n return this.accessToken;\n }\n\n if (this.refreshToken) {\n await this.refresh(auth, this.refreshToken!);\n return this.accessToken;\n }\n\n return null;\n }\n\n clearRefreshToken(): void {\n this.refreshToken = null;\n }\n\n private async refresh(auth: AuthInternal, oldToken: string): Promise {\n const { accessToken, refreshToken, expiresIn } = await requestStsToken(\n auth,\n oldToken\n );\n this.updateTokensAndExpiration(\n accessToken,\n refreshToken,\n Number(expiresIn)\n );\n }\n\n private updateTokensAndExpiration(\n accessToken: string,\n refreshToken: string,\n expiresInSec: number\n ): void {\n this.refreshToken = refreshToken || null;\n this.accessToken = accessToken || null;\n this.expirationTime = Date.now() + expiresInSec * 1000;\n }\n\n static fromJSON(appName: string, object: PersistedBlob): StsTokenManager {\n const { refreshToken, accessToken, expirationTime } = object;\n\n const manager = new StsTokenManager();\n if (refreshToken) {\n _assert(typeof refreshToken === 'string', AuthErrorCode.INTERNAL_ERROR, {\n appName\n });\n manager.refreshToken = refreshToken;\n }\n if (accessToken) {\n _assert(typeof accessToken === 'string', AuthErrorCode.INTERNAL_ERROR, {\n appName\n });\n manager.accessToken = accessToken;\n }\n if (expirationTime) {\n _assert(\n typeof expirationTime === 'number',\n AuthErrorCode.INTERNAL_ERROR,\n {\n appName\n }\n );\n manager.expirationTime = expirationTime;\n }\n return manager;\n }\n\n toJSON(): object {\n return {\n refreshToken: this.refreshToken,\n accessToken: this.accessToken,\n expirationTime: this.expirationTime\n };\n }\n\n _assign(stsTokenManager: StsTokenManager): void {\n this.accessToken = stsTokenManager.accessToken;\n this.refreshToken = stsTokenManager.refreshToken;\n this.expirationTime = stsTokenManager.expirationTime;\n }\n\n _clone(): StsTokenManager {\n return Object.assign(new StsTokenManager(), this.toJSON());\n }\n\n _performRefresh(): never {\n return debugFail('not implemented');\n }\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { IdTokenResult } from '../../model/public_types';\nimport { NextFn } from '@firebase/util';\n\nimport {\n APIUserInfo,\n deleteAccount\n} from '../../api/account_management/account';\nimport { FinalizeMfaResponse } from '../../api/authentication/mfa';\nimport { AuthInternal } from '../../model/auth';\nimport { IdTokenResponse } from '../../model/id_token';\nimport {\n MutableUserInfo,\n UserInternal,\n UserParameters\n} from '../../model/user';\nimport { AuthErrorCode } from '../errors';\nimport { PersistedBlob } from '../persistence';\nimport { _assert } from '../util/assert';\nimport { getIdTokenResult } from './id_token_result';\nimport { _logoutIfInvalidated } from './invalidation';\nimport { ProactiveRefresh } from './proactive_refresh';\nimport { _reloadWithoutSaving, reload } from './reload';\nimport { StsTokenManager } from './token_manager';\nimport { UserMetadata } from './user_metadata';\nimport { ProviderId } from '../../model/enums';\n\nfunction assertStringOrUndefined(\n assertion: unknown,\n appName: string\n): asserts assertion is string | undefined {\n _assert(\n typeof assertion === 'string' || typeof assertion === 'undefined',\n AuthErrorCode.INTERNAL_ERROR,\n { appName }\n );\n}\n\nexport class UserImpl implements UserInternal {\n // For the user object, provider is always Firebase.\n readonly providerId = ProviderId.FIREBASE;\n stsTokenManager: StsTokenManager;\n // Last known accessToken so we know when it changes\n private accessToken: string | null;\n\n uid: string;\n auth: AuthInternal;\n emailVerified: boolean;\n isAnonymous: boolean;\n tenantId: string | null;\n readonly metadata: UserMetadata;\n providerData: MutableUserInfo[];\n\n // Optional fields from UserInfo\n displayName: string | null;\n email: string | null;\n phoneNumber: string | null;\n photoURL: string | null;\n\n _redirectEventId?: string;\n private readonly proactiveRefresh = new ProactiveRefresh(this);\n\n constructor({ uid, auth, stsTokenManager, ...opt }: UserParameters) {\n this.uid = uid;\n this.auth = auth;\n this.stsTokenManager = stsTokenManager;\n this.accessToken = stsTokenManager.accessToken;\n this.displayName = opt.displayName || null;\n this.email = opt.email || null;\n this.emailVerified = opt.emailVerified || false;\n this.phoneNumber = opt.phoneNumber || null;\n this.photoURL = opt.photoURL || null;\n this.isAnonymous = opt.isAnonymous || false;\n this.tenantId = opt.tenantId || null;\n this.providerData = opt.providerData ? [...opt.providerData] : [];\n this.metadata = new UserMetadata(\n opt.createdAt || undefined,\n opt.lastLoginAt || undefined\n );\n }\n\n async getIdToken(forceRefresh?: boolean): Promise {\n const accessToken = await _logoutIfInvalidated(\n this,\n this.stsTokenManager.getToken(this.auth, forceRefresh)\n );\n _assert(accessToken, this.auth, AuthErrorCode.INTERNAL_ERROR);\n\n if (this.accessToken !== accessToken) {\n this.accessToken = accessToken;\n await this.auth._persistUserIfCurrent(this);\n this.auth._notifyListenersIfCurrent(this);\n }\n\n return accessToken;\n }\n\n getIdTokenResult(forceRefresh?: boolean): Promise {\n return getIdTokenResult(this, forceRefresh);\n }\n\n reload(): Promise {\n return reload(this);\n }\n\n private reloadUserInfo: APIUserInfo | null = null;\n private reloadListener: NextFn | null = null;\n\n _assign(user: UserInternal): void {\n if (this === user) {\n return;\n }\n _assert(this.uid === user.uid, this.auth, AuthErrorCode.INTERNAL_ERROR);\n this.displayName = user.displayName;\n this.photoURL = user.photoURL;\n this.email = user.email;\n this.emailVerified = user.emailVerified;\n this.phoneNumber = user.phoneNumber;\n this.isAnonymous = user.isAnonymous;\n this.tenantId = user.tenantId;\n this.providerData = user.providerData.map(userInfo => ({ ...userInfo }));\n this.metadata._copy(user.metadata);\n this.stsTokenManager._assign(user.stsTokenManager);\n }\n\n _clone(auth: AuthInternal): UserInternal {\n return new UserImpl({\n ...this,\n auth,\n stsTokenManager: this.stsTokenManager._clone()\n });\n }\n\n _onReload(callback: NextFn): void {\n // There should only ever be one listener, and that is a single instance of MultiFactorUser\n _assert(!this.reloadListener, this.auth, AuthErrorCode.INTERNAL_ERROR);\n this.reloadListener = callback;\n if (this.reloadUserInfo) {\n this._notifyReloadListener(this.reloadUserInfo);\n this.reloadUserInfo = null;\n }\n }\n\n _notifyReloadListener(userInfo: APIUserInfo): void {\n if (this.reloadListener) {\n this.reloadListener(userInfo);\n } else {\n // If no listener is subscribed yet, save the result so it's available when they do subscribe\n this.reloadUserInfo = userInfo;\n }\n }\n\n _startProactiveRefresh(): void {\n this.proactiveRefresh._start();\n }\n\n _stopProactiveRefresh(): void {\n this.proactiveRefresh._stop();\n }\n\n async _updateTokensIfNecessary(\n response: IdTokenResponse | FinalizeMfaResponse,\n reload = false\n ): Promise {\n let tokensRefreshed = false;\n if (\n response.idToken &&\n response.idToken !== this.stsTokenManager.accessToken\n ) {\n this.stsTokenManager.updateFromServerResponse(response);\n tokensRefreshed = true;\n }\n\n if (reload) {\n await _reloadWithoutSaving(this);\n }\n\n await this.auth._persistUserIfCurrent(this);\n if (tokensRefreshed) {\n this.auth._notifyListenersIfCurrent(this);\n }\n }\n\n async delete(): Promise {\n const idToken = await this.getIdToken();\n await _logoutIfInvalidated(this, deleteAccount(this.auth, { idToken }));\n this.stsTokenManager.clearRefreshToken();\n\n // TODO: Determine if cancellable-promises are necessary to use in this class so that delete()\n // cancels pending actions...\n\n return this.auth.signOut();\n }\n\n toJSON(): PersistedBlob {\n return {\n uid: this.uid,\n email: this.email || undefined,\n emailVerified: this.emailVerified,\n displayName: this.displayName || undefined,\n isAnonymous: this.isAnonymous,\n photoURL: this.photoURL || undefined,\n phoneNumber: this.phoneNumber || undefined,\n tenantId: this.tenantId || undefined,\n providerData: this.providerData.map(userInfo => ({ ...userInfo })),\n stsTokenManager: this.stsTokenManager.toJSON(),\n // Redirect event ID must be maintained in case there is a pending\n // redirect event.\n _redirectEventId: this._redirectEventId,\n ...this.metadata.toJSON(),\n\n // Required for compatibility with the legacy SDK (go/firebase-auth-sdk-persistence-parsing):\n apiKey: this.auth.config.apiKey,\n appName: this.auth.name\n // Missing authDomain will be tolerated by the legacy SDK.\n // stsTokenManager.apiKey isn't actually required (despite the legacy SDK persisting it).\n };\n }\n\n get refreshToken(): string {\n return this.stsTokenManager.refreshToken || '';\n }\n\n static _fromJSON(auth: AuthInternal, object: PersistedBlob): UserInternal {\n const displayName = object.displayName ?? undefined;\n const email = object.email ?? undefined;\n const phoneNumber = object.phoneNumber ?? undefined;\n const photoURL = object.photoURL ?? undefined;\n const tenantId = object.tenantId ?? undefined;\n const _redirectEventId = object._redirectEventId ?? undefined;\n const createdAt = object.createdAt ?? undefined;\n const lastLoginAt = object.lastLoginAt ?? undefined;\n const {\n uid,\n emailVerified,\n isAnonymous,\n providerData,\n stsTokenManager: plainObjectTokenManager\n } = object;\n\n _assert(uid && plainObjectTokenManager, auth, AuthErrorCode.INTERNAL_ERROR);\n\n const stsTokenManager = StsTokenManager.fromJSON(\n this.name,\n plainObjectTokenManager as PersistedBlob\n );\n\n _assert(typeof uid === 'string', auth, AuthErrorCode.INTERNAL_ERROR);\n assertStringOrUndefined(displayName, auth.name);\n assertStringOrUndefined(email, auth.name);\n _assert(\n typeof emailVerified === 'boolean',\n auth,\n AuthErrorCode.INTERNAL_ERROR\n );\n _assert(\n typeof isAnonymous === 'boolean',\n auth,\n AuthErrorCode.INTERNAL_ERROR\n );\n assertStringOrUndefined(phoneNumber, auth.name);\n assertStringOrUndefined(photoURL, auth.name);\n assertStringOrUndefined(tenantId, auth.name);\n assertStringOrUndefined(_redirectEventId, auth.name);\n assertStringOrUndefined(createdAt, auth.name);\n assertStringOrUndefined(lastLoginAt, auth.name);\n const user = new UserImpl({\n uid,\n auth,\n email,\n emailVerified,\n displayName,\n isAnonymous,\n photoURL,\n phoneNumber,\n tenantId,\n stsTokenManager,\n createdAt,\n lastLoginAt\n });\n\n if (providerData && Array.isArray(providerData)) {\n user.providerData = providerData.map(userInfo => ({ ...userInfo }));\n }\n\n if (_redirectEventId) {\n user._redirectEventId = _redirectEventId;\n }\n\n return user;\n }\n\n /**\n * Initialize a User from an idToken server response\n * @param auth\n * @param idTokenResponse\n */\n static async _fromIdTokenResponse(\n auth: AuthInternal,\n idTokenResponse: IdTokenResponse,\n isAnonymous: boolean = false\n ): Promise {\n const stsTokenManager = new StsTokenManager();\n stsTokenManager.updateFromServerResponse(idTokenResponse);\n\n // Initialize the Firebase Auth user.\n const user = new UserImpl({\n uid: idTokenResponse.localId,\n auth,\n stsTokenManager,\n isAnonymous\n });\n\n // Updates the user info and data and resolves with a user instance.\n await _reloadWithoutSaving(user);\n return user;\n }\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Persistence } from '../../model/public_types';\n\nimport {\n PersistenceInternal,\n PersistenceType,\n PersistenceValue,\n StorageEventListener\n} from '../persistence';\n\nexport class InMemoryPersistence implements PersistenceInternal {\n static type: 'NONE' = 'NONE';\n readonly type = PersistenceType.NONE;\n storage: Record = {};\n\n async _isAvailable(): Promise {\n return true;\n }\n\n async _set(key: string, value: PersistenceValue): Promise {\n this.storage[key] = value;\n }\n\n async _get(key: string): Promise {\n const value = this.storage[key];\n return value === undefined ? null : (value as T);\n }\n\n async _remove(key: string): Promise {\n delete this.storage[key];\n }\n\n _addListener(_key: string, _listener: StorageEventListener): void {\n // Listeners are not supported for in-memory storage since it cannot be shared across windows/workers\n return;\n }\n\n _removeListener(_key: string, _listener: StorageEventListener): void {\n // Listeners are not supported for in-memory storage since it cannot be shared across windows/workers\n return;\n }\n}\n\n/**\n * An implementation of {@link Persistence} of type 'NONE'.\n *\n * @public\n */\nexport const inMemoryPersistence: Persistence = InMemoryPersistence;\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ApiKey, AppName, AuthInternal } from '../../model/auth';\nimport { UserInternal } from '../../model/user';\nimport { PersistedBlob, PersistenceInternal } from '../persistence';\nimport { UserImpl } from '../user/user_impl';\nimport { _getInstance } from '../util/instantiator';\nimport { inMemoryPersistence } from './in_memory';\n\nexport const enum KeyName {\n AUTH_USER = 'authUser',\n AUTH_EVENT = 'authEvent',\n REDIRECT_USER = 'redirectUser',\n PERSISTENCE_USER = 'persistence'\n}\nexport const enum Namespace {\n PERSISTENCE = 'firebase'\n}\n\nexport function _persistenceKeyName(\n key: string,\n apiKey: ApiKey,\n appName: AppName\n): string {\n return `${Namespace.PERSISTENCE}:${key}:${apiKey}:${appName}`;\n}\n\nexport class PersistenceUserManager {\n private readonly fullUserKey: string;\n private readonly fullPersistenceKey: string;\n private readonly boundEventHandler: () => void;\n\n private constructor(\n public persistence: PersistenceInternal,\n private readonly auth: AuthInternal,\n private readonly userKey: string\n ) {\n const { config, name } = this.auth;\n this.fullUserKey = _persistenceKeyName(this.userKey, config.apiKey, name);\n this.fullPersistenceKey = _persistenceKeyName(\n KeyName.PERSISTENCE_USER,\n config.apiKey,\n name\n );\n this.boundEventHandler = auth._onStorageEvent.bind(auth);\n this.persistence._addListener(this.fullUserKey, this.boundEventHandler);\n }\n\n setCurrentUser(user: UserInternal): Promise {\n return this.persistence._set(this.fullUserKey, user.toJSON());\n }\n\n async getCurrentUser(): Promise {\n const blob = await this.persistence._get(this.fullUserKey);\n return blob ? UserImpl._fromJSON(this.auth, blob) : null;\n }\n\n removeCurrentUser(): Promise {\n return this.persistence._remove(this.fullUserKey);\n }\n\n savePersistenceForRedirect(): Promise {\n return this.persistence._set(\n this.fullPersistenceKey,\n this.persistence.type\n );\n }\n\n async setPersistence(newPersistence: PersistenceInternal): Promise {\n if (this.persistence === newPersistence) {\n return;\n }\n\n const currentUser = await this.getCurrentUser();\n await this.removeCurrentUser();\n\n this.persistence = newPersistence;\n\n if (currentUser) {\n return this.setCurrentUser(currentUser);\n }\n }\n\n delete(): void {\n this.persistence._removeListener(this.fullUserKey, this.boundEventHandler);\n }\n\n static async create(\n auth: AuthInternal,\n persistenceHierarchy: PersistenceInternal[],\n userKey = KeyName.AUTH_USER\n ): Promise {\n if (!persistenceHierarchy.length) {\n return new PersistenceUserManager(\n _getInstance(inMemoryPersistence),\n auth,\n userKey\n );\n }\n\n // Eliminate any persistences that are not available\n const availablePersistences = (\n await Promise.all(\n persistenceHierarchy.map(async persistence => {\n if (await persistence._isAvailable()) {\n return persistence;\n }\n return undefined;\n })\n )\n ).filter(persistence => persistence) as PersistenceInternal[];\n\n // Fall back to the first persistence listed, or in memory if none available\n let selectedPersistence =\n availablePersistences[0] ||\n _getInstance(inMemoryPersistence);\n\n const key = _persistenceKeyName(userKey, auth.config.apiKey, auth.name);\n\n // Pull out the existing user, setting the chosen persistence to that\n // persistence if the user exists.\n let userToMigrate: UserInternal | null = null;\n // Note, here we check for a user in _all_ persistences, not just the\n // ones deemed available. If we can migrate a user out of a broken\n // persistence, we will (but only if that persistence supports migration).\n for (const persistence of persistenceHierarchy) {\n try {\n const blob = await persistence._get(key);\n if (blob) {\n const user = UserImpl._fromJSON(auth, blob); // throws for unparsable blob (wrong format)\n if (persistence !== selectedPersistence) {\n userToMigrate = user;\n }\n selectedPersistence = persistence;\n break;\n }\n } catch {}\n }\n\n // If we find the user in a persistence that does support migration, use\n // that migration path (of only persistences that support migration)\n const migrationHierarchy = availablePersistences.filter(\n p => p._shouldAllowMigration\n );\n\n // If the persistence does _not_ allow migration, just finish off here\n if (\n !selectedPersistence._shouldAllowMigration ||\n !migrationHierarchy.length\n ) {\n return new PersistenceUserManager(selectedPersistence, auth, userKey);\n }\n\n selectedPersistence = migrationHierarchy[0];\n if (userToMigrate) {\n // This normally shouldn't throw since chosenPersistence.isAvailable() is true, but if it does\n // we'll just let it bubble to surface the error.\n await selectedPersistence._set(key, userToMigrate.toJSON());\n }\n\n // Attempt to clear the key in other persistences but ignore errors. This helps prevent issues\n // such as users getting stuck with a previous account after signing out and refreshing the tab.\n await Promise.all(\n persistenceHierarchy.map(async persistence => {\n if (persistence !== selectedPersistence) {\n try {\n await persistence._remove(key);\n } catch {}\n }\n })\n );\n return new PersistenceUserManager(selectedPersistence, auth, userKey);\n }\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { isIE, getUA } from '@firebase/util';\n\ninterface NavigatorStandalone extends Navigator {\n standalone?: unknown;\n}\n\ninterface Document {\n documentMode?: number;\n}\n\n/**\n * Enums for Browser name.\n */\nexport const enum BrowserName {\n ANDROID = 'Android',\n BLACKBERRY = 'Blackberry',\n EDGE = 'Edge',\n FIREFOX = 'Firefox',\n IE = 'IE',\n IEMOBILE = 'IEMobile',\n OPERA = 'Opera',\n OTHER = 'Other',\n CHROME = 'Chrome',\n SAFARI = 'Safari',\n SILK = 'Silk',\n WEBOS = 'Webos'\n}\n\n/**\n * Determine the browser for the purposes of reporting usage to the API\n */\nexport function _getBrowserName(userAgent: string): BrowserName | string {\n const ua = userAgent.toLowerCase();\n if (ua.includes('opera/') || ua.includes('opr/') || ua.includes('opios/')) {\n return BrowserName.OPERA;\n } else if (_isIEMobile(ua)) {\n // Windows phone IEMobile browser.\n return BrowserName.IEMOBILE;\n } else if (ua.includes('msie') || ua.includes('trident/')) {\n return BrowserName.IE;\n } else if (ua.includes('edge/')) {\n return BrowserName.EDGE;\n } else if (_isFirefox(ua)) {\n return BrowserName.FIREFOX;\n } else if (ua.includes('silk/')) {\n return BrowserName.SILK;\n } else if (_isBlackBerry(ua)) {\n // Blackberry browser.\n return BrowserName.BLACKBERRY;\n } else if (_isWebOS(ua)) {\n // WebOS default browser.\n return BrowserName.WEBOS;\n } else if (_isSafari(ua)) {\n return BrowserName.SAFARI;\n } else if (\n (ua.includes('chrome/') || _isChromeIOS(ua)) &&\n !ua.includes('edge/')\n ) {\n return BrowserName.CHROME;\n } else if (_isAndroid(ua)) {\n // Android stock browser.\n return BrowserName.ANDROID;\n } else {\n // Most modern browsers have name/version at end of user agent string.\n const re = /([a-zA-Z\\d\\.]+)\\/[a-zA-Z\\d\\.]*$/;\n const matches = userAgent.match(re);\n if (matches?.length === 2) {\n return matches[1];\n }\n }\n return BrowserName.OTHER;\n}\n\nexport function _isFirefox(ua = getUA()): boolean {\n return /firefox\\//i.test(ua);\n}\n\nexport function _isSafari(userAgent = getUA()): boolean {\n const ua = userAgent.toLowerCase();\n return (\n ua.includes('safari/') &&\n !ua.includes('chrome/') &&\n !ua.includes('crios/') &&\n !ua.includes('android')\n );\n}\n\nexport function _isChromeIOS(ua = getUA()): boolean {\n return /crios\\//i.test(ua);\n}\n\nexport function _isIEMobile(ua = getUA()): boolean {\n return /iemobile/i.test(ua);\n}\n\nexport function _isAndroid(ua = getUA()): boolean {\n return /android/i.test(ua);\n}\n\nexport function _isBlackBerry(ua = getUA()): boolean {\n return /blackberry/i.test(ua);\n}\n\nexport function _isWebOS(ua = getUA()): boolean {\n return /webos/i.test(ua);\n}\n\nexport function _isIOS(ua = getUA()): boolean {\n return /iphone|ipad|ipod/i.test(ua);\n}\n\nexport function _isIOS7Or8(ua = getUA()): boolean {\n return (\n /(iPad|iPhone|iPod).*OS 7_\\d/i.test(ua) ||\n /(iPad|iPhone|iPod).*OS 8_\\d/i.test(ua)\n );\n}\n\nexport function _isIOSStandalone(ua = getUA()): boolean {\n return _isIOS(ua) && !!(window.navigator as NavigatorStandalone)?.standalone;\n}\n\nexport function _isIE10(): boolean {\n return isIE() && (document as Document).documentMode === 10;\n}\n\nexport function _isMobileBrowser(ua: string = getUA()): boolean {\n // TODO: implement getBrowserName equivalent for OS.\n return (\n _isIOS(ua) ||\n _isAndroid(ua) ||\n _isWebOS(ua) ||\n _isBlackBerry(ua) ||\n /windows phone/i.test(ua) ||\n _isIEMobile(ua)\n );\n}\n\nexport function _isIframe(): boolean {\n try {\n // Check that the current window is not the top window.\n // If so, return true.\n return !!(window && window !== window.top);\n } catch (e) {\n return false;\n }\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { SDK_VERSION } from '@firebase/app';\nimport { _getBrowserName } from './browser';\nimport { getUA } from '@firebase/util';\n\nexport const enum ClientImplementation {\n CORE = 'JsCore'\n}\n\n/**\n * @internal\n */\nexport const enum ClientPlatform {\n BROWSER = 'Browser',\n NODE = 'Node',\n REACT_NATIVE = 'ReactNative',\n CORDOVA = 'Cordova',\n WORKER = 'Worker'\n}\n\n/*\n * Determine the SDK version string\n */\nexport function _getClientVersion(\n clientPlatform: ClientPlatform,\n frameworks: readonly string[] = []\n): string {\n let reportedPlatform: string;\n switch (clientPlatform) {\n case ClientPlatform.BROWSER:\n // In a browser environment, report the browser name.\n reportedPlatform = _getBrowserName(getUA());\n break;\n case ClientPlatform.WORKER:\n // Technically a worker runs from a browser but we need to differentiate a\n // worker from a browser.\n // For example: Chrome-Worker/JsCore/4.9.1/FirebaseCore-web.\n reportedPlatform = `${_getBrowserName(getUA())}-${clientPlatform}`;\n break;\n default:\n reportedPlatform = clientPlatform;\n }\n const reportedFrameworks = frameworks.length\n ? frameworks.join(',')\n : 'FirebaseCore-web'; /* default value if no other framework is used */\n return `${reportedPlatform}/${ClientImplementation.CORE}/${SDK_VERSION}/${reportedFrameworks}`;\n}\n","/**\n * @license\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AuthInternal } from '../../model/auth';\nimport { Unsubscribe, User } from '../../model/public_types';\nimport { AuthErrorCode } from '../errors';\n\ninterface MiddlewareEntry {\n (user: User | null): Promise;\n onAbort?: () => void;\n}\n\nexport class AuthMiddlewareQueue {\n private readonly queue: MiddlewareEntry[] = [];\n\n constructor(private readonly auth: AuthInternal) {}\n\n pushCallback(\n callback: (user: User | null) => void | Promise,\n onAbort?: () => void): Unsubscribe {\n // The callback could be sync or async. Wrap it into a\n // function that is always async.\n const wrappedCallback: MiddlewareEntry =\n (user: User | null): Promise => new Promise((resolve, reject) => {\n try {\n const result = callback(user);\n // Either resolve with existing promise or wrap a non-promise\n // return value into a promise.\n resolve(result);\n } catch (e) {\n // Sync callback throws.\n reject(e);\n }\n });\n // Attach the onAbort if present\n wrappedCallback.onAbort = onAbort;\n this.queue.push(wrappedCallback);\n\n const index = this.queue.length - 1;\n return () => {\n // Unsubscribe. Replace with no-op. Do not remove from array, or it will disturb\n // indexing of other elements.\n this.queue[index] = () => Promise.resolve();\n };\n }\n\n async runMiddleware(nextUser: User | null): Promise {\n if (this.auth.currentUser === nextUser) {\n return;\n }\n\n // While running the middleware, build a temporary stack of onAbort\n // callbacks to call if one middleware callback rejects.\n\n const onAbortStack: Array<() => void> = [];\n try {\n for (const beforeStateCallback of this.queue) {\n await beforeStateCallback(nextUser);\n\n // Only push the onAbort if the callback succeeds\n if (beforeStateCallback.onAbort) {\n onAbortStack.push(beforeStateCallback.onAbort);\n }\n }\n } catch (e) {\n // Run all onAbort, with separate try/catch to ignore any errors and\n // continue\n onAbortStack.reverse();\n for (const onAbort of onAbortStack) {\n try {\n onAbort();\n } catch (_) { /* swallow error */}\n }\n\n throw this.auth._errorFactory.create(\n AuthErrorCode.LOGIN_BLOCKED, { originalMessage: e.message });\n }\n }\n}","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { _FirebaseService, FirebaseApp } from '@firebase/app';\nimport { Provider } from '@firebase/component';\nimport {\n Auth,\n AuthErrorMap,\n AuthSettings,\n EmulatorConfig,\n NextOrObserver,\n Persistence,\n PopupRedirectResolver,\n User,\n UserCredential,\n CompleteFn,\n ErrorFn,\n NextFn,\n Unsubscribe\n} from '../../model/public_types';\nimport {\n createSubscribe,\n ErrorFactory,\n getModularInstance,\n Observer,\n Subscribe\n} from '@firebase/util';\n\nimport { AuthInternal, ConfigInternal } from '../../model/auth';\nimport { PopupRedirectResolverInternal } from '../../model/popup_redirect';\nimport { UserInternal } from '../../model/user';\nimport {\n AuthErrorCode,\n AuthErrorParams,\n ErrorMapRetriever,\n _DEFAULT_AUTH_ERROR_FACTORY\n} from '../errors';\nimport { PersistenceInternal } from '../persistence';\nimport {\n KeyName,\n PersistenceUserManager\n} from '../persistence/persistence_user_manager';\nimport { _reloadWithoutSaving } from '../user/reload';\nimport { _assert } from '../util/assert';\nimport { _getInstance } from '../util/instantiator';\nimport { _getUserLanguage } from '../util/navigator';\nimport { _getClientVersion } from '../util/version';\nimport { HttpHeader } from '../../api';\nimport { AuthMiddlewareQueue } from './middleware';\n\ninterface AsyncAction {\n (): Promise;\n}\n\nexport const enum DefaultConfig {\n TOKEN_API_HOST = 'securetoken.googleapis.com',\n API_HOST = 'identitytoolkit.googleapis.com',\n API_SCHEME = 'https'\n}\n\nexport class AuthImpl implements AuthInternal, _FirebaseService {\n currentUser: User | null = null;\n emulatorConfig: EmulatorConfig | null = null;\n private operations = Promise.resolve();\n private persistenceManager?: PersistenceUserManager;\n private redirectPersistenceManager?: PersistenceUserManager;\n private authStateSubscription = new Subscription(this);\n private idTokenSubscription = new Subscription(this);\n private readonly beforeStateQueue = new AuthMiddlewareQueue(this);\n private redirectUser: UserInternal | null = null;\n private isProactiveRefreshEnabled = false;\n\n // Any network calls will set this to true and prevent subsequent emulator\n // initialization\n _canInitEmulator = true;\n _isInitialized = false;\n _deleted = false;\n _initializationPromise: Promise | null = null;\n _popupRedirectResolver: PopupRedirectResolverInternal | null = null;\n _errorFactory: ErrorFactory =\n _DEFAULT_AUTH_ERROR_FACTORY;\n readonly name: string;\n\n // Tracks the last notified UID for state change listeners to prevent\n // repeated calls to the callbacks. Undefined means it's never been\n // called, whereas null means it's been called with a signed out user\n private lastNotifiedUid: string | null | undefined = undefined;\n\n languageCode: string | null = null;\n tenantId: string | null = null;\n settings: AuthSettings = { appVerificationDisabledForTesting: false };\n\n constructor(\n public readonly app: FirebaseApp,\n private readonly heartbeatServiceProvider: Provider<'heartbeat'>,\n public readonly config: ConfigInternal\n ) {\n this.name = app.name;\n this.clientVersion = config.sdkClientVersion;\n }\n\n _initializeWithPersistence(\n persistenceHierarchy: PersistenceInternal[],\n popupRedirectResolver?: PopupRedirectResolver\n ): Promise {\n if (popupRedirectResolver) {\n this._popupRedirectResolver = _getInstance(popupRedirectResolver);\n }\n\n // Have to check for app deletion throughout initialization (after each\n // promise resolution)\n this._initializationPromise = this.queue(async () => {\n if (this._deleted) {\n return;\n }\n\n this.persistenceManager = await PersistenceUserManager.create(\n this,\n persistenceHierarchy\n );\n\n if (this._deleted) {\n return;\n }\n\n // Initialize the resolver early if necessary (only applicable to web:\n // this will cause the iframe to load immediately in certain cases)\n if (this._popupRedirectResolver?._shouldInitProactively) {\n // If this fails, don't halt auth loading\n try {\n await this._popupRedirectResolver._initialize(this);\n } catch (e) { /* Ignore the error */ }\n }\n\n await this.initializeCurrentUser(popupRedirectResolver);\n this.lastNotifiedUid = this.currentUser?.uid || null;\n\n if (this._deleted) {\n return;\n }\n\n this._isInitialized = true;\n });\n\n return this._initializationPromise;\n }\n\n /**\n * If the persistence is changed in another window, the user manager will let us know\n */\n async _onStorageEvent(): Promise {\n if (this._deleted) {\n return;\n }\n\n const user = await this.assertedPersistence.getCurrentUser();\n\n if (!this.currentUser && !user) {\n // No change, do nothing (was signed out and remained signed out).\n return;\n }\n\n // If the same user is to be synchronized.\n if (this.currentUser && user && this.currentUser.uid === user.uid) {\n // Data update, simply copy data changes.\n this._currentUser._assign(user);\n // If tokens changed from previous user tokens, this will trigger\n // notifyAuthListeners_.\n await this.currentUser.getIdToken();\n return;\n }\n\n // Update current Auth state. Either a new login or logout.\n // Skip blocking callbacks, they should not apply to a change in another tab.\n await this._updateCurrentUser(user, /* skipBeforeStateCallbacks */ true);\n }\n\n private async initializeCurrentUser(\n popupRedirectResolver?: PopupRedirectResolver\n ): Promise {\n // First check to see if we have a pending redirect event.\n const previouslyStoredUser =\n (await this.assertedPersistence.getCurrentUser()) as UserInternal | null;\n let futureCurrentUser = previouslyStoredUser;\n let needsTocheckMiddleware = false;\n if (popupRedirectResolver && this.config.authDomain) {\n await this.getOrInitRedirectPersistenceManager();\n const redirectUserEventId = this.redirectUser?._redirectEventId;\n const storedUserEventId = futureCurrentUser?._redirectEventId;\n const result = await this.tryRedirectSignIn(popupRedirectResolver);\n\n // If the stored user (i.e. the old \"currentUser\") has a redirectId that\n // matches the redirect user, then we want to initially sign in with the\n // new user object from result.\n // TODO(samgho): More thoroughly test all of this\n if (\n (!redirectUserEventId || redirectUserEventId === storedUserEventId) &&\n result?.user\n ) {\n futureCurrentUser = result.user as UserInternal;\n needsTocheckMiddleware = true;\n }\n }\n\n // If no user in persistence, there is no current user. Set to null.\n if (!futureCurrentUser) {\n return this.directlySetCurrentUser(null);\n }\n\n if (!futureCurrentUser._redirectEventId) {\n // This isn't a redirect link operation, we can reload and bail.\n // First though, ensure that we check the middleware is happy.\n if (needsTocheckMiddleware) {\n try {\n await this.beforeStateQueue.runMiddleware(futureCurrentUser);\n } catch(e) {\n futureCurrentUser = previouslyStoredUser;\n // We know this is available since the bit is only set when the\n // resolver is available\n this._popupRedirectResolver!._overrideRedirectResult(this, () => Promise.reject(e));\n }\n }\n \n if (futureCurrentUser) {\n return this.reloadAndSetCurrentUserOrClear(futureCurrentUser);\n } else {\n return this.directlySetCurrentUser(null);\n }\n }\n\n _assert(this._popupRedirectResolver, this, AuthErrorCode.ARGUMENT_ERROR);\n await this.getOrInitRedirectPersistenceManager();\n\n // If the redirect user's event ID matches the current user's event ID,\n // DO NOT reload the current user, otherwise they'll be cleared from storage.\n // This is important for the reauthenticateWithRedirect() flow.\n if (\n this.redirectUser &&\n this.redirectUser._redirectEventId === futureCurrentUser._redirectEventId\n ) {\n return this.directlySetCurrentUser(futureCurrentUser);\n }\n\n return this.reloadAndSetCurrentUserOrClear(futureCurrentUser);\n }\n\n private async tryRedirectSignIn(\n redirectResolver: PopupRedirectResolver\n ): Promise {\n // The redirect user needs to be checked (and signed in if available)\n // during auth initialization. All of the normal sign in and link/reauth\n // flows call back into auth and push things onto the promise queue. We\n // need to await the result of the redirect sign in *inside the promise\n // queue*. This presents a problem: we run into deadlock. See:\n // ┌> [Initialization] ─────┐\n // ┌> [] │\n // └─ [getRedirectResult] <─┘\n // where [] are tasks on the queue and arrows denote awaits\n // Initialization will never complete because it's waiting on something\n // that's waiting for initialization to complete!\n //\n // Instead, this method calls getRedirectResult() (stored in\n // _completeRedirectFn) with an optional parameter that instructs all of\n // the underlying auth operations to skip anything that mutates auth state.\n\n let result: UserCredential | null = null;\n try {\n // We know this._popupRedirectResolver is set since redirectResolver\n // is passed in. The _completeRedirectFn expects the unwrapped extern.\n result = await this._popupRedirectResolver!._completeRedirectFn(\n this,\n redirectResolver,\n true\n );\n } catch (e) {\n // Swallow any errors here; the code can retrieve them in\n // getRedirectResult().\n await this._setRedirectUser(null);\n }\n\n return result;\n }\n\n private async reloadAndSetCurrentUserOrClear(\n user: UserInternal\n ): Promise {\n try {\n await _reloadWithoutSaving(user);\n } catch (e) {\n if (e.code !== `auth/${AuthErrorCode.NETWORK_REQUEST_FAILED}`) {\n // Something's wrong with the user's token. Log them out and remove\n // them from storage\n return this.directlySetCurrentUser(null);\n }\n }\n\n return this.directlySetCurrentUser(user);\n }\n\n useDeviceLanguage(): void {\n this.languageCode = _getUserLanguage();\n }\n\n async _delete(): Promise {\n this._deleted = true;\n }\n\n async updateCurrentUser(userExtern: User | null): Promise {\n // The public updateCurrentUser method needs to make a copy of the user,\n // and also check that the project matches\n const user = userExtern\n ? (getModularInstance(userExtern) as UserInternal)\n : null;\n if (user) {\n _assert(\n user.auth.config.apiKey === this.config.apiKey,\n this,\n AuthErrorCode.INVALID_AUTH\n );\n }\n return this._updateCurrentUser(user && user._clone(this));\n }\n\n async _updateCurrentUser(user: User | null, skipBeforeStateCallbacks: boolean = false): Promise {\n if (this._deleted) {\n return;\n }\n if (user) {\n _assert(\n this.tenantId === user.tenantId,\n this,\n AuthErrorCode.TENANT_ID_MISMATCH\n );\n }\n\n if (!skipBeforeStateCallbacks) {\n await this.beforeStateQueue.runMiddleware(user);\n }\n\n return this.queue(async () => {\n await this.directlySetCurrentUser(user as UserInternal | null);\n this.notifyAuthListeners();\n });\n }\n\n async signOut(): Promise {\n // Run first, to block _setRedirectUser() if any callbacks fail.\n await this.beforeStateQueue.runMiddleware(null);\n // Clear the redirect user when signOut is called\n if (this.redirectPersistenceManager || this._popupRedirectResolver) {\n await this._setRedirectUser(null);\n }\n\n // Prevent callbacks from being called again in _updateCurrentUser, as\n // they were already called in the first line.\n return this._updateCurrentUser(null, /* skipBeforeStateCallbacks */ true);\n }\n\n setPersistence(persistence: Persistence): Promise {\n return this.queue(async () => {\n await this.assertedPersistence.setPersistence(_getInstance(persistence));\n });\n }\n\n _getPersistence(): string {\n return this.assertedPersistence.persistence.type;\n }\n\n _updateErrorMap(errorMap: AuthErrorMap): void {\n this._errorFactory = new ErrorFactory(\n 'auth',\n 'Firebase',\n (errorMap as ErrorMapRetriever)()\n );\n }\n\n onAuthStateChanged(\n nextOrObserver: NextOrObserver,\n error?: ErrorFn,\n completed?: CompleteFn\n ): Unsubscribe {\n return this.registerStateListener(\n this.authStateSubscription,\n nextOrObserver,\n error,\n completed\n );\n }\n\n beforeAuthStateChanged(\n callback: (user: User | null) => void | Promise,\n onAbort?: () => void,\n ): Unsubscribe {\n return this.beforeStateQueue.pushCallback(callback, onAbort);\n }\n\n onIdTokenChanged(\n nextOrObserver: NextOrObserver,\n error?: ErrorFn,\n completed?: CompleteFn\n ): Unsubscribe {\n return this.registerStateListener(\n this.idTokenSubscription,\n nextOrObserver,\n error,\n completed\n );\n }\n\n toJSON(): object {\n return {\n apiKey: this.config.apiKey,\n authDomain: this.config.authDomain,\n appName: this.name,\n currentUser: this._currentUser?.toJSON()\n };\n }\n\n async _setRedirectUser(\n user: UserInternal | null,\n popupRedirectResolver?: PopupRedirectResolver\n ): Promise {\n const redirectManager = await this.getOrInitRedirectPersistenceManager(\n popupRedirectResolver\n );\n return user === null\n ? redirectManager.removeCurrentUser()\n : redirectManager.setCurrentUser(user);\n }\n\n private async getOrInitRedirectPersistenceManager(\n popupRedirectResolver?: PopupRedirectResolver\n ): Promise {\n if (!this.redirectPersistenceManager) {\n const resolver: PopupRedirectResolverInternal | null =\n (popupRedirectResolver && _getInstance(popupRedirectResolver)) ||\n this._popupRedirectResolver;\n _assert(resolver, this, AuthErrorCode.ARGUMENT_ERROR);\n this.redirectPersistenceManager = await PersistenceUserManager.create(\n this,\n [_getInstance(resolver._redirectPersistence)],\n KeyName.REDIRECT_USER\n );\n this.redirectUser =\n await this.redirectPersistenceManager.getCurrentUser();\n }\n\n return this.redirectPersistenceManager;\n }\n\n async _redirectUserForId(id: string): Promise {\n // Make sure we've cleared any pending persistence actions if we're not in\n // the initializer\n if (this._isInitialized) {\n await this.queue(async () => { });\n }\n\n if (this._currentUser?._redirectEventId === id) {\n return this._currentUser;\n }\n\n if (this.redirectUser?._redirectEventId === id) {\n return this.redirectUser;\n }\n\n return null;\n }\n\n async _persistUserIfCurrent(user: UserInternal): Promise {\n if (user === this.currentUser) {\n return this.queue(async () => this.directlySetCurrentUser(user));\n }\n }\n\n /** Notifies listeners only if the user is current */\n _notifyListenersIfCurrent(user: UserInternal): void {\n if (user === this.currentUser) {\n this.notifyAuthListeners();\n }\n }\n\n _key(): string {\n return `${this.config.authDomain}:${this.config.apiKey}:${this.name}`;\n }\n\n _startProactiveRefresh(): void {\n this.isProactiveRefreshEnabled = true;\n if (this.currentUser) {\n this._currentUser._startProactiveRefresh();\n }\n }\n\n _stopProactiveRefresh(): void {\n this.isProactiveRefreshEnabled = false;\n if (this.currentUser) {\n this._currentUser._stopProactiveRefresh();\n }\n }\n\n /** Returns the current user cast as the internal type */\n get _currentUser(): UserInternal {\n return this.currentUser as UserInternal;\n }\n\n private notifyAuthListeners(): void {\n if (!this._isInitialized) {\n return;\n }\n\n this.idTokenSubscription.next(this.currentUser);\n\n const currentUid = this.currentUser?.uid ?? null;\n if (this.lastNotifiedUid !== currentUid) {\n this.lastNotifiedUid = currentUid;\n this.authStateSubscription.next(this.currentUser);\n }\n }\n\n private registerStateListener(\n subscription: Subscription,\n nextOrObserver: NextOrObserver,\n error?: ErrorFn,\n completed?: CompleteFn\n ): Unsubscribe {\n if (this._deleted) {\n return () => { };\n }\n\n const cb =\n typeof nextOrObserver === 'function'\n ? nextOrObserver\n : nextOrObserver.next.bind(nextOrObserver);\n\n const promise = this._isInitialized\n ? Promise.resolve()\n : this._initializationPromise;\n _assert(promise, this, AuthErrorCode.INTERNAL_ERROR);\n // The callback needs to be called asynchronously per the spec.\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n promise.then(() => cb(this.currentUser));\n\n if (typeof nextOrObserver === 'function') {\n return subscription.addObserver(nextOrObserver, error, completed);\n } else {\n return subscription.addObserver(nextOrObserver);\n }\n }\n\n /**\n * Unprotected (from race conditions) method to set the current user. This\n * should only be called from within a queued callback. This is necessary\n * because the queue shouldn't rely on another queued callback.\n */\n private async directlySetCurrentUser(\n user: UserInternal | null\n ): Promise {\n if (this.currentUser && this.currentUser !== user) {\n this._currentUser._stopProactiveRefresh();\n if (user && this.isProactiveRefreshEnabled) {\n user._startProactiveRefresh();\n }\n }\n\n this.currentUser = user;\n\n if (user) {\n await this.assertedPersistence.setCurrentUser(user);\n } else {\n await this.assertedPersistence.removeCurrentUser();\n }\n }\n\n private queue(action: AsyncAction): Promise {\n // In case something errors, the callback still should be called in order\n // to keep the promise chain alive\n this.operations = this.operations.then(action, action);\n return this.operations;\n }\n\n private get assertedPersistence(): PersistenceUserManager {\n _assert(this.persistenceManager, this, AuthErrorCode.INTERNAL_ERROR);\n return this.persistenceManager;\n }\n\n private frameworks: string[] = [];\n private clientVersion: string;\n _logFramework(framework: string): void {\n if (!framework || this.frameworks.includes(framework)) {\n return;\n }\n this.frameworks.push(framework);\n\n // Sort alphabetically so that \"FirebaseCore-web,FirebaseUI-web\" and\n // \"FirebaseUI-web,FirebaseCore-web\" aren't viewed as different.\n this.frameworks.sort();\n this.clientVersion = _getClientVersion(\n this.config.clientPlatform,\n this._getFrameworks()\n );\n }\n _getFrameworks(): readonly string[] {\n return this.frameworks;\n }\n async _getAdditionalHeaders(): Promise> {\n // Additional headers on every request\n const headers: Record = {\n [HttpHeader.X_CLIENT_VERSION]: this.clientVersion,\n };\n\n if (this.app.options.appId) {\n headers[HttpHeader.X_FIREBASE_GMPID] = this.app.options.appId;\n }\n\n // If the heartbeat service exists, add the heartbeat string\n const heartbeatsHeader = await this.heartbeatServiceProvider.getImmediate({\n optional: true,\n })?.getHeartbeatsHeader();\n if (heartbeatsHeader) {\n headers[HttpHeader.X_FIREBASE_CLIENT] = heartbeatsHeader;\n }\n return headers;\n }\n}\n\n/**\n * Method to be used to cast down to our private implmentation of Auth.\n * It will also handle unwrapping from the compat type if necessary\n *\n * @param auth Auth object passed in from developer\n */\nexport function _castAuth(auth: Auth): AuthInternal {\n return getModularInstance(auth) as AuthInternal;\n}\n\n/** Helper class to wrap subscriber logic */\nclass Subscription {\n private observer: Observer | null = null;\n readonly addObserver: Subscribe = createSubscribe(\n observer => (this.observer = observer)\n );\n\n constructor(readonly auth: AuthInternal) { }\n\n get next(): NextFn {\n _assert(this.observer, this.auth, AuthErrorCode.INTERNAL_ERROR);\n return this.observer.next.bind(this.observer);\n }\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { PhoneOrOauthTokenResponse } from '../../api/authentication/mfa';\nimport { AuthInternal } from '../../model/auth';\nimport { IdTokenResponse } from '../../model/id_token';\nimport { debugFail } from '../util/assert';\n\n/**\n * Interface that represents the credentials returned by an {@link AuthProvider}.\n *\n * @remarks\n * Implementations specify the details about each auth provider's credential requirements.\n *\n * @public\n */\nexport class AuthCredential {\n /** @internal */\n protected constructor(\n /**\n * The authentication provider ID for the credential.\n *\n * @remarks\n * For example, 'facebook.com', or 'google.com'.\n */\n readonly providerId: string,\n /**\n * The authentication sign in method for the credential.\n *\n * @remarks\n * For example, {@link SignInMethod}.EMAIL_PASSWORD, or\n * {@link SignInMethod}.EMAIL_LINK. This corresponds to the sign-in method\n * identifier as returned in {@link fetchSignInMethodsForEmail}.\n */\n readonly signInMethod: string\n ) {}\n\n /**\n * Returns a JSON-serializable representation of this object.\n *\n * @returns a JSON-serializable representation of this object.\n */\n toJSON(): object {\n return debugFail('not implemented');\n }\n\n /** @internal */\n _getIdTokenResponse(_auth: AuthInternal): Promise {\n return debugFail('not implemented');\n }\n /** @internal */\n _linkToIdToken(\n _auth: AuthInternal,\n _idToken: string\n ): Promise {\n return debugFail('not implemented');\n }\n /** @internal */\n _getReauthenticationResolver(_auth: AuthInternal): Promise {\n return debugFail('not implemented');\n }\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ActionCodeOperation, Auth } from '../../model/public_types';\n\nimport {\n Endpoint,\n HttpMethod,\n _addTidIfNecessary,\n _performApiRequest\n} from '../index';\nimport { IdTokenResponse } from '../../model/id_token';\nimport { MfaEnrollment } from './mfa';\n\nexport interface ResetPasswordRequest {\n oobCode: string;\n newPassword?: string;\n tenantId?: string;\n}\n\nexport interface ResetPasswordResponse {\n email: string;\n newEmail?: string;\n requestType?: ActionCodeOperation;\n mfaInfo?: MfaEnrollment;\n}\n\nexport async function resetPassword(\n auth: Auth,\n request: ResetPasswordRequest\n): Promise {\n return _performApiRequest(\n auth,\n HttpMethod.POST,\n Endpoint.RESET_PASSWORD,\n _addTidIfNecessary(auth, request)\n );\n}\nexport interface UpdateEmailPasswordRequest {\n idToken: string;\n returnSecureToken?: boolean;\n email?: string;\n password?: string;\n}\n\nexport interface UpdateEmailPasswordResponse extends IdTokenResponse {}\n\nexport async function updateEmailPassword(\n auth: Auth,\n request: UpdateEmailPasswordRequest\n): Promise {\n return _performApiRequest<\n UpdateEmailPasswordRequest,\n UpdateEmailPasswordResponse\n >(auth, HttpMethod.POST, Endpoint.SET_ACCOUNT_INFO, request);\n}\n\nexport interface ApplyActionCodeRequest {\n oobCode: string;\n tenantId?: string;\n}\n\nexport interface ApplyActionCodeResponse {}\n\nexport async function applyActionCode(\n auth: Auth,\n request: ApplyActionCodeRequest\n): Promise {\n return _performApiRequest(\n auth,\n HttpMethod.POST,\n Endpoint.SET_ACCOUNT_INFO,\n _addTidIfNecessary(auth, request)\n );\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ActionCodeOperation, Auth } from '../../model/public_types';\n\nimport {\n Endpoint,\n HttpMethod,\n _addTidIfNecessary,\n _performApiRequest,\n _performSignInRequest\n} from '../index';\nimport { IdToken, IdTokenResponse } from '../../model/id_token';\n\nexport interface SignInWithPasswordRequest {\n returnSecureToken?: boolean;\n email: string;\n password: string;\n tenantId?: string;\n}\n\nexport interface SignInWithPasswordResponse extends IdTokenResponse {\n email: string;\n displayName: string;\n}\n\nexport async function signInWithPassword(\n auth: Auth,\n request: SignInWithPasswordRequest\n): Promise {\n return _performSignInRequest<\n SignInWithPasswordRequest,\n SignInWithPasswordResponse\n >(\n auth,\n HttpMethod.POST,\n Endpoint.SIGN_IN_WITH_PASSWORD,\n _addTidIfNecessary(auth, request)\n );\n}\n\nexport interface GetOobCodeRequest {\n email?: string; // Everything except VERIFY_AND_CHANGE_EMAIL\n continueUrl?: string;\n iOSBundleId?: string;\n iosAppStoreId?: string;\n androidPackageName?: string;\n androidInstallApp?: boolean;\n androidMinimumVersionCode?: string;\n canHandleCodeInApp?: boolean;\n dynamicLinkDomain?: string;\n tenantId?: string;\n targetProjectid?: string;\n}\n\nexport interface VerifyEmailRequest extends GetOobCodeRequest {\n requestType: ActionCodeOperation.VERIFY_EMAIL;\n idToken: IdToken;\n}\n\nexport interface PasswordResetRequest extends GetOobCodeRequest {\n requestType: ActionCodeOperation.PASSWORD_RESET;\n email: string;\n captchaResp?: string;\n}\n\nexport interface EmailSignInRequest extends GetOobCodeRequest {\n requestType: ActionCodeOperation.EMAIL_SIGNIN;\n email: string;\n}\n\nexport interface VerifyAndChangeEmailRequest extends GetOobCodeRequest {\n requestType: ActionCodeOperation.VERIFY_AND_CHANGE_EMAIL;\n idToken: IdToken;\n newEmail: string;\n}\n\ninterface GetOobCodeResponse {\n email: string;\n}\n\nexport interface VerifyEmailResponse extends GetOobCodeResponse {}\nexport interface PasswordResetResponse extends GetOobCodeResponse {}\nexport interface EmailSignInResponse extends GetOobCodeResponse {}\nexport interface VerifyAndChangeEmailResponse extends GetOobCodeRequest {}\n\nasync function sendOobCode(\n auth: Auth,\n request: GetOobCodeRequest\n): Promise {\n return _performApiRequest(\n auth,\n HttpMethod.POST,\n Endpoint.SEND_OOB_CODE,\n _addTidIfNecessary(auth, request)\n );\n}\n\nexport async function sendEmailVerification(\n auth: Auth,\n request: VerifyEmailRequest\n): Promise {\n return sendOobCode(auth, request);\n}\n\nexport async function sendPasswordResetEmail(\n auth: Auth,\n request: PasswordResetRequest\n): Promise {\n return sendOobCode(auth, request);\n}\n\nexport async function sendSignInLinkToEmail(\n auth: Auth,\n request: EmailSignInRequest\n): Promise {\n return sendOobCode(auth, request);\n}\n\nexport async function verifyAndChangeEmail(\n auth: Auth,\n request: VerifyAndChangeEmailRequest\n): Promise {\n return sendOobCode(auth, request);\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n _performSignInRequest,\n Endpoint,\n HttpMethod,\n _addTidIfNecessary\n} from '../index';\nimport { IdTokenResponse } from '../../model/id_token';\nimport { Auth } from '../../model/public_types';\n\nexport interface SignInWithEmailLinkRequest {\n email: string;\n oobCode: string;\n tenantId?: string;\n}\n\nexport interface SignInWithEmailLinkResponse extends IdTokenResponse {\n email: string;\n isNewUser: boolean;\n}\n\nexport async function signInWithEmailLink(\n auth: Auth,\n request: SignInWithEmailLinkRequest\n): Promise {\n return _performSignInRequest<\n SignInWithEmailLinkRequest,\n SignInWithEmailLinkResponse\n >(\n auth,\n HttpMethod.POST,\n Endpoint.SIGN_IN_WITH_EMAIL_LINK,\n _addTidIfNecessary(auth, request)\n );\n}\n\nexport interface SignInWithEmailLinkForLinkingRequest\n extends SignInWithEmailLinkRequest {\n idToken: string;\n}\n\nexport async function signInWithEmailLinkForLinking(\n auth: Auth,\n request: SignInWithEmailLinkForLinkingRequest\n): Promise {\n return _performSignInRequest<\n SignInWithEmailLinkForLinkingRequest,\n SignInWithEmailLinkResponse\n >(\n auth,\n HttpMethod.POST,\n Endpoint.SIGN_IN_WITH_EMAIL_LINK,\n _addTidIfNecessary(auth, request)\n );\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ProviderId, SignInMethod } from '../../model/enums';\n\nimport { updateEmailPassword } from '../../api/account_management/email_and_password';\nimport { signInWithPassword } from '../../api/authentication/email_and_password';\nimport {\n signInWithEmailLink,\n signInWithEmailLinkForLinking\n} from '../../api/authentication/email_link';\nimport { AuthInternal } from '../../model/auth';\nimport { IdTokenResponse } from '../../model/id_token';\nimport { AuthErrorCode } from '../errors';\nimport { _fail } from '../util/assert';\nimport { AuthCredential } from './auth_credential';\n\n/**\n * Interface that represents the credentials returned by {@link EmailAuthProvider} for\n * {@link ProviderId}.PASSWORD\n *\n * @remarks\n * Covers both {@link SignInMethod}.EMAIL_PASSWORD and\n * {@link SignInMethod}.EMAIL_LINK.\n *\n * @public\n */\nexport class EmailAuthCredential extends AuthCredential {\n /** @internal */\n private constructor(\n /** @internal */\n readonly _email: string,\n /** @internal */\n readonly _password: string,\n signInMethod: SignInMethod,\n /** @internal */\n readonly _tenantId: string | null = null\n ) {\n super(ProviderId.PASSWORD, signInMethod);\n }\n\n /** @internal */\n static _fromEmailAndPassword(\n email: string,\n password: string\n ): EmailAuthCredential {\n return new EmailAuthCredential(\n email,\n password,\n SignInMethod.EMAIL_PASSWORD\n );\n }\n\n /** @internal */\n static _fromEmailAndCode(\n email: string,\n oobCode: string,\n tenantId: string | null = null\n ): EmailAuthCredential {\n return new EmailAuthCredential(\n email,\n oobCode,\n SignInMethod.EMAIL_LINK,\n tenantId\n );\n }\n\n /** {@inheritdoc AuthCredential.toJSON} */\n toJSON(): object {\n return {\n email: this._email,\n password: this._password,\n signInMethod: this.signInMethod,\n tenantId: this._tenantId\n };\n }\n\n /**\n * Static method to deserialize a JSON representation of an object into an {@link AuthCredential}.\n *\n * @param json - Either `object` or the stringified representation of the object. When string is\n * provided, `JSON.parse` would be called first.\n *\n * @returns If the JSON input does not represent an {@link AuthCredential}, null is returned.\n */\n static fromJSON(json: object | string): EmailAuthCredential | null {\n const obj = typeof json === 'string' ? JSON.parse(json) : json;\n if (obj?.email && obj?.password) {\n if (obj.signInMethod === SignInMethod.EMAIL_PASSWORD) {\n return this._fromEmailAndPassword(obj.email, obj.password);\n } else if (obj.signInMethod === SignInMethod.EMAIL_LINK) {\n return this._fromEmailAndCode(obj.email, obj.password, obj.tenantId);\n }\n }\n return null;\n }\n\n /** @internal */\n async _getIdTokenResponse(auth: AuthInternal): Promise {\n switch (this.signInMethod) {\n case SignInMethod.EMAIL_PASSWORD:\n return signInWithPassword(auth, {\n returnSecureToken: true,\n email: this._email,\n password: this._password\n });\n case SignInMethod.EMAIL_LINK:\n return signInWithEmailLink(auth, {\n email: this._email,\n oobCode: this._password\n });\n default:\n _fail(auth, AuthErrorCode.INTERNAL_ERROR);\n }\n }\n\n /** @internal */\n async _linkToIdToken(\n auth: AuthInternal,\n idToken: string\n ): Promise {\n switch (this.signInMethod) {\n case SignInMethod.EMAIL_PASSWORD:\n return updateEmailPassword(auth, {\n idToken,\n returnSecureToken: true,\n email: this._email,\n password: this._password\n });\n case SignInMethod.EMAIL_LINK:\n return signInWithEmailLinkForLinking(auth, {\n idToken,\n email: this._email,\n oobCode: this._password\n });\n default:\n _fail(auth, AuthErrorCode.INTERNAL_ERROR);\n }\n }\n\n /** @internal */\n _getReauthenticationResolver(auth: AuthInternal): Promise {\n return this._getIdTokenResponse(auth);\n }\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n Endpoint,\n HttpMethod,\n _addTidIfNecessary,\n _performSignInRequest\n} from '../index';\nimport { IdToken, IdTokenResponse } from '../../model/id_token';\nimport { Auth } from '../../model/public_types';\n\nexport interface SignInWithIdpRequest {\n requestUri: string;\n postBody?: string;\n sessionId?: string;\n tenantId?: string;\n returnSecureToken: boolean;\n returnIdpCredential?: boolean;\n idToken?: IdToken;\n autoCreate?: boolean;\n pendingToken?: string;\n}\n\n/**\n * @internal\n */\nexport interface SignInWithIdpResponse extends IdTokenResponse {\n oauthAccessToken?: string;\n oauthTokenSecret?: string;\n nonce?: string;\n oauthIdToken?: string;\n pendingToken?: string;\n}\n\nexport async function signInWithIdp(\n auth: Auth,\n request: SignInWithIdpRequest\n): Promise {\n return _performSignInRequest(\n auth,\n HttpMethod.POST,\n Endpoint.SIGN_IN_WITH_IDP,\n _addTidIfNecessary(auth, request)\n );\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { querystring } from '@firebase/util';\n\nimport {\n signInWithIdp,\n SignInWithIdpRequest\n} from '../../api/authentication/idp';\nimport { AuthInternal } from '../../model/auth';\nimport { IdTokenResponse } from '../../model/id_token';\nimport { AuthErrorCode } from '../errors';\nimport { _fail } from '../util/assert';\nimport { AuthCredential } from './auth_credential';\n\nconst IDP_REQUEST_URI = 'http://localhost';\n\nexport interface OAuthCredentialParams {\n // OAuth 2 uses either id token or access token\n idToken?: string | null;\n accessToken?: string | null;\n\n // These fields are used with OAuth 1\n oauthToken?: string;\n secret?: string;\n oauthTokenSecret?: string;\n\n // Nonce is only set if pendingToken is not present\n nonce?: string;\n pendingToken?: string;\n\n // Utilities\n providerId: string;\n signInMethod: string;\n}\n\n/**\n * Represents the OAuth credentials returned by an {@link OAuthProvider}.\n *\n * @remarks\n * Implementations specify the details about each auth provider's credential requirements.\n *\n * @public\n */\nexport class OAuthCredential extends AuthCredential {\n /**\n * The OAuth ID token associated with the credential if it belongs to an OIDC provider,\n * such as `google.com`.\n * @readonly\n */\n idToken?: string;\n /**\n * The OAuth access token associated with the credential if it belongs to an\n * {@link OAuthProvider}, such as `facebook.com`, `twitter.com`, etc.\n * @readonly\n */\n accessToken?: string;\n /**\n * The OAuth access token secret associated with the credential if it belongs to an OAuth 1.0\n * provider, such as `twitter.com`.\n * @readonly\n */\n secret?: string;\n \n private nonce?: string;\n private pendingToken: string | null = null;\n\n /** @internal */\n static _fromParams(params: OAuthCredentialParams): OAuthCredential {\n const cred = new OAuthCredential(params.providerId, params.signInMethod);\n\n if (params.idToken || params.accessToken) {\n // OAuth 2 and either ID token or access token.\n if (params.idToken) {\n cred.idToken = params.idToken;\n }\n\n if (params.accessToken) {\n cred.accessToken = params.accessToken;\n }\n\n // Add nonce if available and no pendingToken is present.\n if (params.nonce && !params.pendingToken) {\n cred.nonce = params.nonce;\n }\n\n if (params.pendingToken) {\n cred.pendingToken = params.pendingToken;\n }\n } else if (params.oauthToken && params.oauthTokenSecret) {\n // OAuth 1 and OAuth token with token secret\n cred.accessToken = params.oauthToken;\n cred.secret = params.oauthTokenSecret;\n } else {\n _fail(AuthErrorCode.ARGUMENT_ERROR);\n }\n\n return cred;\n }\n\n /** {@inheritdoc AuthCredential.toJSON} */\n toJSON(): object {\n return {\n idToken: this.idToken,\n accessToken: this.accessToken,\n secret: this.secret,\n nonce: this.nonce,\n pendingToken: this.pendingToken,\n providerId: this.providerId,\n signInMethod: this.signInMethod\n };\n }\n\n /**\n * Static method to deserialize a JSON representation of an object into an\n * {@link AuthCredential}.\n *\n * @param json - Input can be either Object or the stringified representation of the object.\n * When string is provided, JSON.parse would be called first.\n *\n * @returns If the JSON input does not represent an {@link AuthCredential}, null is returned.\n */\n static fromJSON(json: string | object): OAuthCredential | null {\n const obj = typeof json === 'string' ? JSON.parse(json) : json;\n const { providerId, signInMethod, ...rest }: OAuthCredentialParams = obj;\n if (!providerId || !signInMethod) {\n return null;\n }\n\n const cred = new OAuthCredential(providerId, signInMethod);\n cred.idToken = rest.idToken || undefined;\n cred.accessToken = rest.accessToken || undefined;\n cred.secret = rest.secret;\n cred.nonce = rest.nonce;\n cred.pendingToken = rest.pendingToken || null;\n return cred;\n }\n\n /** @internal */\n _getIdTokenResponse(auth: AuthInternal): Promise {\n const request = this.buildRequest();\n return signInWithIdp(auth, request);\n }\n\n /** @internal */\n _linkToIdToken(\n auth: AuthInternal,\n idToken: string\n ): Promise {\n const request = this.buildRequest();\n request.idToken = idToken;\n return signInWithIdp(auth, request);\n }\n\n /** @internal */\n _getReauthenticationResolver(auth: AuthInternal): Promise {\n const request = this.buildRequest();\n request.autoCreate = false;\n return signInWithIdp(auth, request);\n }\n\n private buildRequest(): SignInWithIdpRequest {\n const request: SignInWithIdpRequest = {\n requestUri: IDP_REQUEST_URI,\n returnSecureToken: true\n };\n\n if (this.pendingToken) {\n request.pendingToken = this.pendingToken;\n } else {\n const postBody: Record = {};\n if (this.idToken) {\n postBody['id_token'] = this.idToken;\n }\n if (this.accessToken) {\n postBody['access_token'] = this.accessToken;\n }\n if (this.secret) {\n postBody['oauth_token_secret'] = this.secret;\n }\n\n postBody['providerId'] = this.providerId;\n if (this.nonce && !this.pendingToken) {\n postBody['nonce'] = this.nonce;\n }\n\n request.postBody = querystring(postBody);\n }\n\n return request;\n }\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n Endpoint,\n HttpMethod,\n _addTidIfNecessary,\n _makeTaggedError,\n _performApiRequest,\n _performSignInRequest\n} from '../index';\nimport { AuthErrorCode } from '../../core/errors';\nimport { IdTokenResponse } from '../../model/id_token';\nimport { ServerError, ServerErrorMap } from '../errors';\nimport { Auth } from '../../model/public_types';\n\nexport interface SendPhoneVerificationCodeRequest {\n phoneNumber: string;\n recaptchaToken: string;\n tenantId?: string;\n}\n\nexport interface SendPhoneVerificationCodeResponse {\n sessionInfo: string;\n}\n\nexport async function sendPhoneVerificationCode(\n auth: Auth,\n request: SendPhoneVerificationCodeRequest\n): Promise {\n return _performApiRequest<\n SendPhoneVerificationCodeRequest,\n SendPhoneVerificationCodeResponse\n >(\n auth,\n HttpMethod.POST,\n Endpoint.SEND_VERIFICATION_CODE,\n _addTidIfNecessary(auth, request)\n );\n}\n\n/**\n * @internal\n */\nexport interface SignInWithPhoneNumberRequest {\n temporaryProof?: string;\n phoneNumber?: string;\n sessionInfo?: string;\n code?: string;\n tenantId?: string;\n}\n\nexport interface LinkWithPhoneNumberRequest\n extends SignInWithPhoneNumberRequest {\n idToken: string;\n}\n\n/**\n * @internal\n */\nexport interface SignInWithPhoneNumberResponse extends IdTokenResponse {\n temporaryProof?: string;\n phoneNumber?: string;\n}\n\nexport async function signInWithPhoneNumber(\n auth: Auth,\n request: SignInWithPhoneNumberRequest\n): Promise {\n return _performSignInRequest<\n SignInWithPhoneNumberRequest,\n SignInWithPhoneNumberResponse\n >(\n auth,\n HttpMethod.POST,\n Endpoint.SIGN_IN_WITH_PHONE_NUMBER,\n _addTidIfNecessary(auth, request)\n );\n}\n\nexport async function linkWithPhoneNumber(\n auth: Auth,\n request: LinkWithPhoneNumberRequest\n): Promise {\n const response = await _performSignInRequest<\n LinkWithPhoneNumberRequest,\n SignInWithPhoneNumberResponse\n >(\n auth,\n HttpMethod.POST,\n Endpoint.SIGN_IN_WITH_PHONE_NUMBER,\n _addTidIfNecessary(auth, request)\n );\n if (response.temporaryProof) {\n throw _makeTaggedError(auth, AuthErrorCode.NEED_CONFIRMATION, response);\n }\n return response;\n}\n\ninterface VerifyPhoneNumberForExistingRequest\n extends SignInWithPhoneNumberRequest {\n operation: 'REAUTH';\n}\n\nconst VERIFY_PHONE_NUMBER_FOR_EXISTING_ERROR_MAP_: Partial<\n ServerErrorMap\n> = {\n [ServerError.USER_NOT_FOUND]: AuthErrorCode.USER_DELETED\n};\n\nexport async function verifyPhoneNumberForExisting(\n auth: Auth,\n request: SignInWithPhoneNumberRequest\n): Promise {\n const apiRequest: VerifyPhoneNumberForExistingRequest = {\n ...request,\n operation: 'REAUTH'\n };\n return _performSignInRequest<\n VerifyPhoneNumberForExistingRequest,\n SignInWithPhoneNumberResponse\n >(\n auth,\n HttpMethod.POST,\n Endpoint.SIGN_IN_WITH_PHONE_NUMBER,\n _addTidIfNecessary(auth, apiRequest),\n VERIFY_PHONE_NUMBER_FOR_EXISTING_ERROR_MAP_\n );\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ProviderId, SignInMethod } from '../../model/enums';\n\nimport { PhoneOrOauthTokenResponse } from '../../api/authentication/mfa';\nimport {\n linkWithPhoneNumber,\n signInWithPhoneNumber,\n SignInWithPhoneNumberRequest,\n verifyPhoneNumberForExisting\n} from '../../api/authentication/sms';\nimport { AuthInternal } from '../../model/auth';\nimport { IdTokenResponse } from '../../model/id_token';\nimport { AuthCredential } from './auth_credential';\n\nexport interface PhoneAuthCredentialParameters {\n verificationId?: string;\n verificationCode?: string;\n phoneNumber?: string;\n temporaryProof?: string;\n}\n\n/**\n * Represents the credentials returned by {@link PhoneAuthProvider}.\n *\n * @public\n */\nexport class PhoneAuthCredential extends AuthCredential {\n private constructor(private readonly params: PhoneAuthCredentialParameters) {\n super(ProviderId.PHONE, SignInMethod.PHONE);\n }\n\n /** @internal */\n static _fromVerification(\n verificationId: string,\n verificationCode: string\n ): PhoneAuthCredential {\n return new PhoneAuthCredential({ verificationId, verificationCode });\n }\n\n /** @internal */\n static _fromTokenResponse(\n phoneNumber: string,\n temporaryProof: string\n ): PhoneAuthCredential {\n return new PhoneAuthCredential({ phoneNumber, temporaryProof });\n }\n\n /** @internal */\n _getIdTokenResponse(auth: AuthInternal): Promise {\n return signInWithPhoneNumber(auth, this._makeVerificationRequest());\n }\n\n /** @internal */\n _linkToIdToken(\n auth: AuthInternal,\n idToken: string\n ): Promise {\n return linkWithPhoneNumber(auth, {\n idToken,\n ...this._makeVerificationRequest()\n });\n }\n\n /** @internal */\n _getReauthenticationResolver(auth: AuthInternal): Promise {\n return verifyPhoneNumberForExisting(auth, this._makeVerificationRequest());\n }\n\n /** @internal */\n _makeVerificationRequest(): SignInWithPhoneNumberRequest {\n const { temporaryProof, phoneNumber, verificationId, verificationCode } =\n this.params;\n if (temporaryProof && phoneNumber) {\n return { temporaryProof, phoneNumber };\n }\n\n return {\n sessionInfo: verificationId,\n code: verificationCode\n };\n }\n\n /** {@inheritdoc AuthCredential.toJSON} */\n toJSON(): object {\n const obj: Record = {\n providerId: this.providerId\n };\n if (this.params.phoneNumber) {\n obj.phoneNumber = this.params.phoneNumber;\n }\n if (this.params.temporaryProof) {\n obj.temporaryProof = this.params.temporaryProof;\n }\n if (this.params.verificationCode) {\n obj.verificationCode = this.params.verificationCode;\n }\n if (this.params.verificationId) {\n obj.verificationId = this.params.verificationId;\n }\n\n return obj;\n }\n\n /** Generates a phone credential based on a plain object or a JSON string. */\n static fromJSON(json: object | string): PhoneAuthCredential | null {\n if (typeof json === 'string') {\n json = JSON.parse(json);\n }\n\n const { verificationId, verificationCode, phoneNumber, temporaryProof } =\n json as { [key: string]: string };\n if (\n !verificationCode &&\n !verificationId &&\n !phoneNumber &&\n !temporaryProof\n ) {\n return null;\n }\n\n return new PhoneAuthCredential({\n verificationId,\n verificationCode,\n phoneNumber,\n temporaryProof\n });\n }\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { extractQuerystring, querystringDecode } from '@firebase/util';\nimport { ActionCodeOperation } from '../model/public_types';\nimport { AuthErrorCode } from './errors';\nimport { _assert } from './util/assert';\n\n/**\n * Enums for fields in URL query string.\n *\n * @enum {string}\n */\nconst enum QueryField {\n API_KEY = 'apiKey',\n CODE = 'oobCode',\n CONTINUE_URL = 'continueUrl',\n LANGUAGE_CODE = 'languageCode',\n MODE = 'mode',\n TENANT_ID = 'tenantId'\n}\n\n/**\n * Maps the mode string in action code URL to Action Code Info operation.\n *\n * @param mode\n */\nfunction parseMode(mode: string | null): ActionCodeOperation | null {\n switch (mode) {\n case 'recoverEmail':\n return ActionCodeOperation.RECOVER_EMAIL;\n case 'resetPassword':\n return ActionCodeOperation.PASSWORD_RESET;\n case 'signIn':\n return ActionCodeOperation.EMAIL_SIGNIN;\n case 'verifyEmail':\n return ActionCodeOperation.VERIFY_EMAIL;\n case 'verifyAndChangeEmail':\n return ActionCodeOperation.VERIFY_AND_CHANGE_EMAIL;\n case 'revertSecondFactorAddition':\n return ActionCodeOperation.REVERT_SECOND_FACTOR_ADDITION;\n default:\n return null;\n }\n}\n\n/**\n * Helper to parse FDL links\n *\n * @param url\n */\nfunction parseDeepLink(url: string): string {\n const link = querystringDecode(extractQuerystring(url))['link'];\n\n // Double link case (automatic redirect).\n const doubleDeepLink = link\n ? querystringDecode(extractQuerystring(link))['deep_link_id']\n : null;\n // iOS custom scheme links.\n const iOSDeepLink = querystringDecode(extractQuerystring(url))[\n 'deep_link_id'\n ];\n const iOSDoubleDeepLink = iOSDeepLink\n ? querystringDecode(extractQuerystring(iOSDeepLink))['link']\n : null;\n return iOSDoubleDeepLink || iOSDeepLink || doubleDeepLink || link || url;\n}\n\n/**\n * A utility class to parse email action URLs such as password reset, email verification,\n * email link sign in, etc.\n *\n * @public\n */\nexport class ActionCodeURL {\n /**\n * The API key of the email action link.\n */\n readonly apiKey: string;\n /**\n * The action code of the email action link.\n */\n readonly code: string;\n /**\n * The continue URL of the email action link. Null if not provided.\n */\n readonly continueUrl: string | null;\n /**\n * The language code of the email action link. Null if not provided.\n */\n readonly languageCode: string | null;\n /**\n * The action performed by the email action link. It returns from one of the types from\n * {@link ActionCodeInfo}\n */\n readonly operation: string;\n /**\n * The tenant ID of the email action link. Null if the email action is from the parent project.\n */\n readonly tenantId: string | null;\n\n /**\n * @param actionLink - The link from which to extract the URL.\n * @returns The {@link ActionCodeURL} object, or null if the link is invalid.\n *\n * @internal\n */\n constructor(actionLink: string) {\n const searchParams = querystringDecode(extractQuerystring(actionLink));\n const apiKey = searchParams[QueryField.API_KEY] ?? null;\n const code = searchParams[QueryField.CODE] ?? null;\n const operation = parseMode(searchParams[QueryField.MODE] ?? null);\n // Validate API key, code and mode.\n _assert(apiKey && code && operation, AuthErrorCode.ARGUMENT_ERROR);\n this.apiKey = apiKey;\n this.operation = operation;\n this.code = code;\n this.continueUrl = searchParams[QueryField.CONTINUE_URL] ?? null;\n this.languageCode = searchParams[QueryField.LANGUAGE_CODE] ?? null;\n this.tenantId = searchParams[QueryField.TENANT_ID] ?? null;\n }\n\n /**\n * Parses the email action link string and returns an {@link ActionCodeURL} if the link is valid,\n * otherwise returns null.\n *\n * @param link - The email action link string.\n * @returns The {@link ActionCodeURL} object, or null if the link is invalid.\n *\n * @public\n */\n static parseLink(link: string): ActionCodeURL | null {\n const actionLink = parseDeepLink(link);\n try {\n return new ActionCodeURL(actionLink);\n } catch {\n return null;\n }\n }\n}\n\n/**\n * Parses the email action link string and returns an {@link ActionCodeURL} if\n * the link is valid, otherwise returns null.\n *\n * @public\n */\nexport function parseActionCodeURL(link: string): ActionCodeURL | null {\n return ActionCodeURL.parseLink(link);\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ProviderId, SignInMethod } from '../../model/enums';\nimport { AuthProvider } from '../../model/public_types';\n\nimport { ActionCodeURL } from '../action_code_url';\nimport { EmailAuthCredential } from '../credentials/email';\nimport { AuthErrorCode } from '../errors';\nimport { _assert } from '../util/assert';\n\n/**\n * Provider for generating {@link EmailAuthCredential}.\n *\n * @public\n */\nexport class EmailAuthProvider implements AuthProvider {\n /**\n * Always set to {@link ProviderId}.PASSWORD, even for email link.\n */\n static readonly PROVIDER_ID: 'password' = ProviderId.PASSWORD;\n /**\n * Always set to {@link SignInMethod}.EMAIL_PASSWORD.\n */\n static readonly EMAIL_PASSWORD_SIGN_IN_METHOD: 'password' =\n SignInMethod.EMAIL_PASSWORD;\n /**\n * Always set to {@link SignInMethod}.EMAIL_LINK.\n */\n static readonly EMAIL_LINK_SIGN_IN_METHOD: 'emailLink' =\n SignInMethod.EMAIL_LINK;\n /**\n * Always set to {@link ProviderId}.PASSWORD, even for email link.\n */\n readonly providerId = EmailAuthProvider.PROVIDER_ID;\n\n /**\n * Initialize an {@link AuthCredential} using an email and password.\n *\n * @example\n * ```javascript\n * const authCredential = EmailAuthProvider.credential(email, password);\n * const userCredential = await signInWithCredential(auth, authCredential);\n * ```\n *\n * @example\n * ```javascript\n * const userCredential = await signInWithEmailAndPassword(auth, email, password);\n * ```\n *\n * @param email - Email address.\n * @param password - User account password.\n * @returns The auth provider credential.\n */\n static credential(email: string, password: string): EmailAuthCredential {\n return EmailAuthCredential._fromEmailAndPassword(email, password);\n }\n\n /**\n * Initialize an {@link AuthCredential} using an email and an email link after a sign in with\n * email link operation.\n *\n * @example\n * ```javascript\n * const authCredential = EmailAuthProvider.credentialWithLink(auth, email, emailLink);\n * const userCredential = await signInWithCredential(auth, authCredential);\n * ```\n *\n * @example\n * ```javascript\n * await sendSignInLinkToEmail(auth, email);\n * // Obtain emailLink from user.\n * const userCredential = await signInWithEmailLink(auth, email, emailLink);\n * ```\n *\n * @param auth - The {@link Auth} instance used to verify the link.\n * @param email - Email address.\n * @param emailLink - Sign-in email link.\n * @returns - The auth provider credential.\n */\n static credentialWithLink(\n email: string,\n emailLink: string\n ): EmailAuthCredential {\n const actionCodeUrl = ActionCodeURL.parseLink(emailLink);\n _assert(actionCodeUrl, AuthErrorCode.ARGUMENT_ERROR);\n\n return EmailAuthCredential._fromEmailAndCode(\n email,\n actionCodeUrl.code,\n actionCodeUrl.tenantId\n );\n }\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AuthProvider } from '../../model/public_types';\n\n/**\n * Map of OAuth Custom Parameters.\n *\n * @public\n */\nexport type CustomParameters = Record;\n\n/**\n * The base class for all Federated providers (OAuth (including OIDC), SAML).\n *\n * This class is not meant to be instantiated directly.\n *\n * @public\n */\nexport abstract class FederatedAuthProvider implements AuthProvider {\n /** @internal */\n defaultLanguageCode: string | null = null;\n /** @internal */\n private customParameters: CustomParameters = {};\n\n /**\n * Constructor for generic OAuth providers.\n *\n * @param providerId - Provider for which credentials should be generated.\n */\n constructor(readonly providerId: string) {}\n\n /**\n * Set the language gode.\n *\n * @param languageCode - language code\n */\n setDefaultLanguage(languageCode: string | null): void {\n this.defaultLanguageCode = languageCode;\n }\n\n /**\n * Sets the OAuth custom parameters to pass in an OAuth request for popup and redirect sign-in\n * operations.\n *\n * @remarks\n * For a detailed list, check the reserved required OAuth 2.0 parameters such as `client_id`,\n * `redirect_uri`, `scope`, `response_type`, and `state` are not allowed and will be ignored.\n *\n * @param customOAuthParameters - The custom OAuth parameters to pass in the OAuth request.\n */\n setCustomParameters(customOAuthParameters: CustomParameters): AuthProvider {\n this.customParameters = customOAuthParameters;\n return this;\n }\n\n /**\n * Retrieve the current list of {@link CustomParameters}.\n */\n getCustomParameters(): CustomParameters {\n return this.customParameters;\n }\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AuthProvider, UserCredential } from '../../model/public_types';\n\nimport { _assert } from '../util/assert';\nimport { AuthErrorCode } from '../errors';\n\nimport { OAuthCredential, OAuthCredentialParams } from '../credentials/oauth';\nimport { UserCredentialInternal } from '../../model/user';\nimport { FirebaseError } from '@firebase/util';\nimport { TaggedWithTokenResponse } from '../../model/id_token';\nimport { SignInWithIdpResponse } from '../../../internal';\nimport { FederatedAuthProvider } from './federated';\n\n/**\n * Defines the options for initializing an {@link OAuthCredential}.\n *\n * @remarks\n * For ID tokens with nonce claim, the raw nonce has to also be provided.\n *\n * @public\n */\nexport interface OAuthCredentialOptions {\n /**\n * The OAuth ID token used to initialize the {@link OAuthCredential}.\n */\n idToken?: string;\n /**\n * The OAuth access token used to initialize the {@link OAuthCredential}.\n */\n accessToken?: string;\n /**\n * The raw nonce associated with the ID token.\n *\n * @remarks\n * It is required when an ID token with a nonce field is provided. The SHA-256 hash of the\n * raw nonce must match the nonce field in the ID token.\n */\n rawNonce?: string;\n}\n\n/**\n * Common code to all OAuth providers. This is separate from the\n * {@link OAuthProvider} so that child providers (like\n * {@link GoogleAuthProvider}) don't inherit the `credential` instance method.\n * Instead, they rely on a static `credential` method.\n */\nexport abstract class BaseOAuthProvider\n extends FederatedAuthProvider\n implements AuthProvider\n{\n /** @internal */\n private scopes: string[] = [];\n\n /**\n * Add an OAuth scope to the credential.\n *\n * @param scope - Provider OAuth scope to add.\n */\n addScope(scope: string): AuthProvider {\n // If not already added, add scope to list.\n if (!this.scopes.includes(scope)) {\n this.scopes.push(scope);\n }\n return this;\n }\n\n /**\n * Retrieve the current list of OAuth scopes.\n */\n getScopes(): string[] {\n return [...this.scopes];\n }\n}\n\n/**\n * Provider for generating generic {@link OAuthCredential}.\n *\n * @example\n * ```javascript\n * // Sign in using a redirect.\n * const provider = new OAuthProvider('google.com');\n * // Start a sign in process for an unauthenticated user.\n * provider.addScope('profile');\n * provider.addScope('email');\n * await signInWithRedirect(auth, provider);\n * // This will trigger a full page redirect away from your app\n *\n * // After returning from the redirect when your app initializes you can obtain the result\n * const result = await getRedirectResult(auth);\n * if (result) {\n * // This is the signed-in user\n * const user = result.user;\n * // This gives you a OAuth Access Token for the provider.\n * const credential = provider.credentialFromResult(auth, result);\n * const token = credential.accessToken;\n * }\n * ```\n *\n * @example\n * ```javascript\n * // Sign in using a popup.\n * const provider = new OAuthProvider('google.com');\n * provider.addScope('profile');\n * provider.addScope('email');\n * const result = await signInWithPopup(auth, provider);\n *\n * // The signed-in user info.\n * const user = result.user;\n * // This gives you a OAuth Access Token for the provider.\n * const credential = provider.credentialFromResult(auth, result);\n * const token = credential.accessToken;\n * ```\n * @public\n */\nexport class OAuthProvider extends BaseOAuthProvider {\n /**\n * Creates an {@link OAuthCredential} from a JSON string or a plain object.\n * @param json - A plain object or a JSON string\n */\n static credentialFromJSON(json: object | string): OAuthCredential {\n const obj = typeof json === 'string' ? JSON.parse(json) : json;\n _assert(\n 'providerId' in obj && 'signInMethod' in obj,\n AuthErrorCode.ARGUMENT_ERROR\n );\n return OAuthCredential._fromParams(obj);\n }\n\n /**\n * Creates a {@link OAuthCredential} from a generic OAuth provider's access token or ID token.\n *\n * @remarks\n * The raw nonce is required when an ID token with a nonce field is provided. The SHA-256 hash of\n * the raw nonce must match the nonce field in the ID token.\n *\n * @example\n * ```javascript\n * // `googleUser` from the onsuccess Google Sign In callback.\n * // Initialize a generate OAuth provider with a `google.com` providerId.\n * const provider = new OAuthProvider('google.com');\n * const credential = provider.credential({\n * idToken: googleUser.getAuthResponse().id_token,\n * });\n * const result = await signInWithCredential(credential);\n * ```\n *\n * @param params - Either the options object containing the ID token, access token and raw nonce\n * or the ID token string.\n */\n credential(params: OAuthCredentialOptions): OAuthCredential {\n return this._credential({...params, nonce: params.rawNonce});\n }\n\n /** An internal credential method that accepts more permissive options */\n private _credential(\n params: Omit\n ): OAuthCredential {\n _assert(params.idToken || params.accessToken, AuthErrorCode.ARGUMENT_ERROR);\n // For OAuthCredential, sign in method is same as providerId.\n return OAuthCredential._fromParams({\n ...params,\n providerId: this.providerId,\n signInMethod: this.providerId\n });\n }\n\n /**\n * Used to extract the underlying {@link OAuthCredential} from a {@link UserCredential}.\n *\n * @param userCredential - The user credential.\n */\n static credentialFromResult(\n userCredential: UserCredential\n ): OAuthCredential | null {\n return OAuthProvider.oauthCredentialFromTaggedObject(\n userCredential as UserCredentialInternal\n );\n }\n /**\n * Used to extract the underlying {@link OAuthCredential} from a {@link AuthError} which was\n * thrown during a sign-in, link, or reauthenticate operation.\n *\n * @param userCredential - The user credential.\n */\n static credentialFromError(error: FirebaseError): OAuthCredential | null {\n return OAuthProvider.oauthCredentialFromTaggedObject(\n (error.customData || {}) as TaggedWithTokenResponse\n );\n }\n\n private static oauthCredentialFromTaggedObject({\n _tokenResponse: tokenResponse\n }: TaggedWithTokenResponse): OAuthCredential | null {\n if (!tokenResponse) {\n return null;\n }\n\n const {\n oauthIdToken,\n oauthAccessToken,\n oauthTokenSecret,\n pendingToken,\n nonce,\n providerId\n } = tokenResponse as SignInWithIdpResponse;\n if (\n !oauthAccessToken &&\n !oauthTokenSecret &&\n !oauthIdToken &&\n !pendingToken\n ) {\n return null;\n }\n\n if (!providerId) {\n return null;\n }\n\n try {\n return new OAuthProvider(providerId)._credential({\n idToken: oauthIdToken,\n accessToken: oauthAccessToken,\n nonce,\n pendingToken\n });\n } catch (e) {\n return null;\n }\n }\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { UserCredential } from '../../model/public_types';\nimport { FirebaseError } from '@firebase/util';\n\nimport { TaggedWithTokenResponse } from '../../model/id_token';\nimport { UserCredentialInternal } from '../../model/user';\nimport { OAuthCredential } from '../credentials/oauth';\nimport { BaseOAuthProvider } from './oauth';\nimport { ProviderId, SignInMethod } from '../../model/enums';\n\n/**\n * Provider for generating an {@link OAuthCredential} for {@link ProviderId}.FACEBOOK.\n *\n * @example\n * ```javascript\n * // Sign in using a redirect.\n * const provider = new FacebookAuthProvider();\n * // Start a sign in process for an unauthenticated user.\n * provider.addScope('user_birthday');\n * await signInWithRedirect(auth, provider);\n * // This will trigger a full page redirect away from your app\n *\n * // After returning from the redirect when your app initializes you can obtain the result\n * const result = await getRedirectResult(auth);\n * if (result) {\n * // This is the signed-in user\n * const user = result.user;\n * // This gives you a Facebook Access Token.\n * const credential = FacebookAuthProvider.credentialFromResult(result);\n * const token = credential.accessToken;\n * }\n * ```\n *\n * @example\n * ```javascript\n * // Sign in using a popup.\n * const provider = new FacebookAuthProvider();\n * provider.addScope('user_birthday');\n * const result = await signInWithPopup(auth, provider);\n *\n * // The signed-in user info.\n * const user = result.user;\n * // This gives you a Facebook Access Token.\n * const credential = FacebookAuthProvider.credentialFromResult(result);\n * const token = credential.accessToken;\n * ```\n *\n * @public\n */\nexport class FacebookAuthProvider extends BaseOAuthProvider {\n /** Always set to {@link SignInMethod}.FACEBOOK. */\n static readonly FACEBOOK_SIGN_IN_METHOD: 'facebook.com' =\n SignInMethod.FACEBOOK;\n /** Always set to {@link ProviderId}.FACEBOOK. */\n static readonly PROVIDER_ID: 'facebook.com' = ProviderId.FACEBOOK;\n\n constructor() {\n super(ProviderId.FACEBOOK);\n }\n\n /**\n * Creates a credential for Facebook.\n *\n * @example\n * ```javascript\n * // `event` from the Facebook auth.authResponseChange callback.\n * const credential = FacebookAuthProvider.credential(event.authResponse.accessToken);\n * const result = await signInWithCredential(credential);\n * ```\n *\n * @param accessToken - Facebook access token.\n */\n static credential(accessToken: string): OAuthCredential {\n return OAuthCredential._fromParams({\n providerId: FacebookAuthProvider.PROVIDER_ID,\n signInMethod: FacebookAuthProvider.FACEBOOK_SIGN_IN_METHOD,\n accessToken\n });\n }\n\n /**\n * Used to extract the underlying {@link OAuthCredential} from a {@link UserCredential}.\n *\n * @param userCredential - The user credential.\n */\n static credentialFromResult(\n userCredential: UserCredential\n ): OAuthCredential | null {\n return FacebookAuthProvider.credentialFromTaggedObject(\n userCredential as UserCredentialInternal\n );\n }\n\n /**\n * Used to extract the underlying {@link OAuthCredential} from a {@link AuthError} which was\n * thrown during a sign-in, link, or reauthenticate operation.\n *\n * @param userCredential - The user credential.\n */\n static credentialFromError(error: FirebaseError): OAuthCredential | null {\n return FacebookAuthProvider.credentialFromTaggedObject(\n (error.customData || {}) as TaggedWithTokenResponse\n );\n }\n\n private static credentialFromTaggedObject({\n _tokenResponse: tokenResponse\n }: TaggedWithTokenResponse): OAuthCredential | null {\n if (!tokenResponse || !('oauthAccessToken' in tokenResponse)) {\n return null;\n }\n\n if (!tokenResponse.oauthAccessToken) {\n return null;\n }\n\n try {\n return FacebookAuthProvider.credential(tokenResponse.oauthAccessToken);\n } catch {\n return null;\n }\n }\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { UserCredential } from '../../model/public_types';\nimport { FirebaseError } from '@firebase/util';\n\nimport { SignInWithIdpResponse } from '../../api/authentication/idp';\nimport { TaggedWithTokenResponse } from '../../model/id_token';\nimport { UserCredentialInternal } from '../../model/user';\nimport { OAuthCredential } from '../credentials/oauth';\nimport { BaseOAuthProvider } from './oauth';\nimport { ProviderId, SignInMethod } from '../../model/enums';\n\n/**\n * Provider for generating an an {@link OAuthCredential} for {@link ProviderId}.GOOGLE.\n *\n * @example\n * ```javascript\n * // Sign in using a redirect.\n * const provider = new GoogleAuthProvider();\n * // Start a sign in process for an unauthenticated user.\n * provider.addScope('profile');\n * provider.addScope('email');\n * await signInWithRedirect(auth, provider);\n * // This will trigger a full page redirect away from your app\n *\n * // After returning from the redirect when your app initializes you can obtain the result\n * const result = await getRedirectResult(auth);\n * if (result) {\n * // This is the signed-in user\n * const user = result.user;\n * // This gives you a Google Access Token.\n * const credential = GoogleAuthProvider.credentialFromResult(result);\n * const token = credential.accessToken;\n * }\n * ```\n *\n * @example\n * ```javascript\n * // Sign in using a popup.\n * const provider = new GoogleAuthProvider();\n * provider.addScope('profile');\n * provider.addScope('email');\n * const result = await signInWithPopup(auth, provider);\n *\n * // The signed-in user info.\n * const user = result.user;\n * // This gives you a Google Access Token.\n * const credential = GoogleAuthProvider.credentialFromResult(result);\n * const token = credential.accessToken;\n * ```\n *\n * @public\n */\nexport class GoogleAuthProvider extends BaseOAuthProvider {\n /** Always set to {@link SignInMethod}.GOOGLE. */\n static readonly GOOGLE_SIGN_IN_METHOD: 'google.com' = SignInMethod.GOOGLE;\n /** Always set to {@link ProviderId}.GOOGLE. */\n static readonly PROVIDER_ID: 'google.com' = ProviderId.GOOGLE;\n\n constructor() {\n super(ProviderId.GOOGLE);\n this.addScope('profile');\n }\n\n /**\n * Creates a credential for Google. At least one of ID token and access token is required.\n *\n * @example\n * ```javascript\n * // \\`googleUser\\` from the onsuccess Google Sign In callback.\n * const credential = GoogleAuthProvider.credential(googleUser.getAuthResponse().id_token);\n * const result = await signInWithCredential(credential);\n * ```\n *\n * @param idToken - Google ID token.\n * @param accessToken - Google access token.\n */\n static credential(\n idToken?: string | null,\n accessToken?: string | null\n ): OAuthCredential {\n return OAuthCredential._fromParams({\n providerId: GoogleAuthProvider.PROVIDER_ID,\n signInMethod: GoogleAuthProvider.GOOGLE_SIGN_IN_METHOD,\n idToken,\n accessToken\n });\n }\n\n /**\n * Used to extract the underlying {@link OAuthCredential} from a {@link UserCredential}.\n *\n * @param userCredential - The user credential.\n */\n static credentialFromResult(\n userCredential: UserCredential\n ): OAuthCredential | null {\n return GoogleAuthProvider.credentialFromTaggedObject(\n userCredential as UserCredentialInternal\n );\n }\n /**\n * Used to extract the underlying {@link OAuthCredential} from a {@link AuthError} which was\n * thrown during a sign-in, link, or reauthenticate operation.\n *\n * @param userCredential - The user credential.\n */\n static credentialFromError(error: FirebaseError): OAuthCredential | null {\n return GoogleAuthProvider.credentialFromTaggedObject(\n (error.customData || {}) as TaggedWithTokenResponse\n );\n }\n\n private static credentialFromTaggedObject({\n _tokenResponse: tokenResponse\n }: TaggedWithTokenResponse): OAuthCredential | null {\n if (!tokenResponse) {\n return null;\n }\n\n const { oauthIdToken, oauthAccessToken } =\n tokenResponse as SignInWithIdpResponse;\n if (!oauthIdToken && !oauthAccessToken) {\n // This could be an oauth 1 credential or a phone credential\n return null;\n }\n\n try {\n return GoogleAuthProvider.credential(oauthIdToken, oauthAccessToken);\n } catch {\n return null;\n }\n }\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { UserCredential } from '../../model/public_types';\nimport { FirebaseError } from '@firebase/util';\n\nimport { TaggedWithTokenResponse } from '../../model/id_token';\nimport { UserCredentialInternal } from '../../model/user';\nimport { OAuthCredential } from '../credentials/oauth';\nimport { BaseOAuthProvider } from './oauth';\nimport { ProviderId, SignInMethod } from '../../model/enums';\n\n/**\n * Provider for generating an {@link OAuthCredential} for {@link ProviderId}.GITHUB.\n *\n * @remarks\n * GitHub requires an OAuth 2.0 redirect, so you can either handle the redirect directly, or use\n * the {@link signInWithPopup} handler:\n *\n * @example\n * ```javascript\n * // Sign in using a redirect.\n * const provider = new GithubAuthProvider();\n * // Start a sign in process for an unauthenticated user.\n * provider.addScope('repo');\n * await signInWithRedirect(auth, provider);\n * // This will trigger a full page redirect away from your app\n *\n * // After returning from the redirect when your app initializes you can obtain the result\n * const result = await getRedirectResult(auth);\n * if (result) {\n * // This is the signed-in user\n * const user = result.user;\n * // This gives you a Github Access Token.\n * const credential = GithubAuthProvider.credentialFromResult(result);\n * const token = credential.accessToken;\n * }\n * ```\n *\n * @example\n * ```javascript\n * // Sign in using a popup.\n * const provider = new GithubAuthProvider();\n * provider.addScope('repo');\n * const result = await signInWithPopup(auth, provider);\n *\n * // The signed-in user info.\n * const user = result.user;\n * // This gives you a Github Access Token.\n * const credential = GithubAuthProvider.credentialFromResult(result);\n * const token = credential.accessToken;\n * ```\n * @public\n */\nexport class GithubAuthProvider extends BaseOAuthProvider {\n /** Always set to {@link SignInMethod}.GITHUB. */\n static readonly GITHUB_SIGN_IN_METHOD: 'github.com' = SignInMethod.GITHUB;\n /** Always set to {@link ProviderId}.GITHUB. */\n static readonly PROVIDER_ID: 'github.com' = ProviderId.GITHUB;\n\n constructor() {\n super(ProviderId.GITHUB);\n }\n\n /**\n * Creates a credential for Github.\n *\n * @param accessToken - Github access token.\n */\n static credential(accessToken: string): OAuthCredential {\n return OAuthCredential._fromParams({\n providerId: GithubAuthProvider.PROVIDER_ID,\n signInMethod: GithubAuthProvider.GITHUB_SIGN_IN_METHOD,\n accessToken\n });\n }\n\n /**\n * Used to extract the underlying {@link OAuthCredential} from a {@link UserCredential}.\n *\n * @param userCredential - The user credential.\n */\n static credentialFromResult(\n userCredential: UserCredential\n ): OAuthCredential | null {\n return GithubAuthProvider.credentialFromTaggedObject(\n userCredential as UserCredentialInternal\n );\n }\n\n /**\n * Used to extract the underlying {@link OAuthCredential} from a {@link AuthError} which was\n * thrown during a sign-in, link, or reauthenticate operation.\n *\n * @param userCredential - The user credential.\n */\n static credentialFromError(error: FirebaseError): OAuthCredential | null {\n return GithubAuthProvider.credentialFromTaggedObject(\n (error.customData || {}) as TaggedWithTokenResponse\n );\n }\n\n private static credentialFromTaggedObject({\n _tokenResponse: tokenResponse\n }: TaggedWithTokenResponse): OAuthCredential | null {\n if (!tokenResponse || !('oauthAccessToken' in tokenResponse)) {\n return null;\n }\n\n if (!tokenResponse.oauthAccessToken) {\n return null;\n }\n\n try {\n return GithubAuthProvider.credential(tokenResponse.oauthAccessToken);\n } catch {\n return null;\n }\n }\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Represents the SAML credentials returned by an {@link SAMLAuthProvider}.\n *\n * @public\n */\n\nimport {\n signInWithIdp,\n SignInWithIdpRequest\n} from '../../api/authentication/idp';\nimport { AuthInternal } from '../../model/auth';\nimport { IdTokenResponse } from '../../model/id_token';\nimport { AuthCredential } from './auth_credential';\n\nconst IDP_REQUEST_URI = 'http://localhost';\n\n/**\n * @public\n */\nexport class SAMLAuthCredential extends AuthCredential {\n /** @internal */\n private constructor(\n providerId: string,\n private readonly pendingToken: string\n ) {\n super(providerId, providerId);\n }\n\n /** @internal */\n _getIdTokenResponse(auth: AuthInternal): Promise {\n const request = this.buildRequest();\n return signInWithIdp(auth, request);\n }\n\n /** @internal */\n _linkToIdToken(\n auth: AuthInternal,\n idToken: string\n ): Promise {\n const request = this.buildRequest();\n request.idToken = idToken;\n return signInWithIdp(auth, request);\n }\n\n /** @internal */\n _getReauthenticationResolver(auth: AuthInternal): Promise {\n const request = this.buildRequest();\n request.autoCreate = false;\n return signInWithIdp(auth, request);\n }\n\n /** {@inheritdoc AuthCredential.toJSON} */\n toJSON(): object {\n return {\n signInMethod: this.signInMethod,\n providerId: this.providerId,\n pendingToken: this.pendingToken\n };\n }\n\n /**\n * Static method to deserialize a JSON representation of an object into an\n * {@link AuthCredential}.\n *\n * @param json - Input can be either Object or the stringified representation of the object.\n * When string is provided, JSON.parse would be called first.\n *\n * @returns If the JSON input does not represent an {@link AuthCredential}, null is returned.\n */\n static fromJSON(json: string | object): SAMLAuthCredential | null {\n const obj = typeof json === 'string' ? JSON.parse(json) : json;\n const {\n providerId,\n signInMethod,\n pendingToken\n }: Record = obj;\n if (\n !providerId ||\n !signInMethod ||\n !pendingToken ||\n providerId !== signInMethod\n ) {\n return null;\n }\n\n return new SAMLAuthCredential(providerId, pendingToken);\n }\n\n /**\n * Helper static method to avoid exposing the constructor to end users.\n *\n * @internal\n */\n static _create(providerId: string, pendingToken: string): SAMLAuthCredential {\n return new SAMLAuthCredential(providerId, pendingToken);\n }\n\n private buildRequest(): SignInWithIdpRequest {\n return {\n requestUri: IDP_REQUEST_URI,\n returnSecureToken: true,\n pendingToken: this.pendingToken\n };\n }\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @license\n * Copyright 2020 Twitter LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { UserCredential } from '../../model/public_types';\nimport { FirebaseError } from '@firebase/util';\n\nimport { SignInWithIdpResponse } from '../../api/authentication/idp';\nimport { TaggedWithTokenResponse } from '../../model/id_token';\nimport { UserCredentialInternal } from '../../model/user';\nimport { OAuthCredential } from '../credentials/oauth';\nimport { BaseOAuthProvider } from './oauth';\nimport { ProviderId, SignInMethod } from '../../model/enums';\n\n/**\n * Provider for generating an {@link OAuthCredential} for {@link ProviderId}.TWITTER.\n *\n * @example\n * ```javascript\n * // Sign in using a redirect.\n * const provider = new TwitterAuthProvider();\n * // Start a sign in process for an unauthenticated user.\n * await signInWithRedirect(auth, provider);\n * // This will trigger a full page redirect away from your app\n *\n * // After returning from the redirect when your app initializes you can obtain the result\n * const result = await getRedirectResult(auth);\n * if (result) {\n * // This is the signed-in user\n * const user = result.user;\n * // This gives you a Twitter Access Token and Secret.\n * const credential = TwitterAuthProvider.credentialFromResult(result);\n * const token = credential.accessToken;\n * const secret = credential.secret;\n * }\n * ```\n *\n * @example\n * ```javascript\n * // Sign in using a popup.\n * const provider = new TwitterAuthProvider();\n * const result = await signInWithPopup(auth, provider);\n *\n * // The signed-in user info.\n * const user = result.user;\n * // This gives you a Twitter Access Token and Secret.\n * const credential = TwitterAuthProvider.credentialFromResult(result);\n * const token = credential.accessToken;\n * const secret = credential.secret;\n * ```\n *\n * @public\n */\nexport class TwitterAuthProvider extends BaseOAuthProvider {\n /** Always set to {@link SignInMethod}.TWITTER. */\n static readonly TWITTER_SIGN_IN_METHOD: 'twitter.com' = SignInMethod.TWITTER;\n /** Always set to {@link ProviderId}.TWITTER. */\n static readonly PROVIDER_ID: 'twitter.com' = ProviderId.TWITTER;\n\n constructor() {\n super(ProviderId.TWITTER);\n }\n\n /**\n * Creates a credential for Twitter.\n *\n * @param token - Twitter access token.\n * @param secret - Twitter secret.\n */\n static credential(token: string, secret: string): OAuthCredential {\n return OAuthCredential._fromParams({\n providerId: TwitterAuthProvider.PROVIDER_ID,\n signInMethod: TwitterAuthProvider.TWITTER_SIGN_IN_METHOD,\n oauthToken: token,\n oauthTokenSecret: secret\n });\n }\n\n /**\n * Used to extract the underlying {@link OAuthCredential} from a {@link UserCredential}.\n *\n * @param userCredential - The user credential.\n */\n static credentialFromResult(\n userCredential: UserCredential\n ): OAuthCredential | null {\n return TwitterAuthProvider.credentialFromTaggedObject(\n userCredential as UserCredentialInternal\n );\n }\n\n /**\n * Used to extract the underlying {@link OAuthCredential} from a {@link AuthError} which was\n * thrown during a sign-in, link, or reauthenticate operation.\n *\n * @param userCredential - The user credential.\n */\n static credentialFromError(error: FirebaseError): OAuthCredential | null {\n return TwitterAuthProvider.credentialFromTaggedObject(\n (error.customData || {}) as TaggedWithTokenResponse\n );\n }\n\n private static credentialFromTaggedObject({\n _tokenResponse: tokenResponse\n }: TaggedWithTokenResponse): OAuthCredential | null {\n if (!tokenResponse) {\n return null;\n }\n const { oauthAccessToken, oauthTokenSecret } =\n tokenResponse as SignInWithIdpResponse;\n if (!oauthAccessToken || !oauthTokenSecret) {\n return null;\n }\n\n try {\n return TwitterAuthProvider.credential(oauthAccessToken, oauthTokenSecret);\n } catch {\n return null;\n }\n }\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { PhoneOrOauthTokenResponse } from '../../api/authentication/mfa';\nimport { IdTokenResponse } from '../../model/id_token';\nimport { UserInternal, UserCredentialInternal } from '../../model/user';\nimport { UserImpl } from './user_impl';\nimport { AuthInternal } from '../../model/auth';\nimport { OperationType, ProviderId } from '../../model/enums';\n\ninterface UserCredentialParams {\n readonly user: UserInternal;\n readonly providerId: ProviderId | string | null;\n readonly _tokenResponse?: PhoneOrOauthTokenResponse;\n readonly operationType: OperationType;\n}\n\nexport class UserCredentialImpl\n implements UserCredentialInternal, UserCredentialParams\n{\n readonly user: UserInternal;\n readonly providerId: ProviderId | string | null;\n readonly _tokenResponse: PhoneOrOauthTokenResponse | undefined;\n readonly operationType: OperationType;\n\n constructor(params: UserCredentialParams) {\n this.user = params.user;\n this.providerId = params.providerId;\n this._tokenResponse = params._tokenResponse;\n this.operationType = params.operationType;\n }\n\n static async _fromIdTokenResponse(\n auth: AuthInternal,\n operationType: OperationType,\n idTokenResponse: IdTokenResponse,\n isAnonymous: boolean = false\n ): Promise {\n const user = await UserImpl._fromIdTokenResponse(\n auth,\n idTokenResponse,\n isAnonymous\n );\n const providerId = providerIdForResponse(idTokenResponse);\n const userCred = new UserCredentialImpl({\n user,\n providerId,\n _tokenResponse: idTokenResponse,\n operationType\n });\n return userCred;\n }\n\n static async _forOperation(\n user: UserInternal,\n operationType: OperationType,\n response: PhoneOrOauthTokenResponse\n ): Promise {\n await user._updateTokensIfNecessary(response, /* reload */ true);\n const providerId = providerIdForResponse(response);\n return new UserCredentialImpl({\n user,\n providerId,\n _tokenResponse: response,\n operationType\n });\n }\n}\n\nfunction providerIdForResponse(\n response: IdTokenResponse\n): ProviderId | string | null {\n if (response.providerId) {\n return response.providerId;\n }\n\n if ('phoneNumber' in response) {\n return ProviderId.PHONE;\n }\n\n return null;\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { MultiFactorError as MultiFactorErrorPublic } from '../model/public_types';\nimport { FirebaseError } from '@firebase/util';\nimport { AuthInternal } from '../model/auth';\nimport { IdTokenResponse } from '../model/id_token';\nimport { AuthErrorCode } from '../core/errors';\nimport { UserInternal } from '../model/user';\nimport { AuthCredential } from '../core/credentials';\nimport { IdTokenMfaResponse } from '../api/authentication/mfa';\nimport { OperationType } from '../model/enums';\n\nexport type MultiFactorErrorData = MultiFactorErrorPublic['customData'] & {\n _serverResponse: IdTokenMfaResponse;\n};\n\nexport class MultiFactorError\n extends FirebaseError\n implements MultiFactorErrorPublic\n{\n readonly customData: MultiFactorErrorData;\n\n private constructor(\n auth: AuthInternal,\n error: FirebaseError,\n readonly operationType: OperationType,\n readonly user?: UserInternal\n ) {\n super(error.code, error.message);\n // https://github.com/Microsoft/TypeScript-wiki/blob/master/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work\n Object.setPrototypeOf(this, MultiFactorError.prototype);\n this.customData = {\n appName: auth.name,\n tenantId: auth.tenantId ?? undefined,\n _serverResponse: error.customData!._serverResponse as IdTokenMfaResponse,\n operationType,\n };\n }\n\n static _fromErrorAndOperation(\n auth: AuthInternal,\n error: FirebaseError,\n operationType: OperationType,\n user?: UserInternal\n ): MultiFactorError {\n return new MultiFactorError(auth, error, operationType, user);\n }\n}\n\nexport function _processCredentialSavingMfaContextIfNecessary(\n auth: AuthInternal,\n operationType: OperationType,\n credential: AuthCredential,\n user?: UserInternal\n): Promise {\n const idTokenProvider =\n operationType === OperationType.REAUTHENTICATE\n ? credential._getReauthenticationResolver(auth)\n : credential._getIdTokenResponse(auth);\n\n return idTokenProvider.catch(error => {\n if (error.code === `auth/${AuthErrorCode.MFA_REQUIRED}`) {\n throw MultiFactorError._fromErrorAndOperation(\n auth,\n error,\n operationType,\n user\n );\n }\n\n throw error;\n });\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { User } from '../../model/public_types';\n\nimport { deleteLinkedAccounts } from '../../api/account_management/account';\nimport { UserInternal, UserCredentialInternal } from '../../model/user';\nimport { AuthCredential } from '../credentials';\nimport { AuthErrorCode } from '../errors';\nimport { _assert } from '../util/assert';\nimport { providerDataAsNames } from '../util/providers';\nimport { _logoutIfInvalidated } from './invalidation';\nimport { _reloadWithoutSaving } from './reload';\nimport { UserCredentialImpl } from './user_credential_impl';\nimport { getModularInstance } from '@firebase/util';\nimport { OperationType, ProviderId } from '../../model/enums';\n\n/**\n * Unlinks a provider from a user account.\n *\n * @param user - The user.\n * @param providerId - The provider to unlink.\n *\n * @public\n */\nexport async function unlink(user: User, providerId: string): Promise {\n const userInternal = getModularInstance(user) as UserInternal;\n await _assertLinkedStatus(true, userInternal, providerId);\n const { providerUserInfo } = await deleteLinkedAccounts(userInternal.auth, {\n idToken: await userInternal.getIdToken(),\n deleteProvider: [providerId]\n });\n\n const providersLeft = providerDataAsNames(providerUserInfo || []);\n\n userInternal.providerData = userInternal.providerData.filter(pd =>\n providersLeft.has(pd.providerId)\n );\n if (!providersLeft.has(ProviderId.PHONE)) {\n userInternal.phoneNumber = null;\n }\n\n await userInternal.auth._persistUserIfCurrent(userInternal);\n return userInternal;\n}\n\nexport async function _link(\n user: UserInternal,\n credential: AuthCredential,\n bypassAuthState = false\n): Promise {\n const response = await _logoutIfInvalidated(\n user,\n credential._linkToIdToken(user.auth, await user.getIdToken()),\n bypassAuthState\n );\n return UserCredentialImpl._forOperation(user, OperationType.LINK, response);\n}\n\nexport async function _assertLinkedStatus(\n expected: boolean,\n user: UserInternal,\n provider: string\n): Promise {\n await _reloadWithoutSaving(user);\n const providerIds = providerDataAsNames(user.providerData);\n\n const code =\n expected === false\n ? AuthErrorCode.PROVIDER_ALREADY_LINKED\n : AuthErrorCode.NO_SUCH_PROVIDER;\n _assert(providerIds.has(provider) === expected, user.auth, code);\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { _processCredentialSavingMfaContextIfNecessary } from '../../mfa/mfa_error';\nimport { OperationType } from '../../model/enums';\nimport { UserInternal } from '../../model/user';\nimport { AuthCredential } from '../credentials';\nimport { AuthErrorCode } from '../errors';\nimport { _assert, _fail } from '../util/assert';\nimport { _parseToken } from './id_token_result';\nimport { _logoutIfInvalidated } from './invalidation';\nimport { UserCredentialImpl } from './user_credential_impl';\n\nexport async function _reauthenticate(\n user: UserInternal,\n credential: AuthCredential,\n bypassAuthState = false\n): Promise {\n const { auth } = user;\n const operationType = OperationType.REAUTHENTICATE;\n\n try {\n const response = await _logoutIfInvalidated(\n user,\n _processCredentialSavingMfaContextIfNecessary(\n auth,\n operationType,\n credential,\n user\n ),\n bypassAuthState\n );\n _assert(response.idToken, auth, AuthErrorCode.INTERNAL_ERROR);\n const parsed = _parseToken(response.idToken);\n _assert(parsed, auth, AuthErrorCode.INTERNAL_ERROR);\n\n const { sub: localId } = parsed;\n _assert(user.uid === localId, auth, AuthErrorCode.USER_MISMATCH);\n\n return UserCredentialImpl._forOperation(user, operationType, response);\n } catch (e) {\n // Convert user deleted error into user mismatch\n if (e?.code === `auth/${AuthErrorCode.USER_DELETED}`) {\n _fail(auth, AuthErrorCode.USER_MISMATCH);\n }\n throw e;\n }\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { UserCredential, Auth, User } from '../../model/public_types';\n\nimport { _processCredentialSavingMfaContextIfNecessary } from '../../mfa/mfa_error';\nimport { AuthInternal } from '../../model/auth';\nimport { UserInternal } from '../../model/user';\nimport { AuthCredential } from '../credentials';\nimport { _assertLinkedStatus, _link } from '../user/link_unlink';\nimport { _reauthenticate } from '../user/reauthenticate';\nimport { UserCredentialImpl } from '../user/user_credential_impl';\nimport { _castAuth } from '../auth/auth_impl';\nimport { getModularInstance } from '@firebase/util';\nimport { OperationType } from '../../model/enums';\n\nexport async function _signInWithCredential(\n auth: AuthInternal,\n credential: AuthCredential,\n bypassAuthState = false\n): Promise {\n const operationType = OperationType.SIGN_IN;\n const response = await _processCredentialSavingMfaContextIfNecessary(\n auth,\n operationType,\n credential\n );\n const userCredential = await UserCredentialImpl._fromIdTokenResponse(\n auth,\n operationType,\n response\n );\n\n if (!bypassAuthState) {\n await auth._updateCurrentUser(userCredential.user);\n }\n return userCredential;\n}\n\n/**\n * Asynchronously signs in with the given credentials.\n *\n * @remarks\n * An {@link AuthProvider} can be used to generate the credential.\n *\n * @param auth - The {@link Auth} instance.\n * @param credential - The auth credential.\n *\n * @public\n */\nexport async function signInWithCredential(\n auth: Auth,\n credential: AuthCredential\n): Promise {\n return _signInWithCredential(_castAuth(auth), credential);\n}\n\n/**\n * Links the user account with the given credentials.\n *\n * @remarks\n * An {@link AuthProvider} can be used to generate the credential.\n *\n * @param user - The user.\n * @param credential - The auth credential.\n *\n * @public\n */\nexport async function linkWithCredential(\n user: User,\n credential: AuthCredential\n): Promise {\n const userInternal = getModularInstance(user) as UserInternal;\n\n await _assertLinkedStatus(false, userInternal, credential.providerId);\n\n return _link(userInternal, credential);\n}\n\n/**\n * Re-authenticates a user using a fresh credential.\n *\n * @remarks\n * Use before operations such as {@link updatePassword} that require tokens from recent sign-in\n * attempts. This method can be used to recover from a `CREDENTIAL_TOO_OLD_LOGIN_AGAIN` error.\n *\n * @param user - The user.\n * @param credential - The auth credential.\n *\n * @public\n */\nexport async function reauthenticateWithCredential(\n user: User,\n credential: AuthCredential\n): Promise {\n return _reauthenticate(getModularInstance(user) as UserInternal, credential);\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Endpoint, HttpMethod, _addTidIfNecessary, _performApiRequest } from '../index';\nimport { SignInWithPhoneNumberRequest } from '../authentication/sms';\nimport { FinalizeMfaResponse } from '../authentication/mfa';\nimport { AuthInternal } from '../../model/auth';\n\n/**\n * MFA Info as returned by the API\n */\ninterface BaseMfaEnrollment {\n mfaEnrollmentId: string;\n enrolledAt: number;\n displayName?: string;\n}\n\n/**\n * An MFA provided by SMS verification\n */\nexport interface PhoneMfaEnrollment extends BaseMfaEnrollment {\n phoneInfo: string;\n}\n\n/**\n * MfaEnrollment can be any subtype of BaseMfaEnrollment, currently only PhoneMfaEnrollment is supported\n */\nexport type MfaEnrollment = PhoneMfaEnrollment;\n\nexport interface StartPhoneMfaEnrollmentRequest {\n idToken: string;\n phoneEnrollmentInfo: {\n phoneNumber: string;\n recaptchaToken: string;\n };\n tenantId?: string;\n}\n\nexport interface StartPhoneMfaEnrollmentResponse {\n phoneSessionInfo: {\n sessionInfo: string;\n };\n}\n\nexport function startEnrollPhoneMfa(\n auth: AuthInternal,\n request: StartPhoneMfaEnrollmentRequest\n): Promise {\n return _performApiRequest<\n StartPhoneMfaEnrollmentRequest,\n StartPhoneMfaEnrollmentResponse\n >(auth, HttpMethod.POST, Endpoint.START_PHONE_MFA_ENROLLMENT, _addTidIfNecessary(auth, request));\n}\n\nexport interface FinalizePhoneMfaEnrollmentRequest {\n idToken: string;\n phoneVerificationInfo: SignInWithPhoneNumberRequest;\n displayName?: string | null;\n tenantId?: string;\n}\n\nexport interface FinalizePhoneMfaEnrollmentResponse\n extends FinalizeMfaResponse {}\n\nexport function finalizeEnrollPhoneMfa(\n auth: AuthInternal,\n request: FinalizePhoneMfaEnrollmentRequest\n): Promise {\n return _performApiRequest<\n FinalizePhoneMfaEnrollmentRequest,\n FinalizePhoneMfaEnrollmentResponse\n >(auth, HttpMethod.POST, Endpoint.FINALIZE_PHONE_MFA_ENROLLMENT, _addTidIfNecessary(auth, request));\n}\n\nexport interface WithdrawMfaRequest {\n idToken: string;\n mfaEnrollmentId: string;\n tenantId?: string;\n}\n\nexport interface WithdrawMfaResponse extends FinalizeMfaResponse {}\n\nexport function withdrawMfa(\n auth: AuthInternal,\n request: WithdrawMfaRequest\n): Promise {\n return _performApiRequest(\n auth,\n HttpMethod.POST,\n Endpoint.WITHDRAW_MFA,\n _addTidIfNecessary(auth, request)\n );\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {\n MultiFactorAssertion,\n MultiFactorInfo,\n MultiFactorSession,\n MultiFactorUser,\n User\n} from '../model/public_types';\n\nimport { withdrawMfa } from '../api/account_management/mfa';\nimport { AuthErrorCode } from '../core/errors';\nimport { _logoutIfInvalidated } from '../core/user/invalidation';\nimport { UserInternal } from '../model/user';\nimport { MultiFactorAssertionImpl } from './mfa_assertion';\nimport { MultiFactorInfoImpl } from './mfa_info';\nimport { MultiFactorSessionImpl } from './mfa_session';\nimport { getModularInstance } from '@firebase/util';\n\nexport class MultiFactorUserImpl implements MultiFactorUser {\n enrolledFactors: MultiFactorInfo[] = [];\n\n private constructor(readonly user: UserInternal) {\n user._onReload(userInfo => {\n if (userInfo.mfaInfo) {\n this.enrolledFactors = userInfo.mfaInfo.map(enrollment =>\n MultiFactorInfoImpl._fromServerResponse(user.auth, enrollment)\n );\n }\n });\n }\n\n static _fromUser(user: UserInternal): MultiFactorUserImpl {\n return new MultiFactorUserImpl(user);\n }\n\n async getSession(): Promise {\n return MultiFactorSessionImpl._fromIdtoken(await this.user.getIdToken());\n }\n\n async enroll(\n assertionExtern: MultiFactorAssertion,\n displayName?: string | null\n ): Promise {\n const assertion = assertionExtern as MultiFactorAssertionImpl;\n const session = (await this.getSession()) as MultiFactorSessionImpl;\n const finalizeMfaResponse = await _logoutIfInvalidated(\n this.user,\n assertion._process(this.user.auth, session, displayName)\n );\n // New tokens will be issued after enrollment of the new second factors.\n // They need to be updated on the user.\n await this.user._updateTokensIfNecessary(finalizeMfaResponse);\n // The user needs to be reloaded to get the new multi-factor information\n // from server. USER_RELOADED event will be triggered and `enrolledFactors`\n // will be updated.\n return this.user.reload();\n }\n\n async unenroll(infoOrUid: MultiFactorInfo | string): Promise {\n const mfaEnrollmentId =\n typeof infoOrUid === 'string' ? infoOrUid : infoOrUid.uid;\n const idToken = await this.user.getIdToken();\n const idTokenResponse = await _logoutIfInvalidated(\n this.user,\n withdrawMfa(this.user.auth, {\n idToken,\n mfaEnrollmentId\n })\n );\n // Remove the second factor from the user's list.\n this.enrolledFactors = this.enrolledFactors.filter(\n ({ uid }) => uid !== mfaEnrollmentId\n );\n // Depending on whether the backend decided to revoke the user's session,\n // the tokenResponse may be empty. If the tokens were not updated (and they\n // are now invalid), reloading the user will discover this and invalidate\n // the user's state accordingly.\n await this.user._updateTokensIfNecessary(idTokenResponse);\n try {\n await this.user.reload();\n } catch (e) {\n if (e.code !== `auth/${AuthErrorCode.TOKEN_EXPIRED}`) {\n throw e;\n }\n }\n }\n}\n\nconst multiFactorUserCache = new WeakMap();\n\n/**\n * The {@link MultiFactorUser} corresponding to the user.\n *\n * @remarks\n * This is used to access all multi-factor properties and operations related to the user.\n *\n * @param user - The user.\n *\n * @public\n */\nexport function multiFactor(user: User): MultiFactorUser {\n const userModular = getModularInstance(user);\n if (!multiFactorUserCache.has(userModular)) {\n multiFactorUserCache.set(\n userModular,\n MultiFactorUserImpl._fromUser(userModular as UserInternal)\n );\n }\n return multiFactorUserCache.get(userModular)!;\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Persistence } from '../../model/public_types';\n\nexport const enum PersistenceType {\n SESSION = 'SESSION',\n LOCAL = 'LOCAL',\n NONE = 'NONE'\n}\n\nexport type PersistedBlob = Record;\n\nexport interface Instantiator {\n (blob: PersistedBlob): T;\n}\n\nexport type PersistenceValue = PersistedBlob | string;\n\nexport const STORAGE_AVAILABLE_KEY = '__sak';\n\nexport interface StorageEventListener {\n (value: PersistenceValue | null): void;\n}\n\nexport interface PersistenceInternal extends Persistence {\n type: PersistenceType;\n _isAvailable(): Promise;\n _set(key: string, value: PersistenceValue): Promise;\n _get(key: string): Promise;\n _remove(key: string): Promise;\n _addListener(key: string, listener: StorageEventListener): void;\n _removeListener(key: string, listener: StorageEventListener): void;\n // Should this persistence allow migration up the chosen hierarchy?\n _shouldAllowMigration?: boolean;\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n PersistenceValue,\n STORAGE_AVAILABLE_KEY,\n PersistenceType\n} from '../../core/persistence';\n\n// There are two different browser persistence types: local and session.\n// Both have the same implementation but use a different underlying storage\n// object.\n\nexport abstract class BrowserPersistenceClass {\n protected constructor(\n protected readonly storageRetriever: () => Storage,\n readonly type: PersistenceType\n ) {}\n\n _isAvailable(): Promise {\n try {\n if (!this.storage) {\n return Promise.resolve(false);\n }\n this.storage.setItem(STORAGE_AVAILABLE_KEY, '1');\n this.storage.removeItem(STORAGE_AVAILABLE_KEY);\n return Promise.resolve(true);\n } catch {\n return Promise.resolve(false);\n }\n }\n\n _set(key: string, value: PersistenceValue): Promise {\n this.storage.setItem(key, JSON.stringify(value));\n return Promise.resolve();\n }\n\n _get(key: string): Promise {\n const json = this.storage.getItem(key);\n return Promise.resolve(json ? JSON.parse(json) : null);\n }\n\n _remove(key: string): Promise {\n this.storage.removeItem(key);\n return Promise.resolve();\n }\n\n protected get storage(): Storage {\n return this.storageRetriever();\n }\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Persistence } from '../../model/public_types';\n\nimport { getUA } from '@firebase/util';\nimport {\n _isSafari,\n _isIOS,\n _isIframe,\n _isMobileBrowser,\n _isIE10\n} from '../../core/util/browser';\nimport {\n PersistenceInternal as InternalPersistence,\n PersistenceType,\n PersistenceValue,\n StorageEventListener\n} from '../../core/persistence';\nimport { BrowserPersistenceClass } from './browser';\n\nfunction _iframeCannotSyncWebStorage(): boolean {\n const ua = getUA();\n return _isSafari(ua) || _isIOS(ua);\n}\n\n// The polling period in case events are not supported\nexport const _POLLING_INTERVAL_MS = 1000;\n\n// The IE 10 localStorage cross tab synchronization delay in milliseconds\nconst IE10_LOCAL_STORAGE_SYNC_DELAY = 10;\n\nclass BrowserLocalPersistence\n extends BrowserPersistenceClass\n implements InternalPersistence\n{\n static type: 'LOCAL' = 'LOCAL';\n\n constructor() {\n super(() => window.localStorage, PersistenceType.LOCAL);\n }\n\n private readonly boundEventHandler = (event: StorageEvent, poll?: boolean): void => this.onStorageEvent(event, poll);\n private readonly listeners: Record> = {};\n private readonly localCache: Record = {};\n // setTimeout return value is platform specific\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private pollTimer: any | null = null;\n\n // Safari or iOS browser and embedded in an iframe.\n private readonly safariLocalStorageNotSynced =\n _iframeCannotSyncWebStorage() && _isIframe();\n // Whether to use polling instead of depending on window events\n private readonly fallbackToPolling = _isMobileBrowser();\n readonly _shouldAllowMigration = true;\n\n private forAllChangedKeys(\n cb: (key: string, oldValue: string | null, newValue: string | null) => void\n ): void {\n // Check all keys with listeners on them.\n for (const key of Object.keys(this.listeners)) {\n // Get value from localStorage.\n const newValue = this.storage.getItem(key);\n const oldValue = this.localCache[key];\n // If local map value does not match, trigger listener with storage event.\n // Differentiate this simulated event from the real storage event.\n if (newValue !== oldValue) {\n cb(key, oldValue, newValue);\n }\n }\n }\n\n private onStorageEvent(event: StorageEvent, poll = false): void {\n // Key would be null in some situations, like when localStorage is cleared\n if (!event.key) {\n this.forAllChangedKeys(\n (key: string, _oldValue: string | null, newValue: string | null) => {\n this.notifyListeners(key, newValue);\n }\n );\n return;\n }\n\n const key = event.key;\n\n // Check the mechanism how this event was detected.\n // The first event will dictate the mechanism to be used.\n if (poll) {\n // Environment detects storage changes via polling.\n // Remove storage event listener to prevent possible event duplication.\n this.detachListener();\n } else {\n // Environment detects storage changes via storage event listener.\n // Remove polling listener to prevent possible event duplication.\n this.stopPolling();\n }\n\n // Safari embedded iframe. Storage event will trigger with the delta\n // changes but no changes will be applied to the iframe localStorage.\n if (this.safariLocalStorageNotSynced) {\n // Get current iframe page value.\n const storedValue = this.storage.getItem(key);\n // Value not synchronized, synchronize manually.\n if (event.newValue !== storedValue) {\n if (event.newValue !== null) {\n // Value changed from current value.\n this.storage.setItem(key, event.newValue);\n } else {\n // Current value deleted.\n this.storage.removeItem(key);\n }\n } else if (this.localCache[key] === event.newValue && !poll) {\n // Already detected and processed, do not trigger listeners again.\n return;\n }\n }\n\n const triggerListeners = (): void => {\n // Keep local map up to date in case storage event is triggered before\n // poll.\n const storedValue = this.storage.getItem(key);\n if (!poll && this.localCache[key] === storedValue) {\n // Real storage event which has already been detected, do nothing.\n // This seems to trigger in some IE browsers for some reason.\n return;\n }\n this.notifyListeners(key, storedValue);\n };\n\n const storedValue = this.storage.getItem(key);\n if (\n _isIE10() &&\n storedValue !== event.newValue &&\n event.newValue !== event.oldValue\n ) {\n // IE 10 has this weird bug where a storage event would trigger with the\n // correct key, oldValue and newValue but localStorage.getItem(key) does\n // not yield the updated value until a few milliseconds. This ensures\n // this recovers from that situation.\n setTimeout(triggerListeners, IE10_LOCAL_STORAGE_SYNC_DELAY);\n } else {\n triggerListeners();\n }\n }\n\n private notifyListeners(key: string, value: string | null): void {\n this.localCache[key] = value;\n const listeners = this.listeners[key];\n if (listeners) {\n for (const listener of Array.from(listeners)) {\n listener(value ? JSON.parse(value) : value);\n }\n }\n }\n\n private startPolling(): void {\n this.stopPolling();\n\n this.pollTimer = setInterval(() => {\n this.forAllChangedKeys(\n (key: string, oldValue: string | null, newValue: string | null) => {\n this.onStorageEvent(\n new StorageEvent('storage', {\n key,\n oldValue,\n newValue\n }),\n /* poll */ true\n );\n }\n );\n }, _POLLING_INTERVAL_MS);\n }\n\n private stopPolling(): void {\n if (this.pollTimer) {\n clearInterval(this.pollTimer);\n this.pollTimer = null;\n }\n }\n\n private attachListener(): void {\n window.addEventListener('storage', this.boundEventHandler);\n }\n\n private detachListener(): void {\n window.removeEventListener('storage', this.boundEventHandler);\n }\n\n _addListener(key: string, listener: StorageEventListener): void {\n if (Object.keys(this.listeners).length === 0) {\n // Whether browser can detect storage event when it had already been pushed to the background.\n // This may happen in some mobile browsers. A localStorage change in the foreground window\n // will not be detected in the background window via the storage event.\n // This was detected in iOS 7.x mobile browsers\n if (this.fallbackToPolling) {\n this.startPolling();\n } else {\n this.attachListener();\n }\n }\n if (!this.listeners[key]) {\n this.listeners[key] = new Set();\n // Populate the cache to avoid spuriously triggering on first poll.\n this.localCache[key] = this.storage.getItem(key);\n }\n this.listeners[key].add(listener);\n }\n\n _removeListener(key: string, listener: StorageEventListener): void {\n if (this.listeners[key]) {\n this.listeners[key].delete(listener);\n\n if (this.listeners[key].size === 0) {\n delete this.listeners[key];\n }\n }\n\n if (Object.keys(this.listeners).length === 0) {\n this.detachListener();\n this.stopPolling();\n }\n }\n\n // Update local cache on base operations:\n\n async _set(key: string, value: PersistenceValue): Promise {\n await super._set(key, value);\n this.localCache[key] = JSON.stringify(value);\n }\n\n async _get(key: string): Promise {\n const value = await super._get(key);\n this.localCache[key] = JSON.stringify(value);\n return value;\n }\n\n async _remove(key: string): Promise {\n await super._remove(key);\n delete this.localCache[key];\n }\n}\n\n/**\n * An implementation of {@link Persistence} of type `LOCAL` using `localStorage`\n * for the underlying storage.\n *\n * @public\n */\nexport const browserLocalPersistence: Persistence = BrowserLocalPersistence;\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Persistence } from '../../model/public_types';\n\nimport {\n PersistenceInternal as InternalPersistence,\n PersistenceType,\n StorageEventListener\n} from '../../core/persistence';\nimport { BrowserPersistenceClass } from './browser';\n\nclass BrowserSessionPersistence\n extends BrowserPersistenceClass\n implements InternalPersistence\n{\n static type: 'SESSION' = 'SESSION';\n\n constructor() {\n super(() => window.sessionStorage, PersistenceType.SESSION);\n }\n\n _addListener(_key: string, _listener: StorageEventListener): void {\n // Listeners are not supported for session storage since it cannot be shared across windows\n return;\n }\n\n _removeListener(_key: string, _listener: StorageEventListener): void {\n // Listeners are not supported for session storage since it cannot be shared across windows\n return;\n }\n}\n\n/**\n * An implementation of {@link Persistence} of `SESSION` using `sessionStorage`\n * for the underlying storage.\n *\n * @public\n */\nexport const browserSessionPersistence: Persistence = BrowserSessionPersistence;\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** TODO: remove this once tslib has a polyfill for Promise.allSettled */\ninterface PromiseFulfilledResult {\n fulfilled: true;\n value: T;\n}\n\ninterface PromiseRejectedResult {\n fulfilled: false;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n reason: any;\n}\n\nexport type PromiseSettledResult =\n | PromiseFulfilledResult\n | PromiseRejectedResult;\n\n/**\n * Shim for Promise.allSettled, note the slightly different format of `fulfilled` vs `status`.\n *\n * @param promises - Array of promises to wait on.\n */\nexport function _allSettled(\n promises: Array>\n): Promise>> {\n return Promise.all(\n promises.map(async promise => {\n try {\n const value = await promise;\n return {\n fulfilled: true,\n value\n } as PromiseFulfilledResult;\n } catch (reason) {\n return {\n fulfilled: false,\n reason\n } as PromiseRejectedResult;\n }\n })\n );\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n ReceiverHandler,\n _EventType,\n _ReceiverResponse,\n SenderMessageEvent,\n _Status,\n _SenderRequest\n} from './index';\nimport { _allSettled } from './promise';\n\n/**\n * Interface class for receiving messages.\n *\n */\nexport class Receiver {\n private static readonly receivers: Receiver[] = [];\n private readonly boundEventHandler: EventListener;\n\n private readonly handlersMap: {\n // Typescript doesn't have existential types :(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [eventType: string]: Set>;\n } = {};\n\n constructor(private readonly eventTarget: EventTarget) {\n this.boundEventHandler = this.handleEvent.bind(this);\n }\n\n /**\n * Obtain an instance of a Receiver for a given event target, if none exists it will be created.\n *\n * @param eventTarget - An event target (such as window or self) through which the underlying\n * messages will be received.\n */\n static _getInstance(eventTarget: EventTarget): Receiver {\n // The results are stored in an array since objects can't be keys for other\n // objects. In addition, setting a unique property on an event target as a\n // hash map key may not be allowed due to CORS restrictions.\n const existingInstance = this.receivers.find(receiver =>\n receiver.isListeningto(eventTarget)\n );\n if (existingInstance) {\n return existingInstance;\n }\n const newInstance = new Receiver(eventTarget);\n this.receivers.push(newInstance);\n return newInstance;\n }\n\n private isListeningto(eventTarget: EventTarget): boolean {\n return this.eventTarget === eventTarget;\n }\n\n /**\n * Fans out a MessageEvent to the appropriate listeners.\n *\n * @remarks\n * Sends an {@link Status.ACK} upon receipt and a {@link Status.DONE} once all handlers have\n * finished processing.\n *\n * @param event - The MessageEvent.\n *\n */\n private async handleEvent<\n T extends _ReceiverResponse,\n S extends _SenderRequest\n >(event: Event): Promise {\n const messageEvent = event as MessageEvent>;\n const { eventId, eventType, data } = messageEvent.data;\n\n const handlers: Set> | undefined = this.handlersMap[\n eventType\n ];\n if (!handlers?.size) {\n return;\n }\n\n messageEvent.ports[0].postMessage({\n status: _Status.ACK,\n eventId,\n eventType\n });\n\n const promises = Array.from(handlers).map(async handler =>\n handler(messageEvent.origin, data)\n );\n const response = await _allSettled(promises);\n messageEvent.ports[0].postMessage({\n status: _Status.DONE,\n eventId,\n eventType,\n response\n });\n }\n\n /**\n * Subscribe an event handler for a particular event.\n *\n * @param eventType - Event name to subscribe to.\n * @param eventHandler - The event handler which should receive the events.\n *\n */\n _subscribe(\n eventType: _EventType,\n eventHandler: ReceiverHandler\n ): void {\n if (Object.keys(this.handlersMap).length === 0) {\n this.eventTarget.addEventListener('message', this.boundEventHandler);\n }\n\n if (!this.handlersMap[eventType]) {\n this.handlersMap[eventType] = new Set();\n }\n\n this.handlersMap[eventType].add(eventHandler);\n }\n\n /**\n * Unsubscribe an event handler from a particular event.\n *\n * @param eventType - Event name to unsubscribe from.\n * @param eventHandler - Optinoal event handler, if none provided, unsubscribe all handlers on this event.\n *\n */\n _unsubscribe(\n eventType: _EventType,\n eventHandler?: ReceiverHandler\n ): void {\n if (this.handlersMap[eventType] && eventHandler) {\n this.handlersMap[eventType].delete(eventHandler);\n }\n if (!eventHandler || this.handlersMap[eventType].size === 0) {\n delete this.handlersMap[eventType];\n }\n\n if (Object.keys(this.handlersMap).length === 0) {\n this.eventTarget.removeEventListener('message', this.boundEventHandler);\n }\n }\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport function _generateEventId(prefix = '', digits = 10): string {\n let random = '';\n for (let i = 0; i < digits; i++) {\n random += Math.floor(Math.random() * 10);\n }\n return prefix + random;\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { _generateEventId } from '../../core/util/event_id';\nimport {\n _SenderRequest,\n _EventType,\n ReceiverMessageEvent,\n _MessageError,\n SenderMessageEvent,\n _Status,\n _ReceiverMessageResponse,\n _ReceiverResponse,\n _TimeoutDuration\n} from './index';\n\ninterface MessageHandler {\n messageChannel: MessageChannel;\n onMessage: EventListenerOrEventListenerObject;\n}\n\n/**\n * Interface for sending messages and waiting for a completion response.\n *\n */\nexport class Sender {\n private readonly handlers = new Set();\n\n constructor(private readonly target: ServiceWorker) {}\n\n /**\n * Unsubscribe the handler and remove it from our tracking Set.\n *\n * @param handler - The handler to unsubscribe.\n */\n private removeMessageHandler(handler: MessageHandler): void {\n if (handler.messageChannel) {\n handler.messageChannel.port1.removeEventListener(\n 'message',\n handler.onMessage\n );\n handler.messageChannel.port1.close();\n }\n this.handlers.delete(handler);\n }\n\n /**\n * Send a message to the Receiver located at {@link target}.\n *\n * @remarks\n * We'll first wait a bit for an ACK , if we get one we will wait significantly longer until the\n * receiver has had a chance to fully process the event.\n *\n * @param eventType - Type of event to send.\n * @param data - The payload of the event.\n * @param timeout - Timeout for waiting on an ACK from the receiver.\n *\n * @returns An array of settled promises from all the handlers that were listening on the receiver.\n */\n async _send(\n eventType: _EventType,\n data: S,\n timeout = _TimeoutDuration.ACK\n ): Promise<_ReceiverMessageResponse> {\n const messageChannel =\n typeof MessageChannel !== 'undefined' ? new MessageChannel() : null;\n if (!messageChannel) {\n throw new Error(_MessageError.CONNECTION_UNAVAILABLE);\n }\n // Node timers and browser timers return fundamentally different types.\n // We don't actually care what the value is but TS won't accept unknown and\n // we can't cast properly in both environments.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let completionTimer: any;\n let handler: MessageHandler;\n return new Promise<_ReceiverMessageResponse>((resolve, reject) => {\n const eventId = _generateEventId('', 20);\n messageChannel.port1.start();\n const ackTimer = setTimeout(() => {\n reject(new Error(_MessageError.UNSUPPORTED_EVENT));\n }, timeout);\n handler = {\n messageChannel,\n onMessage(event: Event): void {\n const messageEvent = event as MessageEvent>;\n if (messageEvent.data.eventId !== eventId) {\n return;\n }\n switch (messageEvent.data.status) {\n case _Status.ACK:\n // The receiver should ACK first.\n clearTimeout(ackTimer);\n completionTimer = setTimeout(() => {\n reject(new Error(_MessageError.TIMEOUT));\n }, _TimeoutDuration.COMPLETION);\n break;\n case _Status.DONE:\n // Once the receiver's handlers are finished we will get the results.\n clearTimeout(completionTimer);\n resolve(messageEvent.data.response);\n break;\n default:\n clearTimeout(ackTimer);\n clearTimeout(completionTimer);\n reject(new Error(_MessageError.INVALID_RESPONSE));\n break;\n }\n }\n };\n this.handlers.add(handler);\n messageChannel.port1.addEventListener('message', handler.onMessage);\n this.target.postMessage(\n {\n eventType,\n eventId,\n data\n } as SenderMessageEvent,\n [messageChannel.port2]\n );\n }).finally(() => {\n if (handler) {\n this.removeMessageHandler(handler);\n }\n });\n }\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Recaptcha } from './recaptcha/recaptcha';\n\n/**\n * A specialized window type that melds the normal window type plus the\n * various bits we need. The three different blocks that are &'d together\n * cant be defined in the same block together.\n */\nexport type AuthWindow = {\n // Standard window types\n [T in keyof Window]: Window[T];\n} & {\n // Any known / named properties we want to add\n grecaptcha?: Recaptcha;\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n ___jsl?: Record;\n gapi?: typeof gapi;\n} & {\n // A final catch-all for callbacks (which will have random names) that\n // we will stick on the window.\n [callback: string]: (...args: unknown[]) => void;\n};\n\n/**\n * Lazy accessor for window, since the compat layer won't tree shake this out,\n * we need to make sure not to mess with window unless we have to\n */\nexport function _window(): AuthWindow {\n return (window as unknown) as AuthWindow;\n}\n\nexport function _setWindowLocation(url: string): void {\n _window().location.href = url;\n}\n","/**\n * @license\n * Copyright 2020 Google LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { _window } from '../auth_window';\n\nexport function _isWorker(): boolean {\n return (\n typeof _window()['WorkerGlobalScope'] !== 'undefined' &&\n typeof _window()['importScripts'] === 'function'\n );\n}\n\nexport async function _getActiveServiceWorker(): Promise {\n if (!navigator?.serviceWorker) {\n return null;\n }\n try {\n const registration = await navigator.serviceWorker.ready;\n return registration.active;\n } catch {\n return null;\n }\n}\n\nexport function _getServiceWorkerController(): ServiceWorker | null {\n return navigator?.serviceWorker?.controller || null;\n}\n\nexport function _getWorkerGlobalScope(): ServiceWorker | null {\n return _isWorker() ? ((self as unknown) as ServiceWorker) : null;\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Persistence } from '../../model/public_types';\nimport {\n PersistedBlob,\n PersistenceInternal as InternalPersistence,\n PersistenceType,\n PersistenceValue,\n StorageEventListener,\n STORAGE_AVAILABLE_KEY\n} from '../../core/persistence/';\nimport {\n _EventType,\n _PingResponse,\n KeyChangedResponse,\n KeyChangedRequest,\n PingRequest,\n _TimeoutDuration\n} from '../messagechannel/index';\nimport { Receiver } from '../messagechannel/receiver';\nimport { Sender } from '../messagechannel/sender';\nimport {\n _isWorker,\n _getActiveServiceWorker,\n _getServiceWorkerController,\n _getWorkerGlobalScope\n} from '../util/worker';\n\nexport const DB_NAME = 'firebaseLocalStorageDb';\nconst DB_VERSION = 1;\nconst DB_OBJECTSTORE_NAME = 'firebaseLocalStorage';\nconst DB_DATA_KEYPATH = 'fbase_key';\n\ninterface DBObject {\n [DB_DATA_KEYPATH]: string;\n value: PersistedBlob;\n}\n\n/**\n * Promise wrapper for IDBRequest\n *\n * Unfortunately we can't cleanly extend Promise since promises are not callable in ES6\n *\n */\nclass DBPromise {\n constructor(private readonly request: IDBRequest) {}\n\n toPromise(): Promise {\n return new Promise((resolve, reject) => {\n this.request.addEventListener('success', () => {\n resolve(this.request.result);\n });\n this.request.addEventListener('error', () => {\n reject(this.request.error);\n });\n });\n }\n}\n\nfunction getObjectStore(db: IDBDatabase, isReadWrite: boolean): IDBObjectStore {\n return db\n .transaction([DB_OBJECTSTORE_NAME], isReadWrite ? 'readwrite' : 'readonly')\n .objectStore(DB_OBJECTSTORE_NAME);\n}\n\nexport async function _clearDatabase(db: IDBDatabase): Promise {\n const objectStore = getObjectStore(db, true);\n return new DBPromise(objectStore.clear()).toPromise();\n}\n\nexport function _deleteDatabase(): Promise {\n const request = indexedDB.deleteDatabase(DB_NAME);\n return new DBPromise(request).toPromise();\n}\n\nexport function _openDatabase(): Promise {\n const request = indexedDB.open(DB_NAME, DB_VERSION);\n return new Promise((resolve, reject) => {\n request.addEventListener('error', () => {\n reject(request.error);\n });\n\n request.addEventListener('upgradeneeded', () => {\n const db = request.result;\n\n try {\n db.createObjectStore(DB_OBJECTSTORE_NAME, { keyPath: DB_DATA_KEYPATH });\n } catch (e) {\n reject(e);\n }\n });\n\n request.addEventListener('success', async () => {\n const db: IDBDatabase = request.result;\n // Strange bug that occurs in Firefox when multiple tabs are opened at the\n // same time. The only way to recover seems to be deleting the database\n // and re-initializing it.\n // https://github.com/firebase/firebase-js-sdk/issues/634\n\n if (!db.objectStoreNames.contains(DB_OBJECTSTORE_NAME)) {\n // Need to close the database or else you get a `blocked` event\n db.close();\n await _deleteDatabase();\n resolve(await _openDatabase());\n } else {\n resolve(db);\n }\n });\n });\n}\n\nexport async function _putObject(\n db: IDBDatabase,\n key: string,\n value: PersistenceValue | string\n): Promise {\n const request = getObjectStore(db, true).put({\n [DB_DATA_KEYPATH]: key,\n value\n });\n return new DBPromise(request).toPromise();\n}\n\nasync function getObject(\n db: IDBDatabase,\n key: string\n): Promise {\n const request = getObjectStore(db, false).get(key);\n const data = await new DBPromise(request).toPromise();\n return data === undefined ? null : data.value;\n}\n\nexport function _deleteObject(db: IDBDatabase, key: string): Promise {\n const request = getObjectStore(db, true).delete(key);\n return new DBPromise(request).toPromise();\n}\n\nexport const _POLLING_INTERVAL_MS = 800;\nexport const _TRANSACTION_RETRY_COUNT = 3;\n\nclass IndexedDBLocalPersistence implements InternalPersistence {\n static type: 'LOCAL' = 'LOCAL';\n\n type = PersistenceType.LOCAL;\n db?: IDBDatabase;\n readonly _shouldAllowMigration = true;\n\n private readonly listeners: Record> = {};\n private readonly localCache: Record = {};\n // setTimeout return value is platform specific\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private pollTimer: any | null = null;\n private pendingWrites = 0;\n\n private receiver: Receiver | null = null;\n private sender: Sender | null = null;\n private serviceWorkerReceiverAvailable = false;\n private activeServiceWorker: ServiceWorker | null = null;\n // Visible for testing only\n readonly _workerInitializationPromise: Promise;\n\n constructor() {\n // Fire & forget the service worker registration as it may never resolve\n this._workerInitializationPromise =\n this.initializeServiceWorkerMessaging().then(\n () => {},\n () => {}\n );\n }\n\n async _openDb(): Promise {\n if (this.db) {\n return this.db;\n }\n this.db = await _openDatabase();\n return this.db;\n }\n\n async _withRetries(op: (db: IDBDatabase) => Promise): Promise {\n let numAttempts = 0;\n\n while (true) {\n try {\n const db = await this._openDb();\n return await op(db);\n } catch (e) {\n if (numAttempts++ > _TRANSACTION_RETRY_COUNT) {\n throw e;\n }\n if (this.db) {\n this.db.close();\n this.db = undefined;\n }\n // TODO: consider adding exponential backoff\n }\n }\n }\n\n /**\n * IndexedDB events do not propagate from the main window to the worker context. We rely on a\n * postMessage interface to send these events to the worker ourselves.\n */\n private async initializeServiceWorkerMessaging(): Promise {\n return _isWorker() ? this.initializeReceiver() : this.initializeSender();\n }\n\n /**\n * As the worker we should listen to events from the main window.\n */\n private async initializeReceiver(): Promise {\n this.receiver = Receiver._getInstance(_getWorkerGlobalScope()!);\n // Refresh from persistence if we receive a KeyChanged message.\n this.receiver._subscribe(\n _EventType.KEY_CHANGED,\n async (_origin: string, data: KeyChangedRequest) => {\n const keys = await this._poll();\n return {\n keyProcessed: keys.includes(data.key)\n };\n }\n );\n // Let the sender know that we are listening so they give us more timeout.\n this.receiver._subscribe(\n _EventType.PING,\n async (_origin: string, _data: PingRequest) => {\n return [_EventType.KEY_CHANGED];\n }\n );\n }\n\n /**\n * As the main window, we should let the worker know when keys change (set and remove).\n *\n * @remarks\n * {@link https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerContainer/ready | ServiceWorkerContainer.ready}\n * may not resolve.\n */\n private async initializeSender(): Promise {\n // Check to see if there's an active service worker.\n this.activeServiceWorker = await _getActiveServiceWorker();\n if (!this.activeServiceWorker) {\n return;\n }\n this.sender = new Sender(this.activeServiceWorker);\n // Ping the service worker to check what events they can handle.\n const results = await this.sender._send<_PingResponse, PingRequest>(\n _EventType.PING,\n {},\n _TimeoutDuration.LONG_ACK\n );\n if (!results) {\n return;\n }\n if (\n results[0]?.fulfilled &&\n results[0]?.value.includes(_EventType.KEY_CHANGED)\n ) {\n this.serviceWorkerReceiverAvailable = true;\n }\n }\n\n /**\n * Let the worker know about a changed key, the exact key doesn't technically matter since the\n * worker will just trigger a full sync anyway.\n *\n * @remarks\n * For now, we only support one service worker per page.\n *\n * @param key - Storage key which changed.\n */\n private async notifyServiceWorker(key: string): Promise {\n if (\n !this.sender ||\n !this.activeServiceWorker ||\n _getServiceWorkerController() !== this.activeServiceWorker\n ) {\n return;\n }\n try {\n await this.sender._send(\n _EventType.KEY_CHANGED,\n { key },\n // Use long timeout if receiver has previously responded to a ping from us.\n this.serviceWorkerReceiverAvailable\n ? _TimeoutDuration.LONG_ACK\n : _TimeoutDuration.ACK\n );\n } catch {\n // This is a best effort approach. Ignore errors.\n }\n }\n\n async _isAvailable(): Promise {\n try {\n if (!indexedDB) {\n return false;\n }\n const db = await _openDatabase();\n await _putObject(db, STORAGE_AVAILABLE_KEY, '1');\n await _deleteObject(db, STORAGE_AVAILABLE_KEY);\n return true;\n } catch {}\n return false;\n }\n\n private async _withPendingWrite(write: () => Promise): Promise {\n this.pendingWrites++;\n try {\n await write();\n } finally {\n this.pendingWrites--;\n }\n }\n\n async _set(key: string, value: PersistenceValue): Promise {\n return this._withPendingWrite(async () => {\n await this._withRetries((db: IDBDatabase) => _putObject(db, key, value));\n this.localCache[key] = value;\n return this.notifyServiceWorker(key);\n });\n }\n\n async _get(key: string): Promise {\n const obj = (await this._withRetries((db: IDBDatabase) =>\n getObject(db, key)\n )) as T;\n this.localCache[key] = obj;\n return obj;\n }\n\n async _remove(key: string): Promise {\n return this._withPendingWrite(async () => {\n await this._withRetries((db: IDBDatabase) => _deleteObject(db, key));\n delete this.localCache[key];\n return this.notifyServiceWorker(key);\n });\n }\n\n private async _poll(): Promise {\n // TODO: check if we need to fallback if getAll is not supported\n const result = await this._withRetries((db: IDBDatabase) => {\n const getAllRequest = getObjectStore(db, false).getAll();\n return new DBPromise(getAllRequest).toPromise();\n });\n\n if (!result) {\n return [];\n }\n\n // If we have pending writes in progress abort, we'll get picked up on the next poll\n if (this.pendingWrites !== 0) {\n return [];\n }\n\n const keys = [];\n const keysInResult = new Set();\n for (const { fbase_key: key, value } of result) {\n keysInResult.add(key);\n if (JSON.stringify(this.localCache[key]) !== JSON.stringify(value)) {\n this.notifyListeners(key, value as PersistenceValue);\n keys.push(key);\n }\n }\n for (const localKey of Object.keys(this.localCache)) {\n if (this.localCache[localKey] && !keysInResult.has(localKey)) {\n // Deleted\n this.notifyListeners(localKey, null);\n keys.push(localKey);\n }\n }\n return keys;\n }\n\n private notifyListeners(\n key: string,\n newValue: PersistenceValue | null\n ): void {\n this.localCache[key] = newValue;\n const listeners = this.listeners[key];\n if (listeners) {\n for (const listener of Array.from(listeners)) {\n listener(newValue);\n }\n }\n }\n\n private startPolling(): void {\n this.stopPolling();\n\n this.pollTimer = setInterval(\n async () => this._poll(),\n _POLLING_INTERVAL_MS\n );\n }\n\n private stopPolling(): void {\n if (this.pollTimer) {\n clearInterval(this.pollTimer);\n this.pollTimer = null;\n }\n }\n\n _addListener(key: string, listener: StorageEventListener): void {\n if (Object.keys(this.listeners).length === 0) {\n this.startPolling();\n }\n if (!this.listeners[key]) {\n this.listeners[key] = new Set();\n // Populate the cache to avoid spuriously triggering on first poll.\n void this._get(key); // This can happen in the background async and we can return immediately.\n }\n this.listeners[key].add(listener);\n }\n\n _removeListener(key: string, listener: StorageEventListener): void {\n if (this.listeners[key]) {\n this.listeners[key].delete(listener);\n\n if (this.listeners[key].size === 0) {\n delete this.listeners[key];\n }\n }\n\n if (Object.keys(this.listeners).length === 0) {\n this.stopPolling();\n }\n }\n}\n\n/**\n * An implementation of {@link Persistence} of type `LOCAL` using `indexedDB`\n * for the underlying storage.\n *\n * @public\n */\nexport const indexedDBLocalPersistence: Persistence = IndexedDBLocalPersistence;\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { _performApiRequest, Endpoint, HttpMethod, _addTidIfNecessary } from '../index';\nimport { Auth } from '../../model/public_types';\nimport { IdTokenResponse } from '../../model/id_token';\nimport { MfaEnrollment } from '../account_management/mfa';\nimport { SignInWithIdpResponse } from './idp';\nimport {\n SignInWithPhoneNumberRequest,\n SignInWithPhoneNumberResponse\n} from './sms';\n\nexport interface FinalizeMfaResponse {\n idToken: string;\n refreshToken: string;\n}\n\n/**\n * @internal\n */\nexport interface IdTokenMfaResponse extends IdTokenResponse {\n mfaPendingCredential?: string;\n mfaInfo?: MfaEnrollment[];\n}\n\nexport interface StartPhoneMfaSignInRequest {\n mfaPendingCredential: string;\n mfaEnrollmentId: string;\n phoneSignInInfo: {\n recaptchaToken: string;\n };\n tenantId?: string;\n}\n\nexport interface StartPhoneMfaSignInResponse {\n phoneResponseInfo: {\n sessionInfo: string;\n };\n}\n\nexport function startSignInPhoneMfa(\n auth: Auth,\n request: StartPhoneMfaSignInRequest\n): Promise {\n return _performApiRequest<\n StartPhoneMfaSignInRequest,\n StartPhoneMfaSignInResponse\n >(auth, HttpMethod.POST, Endpoint.START_PHONE_MFA_SIGN_IN, _addTidIfNecessary(auth, request));\n}\n\nexport interface FinalizePhoneMfaSignInRequest {\n mfaPendingCredential: string;\n phoneVerificationInfo: SignInWithPhoneNumberRequest;\n tenantId?: string;\n}\n\nexport interface FinalizePhoneMfaSignInResponse extends FinalizeMfaResponse {}\n\nexport function finalizeSignInPhoneMfa(\n auth: Auth,\n request: FinalizePhoneMfaSignInRequest,\n): Promise {\n return _performApiRequest<\n FinalizePhoneMfaSignInRequest,\n FinalizePhoneMfaSignInResponse\n >(auth, HttpMethod.POST, Endpoint.FINALIZE_PHONE_MFA_SIGN_IN, _addTidIfNecessary(auth, request));\n}\n\n/**\n * @internal\n */\nexport type PhoneOrOauthTokenResponse =\n | SignInWithPhoneNumberResponse\n | SignInWithIdpResponse\n | IdTokenResponse;\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AuthErrorCode } from '../core/errors';\nimport { _createError } from '../core/util/assert';\n\nfunction getScriptParentElement(): HTMLDocument | HTMLHeadElement {\n return document.getElementsByTagName('head')?.[0] ?? document;\n}\n\nexport function _loadJS(url: string): Promise {\n // TODO: consider adding timeout support & cancellation\n return new Promise((resolve, reject) => {\n const el = document.createElement('script');\n el.setAttribute('src', url);\n el.onload = resolve;\n el.onerror = e => {\n const error = _createError(AuthErrorCode.INTERNAL_ERROR);\n error.customData = e as unknown as Record;\n reject(error);\n };\n el.type = 'text/javascript';\n el.charset = 'UTF-8';\n getScriptParentElement().appendChild(el);\n });\n}\n\nexport function _generateCallbackName(prefix: string): string {\n return `__${prefix}${Math.floor(Math.random() * 1000000)}`;\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { querystring } from '@firebase/util';\n\nimport { AuthErrorCode } from '../../core/errors';\nimport { _assert, _createError } from '../../core/util/assert';\nimport { Delay } from '../../core/util/delay';\nimport { AuthInternal } from '../../model/auth';\nimport { _window } from '../auth_window';\nimport * as jsHelpers from '../load_js';\nimport { Recaptcha } from './recaptcha';\nimport { MockReCaptcha } from './recaptcha_mock';\n\n// ReCaptcha will load using the same callback, so the callback function needs\n// to be kept around\nexport const _JSLOAD_CALLBACK = jsHelpers._generateCallbackName('rcb');\nconst NETWORK_TIMEOUT_DELAY = new Delay(30000, 60000);\nconst RECAPTCHA_BASE = 'https://www.google.com/recaptcha/api.js?';\n\n/**\n * We need to mark this interface as internal explicitly to exclude it in the public typings, because\n * it references AuthInternal which has a circular dependency with UserInternal.\n *\n * @internal\n */\nexport interface ReCaptchaLoader {\n load(auth: AuthInternal, hl?: string): Promise;\n clearedOneInstance(): void;\n}\n\n/**\n * Loader for the GReCaptcha library. There should only ever be one of this.\n */\nexport class ReCaptchaLoaderImpl implements ReCaptchaLoader {\n private hostLanguage = '';\n private counter = 0;\n private readonly librarySeparatelyLoaded = !!_window().grecaptcha;\n\n load(auth: AuthInternal, hl = ''): Promise {\n _assert(isHostLanguageValid(hl), auth, AuthErrorCode.ARGUMENT_ERROR);\n\n if (this.shouldResolveImmediately(hl)) {\n return Promise.resolve(_window().grecaptcha!);\n }\n return new Promise((resolve, reject) => {\n const networkTimeout = _window().setTimeout(() => {\n reject(_createError(auth, AuthErrorCode.NETWORK_REQUEST_FAILED));\n }, NETWORK_TIMEOUT_DELAY.get());\n\n _window()[_JSLOAD_CALLBACK] = () => {\n _window().clearTimeout(networkTimeout);\n delete _window()[_JSLOAD_CALLBACK];\n\n const recaptcha = _window().grecaptcha;\n\n if (!recaptcha) {\n reject(_createError(auth, AuthErrorCode.INTERNAL_ERROR));\n return;\n }\n\n // Wrap the greptcha render function so that we know if the developer has\n // called it separately\n const render = recaptcha.render;\n recaptcha.render = (container, params) => {\n const widgetId = render(container, params);\n this.counter++;\n return widgetId;\n };\n\n this.hostLanguage = hl;\n resolve(recaptcha);\n };\n\n const url = `${RECAPTCHA_BASE}?${querystring({\n onload: _JSLOAD_CALLBACK,\n render: 'explicit',\n hl\n })}`;\n\n jsHelpers._loadJS(url).catch(() => {\n clearTimeout(networkTimeout);\n reject(_createError(auth, AuthErrorCode.INTERNAL_ERROR));\n });\n });\n }\n\n clearedOneInstance(): void {\n this.counter--;\n }\n\n private shouldResolveImmediately(hl: string): boolean {\n // We can resolve immediately if:\n // • grecaptcha is already defined AND (\n // 1. the requested language codes are the same OR\n // 2. there exists already a ReCaptcha on the page\n // 3. the library was already loaded by the app\n // In cases (2) and (3), we _can't_ reload as it would break the recaptchas\n // that are already in the page\n return (\n !!_window().grecaptcha &&\n (hl === this.hostLanguage ||\n this.counter > 0 ||\n this.librarySeparatelyLoaded)\n );\n }\n}\n\nfunction isHostLanguageValid(hl: string): boolean {\n return hl.length <= 6 && /^\\s*[a-zA-Z0-9\\-]*\\s*$/.test(hl);\n}\n\nexport class MockReCaptchaLoaderImpl implements ReCaptchaLoader {\n async load(auth: AuthInternal): Promise {\n return new MockReCaptcha(auth);\n }\n\n clearedOneInstance(): void {}\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Auth, RecaptchaParameters } from '../../model/public_types';\nimport { getRecaptchaParams } from '../../api/authentication/recaptcha';\nimport { _castAuth } from '../../core/auth/auth_impl';\nimport { AuthErrorCode } from '../../core/errors';\nimport { _assert } from '../../core/util/assert';\nimport { _isHttpOrHttps } from '../../core/util/location';\nimport { ApplicationVerifierInternal } from '../../model/application_verifier';\nimport { AuthInternal } from '../../model/auth';\nimport { _window } from '../auth_window';\nimport { _isWorker } from '../util/worker';\nimport { Recaptcha } from './recaptcha';\nimport {\n MockReCaptchaLoaderImpl,\n ReCaptchaLoader,\n ReCaptchaLoaderImpl\n} from './recaptcha_loader';\n\nexport const RECAPTCHA_VERIFIER_TYPE = 'recaptcha';\n\nconst DEFAULT_PARAMS: RecaptchaParameters = {\n theme: 'light',\n type: 'image'\n};\n\ntype TokenCallback = (token: string) => void;\n\n/**\n * An {@link https://www.google.com/recaptcha/ | reCAPTCHA}-based application verifier.\n *\n * @public\n */\nexport class RecaptchaVerifier implements ApplicationVerifierInternal {\n /**\n * The application verifier type.\n *\n * @remarks\n * For a reCAPTCHA verifier, this is 'recaptcha'.\n */\n readonly type = RECAPTCHA_VERIFIER_TYPE;\n private destroyed = false;\n private widgetId: number | null = null;\n private readonly container: HTMLElement;\n private readonly isInvisible: boolean;\n private readonly tokenChangeListeners = new Set();\n private renderPromise: Promise | null = null;\n private readonly auth: AuthInternal;\n\n /** @internal */\n readonly _recaptchaLoader: ReCaptchaLoader;\n private recaptcha: Recaptcha | null = null;\n\n /**\n *\n * @param containerOrId - The reCAPTCHA container parameter.\n *\n * @remarks\n * This has different meaning depending on whether the reCAPTCHA is hidden or visible. For a\n * visible reCAPTCHA the container must be empty. If a string is used, it has to correspond to\n * an element ID. The corresponding element must also must be in the DOM at the time of\n * initialization.\n *\n * @param parameters - The optional reCAPTCHA parameters.\n *\n * @remarks\n * Check the reCAPTCHA docs for a comprehensive list. All parameters are accepted except for\n * the sitekey. Firebase Auth backend provisions a reCAPTCHA for each project and will\n * configure this upon rendering. For an invisible reCAPTCHA, a size key must have the value\n * 'invisible'.\n *\n * @param authExtern - The corresponding Firebase {@link Auth} instance.\n *\n * @remarks\n * If none is provided, the default Firebase {@link Auth} instance is used. A Firebase {@link Auth} instance\n * must be initialized with an API key, otherwise an error will be thrown.\n */\n constructor(\n containerOrId: HTMLElement | string,\n private readonly parameters: RecaptchaParameters = {\n ...DEFAULT_PARAMS\n },\n authExtern: Auth\n ) {\n this.auth = _castAuth(authExtern);\n this.isInvisible = this.parameters.size === 'invisible';\n _assert(\n typeof document !== 'undefined',\n this.auth,\n AuthErrorCode.OPERATION_NOT_SUPPORTED\n );\n const container =\n typeof containerOrId === 'string'\n ? document.getElementById(containerOrId)\n : containerOrId;\n _assert(container, this.auth, AuthErrorCode.ARGUMENT_ERROR);\n\n this.container = container;\n this.parameters.callback = this.makeTokenCallback(this.parameters.callback);\n\n this._recaptchaLoader = this.auth.settings.appVerificationDisabledForTesting\n ? new MockReCaptchaLoaderImpl()\n : new ReCaptchaLoaderImpl();\n\n this.validateStartingState();\n // TODO: Figure out if sdk version is needed\n }\n\n /**\n * Waits for the user to solve the reCAPTCHA and resolves with the reCAPTCHA token.\n *\n * @returns A Promise for the reCAPTCHA token.\n */\n async verify(): Promise {\n this.assertNotDestroyed();\n const id = await this.render();\n const recaptcha = this.getAssertedRecaptcha();\n\n const response = recaptcha.getResponse(id);\n if (response) {\n return response;\n }\n\n return new Promise(resolve => {\n const tokenChange = (token: string): void => {\n if (!token) {\n return; // Ignore token expirations.\n }\n this.tokenChangeListeners.delete(tokenChange);\n resolve(token);\n };\n\n this.tokenChangeListeners.add(tokenChange);\n if (this.isInvisible) {\n recaptcha.execute(id);\n }\n });\n }\n\n /**\n * Renders the reCAPTCHA widget on the page.\n *\n * @returns A Promise that resolves with the reCAPTCHA widget ID.\n */\n render(): Promise {\n try {\n this.assertNotDestroyed();\n } catch (e) {\n // This method returns a promise. Since it's not async (we want to return the\n // _same_ promise if rendering is still occurring), the API surface should\n // reject with the error rather than just throw\n return Promise.reject(e);\n }\n\n if (this.renderPromise) {\n return this.renderPromise;\n }\n\n this.renderPromise = this.makeRenderPromise().catch(e => {\n this.renderPromise = null;\n throw e;\n });\n\n return this.renderPromise;\n }\n\n /** @internal */\n _reset(): void {\n this.assertNotDestroyed();\n if (this.widgetId !== null) {\n this.getAssertedRecaptcha().reset(this.widgetId);\n }\n }\n\n /**\n * Clears the reCAPTCHA widget from the page and destroys the instance.\n */\n clear(): void {\n this.assertNotDestroyed();\n this.destroyed = true;\n this._recaptchaLoader.clearedOneInstance();\n if (!this.isInvisible) {\n this.container.childNodes.forEach(node => {\n this.container.removeChild(node);\n });\n }\n }\n\n private validateStartingState(): void {\n _assert(!this.parameters.sitekey, this.auth, AuthErrorCode.ARGUMENT_ERROR);\n _assert(\n this.isInvisible || !this.container.hasChildNodes(),\n this.auth,\n AuthErrorCode.ARGUMENT_ERROR\n );\n _assert(\n typeof document !== 'undefined',\n this.auth,\n AuthErrorCode.OPERATION_NOT_SUPPORTED\n );\n }\n\n private makeTokenCallback(\n existing: TokenCallback | string | undefined\n ): TokenCallback {\n return token => {\n this.tokenChangeListeners.forEach(listener => listener(token));\n if (typeof existing === 'function') {\n existing(token);\n } else if (typeof existing === 'string') {\n const globalFunc = _window()[existing];\n if (typeof globalFunc === 'function') {\n globalFunc(token);\n }\n }\n };\n }\n\n private assertNotDestroyed(): void {\n _assert(!this.destroyed, this.auth, AuthErrorCode.INTERNAL_ERROR);\n }\n\n private async makeRenderPromise(): Promise {\n await this.init();\n if (!this.widgetId) {\n let container = this.container;\n if (!this.isInvisible) {\n const guaranteedEmpty = document.createElement('div');\n container.appendChild(guaranteedEmpty);\n container = guaranteedEmpty;\n }\n\n this.widgetId = this.getAssertedRecaptcha().render(\n container,\n this.parameters\n );\n }\n\n return this.widgetId;\n }\n\n private async init(): Promise {\n _assert(\n _isHttpOrHttps() && !_isWorker(),\n this.auth,\n AuthErrorCode.INTERNAL_ERROR\n );\n\n await domReady();\n this.recaptcha = await this._recaptchaLoader.load(\n this.auth,\n this.auth.languageCode || undefined\n );\n\n const siteKey = await getRecaptchaParams(this.auth);\n _assert(siteKey, this.auth, AuthErrorCode.INTERNAL_ERROR);\n this.parameters.sitekey = siteKey;\n }\n\n private getAssertedRecaptcha(): Recaptcha {\n _assert(this.recaptcha, this.auth, AuthErrorCode.INTERNAL_ERROR);\n return this.recaptcha;\n }\n}\n\nfunction domReady(): Promise {\n let resolver: (() => void) | null = null;\n return new Promise(resolve => {\n if (document.readyState === 'complete') {\n resolve();\n return;\n }\n\n // Document not ready, wait for load before resolving.\n // Save resolver, so we can remove listener in case it was externally\n // cancelled.\n resolver = () => resolve();\n window.addEventListener('load', resolver);\n }).catch(e => {\n if (resolver) {\n window.removeEventListener('load', resolver);\n }\n\n throw e;\n });\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n ApplicationVerifier,\n Auth,\n ConfirmationResult,\n PhoneInfoOptions,\n User,\n UserCredential\n} from '../../model/public_types';\n\nimport { startEnrollPhoneMfa } from '../../api/account_management/mfa';\nimport { startSignInPhoneMfa } from '../../api/authentication/mfa';\nimport { sendPhoneVerificationCode } from '../../api/authentication/sms';\nimport { ApplicationVerifierInternal } from '../../model/application_verifier';\nimport { PhoneAuthCredential } from '../../core/credentials/phone';\nimport { AuthErrorCode } from '../../core/errors';\nimport { _assertLinkedStatus, _link } from '../../core/user/link_unlink';\nimport { _assert } from '../../core/util/assert';\nimport { AuthInternal } from '../../model/auth';\nimport {\n linkWithCredential,\n reauthenticateWithCredential,\n signInWithCredential\n} from '../../core/strategies/credential';\nimport {\n MultiFactorSessionImpl,\n MultiFactorSessionType\n} from '../../mfa/mfa_session';\nimport { UserInternal } from '../../model/user';\nimport { RECAPTCHA_VERIFIER_TYPE } from '../recaptcha/recaptcha_verifier';\nimport { _castAuth } from '../../core/auth/auth_impl';\nimport { getModularInstance } from '@firebase/util';\nimport { ProviderId } from '../../model/enums';\n\ninterface OnConfirmationCallback {\n (credential: PhoneAuthCredential): Promise;\n}\n\nclass ConfirmationResultImpl implements ConfirmationResult {\n constructor(\n readonly verificationId: string,\n private readonly onConfirmation: OnConfirmationCallback\n ) {}\n\n confirm(verificationCode: string): Promise {\n const authCredential = PhoneAuthCredential._fromVerification(\n this.verificationId,\n verificationCode\n );\n return this.onConfirmation(authCredential);\n }\n}\n\n/**\n * Asynchronously signs in using a phone number.\n *\n * @remarks\n * This method sends a code via SMS to the given\n * phone number, and returns a {@link ConfirmationResult}. After the user\n * provides the code sent to their phone, call {@link ConfirmationResult.confirm}\n * with the code to sign the user in.\n *\n * For abuse prevention, this method also requires a {@link ApplicationVerifier}.\n * This SDK includes a reCAPTCHA-based implementation, {@link RecaptchaVerifier}.\n * This function can work on other platforms that do not support the\n * {@link RecaptchaVerifier} (like React Native), but you need to use a\n * third-party {@link ApplicationVerifier} implementation.\n *\n * @example\n * ```javascript\n * // 'recaptcha-container' is the ID of an element in the DOM.\n * const applicationVerifier = new firebase.auth.RecaptchaVerifier('recaptcha-container');\n * const confirmationResult = await signInWithPhoneNumber(auth, phoneNumber, applicationVerifier);\n * // Obtain a verificationCode from the user.\n * const credential = await confirmationResult.confirm(verificationCode);\n * ```\n *\n * @param auth - The {@link Auth} instance.\n * @param phoneNumber - The user's phone number in E.164 format (e.g. +16505550101).\n * @param appVerifier - The {@link ApplicationVerifier}.\n *\n * @public\n */\nexport async function signInWithPhoneNumber(\n auth: Auth,\n phoneNumber: string,\n appVerifier: ApplicationVerifier\n): Promise {\n const authInternal = _castAuth(auth);\n const verificationId = await _verifyPhoneNumber(\n authInternal,\n phoneNumber,\n getModularInstance(appVerifier as ApplicationVerifierInternal)\n );\n return new ConfirmationResultImpl(verificationId, cred =>\n signInWithCredential(authInternal, cred)\n );\n}\n\n/**\n * Links the user account with the given phone number.\n *\n * @param user - The user.\n * @param phoneNumber - The user's phone number in E.164 format (e.g. +16505550101).\n * @param appVerifier - The {@link ApplicationVerifier}.\n *\n * @public\n */\nexport async function linkWithPhoneNumber(\n user: User,\n phoneNumber: string,\n appVerifier: ApplicationVerifier\n): Promise {\n const userInternal = getModularInstance(user) as UserInternal;\n await _assertLinkedStatus(false, userInternal, ProviderId.PHONE);\n const verificationId = await _verifyPhoneNumber(\n userInternal.auth,\n phoneNumber,\n getModularInstance(appVerifier as ApplicationVerifierInternal)\n );\n return new ConfirmationResultImpl(verificationId, cred =>\n linkWithCredential(userInternal, cred)\n );\n}\n\n/**\n * Re-authenticates a user using a fresh phone credential.\n *\n * @remarks Use before operations such as {@link updatePassword} that require tokens from recent sign-in attempts.\n *\n * @param user - The user.\n * @param phoneNumber - The user's phone number in E.164 format (e.g. +16505550101).\n * @param appVerifier - The {@link ApplicationVerifier}.\n *\n * @public\n */\nexport async function reauthenticateWithPhoneNumber(\n user: User,\n phoneNumber: string,\n appVerifier: ApplicationVerifier\n): Promise {\n const userInternal = getModularInstance(user) as UserInternal;\n const verificationId = await _verifyPhoneNumber(\n userInternal.auth,\n phoneNumber,\n getModularInstance(appVerifier as ApplicationVerifierInternal)\n );\n return new ConfirmationResultImpl(verificationId, cred =>\n reauthenticateWithCredential(userInternal, cred)\n );\n}\n\n/**\n * Returns a verification ID to be used in conjunction with the SMS code that is sent.\n *\n */\nexport async function _verifyPhoneNumber(\n auth: AuthInternal,\n options: PhoneInfoOptions | string,\n verifier: ApplicationVerifierInternal\n): Promise {\n const recaptchaToken = await verifier.verify();\n\n try {\n _assert(\n typeof recaptchaToken === 'string',\n auth,\n AuthErrorCode.ARGUMENT_ERROR\n );\n _assert(\n verifier.type === RECAPTCHA_VERIFIER_TYPE,\n auth,\n AuthErrorCode.ARGUMENT_ERROR\n );\n\n let phoneInfoOptions: PhoneInfoOptions;\n\n if (typeof options === 'string') {\n phoneInfoOptions = {\n phoneNumber: options\n };\n } else {\n phoneInfoOptions = options;\n }\n\n if ('session' in phoneInfoOptions) {\n const session = phoneInfoOptions.session as MultiFactorSessionImpl;\n\n if ('phoneNumber' in phoneInfoOptions) {\n _assert(\n session.type === MultiFactorSessionType.ENROLL,\n auth,\n AuthErrorCode.INTERNAL_ERROR\n );\n const response = await startEnrollPhoneMfa(auth, {\n idToken: session.credential,\n phoneEnrollmentInfo: {\n phoneNumber: phoneInfoOptions.phoneNumber,\n recaptchaToken\n }\n });\n return response.phoneSessionInfo.sessionInfo;\n } else {\n _assert(\n session.type === MultiFactorSessionType.SIGN_IN,\n auth,\n AuthErrorCode.INTERNAL_ERROR\n );\n const mfaEnrollmentId =\n phoneInfoOptions.multiFactorHint?.uid ||\n phoneInfoOptions.multiFactorUid;\n _assert(mfaEnrollmentId, auth, AuthErrorCode.MISSING_MFA_INFO);\n const response = await startSignInPhoneMfa(auth, {\n mfaPendingCredential: session.credential,\n mfaEnrollmentId,\n phoneSignInInfo: {\n recaptchaToken\n }\n });\n return response.phoneResponseInfo.sessionInfo;\n }\n } else {\n const { sessionInfo } = await sendPhoneVerificationCode(auth, {\n phoneNumber: phoneInfoOptions.phoneNumber,\n recaptchaToken\n });\n return sessionInfo;\n }\n } finally {\n verifier._reset();\n }\n}\n\n/**\n * Updates the user's phone number.\n *\n * @example\n * ```\n * // 'recaptcha-container' is the ID of an element in the DOM.\n * const applicationVerifier = new RecaptchaVerifier('recaptcha-container');\n * const provider = new PhoneAuthProvider(auth);\n * const verificationId = await provider.verifyPhoneNumber('+16505550101', applicationVerifier);\n * // Obtain the verificationCode from the user.\n * const phoneCredential = PhoneAuthProvider.credential(verificationId, verificationCode);\n * await updatePhoneNumber(user, phoneCredential);\n * ```\n *\n * @param user - The user.\n * @param credential - A credential authenticating the new phone number.\n *\n * @public\n */\nexport async function updatePhoneNumber(\n user: User,\n credential: PhoneAuthCredential\n): Promise {\n await _link(getModularInstance(user) as UserInternal, credential);\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n Auth,\n PhoneInfoOptions,\n ApplicationVerifier,\n UserCredential\n} from '../../model/public_types';\n\nimport { SignInWithPhoneNumberResponse } from '../../api/authentication/sms';\nimport { ApplicationVerifierInternal as ApplicationVerifierInternal } from '../../model/application_verifier';\nimport { AuthInternal as AuthInternal } from '../../model/auth';\nimport { UserCredentialInternal as UserCredentialInternal } from '../../model/user';\nimport { PhoneAuthCredential } from '../../core/credentials/phone';\nimport { _verifyPhoneNumber } from '../strategies/phone';\nimport { _castAuth } from '../../core/auth/auth_impl';\nimport { AuthCredential } from '../../core';\nimport { FirebaseError, getModularInstance } from '@firebase/util';\nimport { TaggedWithTokenResponse } from '../../model/id_token';\nimport { ProviderId, SignInMethod } from '../../model/enums';\n\n/**\n * Provider for generating an {@link PhoneAuthCredential}.\n *\n * @example\n * ```javascript\n * // 'recaptcha-container' is the ID of an element in the DOM.\n * const applicationVerifier = new RecaptchaVerifier('recaptcha-container');\n * const provider = new PhoneAuthProvider(auth);\n * const verificationId = await provider.verifyPhoneNumber('+16505550101', applicationVerifier);\n * // Obtain the verificationCode from the user.\n * const phoneCredential = PhoneAuthProvider.credential(verificationId, verificationCode);\n * const userCredential = await signInWithCredential(auth, phoneCredential);\n * ```\n *\n * @public\n */\nexport class PhoneAuthProvider {\n /** Always set to {@link ProviderId}.PHONE. */\n static readonly PROVIDER_ID: 'phone' = ProviderId.PHONE;\n /** Always set to {@link SignInMethod}.PHONE. */\n static readonly PHONE_SIGN_IN_METHOD: 'phone' = SignInMethod.PHONE;\n\n /** Always set to {@link ProviderId}.PHONE. */\n readonly providerId = PhoneAuthProvider.PROVIDER_ID;\n private readonly auth: AuthInternal;\n\n /**\n * @param auth - The Firebase {@link Auth} instance in which sign-ins should occur.\n *\n */\n constructor(auth: Auth) {\n this.auth = _castAuth(auth);\n }\n\n /**\n *\n * Starts a phone number authentication flow by sending a verification code to the given phone\n * number.\n *\n * @example\n * ```javascript\n * const provider = new PhoneAuthProvider(auth);\n * const verificationId = await provider.verifyPhoneNumber(phoneNumber, applicationVerifier);\n * // Obtain verificationCode from the user.\n * const authCredential = PhoneAuthProvider.credential(verificationId, verificationCode);\n * const userCredential = await signInWithCredential(auth, authCredential);\n * ```\n *\n * @example\n * An alternative flow is provided using the `signInWithPhoneNumber` method.\n * ```javascript\n * const confirmationResult = signInWithPhoneNumber(auth, phoneNumber, applicationVerifier);\n * // Obtain verificationCode from the user.\n * const userCredential = confirmationResult.confirm(verificationCode);\n * ```\n *\n * @param phoneInfoOptions - The user's {@link PhoneInfoOptions}. The phone number should be in\n * E.164 format (e.g. +16505550101).\n * @param applicationVerifier - For abuse prevention, this method also requires a\n * {@link ApplicationVerifier}. This SDK includes a reCAPTCHA-based implementation,\n * {@link RecaptchaVerifier}.\n *\n * @returns A Promise for a verification ID that can be passed to\n * {@link PhoneAuthProvider.credential} to identify this flow..\n */\n verifyPhoneNumber(\n phoneOptions: PhoneInfoOptions | string,\n applicationVerifier: ApplicationVerifier\n ): Promise {\n return _verifyPhoneNumber(\n this.auth,\n phoneOptions,\n getModularInstance(applicationVerifier as ApplicationVerifierInternal)\n );\n }\n\n /**\n * Creates a phone auth credential, given the verification ID from\n * {@link PhoneAuthProvider.verifyPhoneNumber} and the code that was sent to the user's\n * mobile device.\n *\n * @example\n * ```javascript\n * const provider = new PhoneAuthProvider(auth);\n * const verificationId = provider.verifyPhoneNumber(phoneNumber, applicationVerifier);\n * // Obtain verificationCode from the user.\n * const authCredential = PhoneAuthProvider.credential(verificationId, verificationCode);\n * const userCredential = signInWithCredential(auth, authCredential);\n * ```\n *\n * @example\n * An alternative flow is provided using the `signInWithPhoneNumber` method.\n * ```javascript\n * const confirmationResult = await signInWithPhoneNumber(auth, phoneNumber, applicationVerifier);\n * // Obtain verificationCode from the user.\n * const userCredential = await confirmationResult.confirm(verificationCode);\n * ```\n *\n * @param verificationId - The verification ID returned from {@link PhoneAuthProvider.verifyPhoneNumber}.\n * @param verificationCode - The verification code sent to the user's mobile device.\n *\n * @returns The auth provider credential.\n */\n static credential(\n verificationId: string,\n verificationCode: string\n ): PhoneAuthCredential {\n return PhoneAuthCredential._fromVerification(\n verificationId,\n verificationCode\n );\n }\n\n /**\n * Generates an {@link AuthCredential} from a {@link UserCredential}.\n * @param userCredential - The user credential.\n */\n static credentialFromResult(\n userCredential: UserCredential\n ): AuthCredential | null {\n const credential = userCredential as UserCredentialInternal;\n return PhoneAuthProvider.credentialFromTaggedObject(credential);\n }\n\n /**\n * Returns an {@link AuthCredential} when passed an error.\n *\n * @remarks\n *\n * This method works for errors like\n * `auth/account-exists-with-different-credentials`. This is useful for\n * recovering when attempting to set a user's phone number but the number\n * in question is already tied to another account. For example, the following\n * code tries to update the current user's phone number, and if that\n * fails, links the user with the account associated with that number:\n *\n * ```js\n * const provider = new PhoneAuthProvider(auth);\n * const verificationId = await provider.verifyPhoneNumber(number, verifier);\n * try {\n * const code = ''; // Prompt the user for the verification code\n * await updatePhoneNumber(\n * auth.currentUser,\n * PhoneAuthProvider.credential(verificationId, code));\n * } catch (e) {\n * if (e.code === 'auth/account-exists-with-different-credential') {\n * const cred = PhoneAuthProvider.credentialFromError(e);\n * await linkWithCredential(auth.currentUser, cred);\n * }\n * }\n *\n * // At this point, auth.currentUser.phoneNumber === number.\n * ```\n *\n * @param error - The error to generate a credential from.\n */\n static credentialFromError(error: FirebaseError): AuthCredential | null {\n return PhoneAuthProvider.credentialFromTaggedObject(\n (error.customData || {}) as TaggedWithTokenResponse\n );\n }\n\n private static credentialFromTaggedObject({\n _tokenResponse: tokenResponse\n }: TaggedWithTokenResponse): AuthCredential | null {\n if (!tokenResponse) {\n return null;\n }\n const { phoneNumber, temporaryProof } =\n tokenResponse as SignInWithPhoneNumberResponse;\n if (phoneNumber && temporaryProof) {\n return PhoneAuthCredential._fromTokenResponse(\n phoneNumber,\n temporaryProof\n );\n }\n return null;\n }\n}\n","/**\n * @license\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { PopupRedirectResolver } from '../../model/public_types';\nimport { AuthInternal } from '../../model/auth';\nimport { PopupRedirectResolverInternal } from '../../model/popup_redirect';\nimport { AuthErrorCode } from '../errors';\nimport { _assert } from './assert';\nimport { _getInstance } from './instantiator';\n\n/**\n * Chooses a popup/redirect resolver to use. This prefers the override (which\n * is directly passed in), and falls back to the property set on the auth\n * object. If neither are available, this function errors w/ an argument error.\n */\nexport function _withDefaultResolver(\n auth: AuthInternal,\n resolverOverride: PopupRedirectResolver | undefined\n): PopupRedirectResolverInternal {\n if (resolverOverride) {\n return _getInstance(resolverOverride);\n }\n\n _assert(auth._popupRedirectResolver, auth, AuthErrorCode.ARGUMENT_ERROR);\n\n return auth._popupRedirectResolver;\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n signInWithIdp,\n SignInWithIdpRequest\n} from '../../api/authentication/idp';\nimport { PhoneOrOauthTokenResponse } from '../../api/authentication/mfa';\nimport { AuthInternal } from '../../model/auth';\nimport { IdTokenResponse } from '../../model/id_token';\nimport { UserInternal, UserCredentialInternal } from '../../model/user';\nimport { AuthCredential } from '../credentials';\nimport { _link as _linkUser } from '../user/link_unlink';\nimport { _reauthenticate } from '../user/reauthenticate';\nimport { _assert } from '../util/assert';\nimport { _signInWithCredential } from './credential';\nimport { AuthErrorCode } from '../errors';\nimport { ProviderId } from '../../model/enums';\n\nexport interface IdpTaskParams {\n auth: AuthInternal;\n requestUri: string;\n sessionId?: string;\n tenantId?: string;\n postBody?: string;\n pendingToken?: string;\n user?: UserInternal;\n bypassAuthState?: boolean;\n}\n\nexport type IdpTask = (\n params: IdpTaskParams\n) => Promise;\n\nclass IdpCredential extends AuthCredential {\n constructor(readonly params: IdpTaskParams) {\n super(ProviderId.CUSTOM, ProviderId.CUSTOM);\n }\n\n _getIdTokenResponse(auth: AuthInternal): Promise {\n return signInWithIdp(auth, this._buildIdpRequest());\n }\n\n _linkToIdToken(\n auth: AuthInternal,\n idToken: string\n ): Promise {\n return signInWithIdp(auth, this._buildIdpRequest(idToken));\n }\n\n _getReauthenticationResolver(auth: AuthInternal): Promise {\n return signInWithIdp(auth, this._buildIdpRequest());\n }\n\n private _buildIdpRequest(idToken?: string): SignInWithIdpRequest {\n const request: SignInWithIdpRequest = {\n requestUri: this.params.requestUri,\n sessionId: this.params.sessionId,\n postBody: this.params.postBody,\n tenantId: this.params.tenantId,\n pendingToken: this.params.pendingToken,\n returnSecureToken: true,\n returnIdpCredential: true\n };\n\n if (idToken) {\n request.idToken = idToken;\n }\n\n return request;\n }\n}\n\nexport function _signIn(\n params: IdpTaskParams\n): Promise {\n return _signInWithCredential(\n params.auth,\n new IdpCredential(params),\n params.bypassAuthState\n ) as Promise;\n}\n\nexport function _reauth(\n params: IdpTaskParams\n): Promise {\n const { auth, user } = params;\n _assert(user, auth, AuthErrorCode.INTERNAL_ERROR);\n return _reauthenticate(\n user,\n new IdpCredential(params),\n params.bypassAuthState\n );\n}\n\nexport async function _link(\n params: IdpTaskParams\n): Promise {\n const { auth, user } = params;\n _assert(user, auth, AuthErrorCode.INTERNAL_ERROR);\n return _linkUser(user, new IdpCredential(params), params.bypassAuthState);\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FirebaseError } from '@firebase/util';\n\nimport {\n AuthEvent,\n AuthEventConsumer,\n AuthEventType,\n EventManager,\n PopupRedirectResolverInternal\n} from '../../model/popup_redirect';\nimport { UserInternal, UserCredentialInternal } from '../../model/user';\nimport { AuthErrorCode } from '../errors';\nimport { debugAssert, _fail } from '../util/assert';\nimport {\n _link,\n _reauth,\n _signIn,\n IdpTask,\n IdpTaskParams\n} from '../strategies/idp';\nimport { AuthInternal } from '../../model/auth';\n\ninterface PendingPromise {\n resolve: (cred: UserCredentialInternal | null) => void;\n reject: (error: Error) => void;\n}\n\n/**\n * Popup event manager. Handles the popup's entire lifecycle; listens to auth\n * events\n */\nexport abstract class AbstractPopupRedirectOperation\n implements AuthEventConsumer {\n private pendingPromise: PendingPromise | null = null;\n private eventManager: EventManager | null = null;\n readonly filter: AuthEventType[];\n\n abstract eventId: string | null;\n\n constructor(\n protected readonly auth: AuthInternal,\n filter: AuthEventType | AuthEventType[],\n protected readonly resolver: PopupRedirectResolverInternal,\n protected user?: UserInternal,\n protected readonly bypassAuthState = false\n ) {\n this.filter = Array.isArray(filter) ? filter : [filter];\n }\n\n abstract onExecution(): Promise;\n\n execute(): Promise {\n return new Promise(\n async (resolve, reject) => {\n this.pendingPromise = { resolve, reject };\n\n try {\n this.eventManager = await this.resolver._initialize(this.auth);\n await this.onExecution();\n this.eventManager.registerConsumer(this);\n } catch (e) {\n this.reject(e);\n }\n }\n );\n }\n\n async onAuthEvent(event: AuthEvent): Promise {\n const { urlResponse, sessionId, postBody, tenantId, error, type } = event;\n if (error) {\n this.reject(error);\n return;\n }\n\n const params: IdpTaskParams = {\n auth: this.auth,\n requestUri: urlResponse!,\n sessionId: sessionId!,\n tenantId: tenantId || undefined,\n postBody: postBody || undefined,\n user: this.user,\n bypassAuthState: this.bypassAuthState\n };\n\n try {\n this.resolve(await this.getIdpTask(type)(params));\n } catch (e) {\n this.reject(e);\n }\n }\n\n onError(error: FirebaseError): void {\n this.reject(error);\n }\n\n private getIdpTask(type: AuthEventType): IdpTask {\n switch (type) {\n case AuthEventType.SIGN_IN_VIA_POPUP:\n case AuthEventType.SIGN_IN_VIA_REDIRECT:\n return _signIn;\n case AuthEventType.LINK_VIA_POPUP:\n case AuthEventType.LINK_VIA_REDIRECT:\n return _link;\n case AuthEventType.REAUTH_VIA_POPUP:\n case AuthEventType.REAUTH_VIA_REDIRECT:\n return _reauth;\n default:\n _fail(this.auth, AuthErrorCode.INTERNAL_ERROR);\n }\n }\n\n protected resolve(cred: UserCredentialInternal | null): void {\n debugAssert(this.pendingPromise, 'Pending promise was never set');\n this.pendingPromise.resolve(cred);\n this.unregisterAndCleanUp();\n }\n\n protected reject(error: Error): void {\n debugAssert(this.pendingPromise, 'Pending promise was never set');\n this.pendingPromise.reject(error);\n this.unregisterAndCleanUp();\n }\n\n private unregisterAndCleanUp(): void {\n if (this.eventManager) {\n this.eventManager.unregisterConsumer(this);\n }\n\n this.pendingPromise = null;\n this.cleanUp();\n }\n\n abstract cleanUp(): void;\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n Auth,\n AuthProvider,\n PopupRedirectResolver,\n User,\n UserCredential\n} from '../../model/public_types';\n\nimport { _castAuth } from '../../core/auth/auth_impl';\nimport { AuthErrorCode } from '../../core/errors';\nimport { _assert, debugAssert, _createError, _assertInstanceOf } from '../../core/util/assert';\nimport { Delay } from '../../core/util/delay';\nimport { _generateEventId } from '../../core/util/event_id';\nimport { AuthInternal } from '../../model/auth';\nimport {\n AuthEventType,\n PopupRedirectResolverInternal\n} from '../../model/popup_redirect';\nimport { UserInternal } from '../../model/user';\nimport { _withDefaultResolver } from '../../core/util/resolver';\nimport { AuthPopup } from '../util/popup';\nimport { AbstractPopupRedirectOperation } from '../../core/strategies/abstract_popup_redirect_operation';\nimport { FederatedAuthProvider } from '../../core/providers/federated';\nimport { getModularInstance } from '@firebase/util';\n\n/*\n * The event timeout is the same on mobile and desktop, no need for Delay.\n */\nexport const enum _Timeout {\n AUTH_EVENT = 2000\n}\nexport const _POLL_WINDOW_CLOSE_TIMEOUT = new Delay(2000, 10000);\n\n/**\n * Authenticates a Firebase client using a popup-based OAuth authentication flow.\n *\n * @remarks\n * If succeeds, returns the signed in user along with the provider's credential. If sign in was\n * unsuccessful, returns an error object containing additional information about the error.\n *\n * @example\n * ```javascript\n * // Sign in using a popup.\n * const provider = new FacebookAuthProvider();\n * const result = await signInWithPopup(auth, provider);\n *\n * // The signed-in user info.\n * const user = result.user;\n * // This gives you a Facebook Access Token.\n * const credential = provider.credentialFromResult(auth, result);\n * const token = credential.accessToken;\n * ```\n *\n * @param auth - The {@link Auth} instance.\n * @param provider - The provider to authenticate. The provider has to be an {@link OAuthProvider}.\n * Non-OAuth providers like {@link EmailAuthProvider} will throw an error.\n * @param resolver - An instance of {@link PopupRedirectResolver}, optional\n * if already supplied to {@link initializeAuth} or provided by {@link getAuth}.\n *\n *\n * @public\n */\nexport async function signInWithPopup(\n auth: Auth,\n provider: AuthProvider,\n resolver?: PopupRedirectResolver\n): Promise {\n const authInternal = _castAuth(auth);\n _assertInstanceOf(auth, provider, FederatedAuthProvider);\n const resolverInternal = _withDefaultResolver(authInternal, resolver);\n const action = new PopupOperation(\n authInternal,\n AuthEventType.SIGN_IN_VIA_POPUP,\n provider,\n resolverInternal\n );\n return action.executeNotNull();\n}\n\n/**\n * Reauthenticates the current user with the specified {@link OAuthProvider} using a pop-up based\n * OAuth flow.\n *\n * @remarks\n * If the reauthentication is successful, the returned result will contain the user and the\n * provider's credential.\n *\n * @example\n * ```javascript\n * // Sign in using a popup.\n * const provider = new FacebookAuthProvider();\n * const result = await signInWithPopup(auth, provider);\n * // Reauthenticate using a popup.\n * await reauthenticateWithPopup(result.user, provider);\n * ```\n *\n * @param user - The user.\n * @param provider - The provider to authenticate. The provider has to be an {@link OAuthProvider}.\n * Non-OAuth providers like {@link EmailAuthProvider} will throw an error.\n * @param resolver - An instance of {@link PopupRedirectResolver}, optional\n * if already supplied to {@link initializeAuth} or provided by {@link getAuth}.\n *\n * @public\n */\nexport async function reauthenticateWithPopup(\n user: User,\n provider: AuthProvider,\n resolver?: PopupRedirectResolver\n): Promise {\n const userInternal = getModularInstance(user) as UserInternal;\n _assertInstanceOf(userInternal.auth, provider, FederatedAuthProvider);\n const resolverInternal = _withDefaultResolver(userInternal.auth, resolver);\n const action = new PopupOperation(\n userInternal.auth,\n AuthEventType.REAUTH_VIA_POPUP,\n provider,\n resolverInternal,\n userInternal\n );\n return action.executeNotNull();\n}\n\n/**\n * Links the authenticated provider to the user account using a pop-up based OAuth flow.\n *\n * @remarks\n * If the linking is successful, the returned result will contain the user and the provider's credential.\n *\n *\n * @example\n * ```javascript\n * // Sign in using some other provider.\n * const result = await signInWithEmailAndPassword(auth, email, password);\n * // Link using a popup.\n * const provider = new FacebookAuthProvider();\n * await linkWithPopup(result.user, provider);\n * ```\n *\n * @param user - The user.\n * @param provider - The provider to authenticate. The provider has to be an {@link OAuthProvider}.\n * Non-OAuth providers like {@link EmailAuthProvider} will throw an error.\n * @param resolver - An instance of {@link PopupRedirectResolver}, optional\n * if already supplied to {@link initializeAuth} or provided by {@link getAuth}.\n *\n * @public\n */\nexport async function linkWithPopup(\n user: User,\n provider: AuthProvider,\n resolver?: PopupRedirectResolver\n): Promise {\n const userInternal = getModularInstance(user) as UserInternal;\n _assertInstanceOf(userInternal.auth, provider, FederatedAuthProvider);\n const resolverInternal = _withDefaultResolver(userInternal.auth, resolver);\n\n const action = new PopupOperation(\n userInternal.auth,\n AuthEventType.LINK_VIA_POPUP,\n provider,\n resolverInternal,\n userInternal\n );\n return action.executeNotNull();\n}\n\n/**\n * Popup event manager. Handles the popup's entire lifecycle; listens to auth\n * events\n *\n */\nclass PopupOperation extends AbstractPopupRedirectOperation {\n // Only one popup is ever shown at once. The lifecycle of the current popup\n // can be managed / cancelled by the constructor.\n private static currentPopupAction: PopupOperation | null = null;\n private authWindow: AuthPopup | null = null;\n private pollId: number | null = null;\n\n constructor(\n auth: AuthInternal,\n filter: AuthEventType,\n private readonly provider: AuthProvider,\n resolver: PopupRedirectResolverInternal,\n user?: UserInternal\n ) {\n super(auth, filter, resolver, user);\n if (PopupOperation.currentPopupAction) {\n PopupOperation.currentPopupAction.cancel();\n }\n\n PopupOperation.currentPopupAction = this;\n }\n\n async executeNotNull(): Promise {\n const result = await this.execute();\n _assert(result, this.auth, AuthErrorCode.INTERNAL_ERROR);\n return result;\n }\n\n async onExecution(): Promise {\n debugAssert(\n this.filter.length === 1,\n 'Popup operations only handle one event'\n );\n const eventId = _generateEventId();\n this.authWindow = await this.resolver._openPopup(\n this.auth,\n this.provider,\n this.filter[0], // There's always one, see constructor\n eventId\n );\n this.authWindow.associatedEvent = eventId;\n\n // Check for web storage support and origin validation _after_ the popup is\n // loaded. These operations are slow (~1 second or so) Rather than\n // waiting on them before opening the window, optimistically open the popup\n // and check for storage support at the same time. If storage support is\n // not available, this will cause the whole thing to reject properly. It\n // will also close the popup, but since the promise has already rejected,\n // the popup closed by user poll will reject into the void.\n this.resolver._originValidation(this.auth).catch(e => {\n this.reject(e);\n });\n\n this.resolver._isIframeWebStorageSupported(this.auth, isSupported => {\n if (!isSupported) {\n this.reject(\n _createError(this.auth, AuthErrorCode.WEB_STORAGE_UNSUPPORTED)\n );\n }\n });\n\n // Handle user closure. Notice this does *not* use await\n this.pollUserCancellation();\n }\n\n get eventId(): string | null {\n return this.authWindow?.associatedEvent || null;\n }\n\n cancel(): void {\n this.reject(_createError(this.auth, AuthErrorCode.EXPIRED_POPUP_REQUEST));\n }\n\n cleanUp(): void {\n if (this.authWindow) {\n this.authWindow.close();\n }\n\n if (this.pollId) {\n window.clearTimeout(this.pollId);\n }\n\n this.authWindow = null;\n this.pollId = null;\n PopupOperation.currentPopupAction = null;\n }\n\n private pollUserCancellation(): void {\n const poll = (): void => {\n if (this.authWindow?.window?.closed) {\n // Make sure that there is sufficient time for whatever action to\n // complete. The window could have closed but the sign in network\n // call could still be in flight.\n this.pollId = window.setTimeout(() => {\n this.pollId = null;\n this.reject(\n _createError(this.auth, AuthErrorCode.POPUP_CLOSED_BY_USER)\n );\n }, _Timeout.AUTH_EVENT);\n return;\n }\n\n this.pollId = window.setTimeout(poll, _POLL_WINDOW_CLOSE_TIMEOUT.get());\n };\n\n poll();\n }\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AuthInternal } from '../../model/auth';\nimport {\n AuthEvent,\n AuthEventType,\n PopupRedirectResolverInternal\n} from '../../model/popup_redirect';\nimport { UserCredentialInternal } from '../../model/user';\nimport { PersistenceInternal } from '../persistence';\nimport { _persistenceKeyName } from '../persistence/persistence_user_manager';\nimport { _getInstance } from '../util/instantiator';\nimport { AbstractPopupRedirectOperation } from './abstract_popup_redirect_operation';\n\nconst PENDING_REDIRECT_KEY = 'pendingRedirect';\n\n// We only get one redirect outcome for any one auth, so just store it\n// in here.\nconst redirectOutcomeMap: Map<\n string,\n () => Promise\n> = new Map();\n\nexport class RedirectAction extends AbstractPopupRedirectOperation {\n eventId = null;\n\n constructor(\n auth: AuthInternal,\n resolver: PopupRedirectResolverInternal,\n bypassAuthState = false\n ) {\n super(\n auth,\n [\n AuthEventType.SIGN_IN_VIA_REDIRECT,\n AuthEventType.LINK_VIA_REDIRECT,\n AuthEventType.REAUTH_VIA_REDIRECT,\n AuthEventType.UNKNOWN\n ],\n resolver,\n undefined,\n bypassAuthState\n );\n }\n\n /**\n * Override the execute function; if we already have a redirect result, then\n * just return it.\n */\n async execute(): Promise {\n let readyOutcome = redirectOutcomeMap.get(this.auth._key());\n if (!readyOutcome) {\n try {\n const hasPendingRedirect = await _getAndClearPendingRedirectStatus(\n this.resolver,\n this.auth\n );\n const result = hasPendingRedirect ? await super.execute() : null;\n readyOutcome = () => Promise.resolve(result);\n } catch (e) {\n readyOutcome = () => Promise.reject(e);\n }\n\n redirectOutcomeMap.set(this.auth._key(), readyOutcome);\n }\n\n // If we're not bypassing auth state, the ready outcome should be set to\n // null.\n if (!this.bypassAuthState) {\n redirectOutcomeMap.set(this.auth._key(), () => Promise.resolve(null));\n }\n\n return readyOutcome();\n }\n\n async onAuthEvent(event: AuthEvent): Promise {\n if (event.type === AuthEventType.SIGN_IN_VIA_REDIRECT) {\n return super.onAuthEvent(event);\n } else if (event.type === AuthEventType.UNKNOWN) {\n // This is a sentinel value indicating there's no pending redirect\n this.resolve(null);\n return;\n }\n\n if (event.eventId) {\n const user = await this.auth._redirectUserForId(event.eventId);\n if (user) {\n this.user = user;\n return super.onAuthEvent(event);\n } else {\n this.resolve(null);\n }\n }\n }\n\n async onExecution(): Promise {}\n\n cleanUp(): void {}\n}\n\nexport async function _getAndClearPendingRedirectStatus(\n resolver: PopupRedirectResolverInternal,\n auth: AuthInternal\n): Promise {\n const key = pendingRedirectKey(auth);\n const persistence = resolverPersistence(resolver);\n if (!(await persistence._isAvailable())) {\n return false;\n }\n const hasPendingRedirect =\n (await persistence._get(key)) === 'true';\n await persistence._remove(key);\n return hasPendingRedirect;\n}\n\nexport async function _setPendingRedirectStatus(\n resolver: PopupRedirectResolverInternal,\n auth: AuthInternal\n): Promise {\n return resolverPersistence(resolver)._set(pendingRedirectKey(auth), 'true');\n}\n\nexport function _clearRedirectOutcomes(): void {\n redirectOutcomeMap.clear();\n}\n\nexport function _overrideRedirectResult(auth: AuthInternal, result: () => Promise): void {\n redirectOutcomeMap.set(auth._key(), result);\n}\n\nfunction resolverPersistence(\n resolver: PopupRedirectResolverInternal\n): PersistenceInternal {\n return _getInstance(resolver._redirectPersistence);\n}\n\nfunction pendingRedirectKey(auth: AuthInternal): string {\n return _persistenceKeyName(\n PENDING_REDIRECT_KEY,\n auth.config.apiKey,\n auth.name\n );\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n Auth,\n AuthProvider,\n PopupRedirectResolver,\n User,\n UserCredential\n} from '../../model/public_types';\n\nimport { _castAuth } from '../../core/auth/auth_impl';\nimport { _assertLinkedStatus } from '../../core/user/link_unlink';\nimport { _assertInstanceOf } from '../../core/util/assert';\nimport { _generateEventId } from '../../core/util/event_id';\nimport { AuthEventType } from '../../model/popup_redirect';\nimport { UserInternal } from '../../model/user';\nimport { _withDefaultResolver } from '../../core/util/resolver';\nimport {\n RedirectAction,\n _setPendingRedirectStatus\n} from '../../core/strategies/redirect';\nimport { FederatedAuthProvider } from '../../core/providers/federated';\nimport { getModularInstance } from '@firebase/util';\n\n/**\n * Authenticates a Firebase client using a full-page redirect flow.\n *\n * @remarks\n * To handle the results and errors for this operation, refer to {@link getRedirectResult}.\n *\n * @example\n * ```javascript\n * // Sign in using a redirect.\n * const provider = new FacebookAuthProvider();\n * // You can add additional scopes to the provider:\n * provider.addScope('user_birthday');\n * // Start a sign in process for an unauthenticated user.\n * await signInWithRedirect(auth, provider);\n * // This will trigger a full page redirect away from your app\n *\n * // After returning from the redirect when your app initializes you can obtain the result\n * const result = await getRedirectResult(auth);\n * if (result) {\n * // This is the signed-in user\n * const user = result.user;\n * // This gives you a Facebook Access Token.\n * const credential = provider.credentialFromResult(auth, result);\n * const token = credential.accessToken;\n * }\n * // As this API can be used for sign-in, linking and reauthentication,\n * // check the operationType to determine what triggered this redirect\n * // operation.\n * const operationType = result.operationType;\n * ```\n *\n * @param auth - The {@link Auth} instance.\n * @param provider - The provider to authenticate. The provider has to be an {@link OAuthProvider}.\n * Non-OAuth providers like {@link EmailAuthProvider} will throw an error.\n * @param resolver - An instance of {@link PopupRedirectResolver}, optional\n * if already supplied to {@link initializeAuth} or provided by {@link getAuth}.\n *\n * @public\n */\nexport function signInWithRedirect(\n auth: Auth,\n provider: AuthProvider,\n resolver?: PopupRedirectResolver\n): Promise {\n return _signInWithRedirect(auth, provider, resolver) as Promise;\n}\n\nexport async function _signInWithRedirect(\n auth: Auth,\n provider: AuthProvider,\n resolver?: PopupRedirectResolver\n): Promise {\n const authInternal = _castAuth(auth);\n _assertInstanceOf(auth, provider, FederatedAuthProvider);\n const resolverInternal = _withDefaultResolver(authInternal, resolver);\n await _setPendingRedirectStatus(resolverInternal, authInternal);\n\n return resolverInternal._openRedirect(\n authInternal,\n provider,\n AuthEventType.SIGN_IN_VIA_REDIRECT\n );\n}\n\n/**\n * Reauthenticates the current user with the specified {@link OAuthProvider} using a full-page redirect flow.\n *\n * @example\n * ```javascript\n * // Sign in using a redirect.\n * const provider = new FacebookAuthProvider();\n * const result = await signInWithRedirect(auth, provider);\n * // This will trigger a full page redirect away from your app\n *\n * // After returning from the redirect when your app initializes you can obtain the result\n * const result = await getRedirectResult(auth);\n * // Link using a redirect.\n * await linkWithRedirect(result.user, provider);\n * // This will again trigger a full page redirect away from your app\n *\n * // After returning from the redirect when your app initializes you can obtain the result\n * const result = await getRedirectResult(auth);\n * ```\n *\n * @param user - The user.\n * @param provider - The provider to authenticate. The provider has to be an {@link OAuthProvider}.\n * Non-OAuth providers like {@link EmailAuthProvider} will throw an error.\n * @param resolver - An instance of {@link PopupRedirectResolver}, optional\n * if already supplied to {@link initializeAuth} or provided by {@link getAuth}.\n *\n * @public\n */\nexport function reauthenticateWithRedirect(\n user: User,\n provider: AuthProvider,\n resolver?: PopupRedirectResolver\n): Promise {\n return _reauthenticateWithRedirect(\n user,\n provider,\n resolver\n ) as Promise;\n}\nexport async function _reauthenticateWithRedirect(\n user: User,\n provider: AuthProvider,\n resolver?: PopupRedirectResolver\n): Promise {\n const userInternal = getModularInstance(user) as UserInternal;\n _assertInstanceOf(userInternal.auth, provider, FederatedAuthProvider);\n // Allow the resolver to error before persisting the redirect user\n const resolverInternal = _withDefaultResolver(userInternal.auth, resolver);\n await _setPendingRedirectStatus(resolverInternal, userInternal.auth);\n\n const eventId = await prepareUserForRedirect(userInternal);\n return resolverInternal._openRedirect(\n userInternal.auth,\n provider,\n AuthEventType.REAUTH_VIA_REDIRECT,\n eventId\n );\n}\n\n/**\n * Links the {@link OAuthProvider} to the user account using a full-page redirect flow.\n *\n * @example\n * ```javascript\n * // Sign in using some other provider.\n * const result = await signInWithEmailAndPassword(auth, email, password);\n * // Link using a redirect.\n * const provider = new FacebookAuthProvider();\n * await linkWithRedirect(result.user, provider);\n * // This will trigger a full page redirect away from your app\n *\n * // After returning from the redirect when your app initializes you can obtain the result\n * const result = await getRedirectResult(auth);\n * ```\n *\n * @param user - The user.\n * @param provider - The provider to authenticate. The provider has to be an {@link OAuthProvider}.\n * Non-OAuth providers like {@link EmailAuthProvider} will throw an error.\n * @param resolver - An instance of {@link PopupRedirectResolver}, optional\n * if already supplied to {@link initializeAuth} or provided by {@link getAuth}.\n *\n *\n * @public\n */\nexport function linkWithRedirect(\n user: User,\n provider: AuthProvider,\n resolver?: PopupRedirectResolver\n): Promise {\n return _linkWithRedirect(user, provider, resolver) as Promise;\n}\nexport async function _linkWithRedirect(\n user: User,\n provider: AuthProvider,\n resolver?: PopupRedirectResolver\n): Promise {\n const userInternal = getModularInstance(user) as UserInternal;\n _assertInstanceOf(userInternal.auth, provider, FederatedAuthProvider);\n // Allow the resolver to error before persisting the redirect user\n const resolverInternal = _withDefaultResolver(userInternal.auth, resolver);\n await _assertLinkedStatus(false, userInternal, provider.providerId);\n await _setPendingRedirectStatus(resolverInternal, userInternal.auth);\n\n const eventId = await prepareUserForRedirect(userInternal);\n return resolverInternal._openRedirect(\n userInternal.auth,\n provider,\n AuthEventType.LINK_VIA_REDIRECT,\n eventId\n );\n}\n\n/**\n * Returns a {@link UserCredential} from the redirect-based sign-in flow.\n *\n * @remarks\n * If sign-in succeeded, returns the signed in user. If sign-in was unsuccessful, fails with an\n * error. If no redirect operation was called, returns a {@link UserCredential}\n * with a null `user`.\n *\n * @example\n * ```javascript\n * // Sign in using a redirect.\n * const provider = new FacebookAuthProvider();\n * // You can add additional scopes to the provider:\n * provider.addScope('user_birthday');\n * // Start a sign in process for an unauthenticated user.\n * await signInWithRedirect(auth, provider);\n * // This will trigger a full page redirect away from your app\n *\n * // After returning from the redirect when your app initializes you can obtain the result\n * const result = await getRedirectResult(auth);\n * if (result) {\n * // This is the signed-in user\n * const user = result.user;\n * // This gives you a Facebook Access Token.\n * const credential = provider.credentialFromResult(auth, result);\n * const token = credential.accessToken;\n * }\n * // As this API can be used for sign-in, linking and reauthentication,\n * // check the operationType to determine what triggered this redirect\n * // operation.\n * const operationType = result.operationType;\n * ```\n *\n * @param auth - The {@link Auth} instance.\n * @param resolver - An instance of {@link PopupRedirectResolver}, optional\n * if already supplied to {@link initializeAuth} or provided by {@link getAuth}.\n *\n * @public\n */\nexport async function getRedirectResult(\n auth: Auth,\n resolver?: PopupRedirectResolver\n): Promise {\n await _castAuth(auth)._initializationPromise;\n return _getRedirectResult(auth, resolver, false);\n}\n\nexport async function _getRedirectResult(\n auth: Auth,\n resolverExtern?: PopupRedirectResolver,\n bypassAuthState = false\n): Promise {\n const authInternal = _castAuth(auth);\n const resolver = _withDefaultResolver(authInternal, resolverExtern);\n const action = new RedirectAction(authInternal, resolver, bypassAuthState);\n const result = await action.execute();\n\n if (result && !bypassAuthState) {\n delete result.user._redirectEventId;\n await authInternal._persistUserIfCurrent(result.user as UserInternal);\n await authInternal._setRedirectUser(null, resolverExtern);\n }\n\n return result;\n}\n\nasync function prepareUserForRedirect(user: UserInternal): Promise {\n const eventId = _generateEventId(`${user.uid}:::`);\n user._redirectEventId = eventId;\n await user.auth._setRedirectUser(user);\n await user.auth._persistUserIfCurrent(user);\n return eventId;\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n AuthEvent,\n AuthEventConsumer,\n AuthEventType,\n EventManager\n} from '../../model/popup_redirect';\nimport { AuthErrorCode } from '../errors';\nimport { AuthInternal } from '../../model/auth';\nimport { _createError } from '../util/assert';\n\n// The amount of time to store the UIDs of seen events; this is\n// set to 10 min by default\nconst EVENT_DUPLICATION_CACHE_DURATION_MS = 10 * 60 * 1000;\n\nexport class AuthEventManager implements EventManager {\n private readonly cachedEventUids: Set = new Set();\n private readonly consumers: Set = new Set();\n protected queuedRedirectEvent: AuthEvent | null = null;\n protected hasHandledPotentialRedirect = false;\n private lastProcessedEventTime = Date.now();\n\n constructor(private readonly auth: AuthInternal) {}\n\n registerConsumer(authEventConsumer: AuthEventConsumer): void {\n this.consumers.add(authEventConsumer);\n\n if (\n this.queuedRedirectEvent &&\n this.isEventForConsumer(this.queuedRedirectEvent, authEventConsumer)\n ) {\n this.sendToConsumer(this.queuedRedirectEvent, authEventConsumer);\n this.saveEventToCache(this.queuedRedirectEvent);\n this.queuedRedirectEvent = null;\n }\n }\n\n unregisterConsumer(authEventConsumer: AuthEventConsumer): void {\n this.consumers.delete(authEventConsumer);\n }\n\n onEvent(event: AuthEvent): boolean {\n // Check if the event has already been handled\n if (this.hasEventBeenHandled(event)) {\n return false;\n }\n\n let handled = false;\n this.consumers.forEach(consumer => {\n if (this.isEventForConsumer(event, consumer)) {\n handled = true;\n this.sendToConsumer(event, consumer);\n this.saveEventToCache(event);\n }\n });\n\n if (this.hasHandledPotentialRedirect || !isRedirectEvent(event)) {\n // If we've already seen a redirect before, or this is a popup event,\n // bail now\n return handled;\n }\n\n this.hasHandledPotentialRedirect = true;\n\n // If the redirect wasn't handled, hang on to it\n if (!handled) {\n this.queuedRedirectEvent = event;\n handled = true;\n }\n\n return handled;\n }\n\n private sendToConsumer(event: AuthEvent, consumer: AuthEventConsumer): void {\n if (event.error && !isNullRedirectEvent(event)) {\n const code =\n (event.error.code?.split('auth/')[1] as AuthErrorCode) ||\n AuthErrorCode.INTERNAL_ERROR;\n consumer.onError(_createError(this.auth, code));\n } else {\n consumer.onAuthEvent(event);\n }\n }\n\n private isEventForConsumer(\n event: AuthEvent,\n consumer: AuthEventConsumer\n ): boolean {\n const eventIdMatches =\n consumer.eventId === null ||\n (!!event.eventId && event.eventId === consumer.eventId);\n return consumer.filter.includes(event.type) && eventIdMatches;\n }\n\n private hasEventBeenHandled(event: AuthEvent): boolean {\n if (\n Date.now() - this.lastProcessedEventTime >=\n EVENT_DUPLICATION_CACHE_DURATION_MS\n ) {\n this.cachedEventUids.clear();\n }\n\n return this.cachedEventUids.has(eventUid(event));\n }\n\n private saveEventToCache(event: AuthEvent): void {\n this.cachedEventUids.add(eventUid(event));\n this.lastProcessedEventTime = Date.now();\n }\n}\n\nfunction eventUid(e: AuthEvent): string {\n return [e.type, e.eventId, e.sessionId, e.tenantId].filter(v => v).join('-');\n}\n\nfunction isNullRedirectEvent({ type, error }: AuthEvent): boolean {\n return (\n type === AuthEventType.UNKNOWN &&\n error?.code === `auth/${AuthErrorCode.NO_AUTH_EVENT}`\n );\n}\n\nfunction isRedirectEvent(event: AuthEvent): boolean {\n switch (event.type) {\n case AuthEventType.SIGN_IN_VIA_REDIRECT:\n case AuthEventType.LINK_VIA_REDIRECT:\n case AuthEventType.REAUTH_VIA_REDIRECT:\n return true;\n case AuthEventType.UNKNOWN:\n return isNullRedirectEvent(event);\n default:\n return false;\n }\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { _performApiRequest, Endpoint, HttpMethod } from '../index';\nimport { Auth } from '../../model/public_types';\n\nexport interface GetProjectConfigRequest {\n androidPackageName?: string;\n iosBundleId?: string;\n}\n\nexport interface GetProjectConfigResponse {\n authorizedDomains: string[];\n}\n\nexport async function _getProjectConfig(\n auth: Auth,\n request: GetProjectConfigRequest = {}\n): Promise {\n return _performApiRequest(\n auth,\n HttpMethod.GET,\n Endpoint.GET_PROJECT_CONFIG,\n request\n );\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { _getProjectConfig } from '../../api/project_config/get_project_config';\nimport { AuthInternal } from '../../model/auth';\nimport { AuthErrorCode } from '../errors';\nimport { _fail } from './assert';\nimport { _getCurrentUrl } from './location';\n\nconst IP_ADDRESS_REGEX = /^\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$/;\nconst HTTP_REGEX = /^https?/;\n\nexport async function _validateOrigin(auth: AuthInternal): Promise {\n // Skip origin validation if we are in an emulated environment\n if (auth.config.emulator) {\n return;\n }\n\n const { authorizedDomains } = await _getProjectConfig(auth);\n\n for (const domain of authorizedDomains) {\n try {\n if (matchDomain(domain)) {\n return;\n }\n } catch {\n // Do nothing if there's a URL error; just continue searching\n }\n }\n\n // In the old SDK, this error also provides helpful messages.\n _fail(auth, AuthErrorCode.INVALID_ORIGIN);\n}\n\nfunction matchDomain(expected: string): boolean {\n const currentUrl = _getCurrentUrl();\n const { protocol, hostname } = new URL(currentUrl);\n if (expected.startsWith('chrome-extension://')) {\n const ceUrl = new URL(expected);\n\n if (ceUrl.hostname === '' && hostname === '') {\n // For some reason we're not parsing chrome URLs properly\n return (\n protocol === 'chrome-extension:' &&\n expected.replace('chrome-extension://', '') ===\n currentUrl.replace('chrome-extension://', '')\n );\n }\n\n return protocol === 'chrome-extension:' && ceUrl.hostname === hostname;\n }\n\n if (!HTTP_REGEX.test(protocol)) {\n return false;\n }\n\n if (IP_ADDRESS_REGEX.test(expected)) {\n // The domain has to be exactly equal to the pattern, as an IP domain will\n // only contain the IP, no extra character.\n return hostname === expected;\n }\n\n // Dots in pattern should be escaped.\n const escapedDomainPattern = expected.replace(/\\./g, '\\\\.');\n // Non ip address domains.\n // domain.com = *.domain.com OR domain.com\n const re = new RegExp(\n '^(.+\\\\.' + escapedDomainPattern + '|' + escapedDomainPattern + ')$',\n 'i'\n );\n return re.test(hostname);\n}\n","/**\n * @license\n * Copyright 2020 Google LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AuthErrorCode } from '../../core/errors';\nimport { _createError } from '../../core/util/assert';\nimport { Delay } from '../../core/util/delay';\nimport { AuthInternal } from '../../model/auth';\nimport { _window } from '../auth_window';\nimport * as js from '../load_js';\n\nconst NETWORK_TIMEOUT = new Delay(30000, 60000);\n\n/**\n * Reset unlaoded GApi modules. If gapi.load fails due to a network error,\n * it will stop working after a retrial. This is a hack to fix this issue.\n */\nfunction resetUnloadedGapiModules(): void {\n // Clear last failed gapi.load state to force next gapi.load to first\n // load the failed gapi.iframes module.\n // Get gapix.beacon context.\n const beacon = _window().___jsl;\n // Get current hint.\n if (beacon?.H) {\n // Get gapi hint.\n for (const hint of Object.keys(beacon.H)) {\n // Requested modules.\n beacon.H[hint].r = beacon.H[hint].r || [];\n // Loaded modules.\n beacon.H[hint].L = beacon.H[hint].L || [];\n // Set requested modules to a copy of the loaded modules.\n beacon.H[hint].r = [...beacon.H[hint].L];\n // Clear pending callbacks.\n if (beacon.CP) {\n for (let i = 0; i < beacon.CP.length; i++) {\n // Remove all failed pending callbacks.\n beacon.CP[i] = null;\n }\n }\n }\n }\n}\n\nfunction loadGapi(auth: AuthInternal): Promise {\n return new Promise((resolve, reject) => {\n // Function to run when gapi.load is ready.\n function loadGapiIframe(): void {\n // The developer may have tried to previously run gapi.load and failed.\n // Run this to fix that.\n resetUnloadedGapiModules();\n gapi.load('gapi.iframes', {\n callback: () => {\n resolve(gapi.iframes.getContext());\n },\n ontimeout: () => {\n // The above reset may be sufficient, but having this reset after\n // failure ensures that if the developer calls gapi.load after the\n // connection is re-established and before another attempt to embed\n // the iframe, it would work and would not be broken because of our\n // failed attempt.\n // Timeout when gapi.iframes.Iframe not loaded.\n resetUnloadedGapiModules();\n reject(_createError(auth, AuthErrorCode.NETWORK_REQUEST_FAILED));\n },\n timeout: NETWORK_TIMEOUT.get()\n });\n }\n\n if (_window().gapi?.iframes?.Iframe) {\n // If gapi.iframes.Iframe available, resolve.\n resolve(gapi.iframes.getContext());\n } else if (!!_window().gapi?.load) {\n // Gapi loader ready, load gapi.iframes.\n loadGapiIframe();\n } else {\n // Create a new iframe callback when this is called so as not to overwrite\n // any previous defined callback. This happens if this method is called\n // multiple times in parallel and could result in the later callback\n // overwriting the previous one. This would end up with a iframe\n // timeout.\n const cbName = js._generateCallbackName('iframefcb');\n // GApi loader not available, dynamically load platform.js.\n _window()[cbName] = () => {\n // GApi loader should be ready.\n if (!!gapi.load) {\n loadGapiIframe();\n } else {\n // Gapi loader failed, throw error.\n reject(_createError(auth, AuthErrorCode.NETWORK_REQUEST_FAILED));\n }\n };\n // Load GApi loader.\n return js._loadJS(`https://apis.google.com/js/api.js?onload=${cbName}`).catch(e => reject(e));\n }\n }).catch(error => {\n // Reset cached promise to allow for retrial.\n cachedGApiLoader = null;\n throw error;\n });\n}\n\nlet cachedGApiLoader: Promise | null = null;\nexport function _loadGapi(auth: AuthInternal): Promise {\n cachedGApiLoader = cachedGApiLoader || loadGapi(auth);\n return cachedGApiLoader;\n}\n\nexport function _resetLoader(): void {\n cachedGApiLoader = null;\n}\n","/**\n * @license\n * Copyright 2020 Google LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { SDK_VERSION } from '@firebase/app';\nimport { querystring } from '@firebase/util';\nimport { DefaultConfig } from '../../../internal';\n\nimport { AuthErrorCode } from '../../core/errors';\nimport { _assert, _createError } from '../../core/util/assert';\nimport { Delay } from '../../core/util/delay';\nimport { _emulatorUrl } from '../../core/util/emulator';\nimport { AuthInternal } from '../../model/auth';\nimport { _window } from '../auth_window';\nimport * as gapiLoader from './gapi';\n\nconst PING_TIMEOUT = new Delay(5000, 15000);\nconst IFRAME_PATH = '__/auth/iframe';\nconst EMULATED_IFRAME_PATH = 'emulator/auth/iframe';\n\nconst IFRAME_ATTRIBUTES = {\n style: {\n position: 'absolute',\n top: '-100px',\n width: '1px',\n height: '1px'\n },\n 'aria-hidden': 'true',\n tabindex: '-1'\n};\n\n// Map from apiHost to endpoint ID for passing into iframe. In current SDK, apiHost can be set to\n// anything (not from a list of endpoints with IDs as in legacy), so this is the closest we can get.\nconst EID_FROM_APIHOST = new Map([\n [DefaultConfig.API_HOST, 'p'], // production\n ['staging-identitytoolkit.sandbox.googleapis.com', 's'], // staging\n ['test-identitytoolkit.sandbox.googleapis.com', 't'] // test\n]);\n\nfunction getIframeUrl(auth: AuthInternal): string {\n const config = auth.config;\n _assert(config.authDomain, auth, AuthErrorCode.MISSING_AUTH_DOMAIN);\n const url = config.emulator\n ? _emulatorUrl(config, EMULATED_IFRAME_PATH)\n : `https://${auth.config.authDomain}/${IFRAME_PATH}`;\n\n const params: Record = {\n apiKey: config.apiKey,\n appName: auth.name,\n v: SDK_VERSION\n };\n const eid = EID_FROM_APIHOST.get(auth.config.apiHost);\n if (eid) {\n params.eid = eid;\n }\n const frameworks = auth._getFrameworks();\n if (frameworks.length) {\n params.fw = frameworks.join(',');\n }\n return `${url}?${querystring(params).slice(1)}`;\n}\n\nexport async function _openIframe(\n auth: AuthInternal\n): Promise {\n const context = await gapiLoader._loadGapi(auth);\n const gapi = _window().gapi;\n _assert(gapi, auth, AuthErrorCode.INTERNAL_ERROR);\n return context.open(\n {\n where: document.body,\n url: getIframeUrl(auth),\n messageHandlersFilter: gapi.iframes.CROSS_ORIGIN_IFRAMES_FILTER,\n attributes: IFRAME_ATTRIBUTES,\n dontclear: true\n },\n (iframe: gapi.iframes.Iframe) =>\n new Promise(async (resolve, reject) => {\n await iframe.restyle({\n // Prevent iframe from closing on mouse out.\n setHideOnLeave: false\n });\n\n const networkError = _createError(\n auth,\n AuthErrorCode.NETWORK_REQUEST_FAILED\n );\n // Confirm iframe is correctly loaded.\n // To fallback on failure, set a timeout.\n const networkErrorTimer = _window().setTimeout(() => {\n reject(networkError);\n }, PING_TIMEOUT.get());\n // Clear timer and resolve pending iframe ready promise.\n function clearTimerAndResolve(): void {\n _window().clearTimeout(networkErrorTimer);\n resolve(iframe);\n }\n // This returns an IThenable. However the reject part does not call\n // when the iframe is not loaded.\n iframe.ping(clearTimerAndResolve).then(clearTimerAndResolve, () => {\n reject(networkError);\n });\n })\n );\n}\n","/**\n * @license\n * Copyright 2020 Google LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getUA } from '@firebase/util';\n\nimport { AuthErrorCode } from '../../core/errors';\nimport { _assert } from '../../core/util/assert';\nimport {\n _isChromeIOS,\n _isFirefox,\n _isIOSStandalone\n} from '../../core/util/browser';\nimport { AuthInternal } from '../../model/auth';\n\nconst BASE_POPUP_OPTIONS = {\n location: 'yes',\n resizable: 'yes',\n statusbar: 'yes',\n toolbar: 'no'\n};\n\nconst DEFAULT_WIDTH = 500;\nconst DEFAULT_HEIGHT = 600;\nconst TARGET_BLANK = '_blank';\n\nconst FIREFOX_EMPTY_URL = 'http://localhost';\n\nexport class AuthPopup {\n associatedEvent: string | null = null;\n\n constructor(readonly window: Window | null) {}\n\n close(): void {\n if (this.window) {\n try {\n this.window.close();\n } catch (e) {}\n }\n }\n}\n\nexport function _open(\n auth: AuthInternal,\n url?: string,\n name?: string,\n width = DEFAULT_WIDTH,\n height = DEFAULT_HEIGHT\n): AuthPopup {\n const top = Math.max((window.screen.availHeight - height) / 2, 0).toString();\n const left = Math.max((window.screen.availWidth - width) / 2, 0).toString();\n let target = '';\n\n const options: { [key: string]: string } = {\n ...BASE_POPUP_OPTIONS,\n width: width.toString(),\n height: height.toString(),\n top,\n left\n };\n\n // Chrome iOS 7 and 8 is returning an undefined popup win when target is\n // specified, even though the popup is not necessarily blocked.\n const ua = getUA().toLowerCase();\n\n if (name) {\n target = _isChromeIOS(ua) ? TARGET_BLANK : name;\n }\n\n if (_isFirefox(ua)) {\n // Firefox complains when invalid URLs are popped out. Hacky way to bypass.\n url = url || FIREFOX_EMPTY_URL;\n // Firefox disables by default scrolling on popup windows, which can create\n // issues when the user has many Google accounts, for instance.\n options.scrollbars = 'yes';\n }\n\n const optionsString = Object.entries(options).reduce(\n (accum, [key, value]) => `${accum}${key}=${value},`,\n ''\n );\n\n if (_isIOSStandalone(ua) && target !== '_self') {\n openAsNewWindowIOS(url || '', target);\n return new AuthPopup(null);\n }\n\n // about:blank getting sanitized causing browsers like IE/Edge to display\n // brief error message before redirecting to handler.\n const newWin = window.open(url || '', target, optionsString);\n _assert(newWin, auth, AuthErrorCode.POPUP_BLOCKED);\n\n // Flaky on IE edge, encapsulate with a try and catch.\n try {\n newWin.focus();\n } catch (e) {}\n\n return new AuthPopup(newWin);\n}\n\nfunction openAsNewWindowIOS(url: string, target: string): void {\n const el = document.createElement('a');\n el.href = url;\n el.target = target;\n const click = document.createEvent('MouseEvent');\n click.initMouseEvent(\n 'click',\n true,\n true,\n window,\n 1,\n 0,\n 0,\n 0,\n 0,\n false,\n false,\n false,\n false,\n 1,\n null\n );\n el.dispatchEvent(click);\n}\n","/**\n * @license\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { SDK_VERSION } from '@firebase/app';\nimport { AuthProvider } from '../../model/public_types';\nimport { ApiKey, AppName, AuthInternal } from '../../model/auth';\nimport { AuthEventType } from '../../model/popup_redirect';\nimport { AuthErrorCode } from '../errors';\nimport { _assert } from './assert';\nimport { isEmpty, querystring } from '@firebase/util';\nimport { _emulatorUrl } from './emulator';\nimport { FederatedAuthProvider } from '../providers/federated';\nimport { BaseOAuthProvider } from '../providers/oauth';\n\n/**\n * URL for Authentication widget which will initiate the OAuth handshake\n *\n * @internal\n */\nconst WIDGET_PATH = '__/auth/handler';\n\n/**\n * URL for emulated environment\n *\n * @internal\n */\nconst EMULATOR_WIDGET_PATH = 'emulator/auth/handler';\n\n// eslint-disable-next-line @typescript-eslint/consistent-type-definitions\ntype WidgetParams = {\n apiKey: ApiKey;\n appName: AppName;\n authType: AuthEventType;\n redirectUrl?: string;\n v: string;\n providerId?: string;\n scopes?: string;\n customParameters?: string;\n eventId?: string;\n tid?: string;\n} & { [key: string]: string | undefined };\n\nexport function _getRedirectUrl(\n auth: AuthInternal,\n provider: AuthProvider,\n authType: AuthEventType,\n redirectUrl?: string,\n eventId?: string,\n additionalParams?: Record\n): string {\n _assert(auth.config.authDomain, auth, AuthErrorCode.MISSING_AUTH_DOMAIN);\n _assert(auth.config.apiKey, auth, AuthErrorCode.INVALID_API_KEY);\n\n const params: WidgetParams = {\n apiKey: auth.config.apiKey,\n appName: auth.name,\n authType,\n redirectUrl,\n v: SDK_VERSION,\n eventId\n };\n\n if (provider instanceof FederatedAuthProvider) {\n provider.setDefaultLanguage(auth.languageCode);\n params.providerId = provider.providerId || '';\n if (!isEmpty(provider.getCustomParameters())) {\n params.customParameters = JSON.stringify(provider.getCustomParameters());\n }\n\n // TODO set additionalParams from the provider as well?\n for (const [key, value] of Object.entries(additionalParams || {})) {\n params[key] = value;\n }\n }\n\n if (provider instanceof BaseOAuthProvider) {\n const scopes = provider.getScopes().filter(scope => scope !== '');\n if (scopes.length > 0) {\n params.scopes = scopes.join(',');\n }\n }\n\n if (auth.tenantId) {\n params.tid = auth.tenantId;\n }\n\n // TODO: maybe set eid as endipointId\n // TODO: maybe set fw as Frameworks.join(\",\")\n\n const paramsDict = params as Record;\n for (const key of Object.keys(paramsDict)) {\n if (paramsDict[key] === undefined) {\n delete paramsDict[key];\n }\n }\n return `${getHandlerBase(auth)}?${querystring(paramsDict).slice(1)}`;\n}\n\nfunction getHandlerBase({ config }: AuthInternal): string {\n if (!config.emulator) {\n return `https://${config.authDomain}/${WIDGET_PATH}`;\n }\n\n return _emulatorUrl(config, EMULATOR_WIDGET_PATH);\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AuthProvider, PopupRedirectResolver } from '../model/public_types';\n\nimport { AuthEventManager } from '../core/auth/auth_event_manager';\nimport { AuthErrorCode } from '../core/errors';\nimport { _assert, debugAssert, _fail } from '../core/util/assert';\nimport { _generateEventId } from '../core/util/event_id';\nimport { _getCurrentUrl } from '../core/util/location';\nimport { _validateOrigin } from '../core/util/validate_origin';\nimport { AuthInternal } from '../model/auth';\nimport {\n AuthEventType,\n EventManager,\n GapiAuthEvent,\n GapiOutcome,\n PopupRedirectResolverInternal\n} from '../model/popup_redirect';\nimport { _setWindowLocation } from './auth_window';\nimport { _openIframe } from './iframe/iframe';\nimport { browserSessionPersistence } from './persistence/session_storage';\nimport { _open, AuthPopup } from './util/popup';\nimport { _getRedirectResult } from './strategies/redirect';\nimport { _getRedirectUrl } from '../core/util/handler';\nimport { _isIOS, _isMobileBrowser, _isSafari } from '../core/util/browser';\nimport { _overrideRedirectResult } from '../core/strategies/redirect';\n\n/**\n * The special web storage event\n *\n */\nconst WEB_STORAGE_SUPPORT_KEY = 'webStorageSupport';\n\ninterface WebStorageSupportMessage extends gapi.iframes.Message {\n [index: number]: Record;\n}\n\ninterface ManagerOrPromise {\n manager?: EventManager;\n promise?: Promise;\n}\n\nclass BrowserPopupRedirectResolver implements PopupRedirectResolverInternal {\n private readonly eventManagers: Record = {};\n private readonly iframes: Record = {};\n private readonly originValidationPromises: Record> = {};\n\n readonly _redirectPersistence = browserSessionPersistence;\n\n // Wrapping in async even though we don't await anywhere in order\n // to make sure errors are raised as promise rejections\n async _openPopup(\n auth: AuthInternal,\n provider: AuthProvider,\n authType: AuthEventType,\n eventId?: string\n ): Promise {\n debugAssert(\n this.eventManagers[auth._key()]?.manager,\n '_initialize() not called before _openPopup()'\n );\n\n const url = _getRedirectUrl(\n auth,\n provider,\n authType,\n _getCurrentUrl(),\n eventId\n );\n return _open(auth, url, _generateEventId());\n }\n\n async _openRedirect(\n auth: AuthInternal,\n provider: AuthProvider,\n authType: AuthEventType,\n eventId?: string\n ): Promise {\n await this._originValidation(auth);\n _setWindowLocation(\n _getRedirectUrl(auth, provider, authType, _getCurrentUrl(), eventId)\n );\n return new Promise(() => {});\n }\n\n _initialize(auth: AuthInternal): Promise {\n const key = auth._key();\n if (this.eventManagers[key]) {\n const { manager, promise } = this.eventManagers[key];\n if (manager) {\n return Promise.resolve(manager);\n } else {\n debugAssert(promise, 'If manager is not set, promise should be');\n return promise;\n }\n }\n\n const promise = this.initAndGetManager(auth);\n this.eventManagers[key] = { promise };\n\n // If the promise is rejected, the key should be removed so that the\n // operation can be retried later.\n promise.catch(() => {\n delete this.eventManagers[key];\n });\n\n return promise;\n }\n\n private async initAndGetManager(auth: AuthInternal): Promise {\n const iframe = await _openIframe(auth);\n const manager = new AuthEventManager(auth);\n iframe.register(\n 'authEvent',\n (iframeEvent: GapiAuthEvent | null) => {\n _assert(iframeEvent?.authEvent, auth, AuthErrorCode.INVALID_AUTH_EVENT);\n // TODO: Consider splitting redirect and popup events earlier on\n\n const handled = manager.onEvent(iframeEvent.authEvent);\n return { status: handled ? GapiOutcome.ACK : GapiOutcome.ERROR };\n },\n gapi.iframes.CROSS_ORIGIN_IFRAMES_FILTER\n );\n\n this.eventManagers[auth._key()] = { manager };\n this.iframes[auth._key()] = iframe;\n return manager;\n }\n\n _isIframeWebStorageSupported(\n auth: AuthInternal,\n cb: (supported: boolean) => unknown\n ): void {\n const iframe = this.iframes[auth._key()];\n iframe.send(\n WEB_STORAGE_SUPPORT_KEY,\n { type: WEB_STORAGE_SUPPORT_KEY },\n result => {\n const isSupported = result?.[0]?.[WEB_STORAGE_SUPPORT_KEY];\n if (isSupported !== undefined) {\n cb(!!isSupported);\n }\n\n _fail(auth, AuthErrorCode.INTERNAL_ERROR);\n },\n gapi.iframes.CROSS_ORIGIN_IFRAMES_FILTER\n );\n }\n\n _originValidation(auth: AuthInternal): Promise {\n const key = auth._key();\n if (!this.originValidationPromises[key]) {\n this.originValidationPromises[key] = _validateOrigin(auth);\n }\n\n return this.originValidationPromises[key];\n }\n\n get _shouldInitProactively(): boolean {\n // Mobile browsers and Safari need to optimistically initialize\n return _isMobileBrowser() || _isSafari() || _isIOS();\n }\n\n _completeRedirectFn = _getRedirectResult;\n\n _overrideRedirectResult = _overrideRedirectResult;\n}\n\n/**\n * An implementation of {@link PopupRedirectResolver} suitable for browser\n * based applications.\n *\n * @public\n */\nexport const browserPopupRedirectResolver: PopupRedirectResolver = BrowserPopupRedirectResolver;\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { FactorId, MultiFactorAssertion } from '../model/public_types';\nimport { debugFail } from '../core/util/assert';\nimport { MultiFactorSessionImpl, MultiFactorSessionType } from './mfa_session';\nimport { FinalizeMfaResponse } from '../api/authentication/mfa';\nimport { AuthInternal } from '../model/auth';\n\nexport abstract class MultiFactorAssertionImpl implements MultiFactorAssertion {\n protected constructor(readonly factorId: FactorId) {}\n\n _process(\n auth: AuthInternal,\n session: MultiFactorSessionImpl,\n displayName?: string | null\n ): Promise {\n switch (session.type) {\n case MultiFactorSessionType.ENROLL:\n return this._finalizeEnroll(auth, session.credential, displayName);\n case MultiFactorSessionType.SIGN_IN:\n return this._finalizeSignIn(auth, session.credential);\n default:\n return debugFail('unexpected MultiFactorSessionType');\n }\n }\n\n abstract _finalizeEnroll(\n auth: AuthInternal,\n idToken: string,\n displayName?: string | null\n ): Promise;\n abstract _finalizeSignIn(\n auth: AuthInternal,\n mfaPendingCredential: string\n ): Promise;\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {\n FactorId,\n PhoneMultiFactorAssertion\n} from '../../../model/public_types';\n\nimport { MultiFactorAssertionImpl } from '../../../mfa/mfa_assertion';\nimport { AuthInternal } from '../../../model/auth';\nimport { finalizeEnrollPhoneMfa } from '../../../api/account_management/mfa';\nimport { PhoneAuthCredential } from '../../../core/credentials/phone';\nimport {\n finalizeSignInPhoneMfa,\n FinalizeMfaResponse\n} from '../../../api/authentication/mfa';\n\n/**\n * {@inheritdoc PhoneMultiFactorAssertion}\n *\n * @public\n */\nexport class PhoneMultiFactorAssertionImpl\n extends MultiFactorAssertionImpl\n implements PhoneMultiFactorAssertion {\n private constructor(private readonly credential: PhoneAuthCredential) {\n super(FactorId.PHONE);\n }\n\n /** @internal */\n static _fromCredential(\n credential: PhoneAuthCredential\n ): PhoneMultiFactorAssertionImpl {\n return new PhoneMultiFactorAssertionImpl(credential);\n }\n\n /** @internal */\n _finalizeEnroll(\n auth: AuthInternal,\n idToken: string,\n displayName?: string | null\n ): Promise {\n return finalizeEnrollPhoneMfa(auth, {\n idToken,\n displayName,\n phoneVerificationInfo: this.credential._makeVerificationRequest()\n });\n }\n\n /** @internal */\n _finalizeSignIn(\n auth: AuthInternal,\n mfaPendingCredential: string\n ): Promise {\n return finalizeSignInPhoneMfa(auth, {\n mfaPendingCredential,\n phoneVerificationInfo: this.credential._makeVerificationRequest()\n });\n }\n}\n\n/**\n * Provider for generating a {@link PhoneMultiFactorAssertion}.\n *\n * @public\n */\nexport class PhoneMultiFactorGenerator {\n private constructor() {}\n\n /**\n * Provides a {@link PhoneMultiFactorAssertion} to confirm ownership of the phone second factor.\n *\n * @param phoneAuthCredential - A credential provided by {@link PhoneAuthProvider.credential}.\n * @returns A {@link PhoneMultiFactorAssertion} which can be used with\n * {@link MultiFactorResolver.resolveSignIn}\n */\n static assertion(credential: PhoneAuthCredential): PhoneMultiFactorAssertion {\n return PhoneMultiFactorAssertionImpl._fromCredential(credential);\n }\n\n /**\n * The identifier of the phone second factor: `phone`.\n */\n static FACTOR_ID = 'phone';\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { _registerComponent, registerVersion } from '@firebase/app';\nimport {\n Component,\n ComponentType,\n InstantiationMode,\n} from '@firebase/component';\n\nimport { name, version } from '../../../package.json';\nimport { AuthErrorCode } from '../errors';\nimport { _assert } from '../util/assert';\nimport { _getClientVersion, ClientPlatform } from '../util/version';\nimport { _castAuth, AuthImpl, DefaultConfig } from './auth_impl';\nimport { AuthInterop } from './firebase_internal';\nimport { ConfigInternal } from '../../model/auth';\nimport { Dependencies } from '../../model/public_types';\nimport { _initializeAuthInstance } from './initialize';\n\nexport const enum _ComponentName {\n AUTH = 'auth',\n AUTH_INTERNAL = 'auth-internal'\n}\n\nfunction getVersionForPlatform(\n clientPlatform: ClientPlatform\n): string | undefined {\n switch (clientPlatform) {\n case ClientPlatform.NODE:\n return 'node';\n case ClientPlatform.REACT_NATIVE:\n return 'rn';\n case ClientPlatform.WORKER:\n return 'webworker';\n case ClientPlatform.CORDOVA:\n return 'cordova';\n default:\n return undefined;\n }\n}\n\n/** @internal */\nexport function registerAuth(clientPlatform: ClientPlatform): void {\n _registerComponent(\n new Component(\n _ComponentName.AUTH,\n (container, { options: deps }: { options?: Dependencies }) => {\n const app = container.getProvider('app').getImmediate()!;\n const heartbeatServiceProvider = container.getProvider<'heartbeat'>('heartbeat');\n const { apiKey, authDomain } = app.options;\n return ((app, heartbeatServiceProvider) => {\n _assert(\n apiKey && !apiKey.includes(':'),\n AuthErrorCode.INVALID_API_KEY,\n { appName: app.name }\n );\n // Auth domain is optional if IdP sign in isn't being used\n _assert(!authDomain?.includes(':'), AuthErrorCode.ARGUMENT_ERROR, {\n appName: app.name\n });\n const config: ConfigInternal = {\n apiKey,\n authDomain,\n clientPlatform,\n apiHost: DefaultConfig.API_HOST,\n tokenApiHost: DefaultConfig.TOKEN_API_HOST,\n apiScheme: DefaultConfig.API_SCHEME,\n sdkClientVersion: _getClientVersion(clientPlatform)\n };\n\n const authInstance = new AuthImpl(app, heartbeatServiceProvider, config);\n _initializeAuthInstance(authInstance, deps);\n\n return authInstance;\n })(app, heartbeatServiceProvider);\n },\n ComponentType.PUBLIC\n )\n /**\n * Auth can only be initialized by explicitly calling getAuth() or initializeAuth()\n * For why we do this, See go/firebase-next-auth-init\n */\n .setInstantiationMode(InstantiationMode.EXPLICIT)\n /**\n * Because all firebase products that depend on auth depend on auth-internal directly,\n * we need to initialize auth-internal after auth is initialized to make it available to other firebase products.\n */\n .setInstanceCreatedCallback(\n (container, _instanceIdentifier, _instance) => {\n const authInternalProvider = container.getProvider(\n _ComponentName.AUTH_INTERNAL\n );\n authInternalProvider.initialize();\n }\n )\n );\n\n _registerComponent(\n new Component(\n _ComponentName.AUTH_INTERNAL,\n container => {\n const auth = _castAuth(\n container.getProvider(_ComponentName.AUTH).getImmediate()!\n );\n return (auth => new AuthInterop(auth))(auth);\n },\n ComponentType.PRIVATE\n ).setInstantiationMode(InstantiationMode.EXPLICIT)\n );\n\n registerVersion(name, version, getVersionForPlatform(clientPlatform));\n // BUILD_TARGET will be replaced by values like esm5, esm2017, cjs5, etc during the compilation\n registerVersion(name, version, '__BUILD_TARGET__');\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Unsubscribe } from '@firebase/util';\nimport { FirebaseAuthInternal } from '@firebase/auth-interop-types';\n\nimport { AuthInternal } from '../../model/auth';\nimport { UserInternal } from '../../model/user';\nimport { _assert } from '../util/assert';\nimport { AuthErrorCode } from '../errors';\n\ninterface TokenListener {\n (tok: string | null): unknown;\n}\n\nexport class AuthInterop implements FirebaseAuthInternal {\n private readonly internalListeners: Map<\n TokenListener,\n Unsubscribe\n > = new Map();\n\n constructor(private readonly auth: AuthInternal) {}\n\n getUid(): string | null {\n this.assertAuthConfigured();\n return this.auth.currentUser?.uid || null;\n }\n\n async getToken(\n forceRefresh?: boolean\n ): Promise<{ accessToken: string } | null> {\n this.assertAuthConfigured();\n await this.auth._initializationPromise;\n if (!this.auth.currentUser) {\n return null;\n }\n\n const accessToken = await this.auth.currentUser.getIdToken(forceRefresh);\n return { accessToken };\n }\n\n addAuthTokenListener(listener: TokenListener): void {\n this.assertAuthConfigured();\n if (this.internalListeners.has(listener)) {\n return;\n }\n\n const unsubscribe = this.auth.onIdTokenChanged(user => {\n listener(\n (user as UserInternal | null)?.stsTokenManager.accessToken || null\n );\n });\n this.internalListeners.set(listener, unsubscribe);\n this.updateProactiveRefresh();\n }\n\n removeAuthTokenListener(listener: TokenListener): void {\n this.assertAuthConfigured();\n const unsubscribe = this.internalListeners.get(listener);\n if (!unsubscribe) {\n return;\n }\n\n this.internalListeners.delete(listener);\n unsubscribe();\n this.updateProactiveRefresh();\n }\n\n private assertAuthConfigured(): void {\n _assert(\n this.auth._initializationPromise,\n AuthErrorCode.DEPENDENT_SDK_INIT_BEFORE_AUTH\n );\n }\n\n private updateProactiveRefresh(): void {\n if (this.internalListeners.size > 0) {\n this.auth._startProactiveRefresh();\n } else {\n this.auth._stopProactiveRefresh();\n }\n }\n}\n","/**\n * @license\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FirebaseApp, getApp, _getProvider } from '@firebase/app';\n\nimport { initializeAuth } from '..';\nimport { registerAuth } from '../core/auth/register';\nimport { ClientPlatform } from '../core/util/version';\nimport { browserLocalPersistence } from './persistence/local_storage';\nimport { browserSessionPersistence } from './persistence/session_storage';\nimport { indexedDBLocalPersistence } from './persistence/indexed_db';\nimport { browserPopupRedirectResolver } from './popup_redirect';\nimport { Auth } from '../model/public_types';\n\n/**\n * Returns the Auth instance associated with the provided {@link @firebase/app#FirebaseApp}.\n * If no instance exists, initializes an Auth instance with platform-specific default dependencies.\n *\n * @param app - The Firebase App.\n *\n * @public\n */\nexport function getAuth(app: FirebaseApp = getApp()): Auth {\n const provider = _getProvider(app, 'auth');\n\n if (provider.isInitialized()) {\n return provider.getImmediate();\n }\n\n return initializeAuth(app, {\n popupRedirectResolver: browserPopupRedirectResolver,\n persistence: [\n indexedDBLocalPersistence,\n browserLocalPersistence,\n browserSessionPersistence\n ]\n });\n}\n\nregisterAuth(ClientPlatform.BROWSER);\n","const instanceOfAny = (object, constructors) => constructors.some((c) => object instanceof c);\n\nlet idbProxyableTypes;\nlet cursorAdvanceMethods;\n// This is a function to prevent it throwing up in node environments.\nfunction getIdbProxyableTypes() {\n return (idbProxyableTypes ||\n (idbProxyableTypes = [\n IDBDatabase,\n IDBObjectStore,\n IDBIndex,\n IDBCursor,\n IDBTransaction,\n ]));\n}\n// This is a function to prevent it throwing up in node environments.\nfunction getCursorAdvanceMethods() {\n return (cursorAdvanceMethods ||\n (cursorAdvanceMethods = [\n IDBCursor.prototype.advance,\n IDBCursor.prototype.continue,\n IDBCursor.prototype.continuePrimaryKey,\n ]));\n}\nconst cursorRequestMap = new WeakMap();\nconst transactionDoneMap = new WeakMap();\nconst transactionStoreNamesMap = new WeakMap();\nconst transformCache = new WeakMap();\nconst reverseTransformCache = new WeakMap();\nfunction promisifyRequest(request) {\n const promise = new Promise((resolve, reject) => {\n const unlisten = () => {\n request.removeEventListener('success', success);\n request.removeEventListener('error', error);\n };\n const success = () => {\n resolve(wrap(request.result));\n unlisten();\n };\n const error = () => {\n reject(request.error);\n unlisten();\n };\n request.addEventListener('success', success);\n request.addEventListener('error', error);\n });\n promise\n .then((value) => {\n // Since cursoring reuses the IDBRequest (*sigh*), we cache it for later retrieval\n // (see wrapFunction).\n if (value instanceof IDBCursor) {\n cursorRequestMap.set(value, request);\n }\n // Catching to avoid \"Uncaught Promise exceptions\"\n })\n .catch(() => { });\n // This mapping exists in reverseTransformCache but doesn't doesn't exist in transformCache. This\n // is because we create many promises from a single IDBRequest.\n reverseTransformCache.set(promise, request);\n return promise;\n}\nfunction cacheDonePromiseForTransaction(tx) {\n // Early bail if we've already created a done promise for this transaction.\n if (transactionDoneMap.has(tx))\n return;\n const done = new Promise((resolve, reject) => {\n const unlisten = () => {\n tx.removeEventListener('complete', complete);\n tx.removeEventListener('error', error);\n tx.removeEventListener('abort', error);\n };\n const complete = () => {\n resolve();\n unlisten();\n };\n const error = () => {\n reject(tx.error || new DOMException('AbortError', 'AbortError'));\n unlisten();\n };\n tx.addEventListener('complete', complete);\n tx.addEventListener('error', error);\n tx.addEventListener('abort', error);\n });\n // Cache it for later retrieval.\n transactionDoneMap.set(tx, done);\n}\nlet idbProxyTraps = {\n get(target, prop, receiver) {\n if (target instanceof IDBTransaction) {\n // Special handling for transaction.done.\n if (prop === 'done')\n return transactionDoneMap.get(target);\n // Polyfill for objectStoreNames because of Edge.\n if (prop === 'objectStoreNames') {\n return target.objectStoreNames || transactionStoreNamesMap.get(target);\n }\n // Make tx.store return the only store in the transaction, or undefined if there are many.\n if (prop === 'store') {\n return receiver.objectStoreNames[1]\n ? undefined\n : receiver.objectStore(receiver.objectStoreNames[0]);\n }\n }\n // Else transform whatever we get back.\n return wrap(target[prop]);\n },\n set(target, prop, value) {\n target[prop] = value;\n return true;\n },\n has(target, prop) {\n if (target instanceof IDBTransaction &&\n (prop === 'done' || prop === 'store')) {\n return true;\n }\n return prop in target;\n },\n};\nfunction replaceTraps(callback) {\n idbProxyTraps = callback(idbProxyTraps);\n}\nfunction wrapFunction(func) {\n // Due to expected object equality (which is enforced by the caching in `wrap`), we\n // only create one new func per func.\n // Edge doesn't support objectStoreNames (booo), so we polyfill it here.\n if (func === IDBDatabase.prototype.transaction &&\n !('objectStoreNames' in IDBTransaction.prototype)) {\n return function (storeNames, ...args) {\n const tx = func.call(unwrap(this), storeNames, ...args);\n transactionStoreNamesMap.set(tx, storeNames.sort ? storeNames.sort() : [storeNames]);\n return wrap(tx);\n };\n }\n // Cursor methods are special, as the behaviour is a little more different to standard IDB. In\n // IDB, you advance the cursor and wait for a new 'success' on the IDBRequest that gave you the\n // cursor. It's kinda like a promise that can resolve with many values. That doesn't make sense\n // with real promises, so each advance methods returns a new promise for the cursor object, or\n // undefined if the end of the cursor has been reached.\n if (getCursorAdvanceMethods().includes(func)) {\n return function (...args) {\n // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n // the original object.\n func.apply(unwrap(this), args);\n return wrap(cursorRequestMap.get(this));\n };\n }\n return function (...args) {\n // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n // the original object.\n return wrap(func.apply(unwrap(this), args));\n };\n}\nfunction transformCachableValue(value) {\n if (typeof value === 'function')\n return wrapFunction(value);\n // This doesn't return, it just creates a 'done' promise for the transaction,\n // which is later returned for transaction.done (see idbObjectHandler).\n if (value instanceof IDBTransaction)\n cacheDonePromiseForTransaction(value);\n if (instanceOfAny(value, getIdbProxyableTypes()))\n return new Proxy(value, idbProxyTraps);\n // Return the same value back if we're not going to transform it.\n return value;\n}\nfunction wrap(value) {\n // We sometimes generate multiple promises from a single IDBRequest (eg when cursoring), because\n // IDB is weird and a single IDBRequest can yield many responses, so these can't be cached.\n if (value instanceof IDBRequest)\n return promisifyRequest(value);\n // If we've already transformed this value before, reuse the transformed value.\n // This is faster, but it also provides object equality.\n if (transformCache.has(value))\n return transformCache.get(value);\n const newValue = transformCachableValue(value);\n // Not all types are transformed.\n // These may be primitive types, so they can't be WeakMap keys.\n if (newValue !== value) {\n transformCache.set(value, newValue);\n reverseTransformCache.set(newValue, value);\n }\n return newValue;\n}\nconst unwrap = (value) => reverseTransformCache.get(value);\n\nexport { reverseTransformCache as a, instanceOfAny as i, replaceTraps as r, unwrap as u, wrap as w };\n","import { w as wrap, r as replaceTraps } from './wrap-idb-value.js';\nexport { u as unwrap, w as wrap } from './wrap-idb-value.js';\n\n/**\n * Open a database.\n *\n * @param name Name of the database.\n * @param version Schema version.\n * @param callbacks Additional callbacks.\n */\nfunction openDB(name, version, { blocked, upgrade, blocking, terminated } = {}) {\n const request = indexedDB.open(name, version);\n const openPromise = wrap(request);\n if (upgrade) {\n request.addEventListener('upgradeneeded', (event) => {\n upgrade(wrap(request.result), event.oldVersion, event.newVersion, wrap(request.transaction));\n });\n }\n if (blocked)\n request.addEventListener('blocked', () => blocked());\n openPromise\n .then((db) => {\n if (terminated)\n db.addEventListener('close', () => terminated());\n if (blocking)\n db.addEventListener('versionchange', () => blocking());\n })\n .catch(() => { });\n return openPromise;\n}\n/**\n * Delete a database.\n *\n * @param name Name of the database.\n */\nfunction deleteDB(name, { blocked } = {}) {\n const request = indexedDB.deleteDatabase(name);\n if (blocked)\n request.addEventListener('blocked', () => blocked());\n return wrap(request).then(() => undefined);\n}\n\nconst readMethods = ['get', 'getKey', 'getAll', 'getAllKeys', 'count'];\nconst writeMethods = ['put', 'add', 'delete', 'clear'];\nconst cachedMethods = new Map();\nfunction getMethod(target, prop) {\n if (!(target instanceof IDBDatabase &&\n !(prop in target) &&\n typeof prop === 'string')) {\n return;\n }\n if (cachedMethods.get(prop))\n return cachedMethods.get(prop);\n const targetFuncName = prop.replace(/FromIndex$/, '');\n const useIndex = prop !== targetFuncName;\n const isWrite = writeMethods.includes(targetFuncName);\n if (\n // Bail if the target doesn't exist on the target. Eg, getAll isn't in Edge.\n !(targetFuncName in (useIndex ? IDBIndex : IDBObjectStore).prototype) ||\n !(isWrite || readMethods.includes(targetFuncName))) {\n return;\n }\n const method = async function (storeName, ...args) {\n // isWrite ? 'readwrite' : undefined gzipps better, but fails in Edge :(\n const tx = this.transaction(storeName, isWrite ? 'readwrite' : 'readonly');\n let target = tx.store;\n if (useIndex)\n target = target.index(args.shift());\n // Must reject if op rejects.\n // If it's a write operation, must reject if tx.done rejects.\n // Must reject with op rejection first.\n // Must resolve with op value.\n // Must handle both promises (no unhandled rejections)\n return (await Promise.all([\n target[targetFuncName](...args),\n isWrite && tx.done,\n ]))[0];\n };\n cachedMethods.set(prop, method);\n return method;\n}\nreplaceTraps((oldTraps) => ({\n ...oldTraps,\n get: (target, prop, receiver) => getMethod(target, prop) || oldTraps.get(target, prop, receiver),\n has: (target, prop) => !!getMethod(target, prop) || oldTraps.has(target, prop),\n}));\n\nexport { deleteDB, openDB };\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { version } from '../../package.json';\n\nexport const PENDING_TIMEOUT_MS = 10000;\n\nexport const PACKAGE_VERSION = `w:${version}`;\nexport const INTERNAL_AUTH_VERSION = 'FIS_v2';\n\nexport const INSTALLATIONS_API_URL =\n 'https://firebaseinstallations.googleapis.com/v1';\n\nexport const TOKEN_EXPIRATION_BUFFER = 60 * 60 * 1000; // One hour\n\nexport const SERVICE = 'installations';\nexport const SERVICE_NAME = 'Installations';\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ErrorFactory, FirebaseError } from '@firebase/util';\nimport { SERVICE, SERVICE_NAME } from './constants';\n\nexport const enum ErrorCode {\n MISSING_APP_CONFIG_VALUES = 'missing-app-config-values',\n NOT_REGISTERED = 'not-registered',\n INSTALLATION_NOT_FOUND = 'installation-not-found',\n REQUEST_FAILED = 'request-failed',\n APP_OFFLINE = 'app-offline',\n DELETE_PENDING_REGISTRATION = 'delete-pending-registration'\n}\n\nconst ERROR_DESCRIPTION_MAP: { readonly [key in ErrorCode]: string } = {\n [ErrorCode.MISSING_APP_CONFIG_VALUES]:\n 'Missing App configuration value: \"{$valueName}\"',\n [ErrorCode.NOT_REGISTERED]: 'Firebase Installation is not registered.',\n [ErrorCode.INSTALLATION_NOT_FOUND]: 'Firebase Installation not found.',\n [ErrorCode.REQUEST_FAILED]:\n '{$requestName} request failed with error \"{$serverCode} {$serverStatus}: {$serverMessage}\"',\n [ErrorCode.APP_OFFLINE]: 'Could not process request. Application offline.',\n [ErrorCode.DELETE_PENDING_REGISTRATION]:\n \"Can't delete installation while there is a pending registration request.\"\n};\n\ninterface ErrorParams {\n [ErrorCode.MISSING_APP_CONFIG_VALUES]: {\n valueName: string;\n };\n [ErrorCode.REQUEST_FAILED]: {\n requestName: string;\n [index: string]: string | number; // to make Typescript 3.8 happy\n } & ServerErrorData;\n}\n\nexport const ERROR_FACTORY = new ErrorFactory(\n SERVICE,\n SERVICE_NAME,\n ERROR_DESCRIPTION_MAP\n);\n\nexport interface ServerErrorData {\n serverCode: number;\n serverMessage: string;\n serverStatus: string;\n}\n\nexport type ServerError = FirebaseError & { customData: ServerErrorData };\n\n/** Returns true if error is a FirebaseError that is based on an error from the server. */\nexport function isServerError(error: unknown): error is ServerError {\n return (\n error instanceof FirebaseError &&\n error.code.includes(ErrorCode.REQUEST_FAILED)\n );\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FirebaseError } from '@firebase/util';\nimport { GenerateAuthTokenResponse } from '../interfaces/api-response';\nimport {\n CompletedAuthToken,\n RegisteredInstallationEntry,\n RequestStatus\n} from '../interfaces/installation-entry';\nimport {\n INSTALLATIONS_API_URL,\n INTERNAL_AUTH_VERSION\n} from '../util/constants';\nimport { ERROR_FACTORY, ErrorCode } from '../util/errors';\nimport { AppConfig } from '../interfaces/installation-impl';\n\nexport function getInstallationsEndpoint({ projectId }: AppConfig): string {\n return `${INSTALLATIONS_API_URL}/projects/${projectId}/installations`;\n}\n\nexport function extractAuthTokenInfoFromResponse(\n response: GenerateAuthTokenResponse\n): CompletedAuthToken {\n return {\n token: response.token,\n requestStatus: RequestStatus.COMPLETED,\n expiresIn: getExpiresInFromResponseExpiresIn(response.expiresIn),\n creationTime: Date.now()\n };\n}\n\nexport async function getErrorFromResponse(\n requestName: string,\n response: Response\n): Promise {\n const responseJson: ErrorResponse = await response.json();\n const errorData = responseJson.error;\n return ERROR_FACTORY.create(ErrorCode.REQUEST_FAILED, {\n requestName,\n serverCode: errorData.code,\n serverMessage: errorData.message,\n serverStatus: errorData.status\n });\n}\n\nexport function getHeaders({ apiKey }: AppConfig): Headers {\n return new Headers({\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n 'x-goog-api-key': apiKey\n });\n}\n\nexport function getHeadersWithAuth(\n appConfig: AppConfig,\n { refreshToken }: RegisteredInstallationEntry\n): Headers {\n const headers = getHeaders(appConfig);\n headers.append('Authorization', getAuthorizationHeader(refreshToken));\n return headers;\n}\n\nexport interface ErrorResponse {\n error: {\n code: number;\n message: string;\n status: string;\n };\n}\n\n/**\n * Calls the passed in fetch wrapper and returns the response.\n * If the returned response has a status of 5xx, re-runs the function once and\n * returns the response.\n */\nexport async function retryIfServerError(\n fn: () => Promise\n): Promise {\n const result = await fn();\n\n if (result.status >= 500 && result.status < 600) {\n // Internal Server Error. Retry request.\n return fn();\n }\n\n return result;\n}\n\nfunction getExpiresInFromResponseExpiresIn(responseExpiresIn: string): number {\n // This works because the server will never respond with fractions of a second.\n return Number(responseExpiresIn.replace('s', '000'));\n}\n\nfunction getAuthorizationHeader(refreshToken: string): string {\n return `${INTERNAL_AUTH_VERSION} ${refreshToken}`;\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CreateInstallationResponse } from '../interfaces/api-response';\nimport {\n InProgressInstallationEntry,\n RegisteredInstallationEntry,\n RequestStatus\n} from '../interfaces/installation-entry';\nimport { INTERNAL_AUTH_VERSION, PACKAGE_VERSION } from '../util/constants';\nimport {\n extractAuthTokenInfoFromResponse,\n getErrorFromResponse,\n getHeaders,\n getInstallationsEndpoint,\n retryIfServerError\n} from './common';\nimport { FirebaseInstallationsImpl } from '../interfaces/installation-impl';\n\nexport async function createInstallationRequest(\n { appConfig, heartbeatServiceProvider }: FirebaseInstallationsImpl,\n { fid }: InProgressInstallationEntry\n): Promise {\n const endpoint = getInstallationsEndpoint(appConfig);\n\n const headers = getHeaders(appConfig);\n\n // If heartbeat service exists, add the heartbeat string to the header.\n const heartbeatService = heartbeatServiceProvider.getImmediate({\n optional: true\n });\n if (heartbeatService) {\n const heartbeatsHeader = await heartbeatService.getHeartbeatsHeader();\n if (heartbeatsHeader) {\n headers.append('x-firebase-client', heartbeatsHeader);\n }\n }\n\n const body = {\n fid,\n authVersion: INTERNAL_AUTH_VERSION,\n appId: appConfig.appId,\n sdkVersion: PACKAGE_VERSION\n };\n\n const request: RequestInit = {\n method: 'POST',\n headers,\n body: JSON.stringify(body)\n };\n\n const response = await retryIfServerError(() => fetch(endpoint, request));\n if (response.ok) {\n const responseValue: CreateInstallationResponse = await response.json();\n const registeredInstallationEntry: RegisteredInstallationEntry = {\n fid: responseValue.fid || fid,\n registrationStatus: RequestStatus.COMPLETED,\n refreshToken: responseValue.refreshToken,\n authToken: extractAuthTokenInfoFromResponse(responseValue.authToken)\n };\n return registeredInstallationEntry;\n } else {\n throw await getErrorFromResponse('Create Installation', response);\n }\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** Returns a promise that resolves after given time passes. */\nexport function sleep(ms: number): Promise {\n return new Promise(resolve => {\n setTimeout(resolve, ms);\n });\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { bufferToBase64UrlSafe } from './buffer-to-base64-url-safe';\n\nexport const VALID_FID_PATTERN = /^[cdef][\\w-]{21}$/;\nexport const INVALID_FID = '';\n\n/**\n * Generates a new FID using random values from Web Crypto API.\n * Returns an empty string if FID generation fails for any reason.\n */\nexport function generateFid(): string {\n try {\n // A valid FID has exactly 22 base64 characters, which is 132 bits, or 16.5\n // bytes. our implementation generates a 17 byte array instead.\n const fidByteArray = new Uint8Array(17);\n const crypto =\n self.crypto || (self as unknown as { msCrypto: Crypto }).msCrypto;\n crypto.getRandomValues(fidByteArray);\n\n // Replace the first 4 random bits with the constant FID header of 0b0111.\n fidByteArray[0] = 0b01110000 + (fidByteArray[0] % 0b00010000);\n\n const fid = encode(fidByteArray);\n\n return VALID_FID_PATTERN.test(fid) ? fid : INVALID_FID;\n } catch {\n // FID generation errored\n return INVALID_FID;\n }\n}\n\n/** Converts a FID Uint8Array to a base64 string representation. */\nfunction encode(fidByteArray: Uint8Array): string {\n const b64String = bufferToBase64UrlSafe(fidByteArray);\n\n // Remove the 23rd character that was added because of the extra 4 bits at the\n // end of our 17 byte array, and the '=' padding.\n return b64String.substr(0, 22);\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport function bufferToBase64UrlSafe(array: Uint8Array): string {\n const b64 = btoa(String.fromCharCode(...array));\n return b64.replace(/\\+/g, '-').replace(/\\//g, '_');\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AppConfig } from '../interfaces/installation-impl';\n\n/** Returns a string key that can be used to identify the app. */\nexport function getKey(appConfig: AppConfig): string {\n return `${appConfig.appName}!${appConfig.appId}`;\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getKey } from '../util/get-key';\nimport { AppConfig } from '../interfaces/installation-impl';\nimport { IdChangeCallbackFn } from '../api';\n\nconst fidChangeCallbacks: Map> = new Map();\n\n/**\n * Calls the onIdChange callbacks with the new FID value, and broadcasts the\n * change to other tabs.\n */\nexport function fidChanged(appConfig: AppConfig, fid: string): void {\n const key = getKey(appConfig);\n\n callFidChangeCallbacks(key, fid);\n broadcastFidChange(key, fid);\n}\n\nexport function addCallback(\n appConfig: AppConfig,\n callback: IdChangeCallbackFn\n): void {\n // Open the broadcast channel if it's not already open,\n // to be able to listen to change events from other tabs.\n getBroadcastChannel();\n\n const key = getKey(appConfig);\n\n let callbackSet = fidChangeCallbacks.get(key);\n if (!callbackSet) {\n callbackSet = new Set();\n fidChangeCallbacks.set(key, callbackSet);\n }\n callbackSet.add(callback);\n}\n\nexport function removeCallback(\n appConfig: AppConfig,\n callback: IdChangeCallbackFn\n): void {\n const key = getKey(appConfig);\n\n const callbackSet = fidChangeCallbacks.get(key);\n\n if (!callbackSet) {\n return;\n }\n\n callbackSet.delete(callback);\n if (callbackSet.size === 0) {\n fidChangeCallbacks.delete(key);\n }\n\n // Close broadcast channel if there are no more callbacks.\n closeBroadcastChannel();\n}\n\nfunction callFidChangeCallbacks(key: string, fid: string): void {\n const callbacks = fidChangeCallbacks.get(key);\n if (!callbacks) {\n return;\n }\n\n for (const callback of callbacks) {\n callback(fid);\n }\n}\n\nfunction broadcastFidChange(key: string, fid: string): void {\n const channel = getBroadcastChannel();\n if (channel) {\n channel.postMessage({ key, fid });\n }\n closeBroadcastChannel();\n}\n\nlet broadcastChannel: BroadcastChannel | null = null;\n/** Opens and returns a BroadcastChannel if it is supported by the browser. */\nfunction getBroadcastChannel(): BroadcastChannel | null {\n if (!broadcastChannel && 'BroadcastChannel' in self) {\n broadcastChannel = new BroadcastChannel('[Firebase] FID Change');\n broadcastChannel.onmessage = e => {\n callFidChangeCallbacks(e.data.key, e.data.fid);\n };\n }\n return broadcastChannel;\n}\n\nfunction closeBroadcastChannel(): void {\n if (fidChangeCallbacks.size === 0 && broadcastChannel) {\n broadcastChannel.close();\n broadcastChannel = null;\n }\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DBSchema, IDBPDatabase, openDB } from 'idb';\nimport { AppConfig } from '../interfaces/installation-impl';\nimport { InstallationEntry } from '../interfaces/installation-entry';\nimport { getKey } from '../util/get-key';\nimport { fidChanged } from './fid-changed';\n\nconst DATABASE_NAME = 'firebase-installations-database';\nconst DATABASE_VERSION = 1;\nconst OBJECT_STORE_NAME = 'firebase-installations-store';\n\ninterface InstallationsDB extends DBSchema {\n 'firebase-installations-store': {\n key: string;\n value: InstallationEntry | undefined;\n };\n}\n\nlet dbPromise: Promise> | null = null;\nfunction getDbPromise(): Promise> {\n if (!dbPromise) {\n dbPromise = openDB(DATABASE_NAME, DATABASE_VERSION, {\n upgrade: (db, oldVersion) => {\n // We don't use 'break' in this switch statement, the fall-through\n // behavior is what we want, because if there are multiple versions between\n // the old version and the current version, we want ALL the migrations\n // that correspond to those versions to run, not only the last one.\n // eslint-disable-next-line default-case\n switch (oldVersion) {\n case 0:\n db.createObjectStore(OBJECT_STORE_NAME);\n }\n }\n });\n }\n return dbPromise;\n}\n\n/** Gets record(s) from the objectStore that match the given key. */\nexport async function get(\n appConfig: AppConfig\n): Promise {\n const key = getKey(appConfig);\n const db = await getDbPromise();\n return db\n .transaction(OBJECT_STORE_NAME)\n .objectStore(OBJECT_STORE_NAME)\n .get(key) as Promise;\n}\n\n/** Assigns or overwrites the record for the given key with the given value. */\nexport async function set(\n appConfig: AppConfig,\n value: ValueType\n): Promise {\n const key = getKey(appConfig);\n const db = await getDbPromise();\n const tx = db.transaction(OBJECT_STORE_NAME, 'readwrite');\n const objectStore = tx.objectStore(OBJECT_STORE_NAME);\n const oldValue = (await objectStore.get(key)) as InstallationEntry;\n await objectStore.put(value, key);\n await tx.done;\n\n if (!oldValue || oldValue.fid !== value.fid) {\n fidChanged(appConfig, value.fid);\n }\n\n return value;\n}\n\n/** Removes record(s) from the objectStore that match the given key. */\nexport async function remove(appConfig: AppConfig): Promise {\n const key = getKey(appConfig);\n const db = await getDbPromise();\n const tx = db.transaction(OBJECT_STORE_NAME, 'readwrite');\n await tx.objectStore(OBJECT_STORE_NAME).delete(key);\n await tx.done;\n}\n\n/**\n * Atomically updates a record with the result of updateFn, which gets\n * called with the current value. If newValue is undefined, the record is\n * deleted instead.\n * @return Updated value\n */\nexport async function update(\n appConfig: AppConfig,\n updateFn: (previousValue: InstallationEntry | undefined) => ValueType\n): Promise {\n const key = getKey(appConfig);\n const db = await getDbPromise();\n const tx = db.transaction(OBJECT_STORE_NAME, 'readwrite');\n const store = tx.objectStore(OBJECT_STORE_NAME);\n const oldValue: InstallationEntry | undefined = (await store.get(\n key\n )) as InstallationEntry;\n const newValue = updateFn(oldValue);\n\n if (newValue === undefined) {\n await store.delete(key);\n } else {\n await store.put(newValue, key);\n }\n await tx.done;\n\n if (newValue && (!oldValue || oldValue.fid !== newValue.fid)) {\n fidChanged(appConfig, newValue.fid);\n }\n\n return newValue;\n}\n\nexport async function clear(): Promise {\n const db = await getDbPromise();\n const tx = db.transaction(OBJECT_STORE_NAME, 'readwrite');\n await tx.objectStore(OBJECT_STORE_NAME).clear();\n await tx.done;\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createInstallationRequest } from '../functions/create-installation-request';\nimport {\n AppConfig,\n FirebaseInstallationsImpl\n} from '../interfaces/installation-impl';\nimport {\n InProgressInstallationEntry,\n InstallationEntry,\n RegisteredInstallationEntry,\n RequestStatus\n} from '../interfaces/installation-entry';\nimport { PENDING_TIMEOUT_MS } from '../util/constants';\nimport { ERROR_FACTORY, ErrorCode, isServerError } from '../util/errors';\nimport { sleep } from '../util/sleep';\nimport { generateFid, INVALID_FID } from './generate-fid';\nimport { remove, set, update } from './idb-manager';\n\nexport interface InstallationEntryWithRegistrationPromise {\n installationEntry: InstallationEntry;\n /** Exist iff the installationEntry is not registered. */\n registrationPromise?: Promise;\n}\n\n/**\n * Updates and returns the InstallationEntry from the database.\n * Also triggers a registration request if it is necessary and possible.\n */\nexport async function getInstallationEntry(\n installations: FirebaseInstallationsImpl\n): Promise {\n let registrationPromise: Promise | undefined;\n\n const installationEntry = await update(installations.appConfig, oldEntry => {\n const installationEntry = updateOrCreateInstallationEntry(oldEntry);\n const entryWithPromise = triggerRegistrationIfNecessary(\n installations,\n installationEntry\n );\n registrationPromise = entryWithPromise.registrationPromise;\n return entryWithPromise.installationEntry;\n });\n\n if (installationEntry.fid === INVALID_FID) {\n // FID generation failed. Waiting for the FID from the server.\n return { installationEntry: await registrationPromise! };\n }\n\n return {\n installationEntry,\n registrationPromise\n };\n}\n\n/**\n * Creates a new Installation Entry if one does not exist.\n * Also clears timed out pending requests.\n */\nfunction updateOrCreateInstallationEntry(\n oldEntry: InstallationEntry | undefined\n): InstallationEntry {\n const entry: InstallationEntry = oldEntry || {\n fid: generateFid(),\n registrationStatus: RequestStatus.NOT_STARTED\n };\n\n return clearTimedOutRequest(entry);\n}\n\n/**\n * If the Firebase Installation is not registered yet, this will trigger the\n * registration and return an InProgressInstallationEntry.\n *\n * If registrationPromise does not exist, the installationEntry is guaranteed\n * to be registered.\n */\nfunction triggerRegistrationIfNecessary(\n installations: FirebaseInstallationsImpl,\n installationEntry: InstallationEntry\n): InstallationEntryWithRegistrationPromise {\n if (installationEntry.registrationStatus === RequestStatus.NOT_STARTED) {\n if (!navigator.onLine) {\n // Registration required but app is offline.\n const registrationPromiseWithError = Promise.reject(\n ERROR_FACTORY.create(ErrorCode.APP_OFFLINE)\n );\n return {\n installationEntry,\n registrationPromise: registrationPromiseWithError\n };\n }\n\n // Try registering. Change status to IN_PROGRESS.\n const inProgressEntry: InProgressInstallationEntry = {\n fid: installationEntry.fid,\n registrationStatus: RequestStatus.IN_PROGRESS,\n registrationTime: Date.now()\n };\n const registrationPromise = registerInstallation(\n installations,\n inProgressEntry\n );\n return { installationEntry: inProgressEntry, registrationPromise };\n } else if (\n installationEntry.registrationStatus === RequestStatus.IN_PROGRESS\n ) {\n return {\n installationEntry,\n registrationPromise: waitUntilFidRegistration(installations)\n };\n } else {\n return { installationEntry };\n }\n}\n\n/** This will be executed only once for each new Firebase Installation. */\nasync function registerInstallation(\n installations: FirebaseInstallationsImpl,\n installationEntry: InProgressInstallationEntry\n): Promise {\n try {\n const registeredInstallationEntry = await createInstallationRequest(\n installations,\n installationEntry\n );\n return set(installations.appConfig, registeredInstallationEntry);\n } catch (e) {\n if (isServerError(e) && e.customData.serverCode === 409) {\n // Server returned a \"FID can not be used\" error.\n // Generate a new ID next time.\n await remove(installations.appConfig);\n } else {\n // Registration failed. Set FID as not registered.\n await set(installations.appConfig, {\n fid: installationEntry.fid,\n registrationStatus: RequestStatus.NOT_STARTED\n });\n }\n throw e;\n }\n}\n\n/** Call if FID registration is pending in another request. */\nasync function waitUntilFidRegistration(\n installations: FirebaseInstallationsImpl\n): Promise {\n // Unfortunately, there is no way of reliably observing when a value in\n // IndexedDB changes (yet, see https://github.com/WICG/indexed-db-observers),\n // so we need to poll.\n\n let entry: InstallationEntry = await updateInstallationRequest(\n installations.appConfig\n );\n while (entry.registrationStatus === RequestStatus.IN_PROGRESS) {\n // createInstallation request still in progress.\n await sleep(100);\n\n entry = await updateInstallationRequest(installations.appConfig);\n }\n\n if (entry.registrationStatus === RequestStatus.NOT_STARTED) {\n // The request timed out or failed in a different call. Try again.\n const { installationEntry, registrationPromise } =\n await getInstallationEntry(installations);\n\n if (registrationPromise) {\n return registrationPromise;\n } else {\n // if there is no registrationPromise, entry is registered.\n return installationEntry as RegisteredInstallationEntry;\n }\n }\n\n return entry;\n}\n\n/**\n * Called only if there is a CreateInstallation request in progress.\n *\n * Updates the InstallationEntry in the DB based on the status of the\n * CreateInstallation request.\n *\n * Returns the updated InstallationEntry.\n */\nfunction updateInstallationRequest(\n appConfig: AppConfig\n): Promise {\n return update(appConfig, oldEntry => {\n if (!oldEntry) {\n throw ERROR_FACTORY.create(ErrorCode.INSTALLATION_NOT_FOUND);\n }\n return clearTimedOutRequest(oldEntry);\n });\n}\n\nfunction clearTimedOutRequest(entry: InstallationEntry): InstallationEntry {\n if (hasInstallationRequestTimedOut(entry)) {\n return {\n fid: entry.fid,\n registrationStatus: RequestStatus.NOT_STARTED\n };\n }\n\n return entry;\n}\n\nfunction hasInstallationRequestTimedOut(\n installationEntry: InstallationEntry\n): boolean {\n return (\n installationEntry.registrationStatus === RequestStatus.IN_PROGRESS &&\n installationEntry.registrationTime + PENDING_TIMEOUT_MS < Date.now()\n );\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { GenerateAuthTokenResponse } from '../interfaces/api-response';\nimport {\n CompletedAuthToken,\n RegisteredInstallationEntry\n} from '../interfaces/installation-entry';\nimport { PACKAGE_VERSION } from '../util/constants';\nimport {\n extractAuthTokenInfoFromResponse,\n getErrorFromResponse,\n getHeadersWithAuth,\n getInstallationsEndpoint,\n retryIfServerError\n} from './common';\nimport {\n FirebaseInstallationsImpl,\n AppConfig\n} from '../interfaces/installation-impl';\n\nexport async function generateAuthTokenRequest(\n { appConfig, heartbeatServiceProvider }: FirebaseInstallationsImpl,\n installationEntry: RegisteredInstallationEntry\n): Promise {\n const endpoint = getGenerateAuthTokenEndpoint(appConfig, installationEntry);\n\n const headers = getHeadersWithAuth(appConfig, installationEntry);\n\n // If heartbeat service exists, add the heartbeat string to the header.\n const heartbeatService = heartbeatServiceProvider.getImmediate({\n optional: true\n });\n if (heartbeatService) {\n const heartbeatsHeader = await heartbeatService.getHeartbeatsHeader();\n if (heartbeatsHeader) {\n headers.append('x-firebase-client', heartbeatsHeader);\n }\n }\n\n const body = {\n installation: {\n sdkVersion: PACKAGE_VERSION,\n appId: appConfig.appId\n }\n };\n\n const request: RequestInit = {\n method: 'POST',\n headers,\n body: JSON.stringify(body)\n };\n\n const response = await retryIfServerError(() => fetch(endpoint, request));\n if (response.ok) {\n const responseValue: GenerateAuthTokenResponse = await response.json();\n const completedAuthToken: CompletedAuthToken =\n extractAuthTokenInfoFromResponse(responseValue);\n return completedAuthToken;\n } else {\n throw await getErrorFromResponse('Generate Auth Token', response);\n }\n}\n\nfunction getGenerateAuthTokenEndpoint(\n appConfig: AppConfig,\n { fid }: RegisteredInstallationEntry\n): string {\n return `${getInstallationsEndpoint(appConfig)}/${fid}/authTokens:generate`;\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { generateAuthTokenRequest } from '../functions/generate-auth-token-request';\nimport {\n AppConfig,\n FirebaseInstallationsImpl\n} from '../interfaces/installation-impl';\nimport {\n AuthToken,\n CompletedAuthToken,\n InProgressAuthToken,\n InstallationEntry,\n RegisteredInstallationEntry,\n RequestStatus\n} from '../interfaces/installation-entry';\nimport { PENDING_TIMEOUT_MS, TOKEN_EXPIRATION_BUFFER } from '../util/constants';\nimport { ERROR_FACTORY, ErrorCode, isServerError } from '../util/errors';\nimport { sleep } from '../util/sleep';\nimport { remove, set, update } from './idb-manager';\n\n/**\n * Returns a valid authentication token for the installation. Generates a new\n * token if one doesn't exist, is expired or about to expire.\n *\n * Should only be called if the Firebase Installation is registered.\n */\nexport async function refreshAuthToken(\n installations: FirebaseInstallationsImpl,\n forceRefresh = false\n): Promise {\n let tokenPromise: Promise | undefined;\n const entry = await update(installations.appConfig, oldEntry => {\n if (!isEntryRegistered(oldEntry)) {\n throw ERROR_FACTORY.create(ErrorCode.NOT_REGISTERED);\n }\n\n const oldAuthToken = oldEntry.authToken;\n if (!forceRefresh && isAuthTokenValid(oldAuthToken)) {\n // There is a valid token in the DB.\n return oldEntry;\n } else if (oldAuthToken.requestStatus === RequestStatus.IN_PROGRESS) {\n // There already is a token request in progress.\n tokenPromise = waitUntilAuthTokenRequest(installations, forceRefresh);\n return oldEntry;\n } else {\n // No token or token expired.\n if (!navigator.onLine) {\n throw ERROR_FACTORY.create(ErrorCode.APP_OFFLINE);\n }\n\n const inProgressEntry = makeAuthTokenRequestInProgressEntry(oldEntry);\n tokenPromise = fetchAuthTokenFromServer(installations, inProgressEntry);\n return inProgressEntry;\n }\n });\n\n const authToken = tokenPromise\n ? await tokenPromise\n : (entry.authToken as CompletedAuthToken);\n return authToken;\n}\n\n/**\n * Call only if FID is registered and Auth Token request is in progress.\n *\n * Waits until the current pending request finishes. If the request times out,\n * tries once in this thread as well.\n */\nasync function waitUntilAuthTokenRequest(\n installations: FirebaseInstallationsImpl,\n forceRefresh: boolean\n): Promise {\n // Unfortunately, there is no way of reliably observing when a value in\n // IndexedDB changes (yet, see https://github.com/WICG/indexed-db-observers),\n // so we need to poll.\n\n let entry = await updateAuthTokenRequest(installations.appConfig);\n while (entry.authToken.requestStatus === RequestStatus.IN_PROGRESS) {\n // generateAuthToken still in progress.\n await sleep(100);\n\n entry = await updateAuthTokenRequest(installations.appConfig);\n }\n\n const authToken = entry.authToken;\n if (authToken.requestStatus === RequestStatus.NOT_STARTED) {\n // The request timed out or failed in a different call. Try again.\n return refreshAuthToken(installations, forceRefresh);\n } else {\n return authToken;\n }\n}\n\n/**\n * Called only if there is a GenerateAuthToken request in progress.\n *\n * Updates the InstallationEntry in the DB based on the status of the\n * GenerateAuthToken request.\n *\n * Returns the updated InstallationEntry.\n */\nfunction updateAuthTokenRequest(\n appConfig: AppConfig\n): Promise {\n return update(appConfig, oldEntry => {\n if (!isEntryRegistered(oldEntry)) {\n throw ERROR_FACTORY.create(ErrorCode.NOT_REGISTERED);\n }\n\n const oldAuthToken = oldEntry.authToken;\n if (hasAuthTokenRequestTimedOut(oldAuthToken)) {\n return {\n ...oldEntry,\n authToken: { requestStatus: RequestStatus.NOT_STARTED }\n };\n }\n\n return oldEntry;\n });\n}\n\nasync function fetchAuthTokenFromServer(\n installations: FirebaseInstallationsImpl,\n installationEntry: RegisteredInstallationEntry\n): Promise {\n try {\n const authToken = await generateAuthTokenRequest(\n installations,\n installationEntry\n );\n const updatedInstallationEntry: RegisteredInstallationEntry = {\n ...installationEntry,\n authToken\n };\n await set(installations.appConfig, updatedInstallationEntry);\n return authToken;\n } catch (e) {\n if (\n isServerError(e) &&\n (e.customData.serverCode === 401 || e.customData.serverCode === 404)\n ) {\n // Server returned a \"FID not found\" or a \"Invalid authentication\" error.\n // Generate a new ID next time.\n await remove(installations.appConfig);\n } else {\n const updatedInstallationEntry: RegisteredInstallationEntry = {\n ...installationEntry,\n authToken: { requestStatus: RequestStatus.NOT_STARTED }\n };\n await set(installations.appConfig, updatedInstallationEntry);\n }\n throw e;\n }\n}\n\nfunction isEntryRegistered(\n installationEntry: InstallationEntry | undefined\n): installationEntry is RegisteredInstallationEntry {\n return (\n installationEntry !== undefined &&\n installationEntry.registrationStatus === RequestStatus.COMPLETED\n );\n}\n\nfunction isAuthTokenValid(authToken: AuthToken): boolean {\n return (\n authToken.requestStatus === RequestStatus.COMPLETED &&\n !isAuthTokenExpired(authToken)\n );\n}\n\nfunction isAuthTokenExpired(authToken: CompletedAuthToken): boolean {\n const now = Date.now();\n return (\n now < authToken.creationTime ||\n authToken.creationTime + authToken.expiresIn < now + TOKEN_EXPIRATION_BUFFER\n );\n}\n\n/** Returns an updated InstallationEntry with an InProgressAuthToken. */\nfunction makeAuthTokenRequestInProgressEntry(\n oldEntry: RegisteredInstallationEntry\n): RegisteredInstallationEntry {\n const inProgressAuthToken: InProgressAuthToken = {\n requestStatus: RequestStatus.IN_PROGRESS,\n requestTime: Date.now()\n };\n return {\n ...oldEntry,\n authToken: inProgressAuthToken\n };\n}\n\nfunction hasAuthTokenRequestTimedOut(authToken: AuthToken): boolean {\n return (\n authToken.requestStatus === RequestStatus.IN_PROGRESS &&\n authToken.requestTime + PENDING_TIMEOUT_MS < Date.now()\n );\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getInstallationEntry } from '../helpers/get-installation-entry';\nimport { refreshAuthToken } from '../helpers/refresh-auth-token';\nimport { FirebaseInstallationsImpl } from '../interfaces/installation-impl';\nimport { Installations } from '../interfaces/public-types';\n\n/**\n * Creates a Firebase Installation if there isn't one for the app and\n * returns the Installation ID.\n * @param installations - The `Installations` instance.\n *\n * @public\n */\nexport async function getId(installations: Installations): Promise {\n const installationsImpl = installations as FirebaseInstallationsImpl;\n const { installationEntry, registrationPromise } = await getInstallationEntry(\n installationsImpl\n );\n\n if (registrationPromise) {\n registrationPromise.catch(console.error);\n } else {\n // If the installation is already registered, update the authentication\n // token if needed.\n refreshAuthToken(installationsImpl).catch(console.error);\n }\n\n return installationEntry.fid;\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getInstallationEntry } from '../helpers/get-installation-entry';\nimport { refreshAuthToken } from '../helpers/refresh-auth-token';\nimport { FirebaseInstallationsImpl } from '../interfaces/installation-impl';\nimport { Installations } from '../interfaces/public-types';\n\n/**\n * Returns a Firebase Installations auth token, identifying the current\n * Firebase Installation.\n * @param installations - The `Installations` instance.\n * @param forceRefresh - Force refresh regardless of token expiration.\n *\n * @public\n */\nexport async function getToken(\n installations: Installations,\n forceRefresh = false\n): Promise {\n const installationsImpl = installations as FirebaseInstallationsImpl;\n await completeInstallationRegistration(installationsImpl);\n\n // At this point we either have a Registered Installation in the DB, or we've\n // already thrown an error.\n const authToken = await refreshAuthToken(installationsImpl, forceRefresh);\n return authToken.token;\n}\n\nasync function completeInstallationRegistration(\n installations: FirebaseInstallationsImpl\n): Promise {\n const { registrationPromise } = await getInstallationEntry(installations);\n\n if (registrationPromise) {\n // A createInstallation request is in progress. Wait until it finishes.\n await registrationPromise;\n }\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FirebaseApp, FirebaseOptions } from '@firebase/app';\nimport { FirebaseError } from '@firebase/util';\nimport { AppConfig } from '../interfaces/installation-impl';\nimport { ERROR_FACTORY, ErrorCode } from '../util/errors';\n\nexport function extractAppConfig(app: FirebaseApp): AppConfig {\n if (!app || !app.options) {\n throw getMissingValueError('App Configuration');\n }\n\n if (!app.name) {\n throw getMissingValueError('App Name');\n }\n\n // Required app config keys\n const configKeys: Array = [\n 'projectId',\n 'apiKey',\n 'appId'\n ];\n\n for (const keyName of configKeys) {\n if (!app.options[keyName]) {\n throw getMissingValueError(keyName);\n }\n }\n\n return {\n appName: app.name,\n projectId: app.options.projectId!,\n apiKey: app.options.apiKey!,\n appId: app.options.appId!\n };\n}\n\nfunction getMissingValueError(valueName: string): FirebaseError {\n return ERROR_FACTORY.create(ErrorCode.MISSING_APP_CONFIG_VALUES, {\n valueName\n });\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { _registerComponent, _getProvider } from '@firebase/app';\nimport {\n Component,\n ComponentType,\n InstanceFactory,\n ComponentContainer\n} from '@firebase/component';\nimport { getId, getToken } from '../api/index';\nimport { _FirebaseInstallationsInternal } from '../interfaces/public-types';\nimport { FirebaseInstallationsImpl } from '../interfaces/installation-impl';\nimport { extractAppConfig } from '../helpers/extract-app-config';\n\nconst INSTALLATIONS_NAME = 'installations';\nconst INSTALLATIONS_NAME_INTERNAL = 'installations-internal';\n\nconst publicFactory: InstanceFactory<'installations'> = (\n container: ComponentContainer\n) => {\n const app = container.getProvider('app').getImmediate();\n // Throws if app isn't configured properly.\n const appConfig = extractAppConfig(app);\n const heartbeatServiceProvider = _getProvider(app, 'heartbeat');\n\n const installationsImpl: FirebaseInstallationsImpl = {\n app,\n appConfig,\n heartbeatServiceProvider,\n _delete: () => Promise.resolve()\n };\n return installationsImpl;\n};\n\nconst internalFactory: InstanceFactory<'installations-internal'> = (\n container: ComponentContainer\n) => {\n const app = container.getProvider('app').getImmediate();\n // Internal FIS instance relies on public FIS instance.\n const installations = _getProvider(app, INSTALLATIONS_NAME).getImmediate();\n\n const installationsInternal: _FirebaseInstallationsInternal = {\n getId: () => getId(installations),\n getToken: (forceRefresh?: boolean) => getToken(installations, forceRefresh)\n };\n return installationsInternal;\n};\n\nexport function registerInstallations(): void {\n _registerComponent(\n new Component(INSTALLATIONS_NAME, publicFactory, ComponentType.PUBLIC)\n );\n _registerComponent(\n new Component(\n INSTALLATIONS_NAME_INTERNAL,\n internalFactory,\n ComponentType.PRIVATE\n )\n );\n}\n","/**\n * Firebase Installations\n *\n * @packageDocumentation\n */\n\n/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { registerInstallations } from './functions/config';\nimport { registerVersion } from '@firebase/app';\nimport { name, version } from '../package.json';\n\nexport * from './api';\nexport * from './interfaces/public-types';\n\nregisterInstallations();\nregisterVersion(name, version);\n// BUILD_TARGET will be replaced by values like esm5, esm2017, cjs5, etc during the compilation\nregisterVersion(name, version, '__BUILD_TARGET__');\n","const instanceOfAny = (object, constructors) => constructors.some((c) => object instanceof c);\n\nlet idbProxyableTypes;\nlet cursorAdvanceMethods;\n// This is a function to prevent it throwing up in node environments.\nfunction getIdbProxyableTypes() {\n return (idbProxyableTypes ||\n (idbProxyableTypes = [\n IDBDatabase,\n IDBObjectStore,\n IDBIndex,\n IDBCursor,\n IDBTransaction,\n ]));\n}\n// This is a function to prevent it throwing up in node environments.\nfunction getCursorAdvanceMethods() {\n return (cursorAdvanceMethods ||\n (cursorAdvanceMethods = [\n IDBCursor.prototype.advance,\n IDBCursor.prototype.continue,\n IDBCursor.prototype.continuePrimaryKey,\n ]));\n}\nconst cursorRequestMap = new WeakMap();\nconst transactionDoneMap = new WeakMap();\nconst transactionStoreNamesMap = new WeakMap();\nconst transformCache = new WeakMap();\nconst reverseTransformCache = new WeakMap();\nfunction promisifyRequest(request) {\n const promise = new Promise((resolve, reject) => {\n const unlisten = () => {\n request.removeEventListener('success', success);\n request.removeEventListener('error', error);\n };\n const success = () => {\n resolve(wrap(request.result));\n unlisten();\n };\n const error = () => {\n reject(request.error);\n unlisten();\n };\n request.addEventListener('success', success);\n request.addEventListener('error', error);\n });\n promise\n .then((value) => {\n // Since cursoring reuses the IDBRequest (*sigh*), we cache it for later retrieval\n // (see wrapFunction).\n if (value instanceof IDBCursor) {\n cursorRequestMap.set(value, request);\n }\n // Catching to avoid \"Uncaught Promise exceptions\"\n })\n .catch(() => { });\n // This mapping exists in reverseTransformCache but doesn't doesn't exist in transformCache. This\n // is because we create many promises from a single IDBRequest.\n reverseTransformCache.set(promise, request);\n return promise;\n}\nfunction cacheDonePromiseForTransaction(tx) {\n // Early bail if we've already created a done promise for this transaction.\n if (transactionDoneMap.has(tx))\n return;\n const done = new Promise((resolve, reject) => {\n const unlisten = () => {\n tx.removeEventListener('complete', complete);\n tx.removeEventListener('error', error);\n tx.removeEventListener('abort', error);\n };\n const complete = () => {\n resolve();\n unlisten();\n };\n const error = () => {\n reject(tx.error || new DOMException('AbortError', 'AbortError'));\n unlisten();\n };\n tx.addEventListener('complete', complete);\n tx.addEventListener('error', error);\n tx.addEventListener('abort', error);\n });\n // Cache it for later retrieval.\n transactionDoneMap.set(tx, done);\n}\nlet idbProxyTraps = {\n get(target, prop, receiver) {\n if (target instanceof IDBTransaction) {\n // Special handling for transaction.done.\n if (prop === 'done')\n return transactionDoneMap.get(target);\n // Polyfill for objectStoreNames because of Edge.\n if (prop === 'objectStoreNames') {\n return target.objectStoreNames || transactionStoreNamesMap.get(target);\n }\n // Make tx.store return the only store in the transaction, or undefined if there are many.\n if (prop === 'store') {\n return receiver.objectStoreNames[1]\n ? undefined\n : receiver.objectStore(receiver.objectStoreNames[0]);\n }\n }\n // Else transform whatever we get back.\n return wrap(target[prop]);\n },\n set(target, prop, value) {\n target[prop] = value;\n return true;\n },\n has(target, prop) {\n if (target instanceof IDBTransaction &&\n (prop === 'done' || prop === 'store')) {\n return true;\n }\n return prop in target;\n },\n};\nfunction replaceTraps(callback) {\n idbProxyTraps = callback(idbProxyTraps);\n}\nfunction wrapFunction(func) {\n // Due to expected object equality (which is enforced by the caching in `wrap`), we\n // only create one new func per func.\n // Edge doesn't support objectStoreNames (booo), so we polyfill it here.\n if (func === IDBDatabase.prototype.transaction &&\n !('objectStoreNames' in IDBTransaction.prototype)) {\n return function (storeNames, ...args) {\n const tx = func.call(unwrap(this), storeNames, ...args);\n transactionStoreNamesMap.set(tx, storeNames.sort ? storeNames.sort() : [storeNames]);\n return wrap(tx);\n };\n }\n // Cursor methods are special, as the behaviour is a little more different to standard IDB. In\n // IDB, you advance the cursor and wait for a new 'success' on the IDBRequest that gave you the\n // cursor. It's kinda like a promise that can resolve with many values. That doesn't make sense\n // with real promises, so each advance methods returns a new promise for the cursor object, or\n // undefined if the end of the cursor has been reached.\n if (getCursorAdvanceMethods().includes(func)) {\n return function (...args) {\n // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n // the original object.\n func.apply(unwrap(this), args);\n return wrap(cursorRequestMap.get(this));\n };\n }\n return function (...args) {\n // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n // the original object.\n return wrap(func.apply(unwrap(this), args));\n };\n}\nfunction transformCachableValue(value) {\n if (typeof value === 'function')\n return wrapFunction(value);\n // This doesn't return, it just creates a 'done' promise for the transaction,\n // which is later returned for transaction.done (see idbObjectHandler).\n if (value instanceof IDBTransaction)\n cacheDonePromiseForTransaction(value);\n if (instanceOfAny(value, getIdbProxyableTypes()))\n return new Proxy(value, idbProxyTraps);\n // Return the same value back if we're not going to transform it.\n return value;\n}\nfunction wrap(value) {\n // We sometimes generate multiple promises from a single IDBRequest (eg when cursoring), because\n // IDB is weird and a single IDBRequest can yield many responses, so these can't be cached.\n if (value instanceof IDBRequest)\n return promisifyRequest(value);\n // If we've already transformed this value before, reuse the transformed value.\n // This is faster, but it also provides object equality.\n if (transformCache.has(value))\n return transformCache.get(value);\n const newValue = transformCachableValue(value);\n // Not all types are transformed.\n // These may be primitive types, so they can't be WeakMap keys.\n if (newValue !== value) {\n transformCache.set(value, newValue);\n reverseTransformCache.set(newValue, value);\n }\n return newValue;\n}\nconst unwrap = (value) => reverseTransformCache.get(value);\n\nexport { reverseTransformCache as a, instanceOfAny as i, replaceTraps as r, unwrap as u, wrap as w };\n","import { w as wrap, r as replaceTraps } from './wrap-idb-value.js';\nexport { u as unwrap, w as wrap } from './wrap-idb-value.js';\n\n/**\n * Open a database.\n *\n * @param name Name of the database.\n * @param version Schema version.\n * @param callbacks Additional callbacks.\n */\nfunction openDB(name, version, { blocked, upgrade, blocking, terminated } = {}) {\n const request = indexedDB.open(name, version);\n const openPromise = wrap(request);\n if (upgrade) {\n request.addEventListener('upgradeneeded', (event) => {\n upgrade(wrap(request.result), event.oldVersion, event.newVersion, wrap(request.transaction));\n });\n }\n if (blocked)\n request.addEventListener('blocked', () => blocked());\n openPromise\n .then((db) => {\n if (terminated)\n db.addEventListener('close', () => terminated());\n if (blocking)\n db.addEventListener('versionchange', () => blocking());\n })\n .catch(() => { });\n return openPromise;\n}\n/**\n * Delete a database.\n *\n * @param name Name of the database.\n */\nfunction deleteDB(name, { blocked } = {}) {\n const request = indexedDB.deleteDatabase(name);\n if (blocked)\n request.addEventListener('blocked', () => blocked());\n return wrap(request).then(() => undefined);\n}\n\nconst readMethods = ['get', 'getKey', 'getAll', 'getAllKeys', 'count'];\nconst writeMethods = ['put', 'add', 'delete', 'clear'];\nconst cachedMethods = new Map();\nfunction getMethod(target, prop) {\n if (!(target instanceof IDBDatabase &&\n !(prop in target) &&\n typeof prop === 'string')) {\n return;\n }\n if (cachedMethods.get(prop))\n return cachedMethods.get(prop);\n const targetFuncName = prop.replace(/FromIndex$/, '');\n const useIndex = prop !== targetFuncName;\n const isWrite = writeMethods.includes(targetFuncName);\n if (\n // Bail if the target doesn't exist on the target. Eg, getAll isn't in Edge.\n !(targetFuncName in (useIndex ? IDBIndex : IDBObjectStore).prototype) ||\n !(isWrite || readMethods.includes(targetFuncName))) {\n return;\n }\n const method = async function (storeName, ...args) {\n // isWrite ? 'readwrite' : undefined gzipps better, but fails in Edge :(\n const tx = this.transaction(storeName, isWrite ? 'readwrite' : 'readonly');\n let target = tx.store;\n if (useIndex)\n target = target.index(args.shift());\n // Must reject if op rejects.\n // If it's a write operation, must reject if tx.done rejects.\n // Must reject with op rejection first.\n // Must resolve with op value.\n // Must handle both promises (no unhandled rejections)\n return (await Promise.all([\n target[targetFuncName](...args),\n isWrite && tx.done,\n ]))[0];\n };\n cachedMethods.set(prop, method);\n return method;\n}\nreplaceTraps((oldTraps) => ({\n ...oldTraps,\n get: (target, prop, receiver) => getMethod(target, prop) || oldTraps.get(target, prop, receiver),\n has: (target, prop) => !!getMethod(target, prop) || oldTraps.has(target, prop),\n}));\n\nexport { deleteDB, openDB };\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport const DEFAULT_SW_PATH = '/firebase-messaging-sw.js';\nexport const DEFAULT_SW_SCOPE = '/firebase-cloud-messaging-push-scope';\n\nexport const DEFAULT_VAPID_KEY =\n 'BDOU99-h67HcA6JeFXHbSNMu7e2yNNu3RzoMj8TM4W88jITfq7ZmPvIM1Iv-4_l2LxQcYwhqby2xGpWwzjfAnG4';\n\nexport const ENDPOINT = 'https://fcmregistrations.googleapis.com/v1';\n\n/** Key of FCM Payload in Notification's data field. */\nexport const FCM_MSG = 'FCM_MSG';\n\nexport const CONSOLE_CAMPAIGN_ID = 'google.c.a.c_id';\nexport const CONSOLE_CAMPAIGN_NAME = 'google.c.a.c_l';\nexport const CONSOLE_CAMPAIGN_TIME = 'google.c.a.ts';\n/** Set to '1' if Analytics is enabled for the campaign */\nexport const CONSOLE_CAMPAIGN_ANALYTICS_ENABLED = 'google.c.a.e';\nexport const TAG = 'FirebaseMessaging: ';\nexport const MAX_NUMBER_OF_EVENTS_PER_LOG_REQUEST = 1000;\nexport const MAX_RETRIES = 3;\nexport const LOG_INTERVAL_IN_MS = 86400000; //24 hour\nexport const DEFAULT_BACKOFF_TIME_MS = 5000;\n\n// FCM log source name registered at Firelog: 'FCM_CLIENT_EVENT_LOGGING'. It uniquely identifies\n// FCM's logging configuration.\nexport const FCM_LOG_SOURCE = 1249;\n\n// Defined as in proto/messaging_event.proto. Neglecting fields that are supported.\nexport const SDK_PLATFORM_WEB = 3;\nexport const EVENT_MESSAGE_DELIVERED = 1;\n\nexport enum MessageType {\n DATA_MESSAGE = 1,\n DISPLAY_NOTIFICATION = 3\n}\n","/**\n * @license\n * Copyright 2018 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except\n * in compliance with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under the License\n * is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express\n * or implied. See the License for the specific language governing permissions and limitations under\n * the License.\n */\n\nimport {\n CONSOLE_CAMPAIGN_ANALYTICS_ENABLED,\n CONSOLE_CAMPAIGN_ID,\n CONSOLE_CAMPAIGN_NAME,\n CONSOLE_CAMPAIGN_TIME\n} from '../util/constants';\n\nexport interface MessagePayloadInternal {\n notification?: NotificationPayloadInternal;\n data?: unknown;\n fcmOptions?: FcmOptionsInternal;\n messageType?: MessageType;\n isFirebaseMessaging?: boolean;\n from: string;\n fcmMessageId: string;\n // eslint-disable-next-line camelcase\n collapse_key: string;\n}\n\nexport interface NotificationPayloadInternal extends NotificationOptions {\n title: string;\n // Supported in the Legacy Send API.\n // See:https://firebase.google.com/docs/cloud-messaging/xmpp-server-ref.\n // eslint-disable-next-line camelcase\n click_action?: string;\n}\n\n// Defined in\n// https://firebase.google.com/docs/reference/fcm/rest/v1/projects.messages#webpushfcmoptions. Note\n// that the keys are sent to the clients in snake cases which we need to convert to camel so it can\n// be exposed as a type to match the Firebase API convention.\nexport interface FcmOptionsInternal {\n link?: string;\n\n // eslint-disable-next-line camelcase\n analytics_label?: string;\n}\n\nexport enum MessageType {\n PUSH_RECEIVED = 'push-received',\n NOTIFICATION_CLICKED = 'notification-clicked'\n}\n\n/** Additional data of a message sent from the FN Console. */\nexport interface ConsoleMessageData {\n [CONSOLE_CAMPAIGN_ID]: string;\n [CONSOLE_CAMPAIGN_TIME]: string;\n [CONSOLE_CAMPAIGN_NAME]?: string;\n [CONSOLE_CAMPAIGN_ANALYTICS_ENABLED]?: '1';\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport function arrayToBase64(array: Uint8Array | ArrayBuffer): string {\n const uint8Array = new Uint8Array(array);\n const base64String = btoa(String.fromCharCode(...uint8Array));\n return base64String.replace(/=/g, '').replace(/\\+/g, '-').replace(/\\//g, '_');\n}\n\nexport function base64ToArray(base64String: string): Uint8Array {\n const padding = '='.repeat((4 - (base64String.length % 4)) % 4);\n const base64 = (base64String + padding)\n .replace(/\\-/g, '+')\n .replace(/_/g, '/');\n\n const rawData = atob(base64);\n const outputArray = new Uint8Array(rawData.length);\n\n for (let i = 0; i < rawData.length; ++i) {\n outputArray[i] = rawData.charCodeAt(i);\n }\n return outputArray;\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { deleteDB, openDB } from 'idb';\n\nimport { TokenDetails } from '../interfaces/token-details';\nimport { arrayToBase64 } from './array-base64-translator';\n\n// https://github.com/firebase/firebase-js-sdk/blob/7857c212f944a2a9eb421fd4cb7370181bc034b5/packages/messaging/src/interfaces/token-details.ts\nexport interface V2TokenDetails {\n fcmToken: string;\n swScope: string;\n vapidKey: string | Uint8Array;\n subscription: PushSubscription;\n fcmSenderId: string;\n fcmPushSet: string;\n createTime?: number;\n endpoint?: string;\n auth?: string;\n p256dh?: string;\n}\n\n// https://github.com/firebase/firebase-js-sdk/blob/6b5b15ce4ea3df5df5df8a8b33a4e41e249c7715/packages/messaging/src/interfaces/token-details.ts\nexport interface V3TokenDetails {\n fcmToken: string;\n swScope: string;\n vapidKey: Uint8Array;\n fcmSenderId: string;\n fcmPushSet: string;\n endpoint: string;\n auth: ArrayBuffer;\n p256dh: ArrayBuffer;\n createTime: number;\n}\n\n// https://github.com/firebase/firebase-js-sdk/blob/9567dba664732f681fa7fe60f5b7032bb1daf4c9/packages/messaging/src/interfaces/token-details.ts\nexport interface V4TokenDetails {\n fcmToken: string;\n swScope: string;\n vapidKey: Uint8Array;\n fcmSenderId: string;\n endpoint: string;\n auth: ArrayBufferLike;\n p256dh: ArrayBufferLike;\n createTime: number;\n}\n\nconst OLD_DB_NAME = 'fcm_token_details_db';\n/**\n * The last DB version of 'fcm_token_details_db' was 4. This is one higher, so that the upgrade\n * callback is called for all versions of the old DB.\n */\nconst OLD_DB_VERSION = 5;\nconst OLD_OBJECT_STORE_NAME = 'fcm_token_object_Store';\n\nexport async function migrateOldDatabase(\n senderId: string\n): Promise {\n if ('databases' in indexedDB) {\n // indexedDb.databases() is an IndexedDB v3 API and does not exist in all browsers. TODO: Remove\n // typecast when it lands in TS types.\n const databases = await (\n indexedDB as {\n databases(): Promise>;\n }\n ).databases();\n const dbNames = databases.map(db => db.name);\n\n if (!dbNames.includes(OLD_DB_NAME)) {\n // old DB didn't exist, no need to open.\n return null;\n }\n }\n\n let tokenDetails: TokenDetails | null = null;\n\n const db = await openDB(OLD_DB_NAME, OLD_DB_VERSION, {\n upgrade: async (db, oldVersion, newVersion, upgradeTransaction) => {\n if (oldVersion < 2) {\n // Database too old, skip migration.\n return;\n }\n\n if (!db.objectStoreNames.contains(OLD_OBJECT_STORE_NAME)) {\n // Database did not exist. Nothing to do.\n return;\n }\n\n const objectStore = upgradeTransaction.objectStore(OLD_OBJECT_STORE_NAME);\n const value = await objectStore.index('fcmSenderId').get(senderId);\n await objectStore.clear();\n\n if (!value) {\n // No entry in the database, nothing to migrate.\n return;\n }\n\n if (oldVersion === 2) {\n const oldDetails = value as V2TokenDetails;\n\n if (!oldDetails.auth || !oldDetails.p256dh || !oldDetails.endpoint) {\n return;\n }\n\n tokenDetails = {\n token: oldDetails.fcmToken,\n createTime: oldDetails.createTime ?? Date.now(),\n subscriptionOptions: {\n auth: oldDetails.auth,\n p256dh: oldDetails.p256dh,\n endpoint: oldDetails.endpoint,\n swScope: oldDetails.swScope,\n vapidKey:\n typeof oldDetails.vapidKey === 'string'\n ? oldDetails.vapidKey\n : arrayToBase64(oldDetails.vapidKey)\n }\n };\n } else if (oldVersion === 3) {\n const oldDetails = value as V3TokenDetails;\n\n tokenDetails = {\n token: oldDetails.fcmToken,\n createTime: oldDetails.createTime,\n subscriptionOptions: {\n auth: arrayToBase64(oldDetails.auth),\n p256dh: arrayToBase64(oldDetails.p256dh),\n endpoint: oldDetails.endpoint,\n swScope: oldDetails.swScope,\n vapidKey: arrayToBase64(oldDetails.vapidKey)\n }\n };\n } else if (oldVersion === 4) {\n const oldDetails = value as V4TokenDetails;\n\n tokenDetails = {\n token: oldDetails.fcmToken,\n createTime: oldDetails.createTime,\n subscriptionOptions: {\n auth: arrayToBase64(oldDetails.auth),\n p256dh: arrayToBase64(oldDetails.p256dh),\n endpoint: oldDetails.endpoint,\n swScope: oldDetails.swScope,\n vapidKey: arrayToBase64(oldDetails.vapidKey)\n }\n };\n }\n }\n });\n db.close();\n\n // Delete all old databases.\n await deleteDB(OLD_DB_NAME);\n await deleteDB('fcm_vapid_details_db');\n await deleteDB('undefined');\n\n return checkTokenDetails(tokenDetails) ? tokenDetails : null;\n}\n\nfunction checkTokenDetails(\n tokenDetails: TokenDetails | null\n): tokenDetails is TokenDetails {\n if (!tokenDetails || !tokenDetails.subscriptionOptions) {\n return false;\n }\n const { subscriptionOptions } = tokenDetails;\n return (\n typeof tokenDetails.createTime === 'number' &&\n tokenDetails.createTime > 0 &&\n typeof tokenDetails.token === 'string' &&\n tokenDetails.token.length > 0 &&\n typeof subscriptionOptions.auth === 'string' &&\n subscriptionOptions.auth.length > 0 &&\n typeof subscriptionOptions.p256dh === 'string' &&\n subscriptionOptions.p256dh.length > 0 &&\n typeof subscriptionOptions.endpoint === 'string' &&\n subscriptionOptions.endpoint.length > 0 &&\n typeof subscriptionOptions.swScope === 'string' &&\n subscriptionOptions.swScope.length > 0 &&\n typeof subscriptionOptions.vapidKey === 'string' &&\n subscriptionOptions.vapidKey.length > 0\n );\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DBSchema, IDBPDatabase, deleteDB, openDB } from 'idb';\n\nimport { FirebaseInternalDependencies } from '../interfaces/internal-dependencies';\nimport { TokenDetails } from '../interfaces/token-details';\nimport { migrateOldDatabase } from '../helpers/migrate-old-database';\n\n// Exported for tests.\nexport const DATABASE_NAME = 'firebase-messaging-database';\nconst DATABASE_VERSION = 1;\nconst OBJECT_STORE_NAME = 'firebase-messaging-store';\n\ninterface MessagingDB extends DBSchema {\n 'firebase-messaging-store': {\n key: string;\n value: TokenDetails;\n };\n}\n\nlet dbPromise: Promise> | null = null;\nfunction getDbPromise(): Promise> {\n if (!dbPromise) {\n dbPromise = openDB(DATABASE_NAME, DATABASE_VERSION, {\n upgrade: (upgradeDb, oldVersion) => {\n // We don't use 'break' in this switch statement, the fall-through behavior is what we want,\n // because if there are multiple versions between the old version and the current version, we\n // want ALL the migrations that correspond to those versions to run, not only the last one.\n // eslint-disable-next-line default-case\n switch (oldVersion) {\n case 0:\n upgradeDb.createObjectStore(OBJECT_STORE_NAME);\n }\n }\n });\n }\n return dbPromise;\n}\n\n/** Gets record(s) from the objectStore that match the given key. */\nexport async function dbGet(\n firebaseDependencies: FirebaseInternalDependencies\n): Promise {\n const key = getKey(firebaseDependencies);\n const db = await getDbPromise();\n const tokenDetails = (await db\n .transaction(OBJECT_STORE_NAME)\n .objectStore(OBJECT_STORE_NAME)\n .get(key)) as TokenDetails;\n\n if (tokenDetails) {\n return tokenDetails;\n } else {\n // Check if there is a tokenDetails object in the old DB.\n const oldTokenDetails = await migrateOldDatabase(\n firebaseDependencies.appConfig.senderId\n );\n if (oldTokenDetails) {\n await dbSet(firebaseDependencies, oldTokenDetails);\n return oldTokenDetails;\n }\n }\n}\n\n/** Assigns or overwrites the record for the given key with the given value. */\nexport async function dbSet(\n firebaseDependencies: FirebaseInternalDependencies,\n tokenDetails: TokenDetails\n): Promise {\n const key = getKey(firebaseDependencies);\n const db = await getDbPromise();\n const tx = db.transaction(OBJECT_STORE_NAME, 'readwrite');\n await tx.objectStore(OBJECT_STORE_NAME).put(tokenDetails, key);\n await tx.done;\n return tokenDetails;\n}\n\n/** Removes record(s) from the objectStore that match the given key. */\nexport async function dbRemove(\n firebaseDependencies: FirebaseInternalDependencies\n): Promise {\n const key = getKey(firebaseDependencies);\n const db = await getDbPromise();\n const tx = db.transaction(OBJECT_STORE_NAME, 'readwrite');\n await tx.objectStore(OBJECT_STORE_NAME).delete(key);\n await tx.done;\n}\n\n/** Deletes the DB. Useful for tests. */\nexport async function dbDelete(): Promise {\n if (dbPromise) {\n (await dbPromise).close();\n await deleteDB(DATABASE_NAME);\n dbPromise = null;\n }\n}\n\nfunction getKey({ appConfig }: FirebaseInternalDependencies): string {\n return appConfig.appId;\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ErrorFactory, ErrorMap } from '@firebase/util';\n\nexport const enum ErrorCode {\n MISSING_APP_CONFIG_VALUES = 'missing-app-config-values',\n AVAILABLE_IN_WINDOW = 'only-available-in-window',\n AVAILABLE_IN_SW = 'only-available-in-sw',\n PERMISSION_DEFAULT = 'permission-default',\n PERMISSION_BLOCKED = 'permission-blocked',\n UNSUPPORTED_BROWSER = 'unsupported-browser',\n INDEXED_DB_UNSUPPORTED = 'indexed-db-unsupported',\n FAILED_DEFAULT_REGISTRATION = 'failed-service-worker-registration',\n TOKEN_SUBSCRIBE_FAILED = 'token-subscribe-failed',\n TOKEN_SUBSCRIBE_NO_TOKEN = 'token-subscribe-no-token',\n TOKEN_UNSUBSCRIBE_FAILED = 'token-unsubscribe-failed',\n TOKEN_UPDATE_FAILED = 'token-update-failed',\n TOKEN_UPDATE_NO_TOKEN = 'token-update-no-token',\n INVALID_BG_HANDLER = 'invalid-bg-handler',\n USE_SW_AFTER_GET_TOKEN = 'use-sw-after-get-token',\n INVALID_SW_REGISTRATION = 'invalid-sw-registration',\n USE_VAPID_KEY_AFTER_GET_TOKEN = 'use-vapid-key-after-get-token',\n INVALID_VAPID_KEY = 'invalid-vapid-key'\n}\n\nexport const ERROR_MAP: ErrorMap = {\n [ErrorCode.MISSING_APP_CONFIG_VALUES]:\n 'Missing App configuration value: \"{$valueName}\"',\n [ErrorCode.AVAILABLE_IN_WINDOW]:\n 'This method is available in a Window context.',\n [ErrorCode.AVAILABLE_IN_SW]:\n 'This method is available in a service worker context.',\n [ErrorCode.PERMISSION_DEFAULT]:\n 'The notification permission was not granted and dismissed instead.',\n [ErrorCode.PERMISSION_BLOCKED]:\n 'The notification permission was not granted and blocked instead.',\n [ErrorCode.UNSUPPORTED_BROWSER]:\n \"This browser doesn't support the API's required to use the Firebase SDK.\",\n [ErrorCode.INDEXED_DB_UNSUPPORTED]:\n \"This browser doesn't support indexedDb.open() (ex. Safari iFrame, Firefox Private Browsing, etc)\",\n [ErrorCode.FAILED_DEFAULT_REGISTRATION]:\n 'We are unable to register the default service worker. {$browserErrorMessage}',\n [ErrorCode.TOKEN_SUBSCRIBE_FAILED]:\n 'A problem occurred while subscribing the user to FCM: {$errorInfo}',\n [ErrorCode.TOKEN_SUBSCRIBE_NO_TOKEN]:\n 'FCM returned no token when subscribing the user to push.',\n [ErrorCode.TOKEN_UNSUBSCRIBE_FAILED]:\n 'A problem occurred while unsubscribing the ' +\n 'user from FCM: {$errorInfo}',\n [ErrorCode.TOKEN_UPDATE_FAILED]:\n 'A problem occurred while updating the user from FCM: {$errorInfo}',\n [ErrorCode.TOKEN_UPDATE_NO_TOKEN]:\n 'FCM returned no token when updating the user to push.',\n [ErrorCode.USE_SW_AFTER_GET_TOKEN]:\n 'The useServiceWorker() method may only be called once and must be ' +\n 'called before calling getToken() to ensure your service worker is used.',\n [ErrorCode.INVALID_SW_REGISTRATION]:\n 'The input to useServiceWorker() must be a ServiceWorkerRegistration.',\n [ErrorCode.INVALID_BG_HANDLER]:\n 'The input to setBackgroundMessageHandler() must be a function.',\n [ErrorCode.INVALID_VAPID_KEY]: 'The public VAPID key must be a string.',\n [ErrorCode.USE_VAPID_KEY_AFTER_GET_TOKEN]:\n 'The usePublicVapidKey() method may only be called once and must be ' +\n 'called before calling getToken() to ensure your VAPID key is used.'\n};\n\ninterface ErrorParams {\n [ErrorCode.MISSING_APP_CONFIG_VALUES]: {\n valueName: string;\n };\n [ErrorCode.FAILED_DEFAULT_REGISTRATION]: { browserErrorMessage: string };\n [ErrorCode.TOKEN_SUBSCRIBE_FAILED]: { errorInfo: string };\n [ErrorCode.TOKEN_UNSUBSCRIBE_FAILED]: { errorInfo: string };\n [ErrorCode.TOKEN_UPDATE_FAILED]: { errorInfo: string };\n}\n\nexport const ERROR_FACTORY = new ErrorFactory(\n 'messaging',\n 'Messaging',\n ERROR_MAP\n);\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DEFAULT_VAPID_KEY, ENDPOINT } from '../util/constants';\nimport { ERROR_FACTORY, ErrorCode } from '../util/errors';\nimport { SubscriptionOptions, TokenDetails } from '../interfaces/token-details';\n\nimport { AppConfig } from '../interfaces/app-config';\nimport { FirebaseInternalDependencies } from '../interfaces/internal-dependencies';\n\nexport interface ApiResponse {\n token?: string;\n error?: { message: string };\n}\n\nexport interface ApiRequestBody {\n web: {\n endpoint: string;\n p256dh: string;\n auth: string;\n applicationPubKey?: string;\n };\n}\n\nexport async function requestGetToken(\n firebaseDependencies: FirebaseInternalDependencies,\n subscriptionOptions: SubscriptionOptions\n): Promise {\n const headers = await getHeaders(firebaseDependencies);\n const body = getBody(subscriptionOptions);\n\n const subscribeOptions = {\n method: 'POST',\n headers,\n body: JSON.stringify(body)\n };\n\n let responseData: ApiResponse;\n try {\n const response = await fetch(\n getEndpoint(firebaseDependencies.appConfig),\n subscribeOptions\n );\n responseData = await response.json();\n } catch (err) {\n throw ERROR_FACTORY.create(ErrorCode.TOKEN_SUBSCRIBE_FAILED, {\n errorInfo: err\n });\n }\n\n if (responseData.error) {\n const message = responseData.error.message;\n throw ERROR_FACTORY.create(ErrorCode.TOKEN_SUBSCRIBE_FAILED, {\n errorInfo: message\n });\n }\n\n if (!responseData.token) {\n throw ERROR_FACTORY.create(ErrorCode.TOKEN_SUBSCRIBE_NO_TOKEN);\n }\n\n return responseData.token;\n}\n\nexport async function requestUpdateToken(\n firebaseDependencies: FirebaseInternalDependencies,\n tokenDetails: TokenDetails\n): Promise {\n const headers = await getHeaders(firebaseDependencies);\n const body = getBody(tokenDetails.subscriptionOptions!);\n\n const updateOptions = {\n method: 'PATCH',\n headers,\n body: JSON.stringify(body)\n };\n\n let responseData: ApiResponse;\n try {\n const response = await fetch(\n `${getEndpoint(firebaseDependencies.appConfig)}/${tokenDetails.token}`,\n updateOptions\n );\n responseData = await response.json();\n } catch (err) {\n throw ERROR_FACTORY.create(ErrorCode.TOKEN_UPDATE_FAILED, {\n errorInfo: err\n });\n }\n\n if (responseData.error) {\n const message = responseData.error.message;\n throw ERROR_FACTORY.create(ErrorCode.TOKEN_UPDATE_FAILED, {\n errorInfo: message\n });\n }\n\n if (!responseData.token) {\n throw ERROR_FACTORY.create(ErrorCode.TOKEN_UPDATE_NO_TOKEN);\n }\n\n return responseData.token;\n}\n\nexport async function requestDeleteToken(\n firebaseDependencies: FirebaseInternalDependencies,\n token: string\n): Promise {\n const headers = await getHeaders(firebaseDependencies);\n\n const unsubscribeOptions = {\n method: 'DELETE',\n headers\n };\n\n try {\n const response = await fetch(\n `${getEndpoint(firebaseDependencies.appConfig)}/${token}`,\n unsubscribeOptions\n );\n const responseData: ApiResponse = await response.json();\n if (responseData.error) {\n const message = responseData.error.message;\n throw ERROR_FACTORY.create(ErrorCode.TOKEN_UNSUBSCRIBE_FAILED, {\n errorInfo: message\n });\n }\n } catch (err) {\n throw ERROR_FACTORY.create(ErrorCode.TOKEN_UNSUBSCRIBE_FAILED, {\n errorInfo: err\n });\n }\n}\n\nfunction getEndpoint({ projectId }: AppConfig): string {\n return `${ENDPOINT}/projects/${projectId!}/registrations`;\n}\n\nasync function getHeaders({\n appConfig,\n installations\n}: FirebaseInternalDependencies): Promise {\n const authToken = await installations.getToken();\n\n return new Headers({\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n 'x-goog-api-key': appConfig.apiKey!,\n 'x-goog-firebase-installations-auth': `FIS ${authToken}`\n });\n}\n\nfunction getBody({\n p256dh,\n auth,\n endpoint,\n vapidKey\n}: SubscriptionOptions): ApiRequestBody {\n const body: ApiRequestBody = {\n web: {\n endpoint,\n auth,\n p256dh\n }\n };\n\n if (vapidKey !== DEFAULT_VAPID_KEY) {\n body.web.applicationPubKey = vapidKey;\n }\n\n return body;\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { SubscriptionOptions, TokenDetails } from '../interfaces/token-details';\nimport {\n arrayToBase64,\n base64ToArray\n} from '../helpers/array-base64-translator';\nimport { dbGet, dbRemove, dbSet } from './idb-manager';\nimport {\n requestDeleteToken,\n requestGetToken,\n requestUpdateToken\n} from './requests';\n\nimport { FirebaseInternalDependencies } from '../interfaces/internal-dependencies';\nimport { MessagingService } from '../messaging-service';\n\n// UpdateRegistration will be called once every week.\nconst TOKEN_EXPIRATION_MS = 7 * 24 * 60 * 60 * 1000; // 7 days\n\nexport async function getTokenInternal(\n messaging: MessagingService\n): Promise {\n const pushSubscription = await getPushSubscription(\n messaging.swRegistration!,\n messaging.vapidKey!\n );\n\n const subscriptionOptions: SubscriptionOptions = {\n vapidKey: messaging.vapidKey!,\n swScope: messaging.swRegistration!.scope,\n endpoint: pushSubscription.endpoint,\n auth: arrayToBase64(pushSubscription.getKey('auth')!),\n p256dh: arrayToBase64(pushSubscription.getKey('p256dh')!)\n };\n\n const tokenDetails = await dbGet(messaging.firebaseDependencies);\n if (!tokenDetails) {\n // No token, get a new one.\n return getNewToken(messaging.firebaseDependencies, subscriptionOptions);\n } else if (\n !isTokenValid(tokenDetails.subscriptionOptions!, subscriptionOptions)\n ) {\n // Invalid token, get a new one.\n try {\n await requestDeleteToken(\n messaging.firebaseDependencies!,\n tokenDetails.token\n );\n } catch (e) {\n // Suppress errors because of #2364\n console.warn(e);\n }\n\n return getNewToken(messaging.firebaseDependencies!, subscriptionOptions);\n } else if (Date.now() >= tokenDetails.createTime + TOKEN_EXPIRATION_MS) {\n // Weekly token refresh\n return updateToken(messaging, {\n token: tokenDetails.token,\n createTime: Date.now(),\n subscriptionOptions\n });\n } else {\n // Valid token, nothing to do.\n return tokenDetails.token;\n }\n}\n\n/**\n * This method deletes the token from the database, unsubscribes the token from FCM, and unregisters\n * the push subscription if it exists.\n */\nexport async function deleteTokenInternal(\n messaging: MessagingService\n): Promise {\n const tokenDetails = await dbGet(messaging.firebaseDependencies);\n if (tokenDetails) {\n await requestDeleteToken(\n messaging.firebaseDependencies,\n tokenDetails.token\n );\n await dbRemove(messaging.firebaseDependencies);\n }\n\n // Unsubscribe from the push subscription.\n const pushSubscription =\n await messaging.swRegistration!.pushManager.getSubscription();\n if (pushSubscription) {\n return pushSubscription.unsubscribe();\n }\n\n // If there's no SW, consider it a success.\n return true;\n}\n\nasync function updateToken(\n messaging: MessagingService,\n tokenDetails: TokenDetails\n): Promise {\n try {\n const updatedToken = await requestUpdateToken(\n messaging.firebaseDependencies,\n tokenDetails\n );\n\n const updatedTokenDetails: TokenDetails = {\n ...tokenDetails,\n token: updatedToken,\n createTime: Date.now()\n };\n\n await dbSet(messaging.firebaseDependencies, updatedTokenDetails);\n return updatedToken;\n } catch (e) {\n await deleteTokenInternal(messaging);\n throw e;\n }\n}\n\nasync function getNewToken(\n firebaseDependencies: FirebaseInternalDependencies,\n subscriptionOptions: SubscriptionOptions\n): Promise {\n const token = await requestGetToken(\n firebaseDependencies,\n subscriptionOptions\n );\n const tokenDetails: TokenDetails = {\n token,\n createTime: Date.now(),\n subscriptionOptions\n };\n await dbSet(firebaseDependencies, tokenDetails);\n return tokenDetails.token;\n}\n\n/**\n * Gets a PushSubscription for the current user.\n */\nasync function getPushSubscription(\n swRegistration: ServiceWorkerRegistration,\n vapidKey: string\n): Promise {\n const subscription = await swRegistration.pushManager.getSubscription();\n if (subscription) {\n return subscription;\n }\n\n return swRegistration.pushManager.subscribe({\n userVisibleOnly: true,\n // Chrome <= 75 doesn't support base64-encoded VAPID key. For backward compatibility, VAPID key\n // submitted to pushManager#subscribe must be of type Uint8Array.\n applicationServerKey: base64ToArray(vapidKey)\n });\n}\n\n/**\n * Checks if the saved tokenDetails object matches the configuration provided.\n */\nfunction isTokenValid(\n dbOptions: SubscriptionOptions,\n currentOptions: SubscriptionOptions\n): boolean {\n const isVapidKeyEqual = currentOptions.vapidKey === dbOptions.vapidKey;\n const isEndpointEqual = currentOptions.endpoint === dbOptions.endpoint;\n const isAuthEqual = currentOptions.auth === dbOptions.auth;\n const isP256dhEqual = currentOptions.p256dh === dbOptions.p256dh;\n\n return isVapidKeyEqual && isEndpointEqual && isAuthEqual && isP256dhEqual;\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { MessagePayload } from '../interfaces/public-types';\nimport { MessagePayloadInternal } from '../interfaces/internal-message-payload';\n\nexport function externalizePayload(\n internalPayload: MessagePayloadInternal\n): MessagePayload {\n const payload: MessagePayload = {\n from: internalPayload.from,\n // eslint-disable-next-line camelcase\n collapseKey: internalPayload.collapse_key,\n // eslint-disable-next-line camelcase\n messageId: internalPayload.fcmMessageId\n } as MessagePayload;\n\n propagateNotificationPayload(payload, internalPayload);\n propagateDataPayload(payload, internalPayload);\n propagateFcmOptions(payload, internalPayload);\n\n return payload;\n}\n\nfunction propagateNotificationPayload(\n payload: MessagePayload,\n messagePayloadInternal: MessagePayloadInternal\n): void {\n if (!messagePayloadInternal.notification) {\n return;\n }\n\n payload.notification = {};\n\n const title = messagePayloadInternal.notification!.title;\n if (!!title) {\n payload.notification!.title = title;\n }\n\n const body = messagePayloadInternal.notification!.body;\n if (!!body) {\n payload.notification!.body = body;\n }\n\n const image = messagePayloadInternal.notification!.image;\n if (!!image) {\n payload.notification!.image = image;\n }\n}\n\nfunction propagateDataPayload(\n payload: MessagePayload,\n messagePayloadInternal: MessagePayloadInternal\n): void {\n if (!messagePayloadInternal.data) {\n return;\n }\n\n payload.data = messagePayloadInternal.data as { [key: string]: string };\n}\n\nfunction propagateFcmOptions(\n payload: MessagePayload,\n messagePayloadInternal: MessagePayloadInternal\n): void {\n if (!messagePayloadInternal.fcmOptions) {\n return;\n }\n\n payload.fcmOptions = {};\n\n const link = messagePayloadInternal.fcmOptions!.link;\n if (!!link) {\n payload.fcmOptions!.link = link;\n }\n\n // eslint-disable-next-line camelcase\n const analyticsLabel = messagePayloadInternal.fcmOptions!.analytics_label;\n if (!!analyticsLabel) {\n payload.fcmOptions!.analyticsLabel = analyticsLabel;\n }\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CONSOLE_CAMPAIGN_ID } from '../util/constants';\nimport { ConsoleMessageData } from '../interfaces/internal-message-payload';\n\nexport function isConsoleMessage(data: unknown): data is ConsoleMessageData {\n // This message has a campaign ID, meaning it was sent using the Firebase Console.\n return typeof data === 'object' && !!data && CONSOLE_CAMPAIGN_ID in data;\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n DEFAULT_BACKOFF_TIME_MS,\n EVENT_MESSAGE_DELIVERED,\n FCM_LOG_SOURCE,\n LOG_INTERVAL_IN_MS,\n MAX_NUMBER_OF_EVENTS_PER_LOG_REQUEST,\n MAX_RETRIES,\n MessageType,\n SDK_PLATFORM_WEB\n} from '../util/constants';\nimport {\n FcmEvent,\n LogEvent,\n LogRequest,\n LogResponse\n} from '../interfaces/logging-types';\n\nimport { MessagePayloadInternal } from '../interfaces/internal-message-payload';\nimport { MessagingService } from '../messaging-service';\n\nconst FIRELOG_ENDPOINT = _mergeStrings(\n 'hts/frbslgigp.ogepscmv/ieo/eaylg',\n 'tp:/ieaeogn-agolai.o/1frlglgc/o'\n);\n\nconst FCM_TRANSPORT_KEY = _mergeStrings(\n 'AzSCbw63g1R0nCw85jG8',\n 'Iaya3yLKwmgvh7cF0q4'\n);\n\nexport function startLoggingService(messaging: MessagingService): void {\n if (!messaging.isLogServiceStarted) {\n _processQueue(messaging, LOG_INTERVAL_IN_MS);\n messaging.isLogServiceStarted = true;\n }\n}\n\n/**\n *\n * @param messaging the messaging instance.\n * @param offsetInMs this method execute after `offsetInMs` elapsed .\n */\nexport function _processQueue(\n messaging: MessagingService,\n offsetInMs: number\n): void {\n setTimeout(async () => {\n if (!messaging.deliveryMetricsExportedToBigQueryEnabled) {\n // flush events and terminate logging service\n messaging.logEvents = [];\n messaging.isLogServiceStarted = false;\n\n return;\n }\n\n if (!messaging.logEvents.length) {\n return _processQueue(messaging, LOG_INTERVAL_IN_MS);\n }\n\n await _dispatchLogEvents(messaging);\n }, offsetInMs);\n}\n\nexport async function _dispatchLogEvents(\n messaging: MessagingService\n): Promise {\n for (\n let i = 0, n = messaging.logEvents.length;\n i < n;\n i += MAX_NUMBER_OF_EVENTS_PER_LOG_REQUEST\n ) {\n const logRequest = _createLogRequest(\n messaging.logEvents.slice(i, i + MAX_NUMBER_OF_EVENTS_PER_LOG_REQUEST)\n );\n\n let retryCount = 0,\n response = {} as Response;\n\n do {\n try {\n response = await fetch(\n FIRELOG_ENDPOINT.concat('?key=', FCM_TRANSPORT_KEY),\n {\n method: 'POST',\n body: JSON.stringify(logRequest)\n }\n );\n\n // don't retry on 200s or non retriable errors\n if (response.ok || (!response.ok && !isRetriableError(response))) {\n break;\n }\n\n if (!response.ok && isRetriableError(response)) {\n // rethrow to retry with quota\n throw new Error(\n 'a retriable Non-200 code is returned in fetch to Firelog endpoint. Retry'\n );\n }\n } catch (error) {\n const isLastAttempt = retryCount === MAX_RETRIES;\n if (isLastAttempt) {\n // existing the do-while interactive retry logic because retry quota has reached.\n break;\n }\n }\n\n let delayInMs: number;\n try {\n delayInMs = Number(\n ((await response.json()) as LogResponse).nextRequestWaitMillis\n );\n } catch (e) {\n delayInMs = DEFAULT_BACKOFF_TIME_MS;\n }\n\n await new Promise(resolve => setTimeout(resolve, delayInMs));\n\n retryCount++;\n } while (retryCount < MAX_RETRIES);\n }\n\n messaging.logEvents = [];\n // schedule for next logging\n _processQueue(messaging, LOG_INTERVAL_IN_MS);\n}\n\nfunction isRetriableError(response: Response): boolean {\n const httpStatus = response.status;\n\n return (\n httpStatus === 429 ||\n httpStatus === 500 ||\n httpStatus === 503 ||\n httpStatus === 504\n );\n}\n\nexport async function stageLog(\n messaging: MessagingService,\n internalPayload: MessagePayloadInternal\n): Promise {\n const fcmEvent = createFcmEvent(\n internalPayload,\n await messaging.firebaseDependencies.installations.getId()\n );\n\n createAndEnqueueLogEvent(messaging, fcmEvent);\n}\n\nfunction createFcmEvent(\n internalPayload: MessagePayloadInternal,\n fid: string\n): FcmEvent {\n const fcmEvent = {} as FcmEvent;\n\n /* eslint-disable camelcase */\n // some fields should always be non-null. Still check to ensure.\n if (!!internalPayload.from) {\n fcmEvent.project_number = internalPayload.from;\n }\n\n if (!!internalPayload.fcmMessageId) {\n fcmEvent.message_id = internalPayload.fcmMessageId;\n }\n\n fcmEvent.instance_id = fid;\n\n if (!!internalPayload.notification) {\n fcmEvent.message_type = MessageType.DISPLAY_NOTIFICATION.toString();\n } else {\n fcmEvent.message_type = MessageType.DATA_MESSAGE.toString();\n }\n\n fcmEvent.sdk_platform = SDK_PLATFORM_WEB.toString();\n fcmEvent.package_name = self.origin.replace(/(^\\w+:|^)\\/\\//, '');\n\n if (!!internalPayload.collapse_key) {\n fcmEvent.collapse_key = internalPayload.collapse_key;\n }\n\n fcmEvent.event = EVENT_MESSAGE_DELIVERED.toString();\n\n if (!!internalPayload.fcmOptions?.analytics_label) {\n fcmEvent.analytics_label = internalPayload.fcmOptions?.analytics_label;\n }\n\n /* eslint-enable camelcase */\n return fcmEvent;\n}\n\nfunction createAndEnqueueLogEvent(\n messaging: MessagingService,\n fcmEvent: FcmEvent\n): void {\n const logEvent = {} as LogEvent;\n\n /* eslint-disable camelcase */\n logEvent.event_time_ms = Math.floor(Date.now()).toString();\n logEvent.source_extension_json_proto3 = JSON.stringify(fcmEvent);\n // eslint-disable-next-line camelcase\n\n messaging.logEvents.push(logEvent);\n}\n\nexport function _createLogRequest(logEventQueue: LogEvent[]): LogRequest {\n const logRequest = {} as LogRequest;\n\n /* eslint-disable camelcase */\n logRequest.log_source = FCM_LOG_SOURCE.toString();\n logRequest.log_event = logEventQueue;\n /* eslint-enable camelcase */\n\n return logRequest;\n}\n\nexport function _mergeStrings(s1: string, s2: string): string {\n const resultArray = [];\n for (let i = 0; i < s1.length; i++) {\n resultArray.push(s1.charAt(i));\n if (i < s2.length) {\n resultArray.push(s2.charAt(i));\n }\n }\n\n return resultArray.join('');\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ERROR_FACTORY, ErrorCode } from '../util/errors';\nimport { FirebaseApp, FirebaseOptions } from '@firebase/app';\n\nimport { AppConfig } from '../interfaces/app-config';\nimport { FirebaseError } from '@firebase/util';\n\nexport function extractAppConfig(app: FirebaseApp): AppConfig {\n if (!app || !app.options) {\n throw getMissingValueError('App Configuration Object');\n }\n\n if (!app.name) {\n throw getMissingValueError('App Name');\n }\n\n // Required app config keys\n const configKeys: ReadonlyArray = [\n 'projectId',\n 'apiKey',\n 'appId',\n 'messagingSenderId'\n ];\n\n const { options } = app;\n for (const keyName of configKeys) {\n if (!options[keyName]) {\n throw getMissingValueError(keyName);\n }\n }\n\n return {\n appName: app.name,\n projectId: options.projectId!,\n apiKey: options.apiKey!,\n appId: options.appId!,\n senderId: options.messagingSenderId!\n };\n}\n\nfunction getMissingValueError(valueName: string): FirebaseError {\n return ERROR_FACTORY.create(ErrorCode.MISSING_APP_CONFIG_VALUES, {\n valueName\n });\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FirebaseApp, _FirebaseService } from '@firebase/app';\nimport { MessagePayload, NextFn, Observer } from './interfaces/public-types';\n\nimport { FirebaseAnalyticsInternalName } from '@firebase/analytics-interop-types';\nimport { FirebaseInternalDependencies } from './interfaces/internal-dependencies';\nimport { LogEvent } from './interfaces/logging-types';\nimport { Provider } from '@firebase/component';\nimport { _FirebaseInstallationsInternal } from '@firebase/installations';\nimport { extractAppConfig } from './helpers/extract-app-config';\n\nexport class MessagingService implements _FirebaseService {\n readonly app!: FirebaseApp;\n readonly firebaseDependencies!: FirebaseInternalDependencies;\n\n swRegistration?: ServiceWorkerRegistration;\n vapidKey?: string;\n // logging is only done with end user consent. Default to false.\n deliveryMetricsExportedToBigQueryEnabled: boolean = false;\n\n onBackgroundMessageHandler:\n | NextFn\n | Observer\n | null = null;\n\n onMessageHandler: NextFn | Observer | null =\n null;\n\n logEvents: LogEvent[] = [];\n isLogServiceStarted: boolean = false;\n\n constructor(\n app: FirebaseApp,\n installations: _FirebaseInstallationsInternal,\n analyticsProvider: Provider\n ) {\n const appConfig = extractAppConfig(app);\n\n this.firebaseDependencies = {\n app,\n appConfig,\n installations,\n analyticsProvider\n };\n }\n\n _delete(): Promise {\n return Promise.resolve();\n }\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DEFAULT_SW_PATH, DEFAULT_SW_SCOPE } from '../util/constants';\nimport { ERROR_FACTORY, ErrorCode } from '../util/errors';\n\nimport { MessagingService } from '../messaging-service';\n\nexport async function registerDefaultSw(\n messaging: MessagingService\n): Promise {\n try {\n messaging.swRegistration = await navigator.serviceWorker.register(\n DEFAULT_SW_PATH,\n {\n scope: DEFAULT_SW_SCOPE\n }\n );\n\n // The timing when browser updates sw when sw has an update is unreliable from experiment. It\n // leads to version conflict when the SDK upgrades to a newer version in the main page, but sw\n // is stuck with the old version. For example,\n // https://github.com/firebase/firebase-js-sdk/issues/2590 The following line reliably updates\n // sw if there was an update.\n messaging.swRegistration.update().catch(() => {\n /* it is non blocking and we don't care if it failed */\n });\n } catch (e) {\n throw ERROR_FACTORY.create(ErrorCode.FAILED_DEFAULT_REGISTRATION, {\n browserErrorMessage: e.message\n });\n }\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ERROR_FACTORY, ErrorCode } from '../util/errors';\n\nimport { MessagingService } from '../messaging-service';\nimport { registerDefaultSw } from './registerDefaultSw';\n\nexport async function updateSwReg(\n messaging: MessagingService,\n swRegistration?: ServiceWorkerRegistration | undefined\n): Promise {\n if (!swRegistration && !messaging.swRegistration) {\n await registerDefaultSw(messaging);\n }\n\n if (!swRegistration && !!messaging.swRegistration) {\n return;\n }\n\n if (!(swRegistration instanceof ServiceWorkerRegistration)) {\n throw ERROR_FACTORY.create(ErrorCode.INVALID_SW_REGISTRATION);\n }\n\n messaging.swRegistration = swRegistration;\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DEFAULT_VAPID_KEY } from '../util/constants';\nimport { MessagingService } from '../messaging-service';\n\nexport async function updateVapidKey(\n messaging: MessagingService,\n vapidKey?: string | undefined\n): Promise {\n if (!!vapidKey) {\n messaging.vapidKey = vapidKey;\n } else if (!messaging.vapidKey) {\n messaging.vapidKey = DEFAULT_VAPID_KEY;\n }\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ERROR_FACTORY, ErrorCode } from '../util/errors';\n\nimport { MessagingService } from '../messaging-service';\nimport { getTokenInternal } from '../internals/token-manager';\nimport { updateSwReg } from '../helpers/updateSwReg';\nimport { updateVapidKey } from '../helpers/updateVapidKey';\nimport { GetTokenOptions } from '../interfaces/public-types';\n\nexport async function getToken(\n messaging: MessagingService,\n options?: GetTokenOptions\n): Promise {\n if (!navigator) {\n throw ERROR_FACTORY.create(ErrorCode.AVAILABLE_IN_WINDOW);\n }\n\n if (Notification.permission === 'default') {\n await Notification.requestPermission();\n }\n\n if (Notification.permission !== 'granted') {\n throw ERROR_FACTORY.create(ErrorCode.PERMISSION_BLOCKED);\n }\n\n await updateVapidKey(messaging, options?.vapidKey);\n await updateSwReg(messaging, options?.serviceWorkerRegistration);\n\n return getTokenInternal(messaging);\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n CONSOLE_CAMPAIGN_ID,\n CONSOLE_CAMPAIGN_NAME,\n CONSOLE_CAMPAIGN_TIME\n} from '../util/constants';\nimport {\n ConsoleMessageData,\n MessageType\n} from '../interfaces/internal-message-payload';\n\nimport { MessagingService } from '../messaging-service';\n\nexport async function logToScion(\n messaging: MessagingService,\n messageType: MessageType,\n data: ConsoleMessageData\n): Promise {\n const eventType = getEventType(messageType);\n const analytics =\n await messaging.firebaseDependencies.analyticsProvider.get();\n analytics.logEvent(eventType, {\n /* eslint-disable camelcase */\n message_id: data[CONSOLE_CAMPAIGN_ID],\n message_name: data[CONSOLE_CAMPAIGN_NAME],\n message_time: data[CONSOLE_CAMPAIGN_TIME],\n message_device_time: Math.floor(Date.now() / 1000)\n /* eslint-enable camelcase */\n });\n}\n\nfunction getEventType(messageType: MessageType): string {\n switch (messageType) {\n case MessageType.NOTIFICATION_CLICKED:\n return 'notification_open';\n case MessageType.PUSH_RECEIVED:\n return 'notification_foreground';\n default:\n throw new Error();\n }\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n MessagePayloadInternal,\n MessageType\n} from '../interfaces/internal-message-payload';\n\nimport { CONSOLE_CAMPAIGN_ANALYTICS_ENABLED } from '../util/constants';\nimport { MessagingService } from '../messaging-service';\nimport { externalizePayload } from '../helpers/externalizePayload';\nimport { isConsoleMessage } from '../helpers/is-console-message';\nimport { logToScion } from '../helpers/logToScion';\n\nexport async function messageEventListener(\n messaging: MessagingService,\n event: MessageEvent\n): Promise {\n const internalPayload = event.data as MessagePayloadInternal;\n\n if (!internalPayload.isFirebaseMessaging) {\n return;\n }\n\n if (\n messaging.onMessageHandler &&\n internalPayload.messageType === MessageType.PUSH_RECEIVED\n ) {\n if (typeof messaging.onMessageHandler === 'function') {\n messaging.onMessageHandler(externalizePayload(internalPayload));\n } else {\n messaging.onMessageHandler.next(externalizePayload(internalPayload));\n }\n }\n\n // Log to Scion if applicable\n const dataPayload = internalPayload.data;\n if (\n isConsoleMessage(dataPayload) &&\n dataPayload[CONSOLE_CAMPAIGN_ANALYTICS_ENABLED] === '1'\n ) {\n await logToScion(messaging, internalPayload.messageType!, dataPayload);\n }\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n Component,\n ComponentContainer,\n ComponentType,\n InstanceFactory\n} from '@firebase/component';\nimport {\n onNotificationClick,\n onPush,\n onSubChange\n} from '../listeners/sw-listeners';\n\nimport { GetTokenOptions } from '../interfaces/public-types';\nimport { MessagingInternal } from '@firebase/messaging-interop-types';\nimport { MessagingService } from '../messaging-service';\nimport { ServiceWorkerGlobalScope } from '../util/sw-types';\nimport { _registerComponent, registerVersion } from '@firebase/app';\nimport { getToken } from '../api/getToken';\nimport { messageEventListener } from '../listeners/window-listener';\n\nimport { name, version } from '../../package.json';\n\nconst WindowMessagingFactory: InstanceFactory<'messaging'> = (\n container: ComponentContainer\n) => {\n const messaging = new MessagingService(\n container.getProvider('app').getImmediate(),\n container.getProvider('installations-internal').getImmediate(),\n container.getProvider('analytics-internal')\n );\n\n navigator.serviceWorker.addEventListener('message', e =>\n messageEventListener(messaging as MessagingService, e)\n );\n\n return messaging;\n};\n\nconst WindowMessagingInternalFactory: InstanceFactory<'messaging-internal'> = (\n container: ComponentContainer\n) => {\n const messaging = container\n .getProvider('messaging')\n .getImmediate() as MessagingService;\n\n const messagingInternal: MessagingInternal = {\n getToken: (options?: GetTokenOptions) => getToken(messaging, options)\n };\n\n return messagingInternal;\n};\n\ndeclare const self: ServiceWorkerGlobalScope;\nconst SwMessagingFactory: InstanceFactory<'messaging'> = (\n container: ComponentContainer\n) => {\n const messaging = new MessagingService(\n container.getProvider('app').getImmediate(),\n container.getProvider('installations-internal').getImmediate(),\n container.getProvider('analytics-internal')\n );\n\n self.addEventListener('push', e => {\n e.waitUntil(onPush(e, messaging as MessagingService));\n });\n self.addEventListener('pushsubscriptionchange', e => {\n e.waitUntil(onSubChange(e, messaging as MessagingService));\n });\n self.addEventListener('notificationclick', e => {\n e.waitUntil(onNotificationClick(e));\n });\n\n return messaging;\n};\n\nexport function registerMessagingInWindow(): void {\n _registerComponent(\n new Component('messaging', WindowMessagingFactory, ComponentType.PUBLIC)\n );\n\n _registerComponent(\n new Component(\n 'messaging-internal',\n WindowMessagingInternalFactory,\n ComponentType.PRIVATE\n )\n );\n\n registerVersion(name, version);\n // BUILD_TARGET will be replaced by values like esm5, esm2017, cjs5, etc during the compilation\n registerVersion(name, version, '__BUILD_TARGET__');\n}\n\n/**\n * The messaging instance registered in sw is named differently than that of in client. This is\n * because both `registerMessagingInWindow` and `registerMessagingInSw` would be called in\n * `messaging-compat` and component with the same name can only be registered once.\n */\nexport function registerMessagingInSw(): void {\n _registerComponent(\n new Component('messaging-sw', SwMessagingFactory, ComponentType.PUBLIC)\n );\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n areCookiesEnabled,\n isIndexedDBAvailable,\n validateIndexedDBOpenable\n} from '@firebase/util';\n\n/**\n * Checks if all required APIs exist in the browser.\n * @returns a Promise that resolves to a boolean.\n *\n * @public\n */\nexport async function isWindowSupported(): Promise {\n try {\n // This throws if open() is unsupported, so adding it to the conditional\n // statement below can cause an uncaught error.\n await validateIndexedDBOpenable();\n } catch (e) {\n return false;\n }\n // firebase-js-sdk/issues/2393 reveals that idb#open in Safari iframe and Firefox private browsing\n // might be prohibited to run. In these contexts, an error would be thrown during the messaging\n // instantiating phase, informing the developers to import/call isSupported for special handling.\n return (\n typeof window !== 'undefined' &&\n isIndexedDBAvailable() &&\n areCookiesEnabled() &&\n 'serviceWorker' in navigator &&\n 'PushManager' in window &&\n 'Notification' in window &&\n 'fetch' in window &&\n ServiceWorkerRegistration.prototype.hasOwnProperty('showNotification') &&\n PushSubscription.prototype.hasOwnProperty('getKey')\n );\n}\n\n/**\n * Checks whether all required APIs exist within SW Context\n * @returns a Promise that resolves to a boolean.\n *\n * @public\n */\nexport async function isSwSupported(): Promise {\n // firebase-js-sdk/issues/2393 reveals that idb#open in Safari iframe and Firefox private browsing\n // might be prohibited to run. In these contexts, an error would be thrown during the messaging\n // instantiating phase, informing the developers to import/call isSupported for special handling.\n return (\n isIndexedDBAvailable() &&\n (await validateIndexedDBOpenable()) &&\n 'PushManager' in self &&\n 'Notification' in self &&\n ServiceWorkerRegistration.prototype.hasOwnProperty('showNotification') &&\n PushSubscription.prototype.hasOwnProperty('getKey')\n );\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ERROR_FACTORY, ErrorCode } from './util/errors';\nimport { FirebaseApp, _getProvider, getApp } from '@firebase/app';\nimport {\n GetTokenOptions,\n MessagePayload,\n Messaging\n} from './interfaces/public-types';\nimport {\n NextFn,\n Observer,\n Unsubscribe,\n getModularInstance\n} from '@firebase/util';\nimport { isSwSupported, isWindowSupported } from './api/isSupported';\n\nimport { MessagingService } from './messaging-service';\nimport { deleteToken as _deleteToken } from './api/deleteToken';\nimport { getToken as _getToken } from './api/getToken';\nimport { onBackgroundMessage as _onBackgroundMessage } from './api/onBackgroundMessage';\nimport { onMessage as _onMessage } from './api/onMessage';\nimport { _setDeliveryMetricsExportedToBigQueryEnabled } from './api/setDeliveryMetricsExportedToBigQueryEnabled';\n\n/**\n * Retrieves a Firebase Cloud Messaging instance.\n *\n * @returns The Firebase Cloud Messaging instance associated with the provided firebase app.\n *\n * @public\n */\nexport function getMessagingInWindow(app: FirebaseApp = getApp()): Messaging {\n // Conscious decision to make this async check non-blocking during the messaging instance\n // initialization phase for performance consideration. An error would be thrown latter for\n // developer's information. Developers can then choose to import and call `isSupported` for\n // special handling.\n isWindowSupported().then(\n isSupported => {\n // If `isWindowSupported()` resolved, but returned false.\n if (!isSupported) {\n throw ERROR_FACTORY.create(ErrorCode.UNSUPPORTED_BROWSER);\n }\n },\n _ => {\n // If `isWindowSupported()` rejected.\n throw ERROR_FACTORY.create(ErrorCode.INDEXED_DB_UNSUPPORTED);\n }\n );\n return _getProvider(getModularInstance(app), 'messaging').getImmediate();\n}\n\n/**\n * Retrieves a Firebase Cloud Messaging instance.\n *\n * @returns The Firebase Cloud Messaging instance associated with the provided firebase app.\n *\n * @public\n */\nexport function getMessagingInSw(app: FirebaseApp = getApp()): Messaging {\n // Conscious decision to make this async check non-blocking during the messaging instance\n // initialization phase for performance consideration. An error would be thrown latter for\n // developer's information. Developers can then choose to import and call `isSupported` for\n // special handling.\n isSwSupported().then(\n isSupported => {\n // If `isSwSupported()` resolved, but returned false.\n if (!isSupported) {\n throw ERROR_FACTORY.create(ErrorCode.UNSUPPORTED_BROWSER);\n }\n },\n _ => {\n // If `isSwSupported()` rejected.\n throw ERROR_FACTORY.create(ErrorCode.INDEXED_DB_UNSUPPORTED);\n }\n );\n return _getProvider(getModularInstance(app), 'messaging-sw').getImmediate();\n}\n\n/**\n * Subscribes the {@link Messaging} instance to push notifications. Returns an Firebase Cloud\n * Messaging registration token that can be used to send push messages to that {@link Messaging}\n * instance.\n *\n * If a notification permission isn't already granted, this method asks the user for permission. The\n * returned promise rejects if the user does not allow the app to show notifications.\n *\n * @param messaging - The {@link Messaging} instance.\n * @param options - Provides an optional vapid key and an optinoal service worker registration\n *\n * @returns The promise resolves with an FCM registration token.\n *\n * @public\n */\nexport async function getToken(\n messaging: Messaging,\n options?: GetTokenOptions\n): Promise {\n messaging = getModularInstance(messaging);\n return _getToken(messaging as MessagingService, options);\n}\n\n/**\n * Deletes the registration token associated with this {@link Messaging} instance and unsubscribes\n * the {@link Messaging} instance from the push subscription.\n *\n * @param messaging - The {@link Messaging} instance.\n *\n * @returns The promise resolves when the token has been successfully deleted.\n *\n * @public\n */\nexport function deleteToken(messaging: Messaging): Promise {\n messaging = getModularInstance(messaging);\n return _deleteToken(messaging as MessagingService);\n}\n\n/**\n * When a push message is received and the user is currently on a page for your origin, the\n * message is passed to the page and an `onMessage()` event is dispatched with the payload of\n * the push message.\n *\n *\n * @param messaging - The {@link Messaging} instance.\n * @param nextOrObserver - This function, or observer object with `next` defined,\n * is called when a message is received and the user is currently viewing your page.\n * @returns To stop listening for messages execute this returned function.\n *\n * @public\n */\nexport function onMessage(\n messaging: Messaging,\n nextOrObserver: NextFn | Observer\n): Unsubscribe {\n messaging = getModularInstance(messaging);\n return _onMessage(messaging as MessagingService, nextOrObserver);\n}\n\n/**\n * Called when a message is received while the app is in the background. An app is considered to be\n * in the background if no active window is displayed.\n *\n * @param messaging - The {@link Messaging} instance.\n * @param nextOrObserver - This function, or observer object with `next` defined, is called when a\n * message is received and the app is currently in the background.\n *\n * @returns To stop listening for messages execute this returned function\n *\n * @public\n */\nexport function onBackgroundMessage(\n messaging: Messaging,\n nextOrObserver: NextFn | Observer\n): Unsubscribe {\n messaging = getModularInstance(messaging);\n return _onBackgroundMessage(messaging as MessagingService, nextOrObserver);\n}\n\n/**\n * Enables or disables Firebase Cloud Messaging message delivery metrics export to BigQuery. By\n * default, message delivery metrics are not exported to BigQuery. Use this method to enable or\n * disable the export at runtime.\n *\n * @param messaging - The `FirebaseMessaging` instance.\n * @param enable - Whether Firebase Cloud Messaging should export message delivery metrics to\n * BigQuery.\n *\n * @public\n */\nexport function experimentalSetDeliveryMetricsExportedToBigQueryEnabled(\n messaging: Messaging,\n enable: boolean\n): void {\n messaging = getModularInstance(messaging);\n return _setDeliveryMetricsExportedToBigQueryEnabled(messaging, enable);\n}\n","import { initializeApp } from \"firebase/app\";\nimport {\n FacebookAuthProvider,\n getAuth,\n getRedirectResult,\n GoogleAuthProvider,\n OAuthProvider,\n signInWithPopup,\n signInWithRedirect,\n} from \"firebase/auth\";\nimport { getMessaging, getToken, onMessage } from \"firebase/messaging\";\n\n// jc-app\nconst firebaseConfig = {\n apiKey: \"AIzaSyAlSVwxlbxHXbVfPmCHQNp-jrtDkRalUqw\",\n authDomain: \"juliettecleaners.firebaseapp.com\",\n projectId: \"juliettecleaners\",\n storageBucket: \"juliettecleaners.appspot.com\",\n messagingSenderId: \"83154822362\",\n appId: \"1:83154822362:web:8b1a0ea2b2d18c0570b1e3\",\n measurementId: \"G-DLZRQPPR6P\",\n};\n\nexport const firebase_app = initializeApp(firebaseConfig);\n\nconst auth = getAuth();\nconst facebook_provider = new FacebookAuthProvider();\nconst linkedin_provider = new OAuthProvider(\"microsoft.com\");\nconst google_provider = new GoogleAuthProvider();\nconst apple_provider = new OAuthProvider(\"apple.com\");\nconst messaging = getMessaging(firebase_app);\n\n// google signin popup\nexport const SigninWithFirebase = (login_id, setemail, setothers, setname) => {\n // if (login_id != 2) return;\n // let data = {\n // token: \"\",\n // others: {},\n // };\n // console.log(['facebook_provider', 'linkedin_provider', 'google_provider', 'apple_provider'][login_id]);\n signInWithPopup(\n // signInWithRedirect(\n auth,\n [facebook_provider, linkedin_provider, google_provider, apple_provider][login_id]\n )\n .then(async (res) => {\n // This gives you a Google Access Token. You can use it to access the Google API.\n // console.log(\"result\", res);\n let credential;\n // [0:facebook,1:]\n switch (login_id) {\n case 0:\n credential = FacebookAuthProvider.credentialFromResult(res);\n break;\n case 1:\n facebook_provider.addScope(\"public_profile\");\n credential = OAuthProvider.credentialFromResult(res);\n // provider.addScope(\"displayName\");\n // console.log(\"credential.public_profile\", credential.public_profile);\n break;\n case 2:\n credential = GoogleAuthProvider.credentialFromResult(res);\n break;\n case 3:\n apple_provider.addScope('email');\n apple_provider.addScope('name');\n credential = OAuthProvider.credentialFromResult(res);\n break;\n default:\n return;\n break;\n }\n // console.log(\"result,crediatial\", res, credential);\n const token = credential.accessToken;\n // The signed-in user info.\n const user = res.user;\n setemail(user.email);\n setname && setname(user.displayName);\n // firebase token to send to back end\n // console.log(auth.currentUser.getIdToken(true));\n // // auth.currentUser.getIdToken(true).then(data => console.log('auth_token', data));\n return {\n // token: credential.accessToken,\n token: await auth.currentUser.getIdToken(true),\n others: res,\n };\n })\n .then((data) => {\n setothers(false, data);\n })\n .catch((error) => {\n // console.log(error);\n // data.error = true;\n setothers(true, error);\n // const errorCode = error.code;\n // const errorMessage = error.message;\n // // The email of the user's account used.\n // const email = error.customData.email;\n // // The AuthCredential type that was used.\n // const credential = GoogleAuthProvider.credentialFromError(error);\n });\n // return data;\n return;\n};\n\n// check current user thtas signed in\nexport const check_user_signin = () => {\n const user = auth.currentUser;\n // console.log('user', user);\n return user;\n};\n\nexport const getToken1 = (setTokenFound) => {\n return getToken(messaging, {\n vapidKey:\n \"BG0V9Ys-nIeoFZodrJZuzLh91m00VPNqumsdrpEH_K3uvIdQtgW1dSe29itKRx3okyj338u--OqKfuK2MSjUJeU\",\n })\n .then((currentToken) => {\n if (currentToken) {\n // console.log(\"current token for client: \", currentToken);\n setTokenFound(true);\n // Track the token -> client mapping, by sending to backend server\n // show on the UI that permission is secured\n } else {\n // console.log(\n // \"No registration token available. Request permission to generate one.\"\n // );\n setTokenFound(false);\n // shows on the UI that permission is required\n }\n })\n .catch((err) => {\n // console.log(\"An error occurred while retrieving token. \", err);\n // catch error while creating client token\n });\n};\n","import axios from \"axios\";\n// temporary@12345\n// temporary@123456\n// ppunitesh@gmail.com\n// punitesh@siti-solutions.com\nconst url = \"https://api.juliettecleaners.com/\";\n// const url = \"https://ff9a-122-50-197-91.in.ngrok.io/\";\n// const url = 'https://1e3b-182-48-201-241.in.ngrok.io/'\nconst base_url = `${url}api/clients/v1/`;\n// const base_url = `${url}api/pos/v1/`\nconst end_point = {\n SignUp: \"sign-up\",\n SignIn: \"login\",\n Ver̥ifyPassword: \"verify-password\",\n VerifyToken: \"verify-token\",\n SendSmsOtp: \"send-sms-otp\",\n ResendSmsOtp: \"resend-sms-otp\",\n VerifySmsOtp: \"verify-sms-otp\",\n EditPassword: \"edit-password\",\n EditEmail: \"edit-email\",\n // not done - phone\n EditPhone: \"edit-phone\",\n EditImage: \"edit-image\",\n EditName: \"edit-name\",\n AddAddress: \"add-address\",\n EditAddress: \"edit-address\",\n AddCard: \"add-card\",\n DeleteAddress: \"delete-address\",\n DeleteImage: \"delete-image\",\n DeleteCard: \"delete-card\",\n SetDefaultAddress: \"set-default-address\",\n SetDoorman: \"set-doorman\",\n SetDefaultCard: \"set-default-card\",\n GetProfile: \"my-profile\",\n SendEmailOtp: \"send-email-otp\",\n ResendEmailOtp: \"resend-email-otp\",\n VerifyEmailOtp: \"verify-email-otp\",\n GetAddressArray: \"my-addresses\",\n RequestPickup: \"request-pickup\",\n // not integrated as it need to be after my-order\n CancelOrder: \"cancel-pickup\",\n GetOrder: \"get-orders\",\n GetOrderById: \"get-order-by-id\",\n ResetPassword: \"reset-password\",\n GetOrderImages: \"get-order-images\",\n GetPricelist: \"get-price-list\",\n // order-items api\n GetOrderFiledata: \"get-order-filedata\",\n\n GetFaq: \"get-faq\",\n};\n\nconst convert_phone_simple = (phone_no) => {\n let phone_no_withoutextra = phone_no.split(\" \");\n phone_no_withoutextra.shift();\n phone_no_withoutextra = `1${phone_no_withoutextra.join(\"\")}`;\n return phone_no_withoutextra;\n};\n\nexport const send_sms_otp = async (phone_no, callback) => {\n // return callback(\n // {\n // // otp:'583130',\n // status: true,\n // msg: 'otp sent locally'\n // }\n // )\n\n // 9159969739 - 583130\n // 7864206154 - 848864\n axios\n .post(`${base_url}${end_point.SendSmsOtp}`, {\n mobile: convert_phone_simple(phone_no),\n })\n .then((response) => response.data)\n .then((response) => {\n // console.log('send_otp_response', response);\n if (response.error) {\n return callback({\n status: false,\n msg: response.error,\n });\n }\n return callback({\n status: true,\n msg: response.message,\n });\n });\n};\nexport const verify_sms_otp = ({ phone_no, otp }, callback) => {\n // return callback(\n // {\n // status: true,\n // }\n // )\n axios\n .post(`${base_url}${end_point.VerifySmsOtp}`, {\n mobile: convert_phone_simple(phone_no),\n otp: otp,\n })\n .then((response) => response.data)\n .then((response) => {\n if (response.error) {\n return callback({\n status: false,\n msg: response.error,\n });\n }\n\n if (response.otpVerified) {\n return callback({\n status: true,\n msg: response.token,\n });\n } else {\n return callback({\n status: false,\n msg: response,\n });\n }\n });\n};\nexport const resend_sms_otp = (phone_no, callback) => {\n axios\n .post(`${base_url}${end_point.ResendSmsOtp}`, {\n mobile: convert_phone_simple(phone_no),\n })\n .then((response) => response.data)\n .then((response) => {\n if (response.error) {\n return callback({\n status: false,\n msg: response.error,\n });\n }\n return callback({\n status: true,\n msg: response.message,\n });\n });\n};\nconst sign_up_errors = [\n // user already\n \"Insert Query Client Failed\",\n];\nexport const sign_up = (signup_data, callback) => {\n // console.log(signup_data);\n let user_signup_data = {\n ...signup_data,\n // email: 'temp2@mail.com'\n };\n if (signup_data.phone) {\n user_signup_data = {\n ...user_signup_data,\n phone: convert_phone_simple(signup_data.phone),\n };\n }\n axios\n .post(`${base_url}${end_point.SignUp}`, {\n ...user_signup_data,\n })\n .then((response) => response.data)\n .then((response) => {\n if (!response.token || response.error) {\n return callback({\n status: false,\n msg: response.error,\n error_card: response.invalidCard == true,\n });\n }\n localStorage.setItem(\"juliette_user_token\", response.token);\n return callback({\n status: true,\n msg: response,\n });\n callback(response);\n });\n // {\n // \"token\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6InRlbXAxQG1haWwuY29tIiwiaWQiOjEzLCJpYXQiOjE2NTY1MzM3NDN9.jEUH_k1Da6vtcNJWKaAwy3DVtBwDAZhyU1lQAiOz8K8\",\n // \"status\": \"Client added succesfully\"\n // }\n};\n\nexport const sign_in = (sign_in_data, callback) => {\n axios\n .post(`${base_url}${end_point.SignIn}`, {\n ...sign_in_data,\n })\n .then((response) => response.data)\n .then((response) => {\n // console.log('login_api', response);\n if (response.error) {\n return callback({\n status: false,\n });\n }\n localStorage.setItem(\"juliette_user_token\", response.token);\n return callback({\n status: true,\n token: response.token,\n });\n });\n // return\n};\nexport const verify_local_token = (token, callback) => {\n axios\n .post(\n `${base_url}${end_point.VerifyToken}`,\n {},\n {\n headers: {\n Authorization: token,\n },\n }\n )\n .then((response) => response.data)\n .then((response) => {\n // console.log(response);\n if (response.error) {\n localStorage.removeItem(\"juliette_user_token\");\n return callback({\n status: false,\n });\n }\n return callback({\n status: true,\n token: token,\n });\n });\n};\nexport const get_add = (token, callback) => {\n // console.log('my address', token);\n axios\n .post(\n `${base_url}${end_point.GetAddressArray}`,\n {},\n {\n headers: {\n Authorization: token,\n },\n }\n )\n .then((response) => response.data)\n .then((response) => {\n if (response.error) {\n localStorage.removeItem(\"juliette_user_token\");\n return callback({\n status: false,\n });\n }\n return callback({\n status: true,\n msg: response,\n });\n });\n};\nexport const request_pickup = (request_pickup_data, token, callback) => {\n axios\n .post(\n `${base_url}${end_point.RequestPickup}`,\n { ...request_pickup_data },\n {\n headers: {\n Authorization: token,\n },\n }\n )\n .then((response) => response.data)\n .then((response) => {\n // callback({\n // status: false\n // })\n // console.log('request_pickup api',response);\n if (response.error) {\n return callback({\n status: false,\n });\n }\n return callback({\n status: true,\n msg: response.order_id,\n });\n });\n};\nexport const cancel_order = (order_id, token, callback) => {\n axios\n .post(\n `${base_url}${end_point.CancelOrder}`,\n { order_id: order_id },\n {\n headers: {\n Authorization: token,\n },\n }\n )\n .then((response) => response.data)\n .then((response) => {\n if (response.error) {\n return callback({\n status: false,\n });\n }\n return callback({\n status: true,\n msg: response.status,\n });\n });\n};\nexport const get_profile = (token, callback) => {\n axios\n .post(\n `${base_url}${end_point.GetProfile}`,\n {},\n {\n headers: {\n Authorization: token,\n },\n }\n )\n .then((response) => response.data)\n .then((response) => {\n // console.log(response);\n if (response.error) {\n return callback({\n status: false,\n });\n }\n return callback({\n status: true,\n msg: response,\n });\n });\n};\nexport const change_profile_image = (photo_base64, token, callback) => {\n axios\n .post(\n `${base_url}${end_point.EditImage}`,\n {\n base64: photo_base64.split(\",\")[1],\n },\n {\n headers: {\n Authorization: token,\n },\n }\n )\n .then((response) => response.data)\n .then((response) => {\n // console.log(response);\n if (response.error) {\n return callback({\n status: false,\n });\n }\n return callback({\n status: true,\n msg: response.profile_photo,\n });\n })\n .catch((err) => {\n return callback({\n status: false,\n img_error: true,\n });\n });\n};\nexport const delete_profile_image = (photo_base64, token, callback) => {\n axios\n .post(\n `${base_url}${end_point.DeleteImage}`,\n {},\n {\n headers: {\n Authorization: token,\n },\n }\n )\n .then((response) => response.data)\n .then((response) => {\n // console.log(response);\n if (response.error) {\n return callback({\n status: false,\n });\n }\n return callback({\n status: true,\n msg: response.profile_photo,\n });\n })\n .catch((err) => {\n return callback({\n status: false,\n img_error: true,\n });\n });\n};\nexport const verify_password = (password, token, callback) => {\n axios\n .post(\n `${base_url}${end_point.Ver̥ifyPassword}`,\n {\n password: password,\n },\n {\n headers: {\n Authorization: token,\n },\n }\n )\n .then((response) => response.data)\n .then((response) => {\n // console.log(response);\n if (response.error) {\n return callback({\n status: false,\n });\n }\n return callback({\n status: true,\n msg: response,\n });\n });\n // .catch(err => {\n // return callback({\n // status: false,\n // img_error: true\n // })\n // })\n};\nexport const edit_name = (user_token, temp_token, new_name, callback) => {\n axios\n .post(\n `${base_url}${end_point.EditName}`,\n {\n token: temp_token,\n name: new_name,\n },\n {\n headers: {\n Authorization: user_token,\n },\n }\n )\n .then((response) => response.data)\n .then((response) => {\n // console.log(response);\n if (response.error) {\n return callback({\n status: false,\n });\n }\n return callback({\n status: true,\n msg: response.name,\n });\n });\n};\nexport const send_email_otp = (email_otp_obj, user_token, callback) => {\n axios\n .post(\n `${base_url}${end_point.SendEmailOtp}`,\n {\n ...email_otp_obj,\n },\n {\n headers: {\n Authorization: user_token,\n },\n }\n )\n .then((response) => response.data)\n .then((response) => {\n // console.log(response);\n if (response.error) {\n return callback({\n status: false,\n msg: response.error,\n });\n }\n return callback({\n status: true,\n msg: response,\n });\n });\n};\nexport const just_verify_email = (verify_email_obj, user_token, callback) => {\n axios\n .post(\n `${base_url}${end_point.VerifyEmailOtp}`,\n {\n ...verify_email_obj,\n id: \"\",\n },\n {\n headers: {\n Authorization: user_token,\n },\n }\n )\n .then((response) => response.data)\n .then((response) => {\n // console.log(response);\n if (response.error) {\n return callback({\n status: false,\n });\n }\n if (response.otpVerified == false) {\n return callback({\n status: true,\n otp_error: true,\n });\n }\n return callback({\n status: true,\n msg: response,\n });\n });\n};\nexport const verify_email = (verify_email_obj, user_token, callback) => {\n axios\n .post(\n `${base_url}${end_point.VerifyEmailOtp}`,\n {\n ...verify_email_obj,\n id: \"\",\n },\n {\n headers: {\n Authorization: user_token,\n },\n }\n )\n .then((response) => response.data)\n .then((response) => {\n // console.log(response);\n if (response.error) {\n return callback({\n status: false,\n });\n }\n if (response.otpVerified == false) {\n return callback({\n status: true,\n otp_error: true,\n });\n }\n axios\n .post(\n `${base_url}${end_point.EditEmail}`,\n {\n email: verify_email_obj.email,\n token: response.token,\n id: verify_email_obj.id,\n },\n {\n headers: {\n Authorization: user_token,\n },\n }\n )\n .then((response) => response.data)\n .then((response) => {\n if (response.error) {\n return callback({\n status: false,\n });\n }\n return callback(response);\n });\n });\n};\nexport const resend_email_otp = (email_otp_obj, user_token, callback) => {\n axios\n .post(\n `${base_url}${end_point.ResendEmailOtp}`,\n {\n ...email_otp_obj,\n },\n {\n headers: {\n Authorization: user_token,\n },\n }\n )\n .then((response) => response.data)\n .then((response) => {\n // console.log(response);\n if (response.error) {\n return callback({\n status: false,\n });\n }\n return callback({\n status: true,\n msg: response,\n });\n });\n};\n\nexport const edit_password = (password_obj, user_token, callback) => {\n axios\n .post(\n `${base_url}${end_point.EditPassword}`,\n {\n ...password_obj,\n },\n {\n headers: {\n Authorization: user_token,\n },\n }\n )\n .then((response) => response.data)\n .then((response) => {\n // console.log(response);\n if (response.error) {\n return callback({\n status: false,\n });\n }\n return callback({\n status: true,\n msg: response.password_length,\n });\n });\n};\nexport const edit_phone = (token, phone, user_token, callback) => {\n axios\n .post(\n `${base_url}${end_point.EditPhone}`,\n {\n token: token,\n phone: convert_phone_simple(phone),\n },\n {\n headers: {\n Authorization: user_token,\n },\n }\n )\n .then((response) => response.data)\n .then((response) => {\n // console.log(response);\n if (response.error) {\n return callback({\n status: false,\n });\n }\n return callback({\n status: true,\n msg: response,\n });\n });\n};\nexport const add_address = (add_obj, user_token, callback) => {\n axios\n .post(\n `${base_url}${end_point.AddAddress}`,\n {\n ...add_obj,\n },\n {\n headers: {\n Authorization: user_token,\n },\n }\n )\n .then((response) => response.data)\n .then((response) => {\n // console.log(response);\n if (response.error) {\n return callback({\n status: false,\n });\n }\n return callback({\n status: true,\n msg: response.address,\n });\n });\n};\nexport const edit_address = (add_obj, user_token, callback) => {\n // console.log('edit address', add_obj);\n axios\n .post(\n `${base_url}${end_point.EditAddress}`,\n {\n ...add_obj,\n },\n {\n headers: {\n Authorization: user_token,\n },\n }\n )\n .then((response) => response.data)\n .then((response) => {\n // console.log(response);\n if (response.error) {\n return callback({\n status: false,\n });\n }\n return callback({\n status: true,\n msg: response.address,\n });\n });\n};\nexport const edit_default_address = (add_id, user_token, callback) => {\n axios\n .post(\n `${base_url}${end_point.SetDefaultAddress}`,\n {\n address_id: add_id,\n },\n {\n headers: {\n Authorization: user_token,\n },\n }\n )\n .then((response) => response.data)\n .then((response) => {\n // console.log(response);\n if (response.error) {\n return callback({\n status: false,\n });\n }\n return callback({\n status: true,\n msg: response.address,\n });\n });\n};\nexport const edit_doorman = (doorman_obj, user_token, callback) => {\n axios\n .post(\n `${base_url}${end_point.SetDoorman}`,\n {\n address_id: doorman_obj.id,\n doorman: doorman_obj.doorman ? \"1\" : \"0\",\n },\n {\n headers: {\n Authorization: user_token,\n },\n }\n )\n .then((response) => response.data)\n .then((response) => {\n // console.log(response);\n if (response.error) {\n return callback({\n status: false,\n });\n }\n return callback({\n status: true,\n msg: response.address,\n });\n });\n};\nexport const add_card = (card_obj, user_token, callback) => {\n axios\n .post(\n `${base_url}${end_point.AddCard}`,\n {\n ...card_obj,\n },\n {\n headers: {\n Authorization: user_token,\n },\n }\n )\n .then((response) => response.data)\n .then((response) => {\n // console.log(response);\n if (response.error) {\n if (response.error === \"Invalid Card\") {\n return callback({\n status: true,\n card_err: \"Invalid Card\",\n });\n }\n return callback({\n status: false,\n });\n }\n return callback({\n status: true,\n msg: response.cards,\n });\n });\n};\nexport const edit_default_card = (card_id, user_token, callback) => {\n axios\n .post(\n `${base_url}${end_point.SetDefaultCard}`,\n {\n card_id: card_id,\n },\n {\n headers: {\n Authorization: user_token,\n },\n }\n )\n .then((response) => response.data)\n .then((response) => {\n // console.log(response);\n if (response.error) {\n return callback({\n status: false,\n });\n }\n return callback({\n status: true,\n msg: response.cards,\n });\n });\n};\nexport const delete_address = (add_id, user_token, callback) => {\n axios\n .post(\n `${base_url}${end_point.DeleteAddress}`,\n {\n address_id: add_id,\n },\n {\n headers: {\n Authorization: user_token,\n },\n }\n )\n .then((response) => response.data)\n .then((response) => {\n // console.log(response);\n if (response.error) {\n return callback({\n status: false,\n });\n }\n return callback({\n status: true,\n msg: response.address,\n });\n });\n};\nexport const delete_card = (card_id, user_token, callback) => {\n axios\n .post(\n `${base_url}${end_point.DeleteCard}`,\n {\n card_id: card_id,\n },\n {\n headers: {\n Authorization: user_token,\n },\n }\n )\n .then((response) => response.data)\n .then((response) => {\n // console.log(response);\n if (response.error) {\n return callback({\n status: false,\n });\n }\n return callback({\n status: true,\n msg: response.cards,\n });\n });\n};\nexport const get_order = (user_token, callback) => {\n axios\n .post(\n `${base_url}${end_point.GetOrder}`,\n {},\n {\n headers: {\n Authorization: user_token,\n },\n }\n )\n .then((response) => response.data)\n .then((response) => {\n // console.log(response);\n if (response.error) {\n return callback({\n status: false,\n });\n }\n return callback({\n status: true,\n msg: response,\n });\n });\n};\nexport const get_order_by_id = (id, user_token, callback) => {\n axios\n .post(\n `${base_url}${end_point.GetOrderById}`,\n {\n id: id,\n },\n {\n headers: {\n Authorization: user_token,\n },\n }\n )\n .then((response) => response.data)\n .then((response) => {\n console.log(response);\n if (response.error) {\n return callback({\n status: false,\n });\n }\n return callback({\n status: true,\n msg: response,\n });\n });\n};\nexport const reset_password = (password_obj, user_token, callback) => {\n axios\n .post(\n `${base_url}${end_point.ResetPassword}`,\n {\n ...password_obj,\n },\n {\n headers: {\n Authorization: \"\",\n },\n }\n )\n .then((response) => response.data)\n .then((response) => {\n // console.log(response);\n if (response.error) {\n return callback({\n status: false,\n });\n }\n return callback({\n status: true,\n msg: response,\n });\n });\n};\nexport const get_order_images = (order_id, user_token, callback) => {\n axios\n .post(\n `${base_url}${end_point.GetOrderImages}`,\n { order_id: order_id },\n {\n headers: {\n Authorization: user_token,\n },\n }\n )\n .then((response) => response.data)\n .then((response) => {\n // console.log(response);\n if (response.error) {\n return callback({\n status: false,\n });\n }\n return callback({\n status: true,\n msg: response,\n });\n });\n};\nexport const get_pricelist = (order_id, user_token, callback) => {\n axios\n .post(\n `${base_url}${end_point.GetPricelist}`,\n // `http://localhost:9000/readfile`,\n {},\n {\n headers: {\n Authorization: user_token,\n },\n }\n )\n .then((data) => data.data)\n .then((data) => {\n callback([...JSON.parse(data)]);\n });\n};\nexport const get_orderfiledata = (order_id, user_token, callback) => {\n return callback([\n {\n item_name: \"Laundry - Wash and Fold\",\n item_price: \"75\",\n item_weight: \"15\",\n },\n { item_name: \"Hang Dry\", item_price: \"24\", item_weight: -1 },\n ]);\n axios\n .post(\n `${base_url}${end_point.GetOrderFiledata}`,\n // `http://localhost:9000/readfile`,\n {},\n {\n headers: {\n Authorization: user_token,\n },\n }\n )\n .then((data) => data.data)\n .then((data) => {\n callback(data);\n });\n};\nexport const get_faq = (arr, token, callback) => {\n axios\n .post(\n `${base_url}${end_point.GetFaq}`,\n // `http://localhost:9000/readfile`,\n \"\",\n {\n headers: {\n Authorization: token,\n },\n }\n )\n .then((res) => res.data)\n .then((res) => {\n if (res.error) {\n return callback({\n status: false,\n data: res,\n });\n }\n return callback({\n status: true,\n data: JSON.parse(res),\n });\n });\n};\n// export const cancel_pickup = (order_id, user_token, callback) => {\n// axios.post(`${base_url}${end_point.CancelOrder}`, { order_id: order_id }, {\n// headers: {\n// Authorization: token\n// }\n// })\n// .then(response => response.data)\n// .then(response => {\n// if (response.error) {\n// return callback({\n// status: false\n// })\n// }\n// return callback({\n// status: true,\n// msg: response.status\n// })\n// })\n\n// }\n// remove data:image/png;base64, from img_arr\n","import React from \"react\";\n\nimport facebook_login from \"../../img/loginThrough/facebook.svg\";\nimport linkedin_login from \"../../img/loginThrough/linkedin.svg\";\nimport microsoft_login from \"../../img/loginThrough/microsoft.svg\";\nimport google_login from \"../../img/loginThrough/google.svg\";\nimport apple_login from \"../../img/loginThrough/apple.svg\";\n\nimport { firebase_app, SigninWithFirebase } from \"../../Firebase/firebase\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { useNavigate } from \"react-router-dom\";\nimport { sign_in } from \"../API/API\";\n// import { firebase } from \"../../Firebase/firebase\";\n\nexport const OR_LoginThrough = ({ setlogin_err, setemail, setemail_disabled, mini, settoken, setname }) => {\n const current_store = useSelector((store) => store);\n\n const navigate = useNavigate();\n const dispatch = useDispatch();\n\n const signinwith = (i) => {\n SigninWithFirebase(i, setemail, setothers, setname,);\n };\n const setothers = (error, result) => {\n // console.log(result);\n if (error) {\n return console.log(result);\n }\n sign_in(\n {\n idToken: result.token\n }\n , (data) => {\n if (!data.status) {\n return setlogin_err(true)\n }\n dispatch({ type: \"login\", payload: { token: data.token } });\n navigate(\"/request-pickup\");\n // setemail_disabled(true);\n\n // settoken(result.token);\n });\n // dispatch({\n // type: \"others\",\n // payload: { others: result.others, token: result.token },\n // });\n };\n // console.log(store_data);\n // const SigninWithFirebase = (login_id) => {\n // // console.log(firebase_app);\n // // if (login_id != 2) return;\n // // console.log(login_id);\n // // var google_provider = new firebase_app.auth.GoogleAuthProvider();\n // // firebase_app\n // // .auth()\n // // .signInWithPopup(google_provider)\n // // .then((res) => console.log(res))\n // // .catch((err) => console.log(err));\n // };\n return (\n <>\n
or
\n
\n {/* {[facebook_login, microsoft_login, google_login, apple_login].map( */}\n {[facebook_login, microsoft_login, google_login].map(\n (el, i) => (\n signinwith(i)} />\n )\n )}\n
\n \n );\n};\n","import CryptoJS from \"crypto-js\";\nconst RSA_key = `MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDhYumNUmiKRLKjXfiTL6fKEjdq`;\n\nexport const encrypt_data = (data) => {\n console.log(data);\n var ciphertext = CryptoJS.TripleDES.encrypt(\n data,\n CryptoJS.MD5(RSA_key).toString()\n ).toString();\n // console.log('decrypt', CryptoJS.TripleDES.decrypt(ciphertext, CryptoJS.MD5(RSA_key).toString()).toString(CryptoJS.enc.Utf8))\n return ciphertext;\n};\n","import React, { useEffect, useState } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\nimport axios from \"axios\";\n\nimport password_not_shown from \"../../img/password_not_shown.svg\";\nimport password_shown from \"../../img/password_shown.svg\";\n\nimport { useDispatch } from \"react-redux\";\nimport { OR_LoginThrough } from \"../CommonComponents/OR_LoginThrough\";\nimport { email_regex } from \"../Data/data\";\nimport { encrypt_data } from \"../../RSA_Encryption/RSA\";\nimport { sign_in } from \"../API/API\";\n\nexport const Login = ({ setshow_card, setshow_dots }) => {\n\n const navigate = useNavigate();\n const dispatch = useDispatch();\n\n const [login_flag, setlogin_flag] = useState(\"\");\n\n // holds both email aswell as phone \n const [email, setemail] = useState(\"\");\n const [email_phone_err, setemail_phone_err] = useState(\"\");\n const [email_disabled, setemail_disabled] = useState(false);\n // const [email_err, setemail_err] = useState(\"\");\n\n const [password, setpassword] = useState(\"\");\n // const [password_err, setpassword_err] = useState(\"\");\n const [token, settoken] = useState(\"\");\n\n const [login_err, setlogin_err] = useState(\"\");\n\n const [password_type, setpassword_type] = useState(\"password\");\n\n\n\n useEffect(() => {\n setlogin_err(\"\");\n if (email != \"\" && password != \"\" && email_phone_err != 'true') {\n setlogin_flag(\"true\");\n } else {\n setlogin_flag(\"false\");\n }\n }, [email, password]);\n\n const login_handler = () => {\n // if (email == \"testerror@mail.com\") {\n // setlogin_err(\"true\");\n // setlogin_flag(\"false\");\n // return;\n // }\n // setlogin_err(false);\n let payload_login = {\n password: encrypt_data(password),\n };\n let login_api_body = {\n idToken: token == '' ? null : token,\n isEmail: false\n }\n if (email.match(\n /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/\n ) != null) {\n payload_login = {\n ...payload_login,\n email: email,\n }\n login_api_body = {\n ...login_api_body,\n isEmail: true\n }\n // console.log('email', payload_login);\n }\n else {\n let phone_data = email.split(' ');\n phone_data.shift();\n payload_login = {\n ...payload_login,\n phone: `1${phone_data.join('')}`,\n }\n // console.log('phone', payload_login);\n }\n login_api_body = {\n ...login_api_body,\n ...payload_login\n }\n sign_in(login_api_body, (data) => {\n if (!data.status) {\n setemail_phone_err(true);\n setlogin_err(true);\n return\n }\n \n dispatch({ type: \"login\", payload: { token: data.token } });\n navigate(\"/request-pickup\");\n return\n })\n\n // encrypt_data();\n // console.log(login_api_body);\n // console.log(email, password);\n };\n\n const OnChangeEmail = (e) => {\n if (e.target.value[0] == \" \") {\n return;\n }\n // console.log(e.target.value.slice(0, 4));\n if (\n e.target.value[0] == Number(e.target.value[0]) ||\n e.target.value.slice(0, 4) == \"(+1)\"\n ) {\n return OnChangePhone(e.target.value);\n }\n setemail(e.target.value);\n setemail_phone_err(\n (\n e.target.value.match(\n /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/\n ) == null\n ).toString()\n );\n };\n const OnChangePhone = (e) => {\n // console.log([9, 13].some((el) => el == e.target.value.length));\n if (\n Number(e.slice(-1)).toString() == \"NaN\" ||\n e.length > 17 ||\n (e.slice(-1) == \" \" && ![5, 9, 13].some((el) => el == e.length))\n ) {\n return;\n }\n console.log(e.length);\n setemail_phone_err(\"true\");\n if (e.length == 17) {\n setemail_phone_err(\"false\");\n }\n switch (e.length) {\n case 1:\n return setemail(`(+1) ${e[0]}`);\n case 5:\n return setemail(\"\");\n case 9:\n if (e.slice(-1) == \" \") {\n return setemail(e.slice(0, 8));\n }\n return setemail(e.slice(0, 8) + \" \" + e.slice(-1));\n case 13:\n if (e.slice(-1) == \" \") {\n return setemail(e.slice(0, 12));\n }\n return setemail(e.slice(0, 12) + \" \" + e.slice(-1));\n\n default:\n return setemail(e);\n }\n };\n const OnChangePassword = (e) => {\n setpassword(e.target.value);\n };\n // console.log('login_logic', email_phone_err, typeof login_err);\n return (\n <>\n
\n
Log in
\n
DETAILS
\n
\n {/* setemail(e.target.value)}> */}\n setemail(e.target.value)}\n disabled={email_disabled}\n inp_error={email_phone_err.toString()}\n >\n {/* */}\n {/* */}\n
\n
\n setpassword(e.target.value)}\n inp_error={login_err.toString()}\n >\n {\n password_type === \"password\"\n ? setpassword_type(\"text\")\n : setpassword_type(\"password\");\n }}\n />\n {/* setpassword(e.target.value)}> */}\n {/* */}\n
\n\n {\n login_err\n &&\n
\n Invalid login information.\n
\n }\n
\n \n
\n
{\n setshow_card(\"letsgetstarted\");\n setshow_dots(\"letsgetstarted\");\n }}>\n
Don't have an account?
\n \n Join Now.\n
\n
\n {\n login_flag == \"true\" && login_handler();\n }}\n >\n login\n \n \n \n \n );\n};\n","import React from \"react\";\n\nexport const CreateAccountDots = ({ show_dots }) => {\n return (\n
\n
\n
\n
\n
\n
\n );\n};\n","import React, { useEffect, useState } from \"react\";\nimport { CreateAccountDots } from \"../../CommonComponents/CreateAccountDots\";\n\nexport const WhereDoYouLive = ({ setshow_card, setshow_create_card, data }) => {\n const {\n address,\n address_err,\n setaddress,\n setaddress_err,\n apartmentno,\n setapartmentno,\n apartmentno_err,\n setapartmentno_err,\n zipcode,\n setzipcode,\n zipcode_err,\n setzipcode_err,\n i_have_a_doorman,\n seti_have_a_doorman,\n next,\n setnext,\n } = data;\n\n useEffect(() => {\n if (\n address != \"\" &&\n apartmentno != \"\" &&\n zipcode != \"\" &&\n address_err == \"false\" &&\n apartmentno_err == \"false\" &&\n zipcode_err == \"false\"\n ) {\n setnext(true);\n } else {\n setnext(false);\n }\n }, [address, apartmentno, zipcode]);\n\n return (\n
\n
\n Where do\n
\n you live?\n
\n
ADDRESS DETAILS
\n
\n {\n setaddress_err((e.target.value == \"\").toString());\n setaddress(e.target.value);\n }}\n >\n
\n
\n {\n setapartmentno_err((e.target.value == \"\").toString());\n setapartmentno(e.target.value);\n }}\n >\n
\n
\n {\n setzipcode(e.target.value);\n setzipcode_err((e.target.value == \"\").toString());\n }}\n >\n
\n seti_have_a_doorman(!i_have_a_doorman)}\n >\n
\n {/* */}\n \n {/*
\n {/* */}\n \n
\n
\n *We only serve FiDi to 110th St.\n
\n
setshow_card(\"login\")}>\n
Have an Account?
\n
Log In
\n
\n
\n setshow_create_card(\"verifyyourself\")}\n >\n
Previous
\n
\n
\n next && setshow_create_card(\"onemorething\")}\n >\n Next\n
\n \n \n \n \n );\n};\n","var _path, _path2, _path3, _path4, _path5;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _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 _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 * as React from \"react\";\n\nfunction SvgCvv(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 23,\n viewBox: \"0 0 24 23\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M1.01172 7.49023H21.0117\",\n stroke: \"#F2F2F2\",\n strokeWidth: 1.5,\n strokeMiterlimit: 10,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10.56 17.99H5.45001C1.90001 17.99 1 17.11 1 13.6V5.38C1 2.2 1.74003 1.18 4.53003 1.02C4.81003 1.01 5.12001 1 5.45001 1H16.56C20.11 1 21.01 1.88 21.01 5.39V9.80003\",\n stroke: \"#F2F2F2\",\n strokeWidth: 1.5,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5.01172 13.4902H9.01172\",\n stroke: \"#F2F2F2\",\n strokeWidth: 1.5,\n strokeMiterlimit: 10,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20 19L22.8284 21.8284\",\n stroke: \"#F2F2F2\",\n strokeWidth: 1.5,\n strokeMiterlimit: 10,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M21.0117 15.4902C21.0117 16.2402 20.8017 16.9502 20.4317 17.5502C19.7417 18.7102 18.4717 19.4902 17.0117 19.4902C15.5517 19.4902 14.2817 18.7102 13.5917 17.5502C13.2217 16.9502 13.0117 16.2402 13.0117 15.4902C13.0117 13.2802 14.8017 11.4902 17.0117 11.4902C19.2217 11.4902 21.0117 13.2802 21.0117 15.4902Z\",\n stroke: \"#F2F2F2\",\n strokeWidth: 1.5,\n strokeMiterlimit: 10,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgCvv);\nexport default __webpack_public_path__ + \"static/media/cvv.61cea4ced7432eb66e46dd33169ba98b.svg\";\nexport { ForwardRef as ReactComponent };","import React, { useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { useNavigate } from \"react-router-dom\";\nimport { CreateAccountDots } from \"../../CommonComponents/CreateAccountDots\";\nimport DateAndTime from \"../../CommonComponents/MUI/DateAndTime\";\nimport cvv_img from \"../../../img/cvv.svg\";\nimport { set } from \"date-fns\";\n// import { StripeAddCard } from \"../../CommonComponents/StripeAddCard\";\n// import { signupfb } from '../../firebase'\n\nconst month_count = [\n [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],\n [0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],\n];\n\nexport const OneMoreThing = ({\n setshow_card,\n setshow_create_card,\n data,\n signup,\n}) => {\n // API ERROR SENARIOS\n // CARD INVALID\n // SERVER ISSUE :- STRIPE ADD CUSTOMER FAILED (retry )\n // adddress error limit exceded\n // apt 100char\n // zipcode 10char\n // add 1000char\n //\n // email 150 char\n\n const {\n nameoncard,\n setnameoncard,\n nameoncard_err,\n setnameoncard_err,\n cardnumber,\n setcardnumber,\n cardnumber_err,\n setcardnumber_err,\n expirydate,\n setexpirydate,\n expirydate_err,\n setexpirydate_err,\n cvv,\n setcvv,\n cvv_err,\n setcvv_err,\n invalidcard,\n setinvalidcard,\n invalidsignup,\n setinvalidsignup,\n } = data;\n const [next, setnext] = useState(false);\n const [sign_up_login_loaded, setsign_up_login_loaded] = useState(false);\n useEffect(() => {\n // console.log([\n // nameoncard,\n // cardnumber,\n // expirydate,\n // cvv,\n // nameoncard_err,\n // cardnumber_err,\n // expirydate_err,\n // cvv_err,\n // ]);\n if (\n nameoncard != \"\" &&\n cardnumber != \"\" &&\n expirydate != \"\" &&\n cvv != \"\" &&\n nameoncard_err == \"false\" &&\n cardnumber_err == \"false\" &&\n expirydate_err == \"false\" &&\n cvv_err == \"false\"\n ) {\n setnext(true);\n } else {\n setnext(false);\n }\n }, [\n nameoncard,\n cardnumber,\n expirydate,\n cvv,\n nameoncard_err,\n cardnumber_err,\n expirydate_err,\n cvv_err,\n ]);\n // console.log(\"next\", next);\n const set_value_carddate = (current) => {\n console.log(\"test\");\n // checks for a number as a input and also if cheks for while backspacing for '' and '/' if dsabled you wouldnt be able to backspace in card month\n if (\n Number(current.value.substr(-1)) == current.value.substr(-1) ||\n current.value.substr(-1) == \" \" ||\n current.value.substr(-1) == \"/\"\n ) {\n if (current.value.replaceAll(\"/\", \"\").replaceAll(\" \", \"\").length < 5) {\n if (current.value.replaceAll(\"/\", \"\").replaceAll(\" \", \"\").length != 4) {\n setexpirydate_err(\"true\");\n } else {\n let entered_date = new Date(\n `20${current.value.split(\"/\")[1].trim()}-${current.value\n .split(\"/\")[0]\n .trim()}-${\n month_count[\n (2000 + current.value.split(\"/\")[1].trim()) % 4 == 0 ? 1 : 0\n ][Number(current.value.split(\"/\")[0].trim())]\n }T00:00:00`\n );\n console.log(entered_date);\n let current_date = new Date(\n `${new Date().getFullYear()}-${\n new Date().getMonth() < 9 ? \"0\" : \"\"\n }${new Date().getMonth() + 1}-${\n new Date().getDate() < 10 ? \"0\" : \"\"\n }${new Date().getDate()}T00:00:00`\n );\n // console.log(current_date, entered_date);\n setexpirydate_err((entered_date - current_date <= 0).toString());\n }\n let data = \"\";\n // adds a ' / ' etween two numbers and doesnot lets user to enter the first number greater than 12 if it is then changes eg. 13 = 01 / 3\n if (\n current.value.length == 3 &&\n expirydate.length + 1 <= current.value.length\n ) {\n setexpirydate(expirydate + \" / \" + current.value.slice(-1));\n data = current.value.slice(0, 2) + \"/\" + current.value.slice(-1);\n } else {\n if (current.value > 12) {\n let date_arr = current.value.split(\"\");\n setexpirydate(\"0\" + date_arr[0] + \" / \" + date_arr[1]);\n data = \"0\" + date_arr[0] + \" / \" + date_arr[1];\n } else {\n // console.log(current.value.length);\n if (current.value.length == 5 && current.value.substr(-1) == \" \") {\n return setexpirydate(current.value.slice(0, 2));\n }\n setexpirydate(current.value);\n data = current.value;\n }\n }\n }\n }\n };\n const set_value_cardno = (current) => {\n // checks for a number as a input\n if (Number(current.value.substr(-1)) == current.value.substr(-1)) {\n // checks for the length of value to be less than 20\n if (current.value.replaceAll(\" \", \"\").length >= 20) {\n return;\n }\n if (current.value.replaceAll(\" \", \"\").length < 20) {\n setcardnumber_err(\n (\n [15, 16, 19].indexOf(current.value.replaceAll(\" \", \"\").length) == -1\n ).toString()\n );\n // puts spaces between 4 digits eg. 1234 1234 1234 1234\n if (\n [5, 10, 15, 20].indexOf(current.value.length) > -1 &&\n cardnumber.length <= current.value.length\n ) {\n setcardnumber(cardnumber + \" \" + current.value.slice(-1));\n } else {\n if (\n [5, 10, 15, 20].indexOf(current.value.length) > -1 &&\n current.value.slice(-1) == \" \"\n ) {\n return setcardnumber(current.value.trim());\n }\n setcardnumber(current.value);\n }\n }\n }\n };\n const set_value_cardcvv = (current) => {\n if (current.value > 99) {\n setcvv_err(\"false\");\n } else {\n setcvv_err(\"true\");\n }\n if (current.value <= 9999) {\n setcvv(current.value);\n }\n };\n useEffect(() => {\n if (nameoncard == \"\" && cardnumber == \"\" && expirydate == \"\" && cvv == \"\") {\n return;\n }\n setinvalidcard(false);\n }, [nameoncard, cardnumber, expirydate, cvv]);\n // console.log(invalidcard);\n return (\n
\n
\n One more\n
\n thing...\n
\n
PAYMENT DETAILS
\n
\n {\n setnameoncard(e.target.value);\n setnameoncard_err((e.target.value == \"\").toString());\n }}\n >\n
\n {/* */}\n
\n set_value_cardno(e.target)}\n >\n
\n
\n {\n // let date = expirydate.split(\" \");\n // return date[1] + \" \" + date[3];\n // }}\n value={expirydate}\n className=\"f14\"\n placeholder=\"Exp\"\n inp_error={expirydate_err}\n onChange={(e) => set_value_carddate(e.target)}\n />\n {/* */}\n
\n
\n set_value_cardcvv(e.target)}\n >\n \n
\n {invalidcard && (\n
\n Invalid card\n
\n )}\n {/* { */}\n {/* // invalidsignup.length != 0 && */}\n
\n {invalidsignup}\n
\n {/* } */}\n setshow_card(\"login\")}\n >\n
Have an Account?
\n
Log In
\n
\n
\n setshow_create_card(\"wheredoyoulive\")}\n >\n
Previous
\n
\n
\n {\n if (!next || sign_up_login_loaded) {\n return;\n }\n // if (nameoncard == \"testerror\") {\n // setinvalidcard(\"true\");\n // // nameoncard(\"\");\n // // cardnumber(\"\");\n // // expirydate(\"\");\n // // cvv_err(\"\");\n // return;\n // }\n setsign_up_login_loaded(true);\n signup(() => {\n setsign_up_login_loaded(false);\n });\n\n // if(result_signup)\n }}\n >\n {sign_up_login_loaded ? \"Signing Up...\" : \"Sign Up\"}\n
\n \n \n \n \n );\n};\n","import React, { useEffect, useState } from 'react'\nimport { edit_phone, resend_sms_otp, send_sms_otp, verify_sms_otp } from '../../API/API';\nimport { CreateAccountDots } from '../../CommonComponents/CreateAccountDots'\n\nexport const VerifyYourself = ({ phone, phone_err, OnChangePhone, setshow_create_card, phone_verified, setphone_verified, invalidsignup, setinvalidsignup, setshow_card }) => {\n const [code_sent, setcode_sent] = useState(false);\n const [resendcode, setresendcode] = useState(false);\n\n const [phone_validation_code, setphone_validation_code] = useState('');\n const [phone_validation_err, setphone_validation_err] = useState('');\n const [phone_verification_code_wrong, setphone_verification_code_wrong] = useState(false);\n useEffect(() => {\n\n setcode_sent(false)\n setphone_validation_err('')\n setphone_validation_code('')\n }, [phone])\n\n return (\n
\n
\n Verify\n
\n yourself\n
\n
MOBILE VERIFICATION
\n
\n
\n {\n OnChangePhone(e);\n if (invalidsignup == \"User mobile already exists\") {\n setinvalidsignup('')\n }\n }}\n readOnly={phone_verified}\n >\n
\n {\n code_sent &&\n <>\n
\n {\n setphone_validation_code(e.target.value)\n setphone_validation_err(e.target.value.length == 0)\n setphone_verification_code_wrong(false)\n }}\n >\n
\n {\n phone_verification_code_wrong &&\n
\n Verification Code wrong.\n
\n }\n {\n if(resendcode){\n return\n }\n // creataccount && setshow_create_card(\"verifyyourself\")\n setresendcode(true)\n resend_sms_otp(phone, (data) => {\n // console.log(data);\n if (data.status) {\n setphone_validation_code('');\n setphone_validation_err(true)\n setphone_verification_code_wrong(false);\n setresendcode(false)\n }\n\n })\n }\n }\n >\n {\n resendcode ? 'Resending...' : 'Resend code'\n }\n
\n \n }\n
{\n setshow_card(\"login\")\n }\n }>\n
Have an Account?
\n
Log In
\n
\n
\n {\n !code_sent ?\n <>\n {\n // creataccount && setshow_create_card(\"verifyyourself\")\n setshow_create_card(\"letsgetstarted\")\n }\n }\n >\n Previous\n
\n {\n phone_verified ?\n {\n // creataccount && setshow_create_card(\"verifyyourself\")\n setshow_create_card(\"wheredoyoulive\")\n }\n }\n >\n Next\n
\n :\n {\n // creataccount && setshow_create_card(\"verifyyourself\")\n send_sms_otp(phone, (data) => {\n // console.log('after sending msg otp', data)\n if (!data.status) {\n return\n }\n setcode_sent(true)\n\n })\n }\n }\n >\n Send Code\n \n }\n \n :\n <>\n {\n // creataccount && setshow_create_card(\"verifyyourself\")\n setphone_validation_code('')\n setshow_create_card(\"letsgetstarted\")\n }\n }\n >\n Previous\n \n {\n // creataccount && setshow_create_card(\"verifyyourself\")\n if (phone_validation_code == '') {\n return\n }\n verify_sms_otp(\n {\n phone_no: phone,\n otp: phone_validation_code\n },\n (data) => {\n // console.log(data);\n if (data.status) {\n // edit_phone();\n setshow_create_card(\"wheredoyoulive\")\n return\n }\n setphone_verification_code_wrong(true)\n setphone_validation_err(true)\n }\n )\n // setcode_sent(true);\n }\n }\n >\n Next\n \n \n }\n \n \n \n\n \n )\n}\n","import React, { useEffect, useState } from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport { useNavigate } from \"react-router-dom\";\n\nimport password_not_shown from \"../../../img/password_not_shown.svg\";\nimport password_shown from \"../../../img/password_shown.svg\";\n\nimport { OR_LoginThrough } from \"../../CommonComponents/OR_LoginThrough\";\nimport { CreateAccountDots } from \"../../CommonComponents/CreateAccountDots\";\nimport { WhereDoYouLive } from \"./WhereDoYouLive\";\nimport { OneMoreThing } from \"./OneMoreThing\";\nimport axios from \"axios\";\nimport { VerifyYourself } from \"./VerifyYourself\";\nimport { sign_up } from \"../../API/API\";\nimport { encrypt_data } from \"../../../RSA_Encryption/RSA\";\n// import { OneMoreThingStripe } from \"./OneMoreThingStript\";\n\nconst months = [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n];\n\nexport const LetsGetStarted = ({ setshow_card, setshow_dots }) => {\n const [show_create_card, setshow_create_card] = useState(\"letsgetstarted\");\n // const [show_create_card, setshow_create_card] = useState(\"onemorething\");\n\n const dispatch = useDispatch();\n const navigate = useNavigate();\n\n useEffect(() => {\n setshow_dots(show_create_card);\n }, [show_create_card]);\n\n // createaccount start\n\n const [creataccount, setcreataccount] = useState(false);\n\n const [password_type, setpassword_type] = useState(\"password\");\n\n const [name, setname] = useState(\"\");\n const [name_err, setname_err] = useState(\"\");\n\n const [phone, setphone] = useState(\"\");\n const [phone_err, setphone_err] = useState(\"\");\n const [phone_verified, setphone_verified] = useState(false);\n // const [phone_verification, setphone_verification] = useState(\"\");\n // const [phone_verification_from_api, setphone_verification_from_api] = useState(\"12345\");\n // const [phone_verification_err, setphone_verification_err] = useState(\"\");\n // const [phone_verification_state, setphone_verification_state] = useState(\"\");\n // const [phone_verification_counter, setphone_verification_counter] = useState(0);\n // console.log('phone_verification', phone_verification);\n // a@b.com\n const [email, setemail] = useState(\"\");\n const [email_disabled, setemail_disabled] = useState(false);\n const [email_err, setemail_err] = useState(\"\");\n\n // 1234@abcdef\n const [password, setpassword] = useState(\"\");\n const [password_err, setpassword_err] = useState(\"\");\n\n useEffect(() => {\n if (\n name != \"\" &&\n email != \"\" &&\n email_err == \"false\" &&\n password != \"\" &&\n name_err == \"false\" &&\n password_err == \"false\"\n ) {\n setcreataccount(true);\n } else {\n setcreataccount(false);\n }\n }, [name, name_err, phone, phone_err, email, password, email_err]);\n // useEffect(() => {\n // if (phone_verification == '') {\n // return\n // }\n // if (phone_verification === phone_verification_from_api) {\n // return setphone_verification_err(false)\n // }\n // setphone_verification_err(true)\n // }, [phone_verification])\n\n const OnChangeName = (e) => {\n setname(e);\n setname_err((e.length == 0).toString());\n };\n const OnChangeEmail = (e) => {\n setemail(e);\n setemail_err(\n (\n e.match(\n /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/\n ) == null\n ).toString()\n );\n };\n\n const OnChangePhone = (e) => {\n // console.log([9, 13].some((el) => el == e.target.value.length));\n if (\n Number(e.target.value.slice(-1)).toString() == \"NaN\" ||\n e.target.value.length > 17 ||\n (e.target.value.slice(-1) == \" \" &&\n ![5, 9, 13].some((el) => el == e.target.value.length))\n ) {\n return;\n }\n setphone_err(\"true\");\n if (e.target.value.length == 17) {\n setphone_err(\"false\");\n // setphone_verification_state('')\n }\n switch (e.target.value.length) {\n case 1:\n return setphone(`(+1) ${e.target.value[0]}`);\n case 5:\n return setphone(\"\");\n case 9:\n if (e.target.value.slice(-1) == \" \") {\n return setphone(e.target.value.slice(0, 8));\n }\n return setphone(\n e.target.value.slice(0, 8) + \" \" + e.target.value.slice(-1)\n );\n case 13:\n if (e.target.value.slice(-1) == \" \") {\n return setphone(e.target.value.slice(0, 12));\n }\n return setphone(\n e.target.value.slice(0, 12) + \" \" + e.target.value.slice(-1)\n );\n\n default:\n return setphone(e.target.value);\n }\n };\n const OnChangePassword = (e) => {\n let last_typed_letter = e.target.value.slice(-1).charCodeAt(0);\n if (last_typed_letter < 33 || last_typed_letter > 126) {\n return;\n }\n let temp_password = e.target.value.split(\"\");\n let pass_count = {\n char: 0,\n num: 0,\n special: 0,\n };\n temp_password.map((el) => {\n let last_char_code = el.charCodeAt(0);\n if (last_char_code >= 48 && last_char_code <= 57) {\n pass_count.num += 1;\n } else if (\n (last_char_code >= 65 && last_char_code <= 90) ||\n (last_char_code >= 97 && last_char_code <= 122)\n ) {\n pass_count.char += 1;\n } else if (last_char_code >= 33 && last_char_code <= 126) {\n pass_count.special += 1;\n }\n });\n setpassword(e.target.value);\n setpassword_err(\n (\n pass_count.char + pass_count.num + pass_count.special < 8 ||\n pass_count.num < 1 ||\n pass_count.special < 1\n ).toString()\n );\n // console.log(pass_count, last_typed_letter);\n };\n // createaccount end\n\n // almostthere start\n const [next, setnext] = useState(false);\n\n const [address, setaddress] = useState(\"\");\n const [address_err, setaddress_err] = useState(\"\");\n const [apartmentno, setapartmentno] = useState(\"\");\n const [apartmentno_err, setapartmentno_err] = useState(\"\");\n const [zipcode, setzipcode] = useState(\"\");\n const [zipcode_err, setzipcode_err] = useState(\"\");\n const [i_have_a_doorman, seti_have_a_doorman] = useState(false);\n let almosttheredata = {\n address: address,\n setaddress,\n address_err,\n setaddress_err,\n apartmentno,\n setapartmentno,\n apartmentno_err,\n setapartmentno_err,\n zipcode,\n setzipcode,\n zipcode_err,\n setzipcode_err,\n i_have_a_doorman,\n seti_have_a_doorman,\n next,\n setnext,\n };\n // almosttherer end\n\n // daretobedirty start\n const [nameoncard, setnameoncard] = useState(\"\");\n const [nameoncard_err, setnameoncard_err] = useState(\"\");\n const [cardnumber, setcardnumber] = useState(\"\");\n const [cardnumber_err, setcardnumber_err] = useState(\"\");\n const [expirydate, setexpirydate] = useState(\"\");\n const [expirydate_err, setexpirydate_err] = useState(\"\");\n const [cvv, setcvv] = useState(\"\");\n const [cvv_err, setcvv_err] = useState(\"\");\n\n const [invalidcard, setinvalidcard] = useState(\"false\");\n const [invalidsignup, setinvalidsignup] = useState(\"\");\n\n let daretobedirtydata = {\n nameoncard,\n setnameoncard,\n nameoncard_err,\n setnameoncard_err,\n cardnumber,\n setcardnumber,\n cardnumber_err,\n setcardnumber_err,\n expirydate,\n setexpirydate,\n expirydate_err,\n setexpirydate_err,\n cvv,\n setcvv,\n cvv_err,\n setcvv_err,\n invalidcard,\n setinvalidcard,\n invalidsignup,\n setinvalidsignup,\n };\n // daretobedirty end\n // const currentUser = useAuth();\n // function setcard_details() {\n // const url_token = \"https://api.stripe.com/v1/tokens\";\n // let options_token = {\n // method: \"post\",\n // headers: {\n // Authorization:\n // \"Basic c2tfbGl2ZV81MTAyeGpoMnpPTlpPZXQwam1PQ0hYUUpiQ1dFdmp6VTJxNjBtMUJQdDluNnFVOHVvbGthR1FWeXpKMmpsR0dMclRCdjRIUUc4NXN6a1BnbnRUSzJOZThpTDAwb2tVY2pFeFA6\",\n // // btoa(\n // // \"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:\"\n // // ),\n // },\n // // auth: {\n // // username:\n // // \"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\",\n // // password: \"\",\n // // },\n // url: url_token,\n // data: {\n // \"card[number]\": `${cardnumber}`,\n // \"card[exp_month]\": `${expirydate.split(\"/\")[0].trim()}`,\n // \"card[exp_year]\": `${expirydate.split(\"/\")[1].trim()}`,\n // \"card[cvc]\": `${cvv}`,\n // },\n // muteHttpExceptions: true,\n // };\n // axios.post(\n // url_token,\n // {\n // ...options_token.data,\n // },\n // {\n // auth: {\n // username:\n // \"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\",\n // password: \"\",\n // },\n // }\n // );\n // return;\n // axios(options_token)\n // .then((response) => response.data)\n // .then((data) => {\n // if (data.error) {\n // console.log(\"Error saving your card.\\nDetailed Report:\", data);\n // return;\n // }\n // const card_data = {\n // tokenId: data.id,\n // cardLast4: data.card.last4,\n // cardId: data.card.id,\n // cardBrand: data.card.brand,\n // cardType: data.card.funding,\n // };\n // console.log(card_data);\n // return card_data.id;\n // })\n // .then((tokenId) => {\n // const url_customer = \"https://api.stripe.com/v1/customers\";\n // let options_customer = {\n // ...options_token,\n // url: url_customer,\n // data: {\n // name: `${name}`,\n // email: `${email}`,\n // source: `${tokenId}`,\n // },\n // muteHttpExceptions: true,\n // };\n // axios(options_customer)\n // .then((response) => response.data)\n // .then((data) => {\n // console.log(data);\n // })\n // .catch((err) => {\n // console.log(\"some error in 2st api\", err);\n // });\n // })\n // .catch((err) => {\n // console.log(\"some error in 1st api\", err);\n // });\n // }\n const signup = (callback) => {\n // console.log(1);\n // console.log([\n // name,\n // phone,\n // email,\n // password,\n // address,\n // apartmentno,\n // zipcode,\n // i_have_a_doorman,\n // nameoncard,\n // cardnumber,\n // expirydate.split(\"/\")[0].trim(),\n // expirydate.split(\"/\")[1].trim(),\n // cvv,\n // ]);\n sign_up(\n {\n full_name: name,\n phone: phone,\n email: email,\n password: encrypt_data(password),\n address1: address,\n apt: apartmentno,\n zipcode: zipcode,\n doorman: i_have_a_doorman ? 1 : 0,\n card_name: encrypt_data(nameoncard),\n card_number: encrypt_data(cardnumber.split(\" \").join(\"\")),\n card_expiry_month: encrypt_data(expirydate.split(\"/\")[0].trim()),\n card_expiry_year: encrypt_data(expirydate.split(\"/\")[1].trim()),\n card_cvc: encrypt_data(cvv),\n },\n (data) => {\n console.log(data);\n callback();\n if (data.status) {\n dispatch({ type: \"login\", payload: { token: data.msg.token } });\n localStorage.setItem(\"juliette_user_token\", data.msg.token);\n navigate(\"/request-pickup\");\n } else {\n if (data.error_card) {\n setnameoncard_err(\"true\");\n setcardnumber_err(\"true\");\n setexpirydate_err(\"true\");\n setcvv_err(\"true\");\n setnameoncard(\"\");\n setcardnumber(\"\");\n setexpirydate(\"\");\n setcvv(\"\");\n setinvalidcard(\"true\");\n } else {\n // setinvalidcard('true')\n setinvalidsignup(data.msg);\n }\n }\n }\n );\n // localStorage.setItem(\"juliette_userdata\", [\n // // token,\n // name,\n // phone,\n // email,\n // // password,\n // [\n // {\n // add: address,\n // apt: apartmentno,\n // zip: zipcode,\n // doorman: true,\n // default_add: true,\n // },\n // ],\n // [\n // {\n // nameoncard: nameoncard,\n // cardno: cardnumber,\n // expirydate: expirydate,\n // cvv: cvv,\n // default_card: true,\n // },\n // ],\n // ]);\n // setcard_details();\n\n // try {\n // const payload_login = {\n // // name:name,\n // // phone:phone,\n // email: email,\n // password: password,\n // // address:address,\n // // apartmentno:apartmentno,\n // // zipcode:zipcode,\n // // nameoncard:nameoncard,\n // // cardnumber:cardnumber,\n // // expirydate:expirydate,\n // // cvv:cvv\n // };\n // dispatch({ type: \"login\", payload: payload_login });\n // // navigate(\"/request-pickup\");\n // // console.log('currentUer',currentUser?.email);\n // } catch {\n // alert(\"Error!\");\n // }\n };\n // var verification_counter_fun = (i) => {\n\n // setTimeout(() => {\n // console.log('loop', i);\n // setphone_verification_counter((i + 1 > 10) ? 0 : 10 - i)\n // }, (1000 * i))\n // }\n return (\n <>\n {show_create_card === \"letsgetstarted\" ? (\n // 'create account' converted to 'lets get started'\n
\n
\n Let's get\n
\n started\n
\n
PERSONAL DETAILS
\n
\n
\n OnChangeName(e.target.value)}\n >\n
\n {/*
\n\n \n
\n
\n {\n phone_verification_state == '' ?\n ''\n :\n setphone_verification(e.target.value)}\n >\n }\n
{\n console.log('click');\n if (phone_verification_state == '') {\n setphone_verification_state('true')\n\n }\n else {\n setphone_verification_counter(0)\n for (var i = 0; i <= 11; i++) {\n verification_counter_fun(i)\n }\n }\n\n }}>\n {\n phone_verification_state == '' ?\n 'Send verification code'\n :\n // {\n // // phone_verification_err == false\n // }\n `Resend${(phone_verification_counter == 0) ? '' : ` (${phone_verification_counter})`}`\n }\n
\n
*/}\n
\n {\n OnChangeEmail(e.target.value);\n if (invalidsignup == \"User email already exists\") {\n setinvalidsignup(\"\");\n }\n }}\n disabled={email_disabled}\n >\n
\n
\n \n\n {password_type === \"text\" ? (\n {\n password_type === \"password\"\n ? setpassword_type(\"text\")\n : setpassword_type(\"password\");\n }}\n />\n ) : (\n {\n password_type === \"password\"\n ? setpassword_type(\"text\")\n : setpassword_type(\"password\");\n }}\n />\n )}\n
\n
\n
\n Password should consist of\n
8 characters including 1 number, 1 symbol.\n
\n setshow_card(\"login\")}\n >\n
Have an Account?
\n
Log In
\n
\n
\n
\n By signing in you agree\n
\n on the Terms of Service\n
\n and our Privacy Policy.\n
\n \n creataccount && setshow_create_card(\"verifyyourself\")\n }\n >\n Next\n
\n \n {\n OnChangeEmail(data_name);\n }}\n setemail_disabled={setemail_disabled}\n setname={(data_name) => {\n OnChangeName(data_name);\n }}\n mini={phone_err == \"false\"}\n />\n \n \n ) : show_create_card === \"verifyyourself\" ? (\n \n ) : show_create_card === \"wheredoyoulive\" ? (\n // converted 'almostthere' to 'where do you live'\n \n ) : show_create_card === \"onemorething\" ? (\n // ''\n \n ) : (\n \"\"\n )}\n \n );\n};\n","import React, { useEffect, useState } from \"react\";\n// import HIW from '../img/HIW.svg';\nimport { useNavigate } from \"react-router-dom\";\n\nimport { Login } from \"./LoginPage/Login\";\nimport { LetsGetStarted } from \"./LoginPage/CreateAccount/LetsGetStarted\";\n\nexport const LoginPage = ({ setmenu, setjuliette_bg }) => {\n const navigate = useNavigate();\n useEffect(() => {\n setmenu(false);\n setjuliette_bg(true);\n let token_in_localstorage = localStorage.getItem('juliette_user_token')\n if (token_in_localstorage) {\n return navigate('/request-pickup')\n }\n setshow_this_page(true)\n }, []);\n\n const [show_card, setshow_card] = useState(\"login\");\n const [show_dots, setshow_dots] = useState(\"login\");\n const [show_this_page, setshow_this_page] = useState(false)\n\n\n\n // useEffect(() => {\n // setshow_dots(show_card)\n // }, [show_card])\n\n return (\n
\n {\n show_this_page &&\n <>\n {/* */}\n {show_card === \"login\" ? (\n \n ) : show_card === \"letsgetstarted\" ? (\n \n ) : (\n \"\"\n )}\n \n }\n
\n );\n};\n","import React from \"react\";\n\nexport const Loading = () => {\n return (\n
\n \n \n \n {/* \n \n */}\n
\n );\n};\n","import React from \"react\";\n\nexport const CancelPickupModal = ({ no, cancelnow ,txt}) => {\n return (\n {\n e.target.id === \"cancelpickupmodal\" && no();\n }}\n >\n
\n
\n {\n txt ?\n <>\n {\n txt.map(el=><>{el}
)\n }\n \n :\n <>\n Do you really want\n
\n to cancel your pickup?\n \n }\n
\n
\n
\n Cancel\n
\n
\n No\n
\n
\n
\n \n );\n};\n","var _path, _path2, _path3, _path4, _path5;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _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 _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 * as React from \"react\";\n\nfunction SvgTrashIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 35,\n height: 35,\n viewBox: \"0 0 35 35\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M30.6243 9.8164C30.5951 9.8164 30.5514 9.8164 30.5076 9.8164C22.793 9.04348 15.093 8.75182 7.4659 9.52473L4.4909 9.8164C3.8784 9.87473 3.33882 9.43723 3.28049 8.82473C3.22215 8.21223 3.65965 7.68723 4.25757 7.6289L7.23257 7.33723C14.9909 6.54973 22.8514 6.85598 30.7264 7.6289C31.3243 7.68723 31.7618 8.22682 31.7035 8.82473C31.6597 9.39348 31.1785 9.8164 30.6243 9.8164Z\",\n fill: \"black\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12.3975 8.34169C12.3391 8.34169 12.2808 8.34169 12.2079 8.3271C11.6246 8.22502 11.2162 7.65627 11.3183 7.07294L11.6391 5.16252C11.8725 3.76252 12.1933 1.82294 15.5912 1.82294H19.412C22.8245 1.82294 23.1453 3.83544 23.3641 5.1771L23.6849 7.07294C23.787 7.67085 23.3787 8.2396 22.7953 8.3271C22.1974 8.42919 21.6287 8.02085 21.5412 7.43752L21.2203 5.54169C21.0162 4.27294 20.9724 4.02502 19.4266 4.02502H15.6058C14.06 4.02502 14.0308 4.22919 13.8121 5.5271L13.4766 7.42294C13.3891 7.96252 12.9225 8.34169 12.3975 8.34169Z\",\n fill: \"black\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M22.1821 33.1794H12.8196C7.73002 33.1794 7.52585 30.3648 7.36543 28.0898L6.41752 13.4043C6.37377 12.8064 6.84043 12.2814 7.43835 12.2377C8.05085 12.2085 8.56127 12.6606 8.60502 13.2585L9.55293 27.9439C9.71335 30.1606 9.77168 30.9919 12.8196 30.9919H22.1821C25.2446 30.9919 25.3029 30.1606 25.4488 27.9439L26.3967 13.2585C26.4404 12.6606 26.9654 12.2085 27.5634 12.2377C28.1613 12.2814 28.6279 12.7918 28.5842 13.4043L27.6363 28.0898C27.4759 30.3648 27.2717 33.1794 22.1821 33.1794Z\",\n fill: \"black\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19.9213 25.1562H15.065C14.4671 25.1562 13.9712 24.6604 13.9712 24.0625C13.9712 23.4646 14.4671 22.9688 15.065 22.9688H19.9213C20.5192 22.9688 21.015 23.4646 21.015 24.0625C21.015 24.6604 20.5192 25.1562 19.9213 25.1562Z\",\n fill: \"black\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M21.1458 19.3229H13.8542C13.2562 19.3229 12.7604 18.8271 12.7604 18.2292C12.7604 17.6313 13.2562 17.1354 13.8542 17.1354H21.1458C21.7437 17.1354 22.2396 17.6313 22.2396 18.2292C22.2396 18.8271 21.7437 19.3229 21.1458 19.3229Z\",\n fill: \"black\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgTrashIcon);\nexport default __webpack_public_path__ + \"static/media/trash_icon.ef90e0256b8a1a9d7b3baf5ed816f429.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _path3;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _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 _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 * as React from \"react\";\n\nfunction SvgAddIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 33,\n height: 33,\n viewBox: \"0 0 33 33\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16.5001 22.3371L16.5002 10.664\",\n stroke: \"black\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M22.3367 16.5005L10.6636 16.5005\",\n stroke: \"black\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12.1251 31.0837H20.8751C28.1667 31.0837 31.0834 28.167 31.0834 20.8753V12.1253C31.0834 4.83366 28.1667 1.91699 20.8751 1.91699H12.1251C4.83341 1.91699 1.91675 4.83366 1.91675 12.1253V20.8753C1.91675 28.167 4.83341 31.0837 12.1251 31.0837Z\",\n stroke: \"black\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgAddIcon);\nexport default __webpack_public_path__ + \"static/media/add_icon.25c5ee00c7be2ea1ef583a6ce479b5d2.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _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 _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 * as React from \"react\";\n\nfunction SvgCloseIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 21,\n height: 21,\n viewBox: \"0 0 21 21\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13.1196 10.5L20.4519 3.16769C20.7999 2.82031 20.9956 2.34892 20.996 1.85722C20.9965 1.36553 20.8016 0.893795 20.4542 0.545805C20.1068 0.197814 19.6354 0.00207184 19.1437 0.0016376C18.652 0.00120337 18.1803 0.196113 17.8323 0.543489L10.5 7.8758L3.16769 0.543489C2.8197 0.195499 2.34772 0 1.85559 0C1.36346 0 0.891479 0.195499 0.543489 0.543489C0.195499 0.891479 0 1.36346 0 1.85559C0 2.34772 0.195499 2.8197 0.543489 3.16769L7.8758 10.5L0.543489 17.8323C0.195499 18.1803 0 18.6523 0 19.1444C0 19.6365 0.195499 20.1085 0.543489 20.4565C0.891479 20.8045 1.36346 21 1.85559 21C2.34772 21 2.8197 20.8045 3.16769 20.4565L10.5 13.1242L17.8323 20.4565C18.1803 20.8045 18.6523 21 19.1444 21C19.6365 21 20.1085 20.8045 20.4565 20.4565C20.8045 20.1085 21 19.6365 21 19.1444C21 18.6523 20.8045 18.1803 20.4565 17.8323L13.1196 10.5Z\",\n fill: \"black\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgCloseIcon);\nexport default __webpack_public_path__ + \"static/media/close_icon.7db73edaf1f3a344a9c4e83d2560d827.svg\";\nexport { ForwardRef as ReactComponent };","import React, { useEffect, useRef, useState } from 'react'\nimport Slider from 'react-slick'\nimport trash_icon from '../../img/addimagesmodal/trash_icon.svg'\nimport add_icon from '../../img/addimagesmodal/add_icon.svg'\nimport close_icon from '../../img/addimagesmodal/close_icon.svg'\n\nexport const AddPhotoAndNoteModal = ({ current_image_index, images, setimage_modal, setimages, setcurrent_image_index, add_img }) => {\n const [currentshowing_img, setcurrentshowing_img] = useState(current_image_index)\n const [confirm_delete_modal, setconfirm_delete_modal] = useState(false)\n // const [nav1, setNav1] = useState();\n // console.log(currentshowing_img);\n const slider1 = useRef();\n const set_height_width = (i) => {\n setTimeout(() => {\n\n let current_img = document.getElementsByClassName('show_images_set_height_width' + i);\n // console.log(current_img);\n [...current_img].map(\n el => {\n let slick_list = document.getElementsByClassName('slick-list')[0].getBoundingClientRect()\n if ((el.getBoundingClientRect().width / el.getBoundingClientRect().height) > slick_list.width / slick_list.height) {\n el.style.width = slick_list.width + 'px'\n el.style.height = 'auto'\n // current_img.style.borderInline = '7px solid #fff'\n }\n else {\n el.style.width = 'auto'\n el.style.maxHeight = slick_list.height + 'px'\n // current_img.style.borderBlock = '7px solid #fff'\n }\n }\n )\n\n }, 0);\n }\n useEffect(() => {\n [...images].map((el, i) => set_height_width(i));\n // slider1.current.slickGoTo(current_image_index)\n // slider1.slick('slickGoTo', 2);\n }, [images])\n // console.log(slider1.current.slickGoTo(2));\n const add_img_to_current_open_item = (current, i) => {\n if (current.target.files.length) {\n // console.log(Object.values(current.target.files));\n let temp_arr = []\n Object.values(current.target.files).map(el => {\n var reader = new FileReader();\n reader.readAsDataURL(el);\n reader.onload = function () {\n temp_arr.push(reader.result)\n if (current.target.files.length == temp_arr.length) {\n let temp_images = [...images];\n temp_images[i].img = [...images[i].img, ...temp_arr];\n setimages([...temp_images])\n }\n // console.log(reader.result);\n };\n })\n }\n };\n const settings = {\n dots: false,\n infinite: true,\n arrows: !confirm_delete_modal,\n speed: 500,\n slidesToShow: 1,\n slidesToScroll: 1,\n initialSlide: current_image_index,\n afterChange: (i) => setcurrentshowing_img(i),\n };\n return (\n
{ (e.target.id == 'addphotoandnotemodal_close') && setcurrent_image_index([false, -1]) }}>\n
\n
\n
{ }}>\n { setconfirm_delete_modal(true) }} />
\n
\n add_img(e)}\n multiple\n />\n {/* not completed check mtlp EDITMODAL.JS line 725 */}\n \n add_img} />\n \n
\n
\n setcurrent_image_index([false, -1])} />\n
\n
\n
\n\n {/* */}\n \n {\n images.map(\n\n (el, i) =>
\n \n
\n )\n }\n
\n {/*
\n
*/}\n
\n {\n images.map(\n (el, i) =>
\n\n )\n }\n
\n {\n confirm_delete_modal &&\n
\n
Delete image?
\n
{\n let temp_images = [...images];\n temp_images.splice(currentshowing_img, 1,);\n setimages([...temp_images])\n setconfirm_delete_modal(false)\n }}>Delete
\n
setconfirm_delete_modal(false)}>Cancel
\n
\n }\n
\n
\n
\n )\n}\n","import React, { useEffect, useState } from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport { CancelPickupModal } from \"../CancelPickupModal\";\nimport { Loading } from \"../CommonComponents/Loading\";\nimport { AddPhotoAndNoteModal } from \"./AddPhotoAndNoteModal\";\n\nexport const AddPhotoAndNote = ({\n pickup_note,\n setpickup_note,\n setshow_requestpickup,\n photonoteconfirm_active,\n discount_code,\n setdiscount_code,\n requestpickup,\n resetpickupdata\n}) => {\n const [cancel_pickup_modal, setcancel_pickup_modal] = useState(false);\n const [confirming_loader, setconfirming_loader] = useState(false);\n const dispatch = useDispatch();\n // const [image, setimage] = useState([]);\n // image length =20 images per customer\n const [image_base64, setimage_base64] = useState([]);\n const [current_image_index, setcurrent_image_index] = useState([false, -1]);\n // console.log(image_base64);\n // function getBase64(file) {\n // var reader = new FileReader();\n // reader.readAsDataURL(file);\n\n // reader.onload = function () {\n // setimage_base64([...image_base64, reader.result]);\n // console.log(reader.result); //base64encoded string\n // };\n // }\n // const add_img = (current) => {\n // if (current.target.files.length) {\n // console.log(Object.values(current.target.files));\n // setimage([\n // ...image,\n // ...[...Object.values(current.target.files)].map((el) => {\n // // console.log(el);\n // getBase64(el);\n // return {\n // preview: URL.createObjectURL(el),\n // raw: el,\n // // base64: await getBase64( el)\n // };\n // }),\n // ]);\n // }\n // };\n const add_img = (current) => {\n let temp_arr = [];\n if (current.target.files.length) {\n // console.log(Object.values(current.target.files));\n Object.values(current.target.files).map((el) => {\n var reader = new FileReader();\n reader.readAsDataURL(el);\n reader.onload = function () {\n temp_arr.push(reader.result);\n if (current.target.files.length == temp_arr.length) {\n setimage_base64([...image_base64, ...temp_arr]);\n }\n };\n });\n }\n };\n\n // console.log(\"image\", image);\n // console.log(\"image_base64\", image_base64);\n return (\n <>\n {confirming_loader && }\n
\n {/* */}\n
\n
\n Anything we should give some extra love to?\n
\n You can add a photo or a note below:\n
\n {/*
\n Does Anything need\n
\n some extra love?\n
*/}\n
\n
\n
\n add_img(e)}\n multiple\n />\n {/* not completed check mtlp EDITMODAL.JS line 725 */}\n { }}\n >\n + Add photo\n \n\n {image_base64.length > 0 && (\n
\n {image_base64.map((el, i) => (\n
\n
setcurrent_image_index([true, i])}>\n \"dummy\"\n
\n
\n ))}\n
\n )}\n
\n
\n setpickup_note(e.target.value)}\n />\n
\n
\n setdiscount_code(e.target.value)}\n />\n
\n
\n
\n {\n setcancel_pickup_modal(true);\n }}\n >\n Cancel\n
\n {\n // dispatch({\n // type: \"photoandnote\",\n // payload: { photos: [...image_base64], note: pickup_note },\n // });\n if (confirming_loader) {\n return\n }\n setconfirming_loader(true);\n requestpickup(image_base64, pickup_note, (data) => {\n setconfirming_loader(false);\n })\n }}\n >\n {\n confirming_loader ?\n 'Confirming...'\n :\n 'Confirm'\n }\n
\n \n\n {cancel_pickup_modal ? (\n setcancel_pickup_modal(false)}\n cancelnow={() => {\n // console.log(1);\n setshow_requestpickup(\"RequestPickupType\");\n resetpickupdata();\n }}\n />\n ) : (\n <>\n )}\n {\n current_image_index[0] == true &&\n \n }\n \n \n );\n};\n","import React, { useState } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { cancel_order, get_order_by_id } from \"../API/API\";\nimport { CancelPickupModal } from \"../CancelPickupModal\";\nimport { useNavigate } from \"react-router-dom\";\n\nexport const GotIt = ({ order_id, setshow_requestpickup, resetpickupdata, token }) => {\n // console.log(order_id);\n // const [cancel_pickup_modal, setcancel_pickup_modal] = useState(false);\n const [cancelordermodalloader, setcancelordermodalloader] = useState(false);\n const [cancelpickupmodal, setcancelpickupmodal] = useState(false);\n const [cancelpickupmodal_txt, setcancelpickupmodal_txt] = useState('');\n const dispatch = useDispatch();\n const navigate = useNavigate();\n const current_store = useSelector(state => state)\n console.log('test',cancelpickupmodal);\n\n return (\n
\n
\n
Got it!
\n
\n Cancelling after 5 minutes will result in a $5 cancellation fee.\n You'll get an auto-text once our driver is on the way.\n
\n {/*
*/}\n {/*
*/}\n
\n
\n {\n if(cancelordermodalloader){\n return\n }\n setcancelordermodalloader(true)\n get_order_by_id(\n order_id,\n current_store.user.token,\n (data)=>{\n if(!data.status){\n return navigate('/404')\n }\n setcancelordermodalloader(false)\n console.log('order_by_id',data.msg.display_status);\n if(data.msg.cancel_display){\n setcancelpickupmodal_txt(data.msg.cancel_display)\n }\n setcancelpickupmodal(true)\n \n })\n }}\n >\n {cancelordermodalloader ? 'Fetching Data' : 'Cancel pickup'}\n
\n {\n dispatch({ type: \"resetpickup\" });\n setshow_requestpickup(\"RequestPickupType\");\n resetpickupdata();\n }}\n >\n Request another pickup\n
\n \n {cancelpickupmodal ? (\n setcancelpickupmodal(false)}\n cancelnow={() => {\n cancel_order(order_id, token, (data) => {\n if (data.error) {\n // do something\n return\n }\n // setcancel_pickup_modal(false)\n setshow_requestpickup(\"RequestPickupType\");\n resetpickupdata();\n // console.log(data);\n })\n }}\n />\n ) : (\n <>\n )}\n \n );\n};\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _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 _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 * as React from \"react\";\n\nfunction SvgHanger(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 101,\n height: 53,\n viewBox: \"0 0 101 53\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M50.0879 1.63118C47.6753 1.687 46.0318 2.87159 44.965 5.00508C44.5003 5.9078 43.9718 6.77622 43.3835 7.60373C43.2843 7.74638 42.7633 7.76499 42.5587 7.60373C42.4543 7.50929 42.3765 7.38917 42.333 7.25534C42.2895 7.12151 42.2818 6.97862 42.3106 6.84088C43.2037 5.23455 43.9231 3.44217 45.1387 2.10873C47.7498 -0.762809 52.3827 -0.694582 55.1674 1.9971C55.88 2.63719 56.452 3.41823 56.8471 4.29078C57.2423 5.16333 57.452 6.10841 57.4631 7.06621C57.4742 8.024 57.2863 8.97367 56.9115 9.85513C56.5366 10.7366 55.9828 11.5306 55.2852 12.187C54.6789 12.7414 54.0109 13.2242 53.2944 13.6259C51.6322 14.6306 50.8136 16.5346 51.5206 18.234C51.8197 18.7493 52.31 19.126 52.885 19.2821C56.1225 20.1566 58.2002 22.3832 59.7631 25.1431C61.0742 27.3754 62.8851 29.2733 65.0534 30.6877C71.671 35.2462 79.039 38.1301 86.6551 40.5365C89.5189 41.3909 92.3103 42.4713 95.003 43.7677C96.7024 44.6236 98.135 46.0935 99.5057 47.489C100.205 48.2432 100.691 49.1702 100.914 50.1744C101.005 50.5575 101.011 50.956 100.932 51.3418C100.853 51.7276 100.69 52.0913 100.455 52.4072C100.045 52.7855 98.8979 52.7173 98.2591 52.4072C95.4309 51.1668 92.6772 49.7341 89.8863 48.4007C79.6488 43.4887 69.4093 38.5828 59.1677 33.6832C58.2436 33.2367 57.2203 32.9762 56.3272 32.4428C52.3579 30.1791 48.494 30.6257 44.5433 32.5421C35.1534 37.0758 25.7078 41.4792 16.2993 45.9633C11.9207 48.0534 7.57924 50.2179 3.20682 52.3141C2.39435 52.7049 1.52606 53.2631 0.645376 52.401C0.266794 52.0339 0.0361848 51.5405 -0.00268693 51.0146C-0.0415587 50.4887 0.114015 49.9668 0.43451 49.548C1.30116 48.0421 2.37883 46.6678 3.63476 45.4671C6.23341 43.1972 9.41503 41.963 12.7331 41.014C20.0949 38.893 27.2397 36.2447 33.82 32.232C37.0202 30.2783 39.9042 28.0828 41.7462 24.6345C43.1354 22.0358 45.2752 20.0326 48.3017 19.3442C49.7282 19.0217 50.1313 18.172 49.9515 16.8634C49.6228 14.4694 50.6771 13.0863 52.8602 12.063C54.002 11.5447 54.9192 10.6329 55.4441 9.49413C55.9691 8.3554 56.0668 7.06579 55.7194 5.86097C54.9627 3.06385 53.0277 1.57536 50.0879 1.63118Z\",\n fill: \"white\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgHanger);\nexport default __webpack_public_path__ + \"static/media/hanger.5bae1f4bfc9bbea8628a196661e07a71.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _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 _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 * as React from \"react\";\n\nfunction SvgArrowDownIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 16,\n height: 8,\n viewBox: \"0 0 16 8\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14.6001 1.4581L9.16677 6.89147C8.5251 7.53314 7.4751 7.53314 6.83343 6.89147L1.40009 1.4581\",\n stroke: \"white\",\n strokeWidth: 1.25,\n strokeMiterlimit: 10,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgArrowDownIcon);\nexport default __webpack_public_path__ + \"static/media/arrow_down_icon.12fc87352d770a61436bdb1b581ec664.svg\";\nexport { ForwardRef as ReactComponent };","import React, { useEffect, useState } from \"react\";\nimport hanger from \"../../img/requestpickup/hanger.svg\";\nimport arrow_down_icon from '../../img/arrow_down_icon.svg'\n\nexport const PickupType = ({\n setlaundry_selected,\n setdrycleaning_selected,\n others_selected,\n setothers_selected,\n setshow_requestpickup,\n confirm_active,\n add_arr,\n address_for_delivery,\n setaddress_for_delivery\n}) => {\n const [divheight,setdivheight] = useState(0)\n useEffect(()=>{\n const heightaddressdiv = document.getElementById('getheightaddressdropdown').clientHeight;\n // console.log(heightaddressdiv);\n setdivheight(heightaddressdiv);\n },[add_arr])\n\n return (\n
\n
\n \n
\n
\n
\n \n \n setlaundry_selected(!document.getElementById(\"laundry\").checked)\n }\n >\n Laundry\n \n
\n
\n \n \n setdrycleaning_selected(\n !document.getElementById(\"drycleaning\").checked\n )\n }\n >\n Dry Cleaning\n \n
\n
\n \n \n setothers_selected(!document.getElementById(\"others\").checked)\n }\n >\n Others (Shoes, Alterations, ...)\n \n
\n
\n Other includes but is not limited to Shoes, Alterations, Leather and\n Suede.\n
\n
\n
\n
{\n document.getElementById('cust_dropdown').classList.toggle('cust_dropdown_active')\n let cust_dropdown_body = document.getElementById('cust_dropdown_body');\n cust_dropdown_body.style.height = (cust_dropdown_body.style.height != '') ? '' : `${divheight}px`;\n }}>\n
\n {\n address_for_delivery != -1 && `${add_arr[address_for_delivery].address}, ${add_arr[address_for_delivery].apartment}, ${add_arr[address_for_delivery].zipcode}`\n }\n
\n \n
\n
\n\n {\n add_arr.map(\n (el, i) => {\n setaddress_for_delivery(i)\n }}\n >\n {`${el.address}, ${el.apartment}, ${el.zipcode}`}\n
\n )\n }\n
\n
\n
\n
\n \n confirm_active && setshow_requestpickup(\"addphotoandnote\")\n }\n // style={{ marginTop: \"16px\" }}\n >\n Confirm\n \n
\n Reminder: we pick up everyday 5PM-9PM.\n
\n \n );\n};\n","import React, { useEffect, useState } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { get_add, request_pickup, verify_local_token } from \"./API/API\";\nimport { Loading } from \"./CommonComponents/Loading\";\nimport { AddPhotoAndNote } from \"./RequestPickup/AddPhotoAndNote\";\nimport { GotIt } from \"./RequestPickup/GotIt\";\nimport { PickupType } from \"./RequestPickup/PickupType\";\nimport { useNavigate } from \"react-router-dom\";\n// import { YouRequestedAPickup } from \"./RequestPickup/YouRequestedAPickup\";\nimport { YouWillRecieveAText } from \"./RequestPickup/YouWillRecieveAText\";\n// import '../style/components copy/requestpickup.scss'\n// const add_arr = [\n// {\n// add: \"add1.1\",\n// apt: \"add1.2\",\n// zip: \"11\",\n// doorman: false,\n// default_add: false,\n// },\n// {\n// add: \"add2.1\",\n// apt: \"add2.2\",\n// zip: \"22\",\n// doorman: false,\n// default_add: false,\n// },\n// {\n// add: \"add3.1\",\n// apt: \"add3.2\",\n// zip: \"33\",\n// doorman: true,\n// default_add: true,\n// },\n// ]\n\nexport const RequestPickup = ({ setmenu, setjuliette_bg }) => {\n\n\n const [show_this_page, setshow_this_page] = useState(false)\n\n const [show_requestpickup, setshow_requestpickup] =\n useState(\"RequestPickupType\");\n const [address_for_delivery, setaddress_for_delivery] = useState(-1)\n const [add_arr, setadd_arr] = useState([])\n const [laundry_selected, setlaundry_selected] = useState(false);\n const [drycleaning_selected, setdrycleaning_selected] = useState(false);\n const [others_selected, setothers_selected] = useState(false);\n const [pickupconfirm_active, setpickupconfirm_active] = useState(false);\n const [photonoteconfirm_active, setphotonoteconfirm_active] = useState(false);\n const [pickup_note, setpickup_note] = useState(\"\");\n const [discount_code, setdiscount_code] = useState(\"\");\n\n const [order_id, setorder_id] = useState('')\n\n const dispatch = useDispatch();\n const navigate = useNavigate();\n\n const current_store = useSelector((state) => state);\n\n // console.log(current_store);\n useEffect(() => {\n if (current_store.user.token == '') {\n\n let token_in_localstorage = localStorage.getItem('juliette_user_token')\n\n if (token_in_localstorage) {\n verify_local_token(token_in_localstorage,\n (data) => {\n if (!data.status) {\n setshow_this_page(true)\n return navigate(\"/\");\n }\n setshow_this_page(true)\n dispatch({ type: \"login\", payload: { token: data.token } });\n })\n // return navigate('/request-pickup')\n }\n else {\n setshow_this_page(true)\n return navigate(\"/\");\n\n }\n\n }\n else {\n\n get_add(current_store.user.token, (data) => {\n if (!data.status) {\n return navigate('/')\n }\n if (data.msg.addresses.length == 0) {\n return navigate('/profile')\n }\n if(!data.msg.card_exists){\n return navigate('/profile')\n }\n setadd_arr([...data.msg.addresses])\n setaddress_for_delivery(data.msg.addresses.map(el => el.is_default == '1').indexOf(true))\n\n setshow_this_page(true)\n setmenu(true);\n setjuliette_bg(true);\n\n })\n }\n // }\n }, [current_store.user.token])\n\n // console.log('address_for_delivery', address_for_delivery);\n useEffect(() => {\n setpickupconfirm_active(\n laundry_selected || drycleaning_selected || others_selected\n );\n\n let payload_data = {\n laundry: laundry_selected,\n drycleaning: drycleaning_selected,\n others: others_selected,\n };\n dispatch({ type: \"addrequestpickup\", payload: payload_data });\n }, [laundry_selected, drycleaning_selected, others_selected]);\n\n useEffect(() => {\n // add photo and note\n if (show_requestpickup == \"gotit\") {\n setjuliette_bg(false);\n } else {\n setjuliette_bg(true);\n }\n }, [show_requestpickup]);\n // console.log([laundry_selected, drycleaning_selected, others_selected]);\n\n const resetpickupdata = () => {\n setlaundry_selected(false);\n setdrycleaning_selected(false);\n setothers_selected(false);\n setpickupconfirm_active(false);\n setdiscount_code('')\n setpickup_note(\"\");\n };\n const requestpickup = (photos, note, callback) => {\n request_pickup(\n {\n \"address\": `${add_arr[address_for_delivery].address}, ${add_arr[address_for_delivery].apartment}, ${add_arr[address_for_delivery].zipcode}`,\n apt: add_arr[address_for_delivery].apartment,\n \"particulars\": {\n \"laundry\": laundry_selected ? '1' : '0',\n \"drycleaning\": drycleaning_selected ? '1' : '0',\n \"others\": others_selected ? '1' : '0'\n },\n \"photos\": [...photos.map(el => {\n return {\n base64: el\n }\n })],\n note: note,\n \"discount_code\": discount_code\n },\n current_store.user.token\n , (data) => {\n // setshow_requestpickup(\"gotit\");\n if (!data.status) {\n return navigate('/404')\n }\n // console.log(data);\n setorder_id(data.msg)\n setshow_requestpickup('gotit')\n callback()\n return\n }\n );\n }\n\n return (\n <>\n {\n !show_this_page && \n }\n \n {/* {show_requestpickup === \"yourequestedapickup\" ||\n show_requestpickup === \"youwillrecieveatextmsg\" ? (\n <>\n ) : ( */}\n \n Request Pickup\n \n {/* )} */}\n {show_requestpickup === \"RequestPickupType\" ? (\n \n ) : show_requestpickup === \"addphotoandnote\" ? (\n \n ) : show_requestpickup === \"gotit\" ? (\n \n ) : (\n // ) : show_requestpickup === \"youwillrecieveatextmsg\" ? (\n // \n \"\"\n )}\n \n \n );\n};\n","var _circle;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _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 _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 * as React from \"react\";\n\nfunction SvgDefaultimg(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 94,\n height: 94,\n viewBox: \"0 0 94 94\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 47,\n cy: 47,\n r: 47,\n fill: \"#F2F2F2\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgDefaultimg);\nexport default __webpack_public_path__ + \"static/media/defaultimg.950c4d503e62d42f5906f30a7a0509a3.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _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 _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 * as React from \"react\";\n\nfunction SvgPencil(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 17,\n height: 17,\n viewBox: \"0 0 17 17\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9.99105 2.27123L2.11105 10.1512C1.81105 10.4512 1.51105 11.0412 1.45105 11.4712L1.02105 14.4812C0.861051 15.5712 1.63105 16.3312 2.72105 16.1812L5.73105 15.7512C6.15105 15.6912 6.74105 15.3912 7.05105 15.0912L14.9311 7.21123C16.2911 5.85123 16.9311 4.27123 14.9311 2.27123C12.9311 0.271229 11.3511 0.911229 9.99105 2.27123Z\",\n stroke: \"#292D32\",\n strokeWidth: 1.5,\n strokeMiterlimit: 10,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8.86108 3.40234C9.53108 5.79234 11.4011 7.66234 13.8011 8.34234\",\n stroke: \"#292D32\",\n strokeWidth: 1.5,\n strokeMiterlimit: 10,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgPencil);\nexport default __webpack_public_path__ + \"static/media/pencil.2b130ca45dbe2036135c37c598d593dc.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _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 _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 * as React from \"react\";\n\nfunction SvgPencilWhite(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 17,\n height: 17,\n viewBox: \"0 0 17 17\",\n fill: \"#000000\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9.99105 2.27123L2.11105 10.1512C1.81105 10.4512 1.51105 11.0412 1.45105 11.4712L1.02105 14.4812C0.861051 15.5712 1.63105 16.3312 2.72105 16.1812L5.73105 15.7512C6.15105 15.6912 6.74105 15.3912 7.05105 15.0912L14.9311 7.21123C16.2911 5.85123 16.9311 4.27123 14.9311 2.27123C12.9311 0.271229 11.3511 0.911229 9.99105 2.27123Z\",\n stroke: \"#ffffff\",\n strokeWidth: 1.5,\n strokeMiterlimit: 10,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8.86108 3.40234C9.53108 5.79234 11.4011 7.66234 13.8011 8.34234\",\n stroke: \"#ffffff\",\n strokeWidth: 1.5,\n strokeMiterlimit: 10,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgPencilWhite);\nexport default __webpack_public_path__ + \"static/media/pencil_white.b661ed00a12ac416e94d6fd40f33e2fe.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _path3;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _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 _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 * as React from \"react\";\n\nfunction SvgAdd(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 22,\n height: 22,\n viewBox: \"0 0 22 22\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11 15.0022L11 6.99776\",\n stroke: \"white\",\n strokeWidth: 1.5,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15.0022 11L6.9978 11\",\n stroke: \"white\",\n strokeWidth: 1.5,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8 21H14C19 21 21 19 21 14V8C21 3 19 1 14 1H8C3 1 1 3 1 8V14C1 19 3 21 8 21Z\",\n stroke: \"white\",\n strokeWidth: 1.5,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgAdd);\nexport default __webpack_public_path__ + \"static/media/add.b75583227cf768f34a11d0e59a33d1c1.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _path3, _path4, _path5;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _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 _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 * as React from \"react\";\n\nfunction SvgTrash(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20.9997 6.72998C20.9797 6.72998 20.9497 6.72998 20.9197 6.72998C15.6297 6.19998 10.3497 5.99998 5.11967 6.52998L3.07967 6.72998C2.65967 6.76998 2.28967 6.46998 2.24967 6.04998C2.20967 5.62998 2.50967 5.26998 2.91967 5.22998L4.95967 5.02998C10.2797 4.48998 15.6697 4.69998 21.0697 5.22998C21.4797 5.26998 21.7797 5.63998 21.7397 6.04998C21.7097 6.43998 21.3797 6.72998 20.9997 6.72998Z\",\n fill: \"white\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8.50074 5.72C8.46074 5.72 8.42074 5.72 8.37074 5.71C7.97074 5.64 7.69074 5.25 7.76074 4.85L7.98074 3.54C8.14074 2.58 8.36074 1.25 10.6907 1.25H13.3107C15.6507 1.25 15.8707 2.63 16.0207 3.55L16.2407 4.85C16.3107 5.26 16.0307 5.65 15.6307 5.71C15.2207 5.78 14.8307 5.5 14.7707 5.1L14.5507 3.8C14.4107 2.93 14.3807 2.76 13.3207 2.76H10.7007C9.64074 2.76 9.62074 2.9 9.47074 3.79L9.24074 5.09C9.18074 5.46 8.86074 5.72 8.50074 5.72Z\",\n fill: \"white\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15.2104 22.7501H8.79039C5.30039 22.7501 5.16039 20.8201 5.05039 19.2601L4.40039 9.19007C4.37039 8.78007 4.69039 8.42008 5.10039 8.39008C5.52039 8.37008 5.87039 8.68008 5.90039 9.09008L6.55039 19.1601C6.66039 20.6801 6.70039 21.2501 8.79039 21.2501H15.2104C17.3104 21.2501 17.3504 20.6801 17.4504 19.1601L18.1004 9.09008C18.1304 8.68008 18.4904 8.37008 18.9004 8.39008C19.3104 8.42008 19.6304 8.77007 19.6004 9.19007L18.9504 19.2601C18.8404 20.8201 18.7004 22.7501 15.2104 22.7501Z\",\n fill: \"white\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13.6601 17.25H10.3301C9.92008 17.25 9.58008 16.91 9.58008 16.5C9.58008 16.09 9.92008 15.75 10.3301 15.75H13.6601C14.0701 15.75 14.4101 16.09 14.4101 16.5C14.4101 16.91 14.0701 17.25 13.6601 17.25Z\",\n fill: \"white\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14.5 13.25H9.5C9.09 13.25 8.75 12.91 8.75 12.5C8.75 12.09 9.09 11.75 9.5 11.75H14.5C14.91 11.75 15.25 12.09 15.25 12.5C15.25 12.91 14.91 13.25 14.5 13.25Z\",\n fill: \"white\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgTrash);\nexport default __webpack_public_path__ + \"static/media/trash.ea4108882ab04475f412104bccb25bcd.svg\";\nexport { ForwardRef as ReactComponent };","import React, { useEffect, useState } from \"react\";\nimport Slider from \"react-slick\";\n\nexport const AddressSlider = ({ add_arr, setshowadd }) => {\n const settings = {\n dots: true,\n infinite: true,\n speed: 500,\n slidesToShow: 1,\n slidesToScroll: 1,\n // fade: true,\n afterChange: (i) => setshowadd(i),\n };\n // const [show_address_list, setshow_address_list] = useState([]);\n // useEffect(() => {\n // console.log(\"slider\", profile);\n // setshow_address_list([]);\n // setshow_address_list([...profile.add_arr]);\n // }, [profile]);\n\n return (\n
\n \n {add_arr.map((el, i) => (\n
\n \n
\n \n \n
\n
\n ))}\n
\n
\n );\n};\n","import React, { useEffect, useRef } from \"react\";\nimport Slider from \"react-slick\";\n\nexport const PaymentSlider = ({ add_arr, setshowadd }) => {\n const sliderRef = useRef();\n useEffect(() => {\n sliderRef.current.slickGoTo(0);\n }, [add_arr.length]);\n\n const settings = {\n dots: true,\n infinite: true,\n speed: 500,\n slidesToShow: 1,\n slidesToScroll: 1,\n // fade: true,\n afterChange: (i) => setshowadd(i),\n };\n return (\n
\n \n {add_arr.map((el, i) => (\n
\n \n (i == 3 ? el1 : \"****\"))\n .join(\" \")}\n readOnly\n />\n
\n ))}\n
\n
\n );\n};\n","import { Cancel } from \"@mui/icons-material\";\nimport React, { useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { change_profile_image, delete_profile_image } from \"../../API/API\";\nimport { useNavigate } from \"react-router-dom\";\n\nexport const ChangeProfilePicture = ({ cancel, profile, setprofile, setshow_this_page }) => {\n const current_store = useSelector((state) => state);\n // const [name_token, setname_token] = useState('')\n const navigate = useNavigate();\n const changephoto = (current) => {\n setshow_this_page(false)\n // let temp_arr = [];\n // console.log(current.files);\n if (current.files.length > 0) {\n Object.values(current.files).map((el) => {\n var reader = new FileReader();\n reader.readAsDataURL(el);\n reader.onload = function () {\n // temp_arr.push(reader.result);\n // if (current.target.files.length == temp_arr.length) {\n // setimage_base64([...image_base64, ...temp_arr]);\n change_profile_image(\n reader.result,\n current_store.user.token,\n (data) => {\n // console.log(data);\n if (!data.status) {\n if (data.img_error) {\n setshow_this_page(true);\n cancel()\n return\n }\n return navigate(\"/\");\n }\n setprofile({ ...profile, img: data.msg })\n setshow_this_page(true)\n cancel();\n }\n )\n // setprofile({ ...profile, img: reader.result });\n // }\n };\n });\n }\n };\n return (\n
\n \n {\n // setprofile({ ...profile, img: \"\" });\n setshow_this_page(false);\n delete_profile_image(\n '',\n current_store.user.token,\n (data) => {\n // console.log(data);\n if (!data.status) {\n if (data.img_error) {\n setshow_this_page(true);\n cancel()\n return\n }\n return navigate(\"/\");\n }\n setprofile({ ...profile, img: data.msg })\n setshow_this_page(true)\n cancel();\n }\n )\n cancel();\n }}\n >\n Delete\n
\n \n );\n};\n","import React, { useState } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { edit_email, edit_email_get_token, resend_email_otp, send_email_otp, verify_email, verify_password } from \"../../API/API\";\nimport { encrypt_data } from \"../../../RSA_Encryption/RSA\";\n\nexport const EditEmail = ({\n profile,\n setprofile_modal,\n cancel,\n setprofile,\n}) => {\n const navigate = useNavigate();\n const dispatch = useDispatch();\n const current_store = useSelector((state) => state);\n\n const [email_modal_showing, setemail_modal_showing] =\n useState(\"enterpassword\");\n const [password, setpassword] = useState(\"\");\n const [invalid_pass, setinvalid_pass] = useState(\"\");\n\n const [email, setemail] = useState(\"\");\n const [confirmemail, setconfirmemail] = useState(\"\");\n const [email_err, setemail_err] = useState(\"\");\n const [confirmemail_err, setconfirmemail_err] = useState(\"\");\n\n const [verificationcode, setverificationcode] = useState(\"\");\n const [verificationcode_err, setverificationcode_err] = useState(\"\");\n\n const [temp_token, settemp_token] = useState(\"\");\n // console.log(temp_token);\n\n\n return (\n
\n {email_modal_showing == \"enterpassword\" ? (\n <>\n
\n New\n
\n Email\n
\n
ENTER PASSWORD
\n
\n { setpassword(e.target.value); setinvalid_pass('') }}\n inp_error={invalid_pass.toString()}\n />\n
\n
\n
\n
\n Cancel\n
\n {\n\n if (password.length == 0) {\n return\n }\n verify_password(encrypt_data(password), current_store.user.token, (data) => {\n if (data.msg.verified) {\n settemp_token(data.msg.token)\n setemail_modal_showing(\"setanewemail1\")\n return\n }\n setinvalid_pass(true)\n })\n }\n\n }\n >\n Continue\n
\n
\n \n ) : email_modal_showing == \"setanewemail1\" ? (\n <>\n
\n New\n
\n Email\n
\n
SET A NEW EMAIL
\n
\n {\n setemail(e.target.value);\n setemail_err(\n !e.target.value.match(\n /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/\n )?.length > 0\n );\n // console.log(\n // !e.target.value.match(\n // /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/\n // )?.length > 0\n // );\n }}\n />\n
\n
\n setconfirmemail(e.target.value)}\n />\n
\n
\n
\n A verification email will be sent\n
to this address.\n
\n
\n
\n Cancel\n
\n {\n if (email != confirmemail || !(email_err == false)) {\n // console.log(email, confirmemail, email_err);\n return;\n }\n send_email_otp(\n {\n email: email,\n edit: true,\n name: profile.name\n },\n current_store.user.token,\n (data) => {\n // console.log('email_otp', data);\n if (!data.status) {\n navigate('/404')\n return\n }\n // setverificationcode(data.msg)\n setemail_modal_showing(\"setanewemail2\");\n }\n )\n }}\n >\n Send verification code\n
\n \n \n ) : email_modal_showing == \"setanewemail2\" ? (\n <>\n
\n New\n
\n Email\n
\n
SET A NEW EMAIL
\n
\n \n
\n
\n \n
\n
ENTER VERIFICATION CODE
\n
\n { setverificationcode(e.target.value); setverificationcode_err('') }}\n inp_error={verificationcode_err.toString()}\n />\n
\n
\n
\n
{\n // console.log('resendotp mail');\n // resend_email_otp({\n // email:email,\n // },current_store.user.token,(data)=>{console.log(data);})\n resend_email_otp({\n email:email,\n \"name\" : \"Shantanu Iyengar\"\n },\n current_store.user.token\n ,(data)=>{\n console.log(data);\n });\n }}\n >Resend code
\n
\n Cancel\n
\n {\n if (verificationcode == '') {\n return;\n }\n verify_email(\n {\n email: email,\n name: profile.name,\n otp: verificationcode,\n id: profile.id\n },\n current_store.user.token,\n (data) => {\n if (!data.status) {\n navigate('/404')\n return\n }\n if (data.otp_error) {\n // console.log('otp false');\n setverificationcode_err(true)\n return\n }\n dispatch({ type: \"login\", payload: { token: data.token } });\n localStorage.setItem('juliette_user_token', data.token);\n cancel();\n\n // setverificationcode(data.msg)\n // setemail_modal_showing(\"setanewemail2\");\n }\n )\n\n // setprofile({ ...profile, email: email });\n }}\n >\n Set new email\n
\n \n \n ) : (\n \"\"\n )\n }\n \n );\n};\n","import React, { useEffect, useState } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\n\nimport { useSelector } from \"react-redux\";\nimport password_not_shown from \"../../../img/password_not_shown.svg\";\nimport password_shown from \"../../../img/password_shown.svg\";\nimport { encrypt_data } from \"../../../RSA_Encryption/RSA\";\nimport { edit_password, verify_password } from \"../../API/API\";\n\nexport const EditPassword = ({ profile, setprofile, cancel, setshow_this_page }) => {\n const [current_pass, setcurrent_pass] = useState(\"\");\n const [password1, setpassword1] = useState(\"\");\n const [password1_err, setpassword1_err] = useState(\"\");\n const [password1_type, setpassword1_type] = useState(\"password\");\n const [password2, setpassword2] = useState(\"\");\n const [password2_err, setpassword2_err] = useState('');\n const [password2_type, setpassword2_type] = useState(\"password\");\n\n const [password_modal_showing, setpassword_modal_showing] =\n useState(\"enterpassword\");\n\n const current_store = useSelector((state) => state);\n const [invalid_pass, setinvalid_pass] = useState(\"\");\n const [temp_token, settemp_token] = useState(\"\");\n\n const navigate = useNavigate();\n // useEffect(() => {\n // if (password1 == '') {\n // return setpassword1_err('')\n // }\n\n // }, [password1])\n // useEffect(() => {\n // if (password2 == '') {\n // return setpassword1_err('')\n // }\n // }, [password2])\n\n const OnChangePassword = (e, state_password, state_passsword_err) => {\n let last_typed_letter = e.slice(-1).charCodeAt(0);\n if (last_typed_letter < 33 || last_typed_letter > 126) {\n return;\n }\n let temp_password = e.split(\"\");\n let pass_count = {\n char: 0,\n num: 0,\n special: 0,\n };\n temp_password.map((el) => {\n let last_char_code = el.charCodeAt(0);\n if (last_char_code >= 48 && last_char_code <= 57) {\n pass_count.num += 1;\n } else if (\n (last_char_code >= 65 && last_char_code <= 90) ||\n (last_char_code >= 97 && last_char_code <= 122)\n ) {\n pass_count.char += 1;\n } else if (last_char_code >= 33 && last_char_code <= 126) {\n pass_count.special += 1;\n }\n });\n state_password(e);\n state_passsword_err(\n (\n (pass_count.char + pass_count.num + pass_count.special) < 6 ||\n pass_count.num < 1 ||\n pass_count.special < 1\n ).toString()\n );\n // console.log(pass_count, last_typed_letter);\n };\n\n return (\n
\n
\n Reset\n
\n Password\n
\n\n {\n password_modal_showing == 'resetpassword' ?\n <>\n
RESET PASSWORD
\n
\n {\n OnChangePassword(e.target.value, setpassword1, setpassword1_err);\n if (password2 != '') {\n setpassword2_err((e.target.value != password2).toString())\n }\n }}\n inp_error={password1_err.toString()}\n />\n {\n password1_type === \"password\"\n ? setpassword1_type(\"text\")\n : setpassword1_type(\"password\");\n }}\n />\n
\n
\n setpassword2(e.target.value)}\n onChange={(e) => {\n // console.log(password1, password1_err, password1 == '', password1_err === true);\n if (password1 == '' || password1_err === 'true') {\n return\n }\n setpassword2(e.target.value)\n setpassword2_err((e.target.value != password1).toString())\n }}\n inp_error={password2_err.toString()}\n />\n {\n password2_type === \"password\"\n ? setpassword2_type(\"text\")\n : setpassword2_type(\"password\");\n }}\n />\n
\n {\n password1_err === 'true' ?\n
\n Your password needs to consist of\n
\n 8 characters including 1 number, 1 symbol.\n
\n :\n
\n Passwords have to match.\n
\n }\n \n : <>\n
ENTER PASSWORD
\n
\n setcurrent_pass(e.target.value)}\n inp_error={invalid_pass.toString()}\n />\n
\n \n }\n
\n
\n {\n password_modal_showing == 'resetpassword' ?\n\n <>\n
\n Cancel\n
\n {\n if (\n password1 == \"\" ||\n password1 != password2\n ) {\n return;\n }\n setshow_this_page(false)\n edit_password(\n {\n token: temp_token,\n password: password1\n },\n current_store.user.token,\n (data) => {\n // console.log(data);\n setshow_this_page(true)\n if (!data.status) {\n return navigate('/404')\n }\n setprofile({ ...profile, password: data.msg });\n cancel();\n return\n }\n )\n }}\n >\n Set new password\n
\n \n :\n <>\n
\n Cancel\n
\n {\n if (current_pass == '') {\n return\n }\n verify_password(encrypt_data(current_pass), current_store.user.token, (data) => {\n if (data.msg.verified) {\n if (!data.status) {\n return navigate('/404')\n }\n settemp_token(data.msg.token)\n setpassword_modal_showing('resetpassword')\n return\n }\n setinvalid_pass(true)\n })\n // if (\n // current_pass != profile.password ||\n // password1 == \"\" ||\n // password1 != password2\n // ) {\n // return;\n // }\n // setprofile({ ...profile, password: password1 });\n // cancel();\n }}\n >\n Continue\n
\n \n }\n \n \n );\n};\n","import { SettingsPhone } from \"@mui/icons-material\";\nimport React, { useState } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\n\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { encrypt_data } from \"../../../RSA_Encryption/RSA\";\nimport { edit_phone, resend_sms_otp, send_sms_otp, verify_password, verify_sms_otp } from \"../../API/API\";\n\nexport const EditMobile = ({ profile, setprofile, cancel, setshow_this_page }) => {\n const navigate = useNavigate();\n const dispatch = useDispatch();\n const current_store = useSelector((state) => state);\n const [mobile_modal_showing, setmobile_modal_showing] =\n useState(\"enterpassword\");\n const [password, setpassword] = useState(\"\");\n const [invalid_pass, setinvalid_pass] = useState(\"\");\n\n\n const [mobile, setmobile] = useState(\"\");\n const [mobile_err, setmobile_err] = useState(\"\");\n const [confirmmobile, setconfirmmobile] = useState(\"\");\n const [confirmmobile_err, setconfirmmobile_err] = useState(\"\");\n const [verification, setverification] = useState(\"\");\n const [phone_verification_code_wrong, setphone_verification_code_wrong] = useState(false);\n\n const [temp_token, settemp_token] = useState(\"\");\n\n // const[temp_token,settemp_]\n const OnChangePhone = (e) => {\n // console.log([9, 13].some((el) => el == e.length));\n if (\n Number(e.slice(-1)).toString() == \"NaN\" ||\n e.length > 17 ||\n (e.slice(-1) == \" \" && ![5, 9, 13].some((el) => el == e.length))\n ) {\n return;\n }\n setmobile_err(\"true\");\n if (e.length == 17) {\n setmobile_err(\"false\");\n }\n switch (e.length) {\n case 1:\n return setmobile(`(+1) ${e[0]}`);\n case 5:\n return setmobile(\"\");\n case 9:\n if (e.slice(-1) == \" \") {\n return setmobile(e.slice(0, 8));\n }\n return setmobile(e.slice(0, 8) + \" \" + e.slice(-1));\n case 13:\n if (e.slice(-1) == \" \") {\n return setmobile(e.slice(0, 12));\n }\n return setmobile(e.slice(0, 12) + \" \" + e.slice(-1));\n\n default:\n return setmobile(e);\n }\n };\n const OnChangeConfirmPhone = (e) => {\n // console.log([9, 13].some((el) => el == e.length));\n if (\n Number(e.slice(-1)).toString() == \"NaN\" ||\n e.length > 17 ||\n (e.slice(-1) == \" \" && ![5, 9, 13].some((el) => el == e.length))\n ) {\n return;\n }\n setconfirmmobile_err(\"true\");\n if (e.length == 17) {\n setconfirmmobile_err(\"false\");\n }\n switch (e.length) {\n case 1:\n return setconfirmmobile(`(+1) ${e[0]}`);\n case 5:\n return setconfirmmobile(\"\");\n case 9:\n if (e.slice(-1) == \" \") {\n return setconfirmmobile(e.slice(0, 8));\n }\n return setconfirmmobile(e.slice(0, 8) + \" \" + e.slice(-1));\n case 13:\n if (e.slice(-1) == \" \") {\n return setconfirmmobile(e.slice(0, 12));\n }\n return setconfirmmobile(e.slice(0, 12) + \" \" + e.slice(-1));\n\n default:\n return setconfirmmobile(e);\n }\n };\n return (\n
\n {mobile_modal_showing == \"enterpassword\" ? (\n <>\n
\n New\n
\n Mobile\n
\n
ENTER PASSWORD
\n
\n setpassword(e.target.value)}\n inp_error={invalid_pass.toString()}\n />\n
\n
\n
\n
\n Cancel\n
\n {\n\n if (password == '') {\n return\n }\n verify_password(encrypt_data(password), current_store.user.token, (data) => {\n if (data.msg.verified) {\n settemp_token(data.msg.token)\n setmobile_modal_showing(\"setanewmobile1\")\n return\n }\n setinvalid_pass(true)\n })\n }\n }\n >\n Continue\n
\n
\n \n ) : mobile_modal_showing == \"setanewmobile1\" ? (\n <>\n
\n New\n
\n Mobile\n
\n
NEW MOBILE
\n
\n OnChangePhone(e.target.value)}\n />\n
\n
\n OnChangeConfirmPhone(e.target.value)}\n />\n
\n
\n
\n A verification sms will be sent\n
to this address.\n
\n
\n
\n Cancel\n
\n {\n if (!(confirmmobile_err == \"false\" && mobile_err == \"false\" && confirmmobile == mobile)) {\n return\n }\n send_sms_otp(\n mobile,\n (data) => {\n\n if (!data.status) {\n return navigate('/404')\n }\n\n setmobile_modal_showing(\"setanewmobile2\")\n\n }\n )\n }\n }\n >\n Send verification code\n
\n \n \n ) : mobile_modal_showing == \"setanewmobile2\" ? (\n <>\n
\n New\n
\n Mobile\n
\n
NEW MOBILE
\n
\n \n
\n
\n \n
\n
ENTER VERIFICATION CODE
\n
\n setverification(e.target.value)}\n />\n
\n {\n phone_verification_code_wrong &&\n
\n Verification Code wrong.\n
\n }\n
\n
\n
{\n console.log('resen code')\n resend_sms_otp(mobile, (data) => {\n // console.log(data);\n // if (data.status) {\n // // setphone_validation_code('');\n // setphone_verification_code_wrong(false);\n // }\n })\n }}\n >Resend code
\n
\n Cancel\n
\n {\n if (verification == '') {\n return;\n }\n setshow_this_page(false)\n verify_sms_otp( \n {\n phone_no: mobile,\n otp: verification\n },\n (data) => {\n // console.log('mobile_verify', data);\n if (!data.status) {\n setphone_verification_code_wrong(true)\n setshow_this_page(true)\n return\n // navigate('/404')\n }\n\n edit_phone(\n data.msg,\n mobile,\n current_store.user.token,\n (data) => {\n if (!data.status) {\n setshow_this_page(true)\n return\n // navigate('/404')\n }\n setprofile({\n ...profile,\n phone: mobile,\n });\n setshow_this_page(true)\n cancel();\n\n\n }\n )\n\n return\n // setphone_validation_err(true)\n\n }\n )\n\n }}\n >\n Set new mobile\n
\n \n \n ) : (\n \"\"\n )}\n \n );\n};\n","// import { add } from \"date-fns\";\nimport React, { useEffect, useState } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\n\nimport { useSelector } from \"react-redux\";\nimport { add_address, edit_address } from \"../../API/API\";\n\nexport const AddEditAddress = ({\n type,\n cancel,\n data_index,\n profile,\n setprofile,\n setshow_this_page,\n}) => {\n const current_store = useSelector((state) => state);\n const navigate = useNavigate();\n const [add_details, setadd_details] = useState({\n add: \"\",\n apt: \"\",\n zip: \"\",\n doorman: false,\n default: false,\n });\n const [edit_save, setedit_save] = useState(false);\n useEffect(() => {\n if (type == \"edit\") {\n setadd_details({\n id: profile.add_arr[data_index].id,\n add: profile.add_arr[data_index].add,\n apt: profile.add_arr[data_index].apt,\n zip: profile.add_arr[data_index].zip,\n doorman: profile.add_arr[data_index].doorman,\n default: profile.add_arr[data_index].default,\n });\n }\n }, []);\n useEffect(() => {\n if (type == \"edit\") {\n if (\n add_details.add == profile.add_arr[data_index].add &&\n add_details.apt == profile.add_arr[data_index].apt &&\n add_details.zip == profile.add_arr[data_index].zip &&\n add_details.doorman == profile.add_arr[data_index].doorman &&\n add_details.default == profile.add_arr[data_index].default\n ) {\n setedit_save(false);\n } else {\n setedit_save(true);\n }\n }\n }, [add_details]);\n useEffect(() => {\n if (type == \"edit\") {\n if (\n add_details.add != profile.add_arr[data_index].add ||\n add_details.apt != profile.add_arr[data_index].add ||\n add_details.zip != profile.add_arr[data_index].add ||\n add_details.doorman != profile.add_arr[data_index].add ||\n add_details.default != profile.add_arr[data_index].add\n ) {\n }\n }\n }, []);\n return (\n
\n
\n {type == \"edit\" ? \"Edit\" : \"Add\"}\n
\n Address\n
\n
ADDRESS DETAILS
\n
\n \n setadd_details({ ...add_details, add: e.target.value })\n }\n />\n
\n
\n \n setadd_details({ ...add_details, apt: e.target.value })\n }\n />\n
\n
\n \n setadd_details({ ...add_details, zip: e.target.value })\n }\n />\n
\n
\n
\n \n {\n setadd_details({ ...add_details, doorman: !add_details.doorman });\n }}\n >\n
\n \n
\n {\n setadd_details({ ...add_details, doorman: !add_details.doorman });\n }}\n >\n YES, I have a doorman\n \n
\n {/* {type == \"add\" && ( */}\n \n
\n \n {\n setadd_details({ ...add_details, default: !add_details.default });\n }}\n >\n
\n \n
\n {\n setadd_details({ ...add_details, default: !add_details.default });\n }}\n >\n Set as default address\n \n
\n {/* )} */}\n
\n
\n
\n Cancel\n
\n {type == \"edit\" ? (\n {\n if (!edit_save) {\n return;\n }\n edit_address(\n {\n address_id: add_details.id,\n address1: add_details.add,\n apt: add_details.apt,\n zipcode: add_details.zip,\n doorman: add_details.doorman ? \"1\" : \"0\",\n is_default: add_details.default ? \"1\" : \"0\",\n },\n current_store.user.token,\n (data) => {\n if (!data.status) {\n return navigate(\"/404\");\n }\n setprofile({\n ...profile,\n add_arr: [\n ...data.msg.map((el) => {\n return {\n id: el.id,\n add: el.address,\n apt: el.apartment,\n zip: el.zipcode,\n doorman: el.is_doorman == \"0\" ? false : true,\n default: el.is_default == \"0\" ? false : true,\n };\n }),\n ],\n });\n cancel();\n }\n );\n // let temp_add_arr = profile.add_arr;\n // temp_add_arr[data_index] = add_details;\n }}\n >\n Save\n
\n ) : (\n {\n if (\n add_details.add == \"\" ||\n add_details.apt == \"\" ||\n add_details.zip == \"\"\n ) {\n return;\n }\n setshow_this_page(false);\n add_address(\n {\n address1: add_details.add,\n apt: add_details.apt,\n zipcode: add_details.zip,\n doorman: add_details.doorman ? \"1\" : \"0\",\n is_default:\n profile.add_arr.length === 0\n ? \"1\"\n : add_details.default\n ? \"1\"\n : \"0\",\n },\n current_store.user.token,\n (data) => {\n if (!data.status) {\n return navigate(\"/404\");\n }\n setprofile({\n ...profile,\n add_arr: [\n ...data.msg.map((el) => {\n return {\n id: el.id,\n add: el.address,\n apt: el.apartment,\n zip: el.zipcode,\n doorman: el.is_doorman == \"0\" ? false : true,\n default: el.is_default == \"0\" ? false : true,\n };\n }),\n ],\n });\n cancel();\n setshow_this_page(true);\n }\n );\n }}\n >\n Add\n \n )}\n \n \n );\n};\n","import { cardActionAreaClasses } from \"@mui/material\";\nimport React from \"react\";\n\nexport const PaymentAddressDelete = ({\n type,\n // change_arr,\n data_index,\n profile,\n setprofile,\n setcurrent_showing_add_in_slider,\n setcurrent_showing_card_in_slider,\n cancel,\n handelclick,\n donot\n}) => {\n return (\n
\n
\n {\n donot ?\n <>\n Please change your default {type} and try again\n \n : <>\n Do you really want to delete this {type}?\n \n }\n
\n\n
\n {\n !donot &&\n {\n handelclick()\n }}\n >\n Delete now\n
\n }\n
\n {\n donot ?\n 'Go Back' :\n 'No'\n }\n
\n
\n \n );\n};\n","import axios from \"axios\";\nimport React, { useEffect, useState } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\n\nimport { useSelector } from \"react-redux\";\nimport { add_card } from \"../../API/API\";\nimport { encrypt_data } from \"../../../RSA_Encryption/RSA\";\nimport { Loading } from \"../../CommonComponents/Loading\";\nconst month_count = [\n [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],\n [0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],\n];\n\nexport const AddPaymentMethod = ({ cancel, profile, setprofile }) => {\n // const [card_details, setcard_details] = useState({\n // nameoncard: \"\",\n // cardno: \"\",\n // expirydate: \"\",\n // cvv: \"\",\n // });\n const current_store = useSelector((state) => state);\n const navigate = useNavigate();\n\n const [show_this_page, setshow_this_page] = useState(true);\n\n const [nameoncard, setnameoncard] = useState(\"\");\n const [cardnumber, setcardnumber] = useState(\"\");\n const [expirydate, setexpirydate] = useState(\"\");\n const [cvv, setcvv] = useState(\"\");\n const [is_default, setis_default] = useState(false);\n\n const [nameoncard_err, setnameoncard_err] = useState(\"\");\n const [cardnumber_err, setcardnumber_err] = useState(\"\");\n const [expirydate_err, setexpirydate_err] = useState(\"\");\n const [cvv_err, setcvv_err] = useState(\"\");\n\n const [add_btn, setadd_btn] = useState(\"type2\");\n\n const [card_err, setcard_err] = useState(\"\");\n\n useEffect(() => {\n if (\n nameoncard != \"\" &&\n cardnumber != \"\" &&\n expirydate != \"\" &&\n cvv != \"\" &&\n nameoncard_err == \"false\" &&\n cardnumber_err == \"false\" &&\n expirydate_err == \"false\" &&\n cvv_err == \"false\"\n ) {\n return setadd_btn(\"type3\");\n }\n setadd_btn(\"type2\");\n }, [\n nameoncard,\n cardnumber,\n expirydate,\n cvv,\n nameoncard_err,\n cardnumber_err,\n expirydate_err,\n cvv_err,\n ]);\n\n const set_value_carddate = (current) => {\n // checks for a number as a input and also if cheks for while backspacing for '' and '/' if dsabled you wouldnt be able to backspace in card month\n if (\n Number(current.value.substr(-1)) == current.value.substr(-1) ||\n current.value.substr(-1) == \" \" ||\n current.value.substr(-1) == \"/\"\n ) {\n if (current.value.replaceAll(\"/\", \"\").replaceAll(\" \", \"\").length < 5) {\n if (current.value.replaceAll(\"/\", \"\").replaceAll(\" \", \"\").length != 4) {\n setexpirydate_err(\"true\");\n } else {\n let entered_date = new Date(\n `20${current.value.split(\"/\")[1].trim()}-${current.value\n .split(\"/\")[0]\n .trim()}-${\n month_count[\n (2000 + current.value.split(\"/\")[1].trim()) % 4 == 0 ? 1 : 0\n ][Number(current.value.split(\"/\")[0].trim())]\n }T00:00:00`\n );\n console.log(entered_date);\n let current_date = new Date(\n `${new Date().getFullYear()}-${\n new Date().getMonth() < 9 ? \"0\" : \"\"\n }${new Date().getMonth() + 1}-${\n new Date().getDate() < 10 ? \"0\" : \"\"\n }${new Date().getDate()}T00:00:00`\n );\n setexpirydate_err((entered_date - current_date <= 0).toString());\n }\n let data = \"\";\n // adds a ' / ' etween two numbers and doesnot lets user to enter the first number greater than 12 if it is then changes eg. 13 = 01 / 3\n if (\n current.value.length == 3 &&\n expirydate.length + 1 <= current.value.length\n ) {\n setexpirydate(expirydate + \" / \" + current.value.slice(-1));\n data = current.value.slice(0, 2) + \"/\" + current.value.slice(-1);\n } else {\n if (current.value > 12) {\n let date_arr = current.value.split(\"\");\n setexpirydate(\"0\" + date_arr[0] + \" / \" + date_arr[1]);\n data = \"0\" + date_arr[0] + \" / \" + date_arr[1];\n } else {\n // console.log(current.value.length);\n if (current.value.length == 5 && current.value.substr(-1) == \" \") {\n return setexpirydate(current.value.slice(0, 2));\n }\n setexpirydate(current.value);\n data = current.value;\n }\n }\n }\n }\n };\n const set_value_cardno = (current) => {\n // checks for a number as a input\n if (Number(current.value.substr(-1)) == current.value.substr(-1)) {\n // checks for the length of value to be less than 20\n console.log(current.value, current.value.replaceAll(\" \", \"\").length);\n if (current.value.replaceAll(\" \", \"\").length >= 20) {\n return;\n }\n if (current.value.replaceAll(\" \", \"\").length < 20) {\n setcardnumber_err(\n (\n [15, 16, 19].indexOf(current.value.replaceAll(\" \", \"\").length) == -1\n ).toString()\n );\n // puts spaces between 4 digits eg. 1234 1234 1234 1234\n if (\n [5, 10, 15, 20].indexOf(current.value.length) > -1 &&\n cardnumber.length <= current.value.length\n ) {\n setcardnumber(cardnumber + \" \" + current.value.slice(-1));\n } else {\n if (\n [5, 10, 15, 20].indexOf(current.value.length) > -1 &&\n current.value.slice(-1) == \" \"\n ) {\n return setcardnumber(current.value.trim());\n }\n setcardnumber(current.value);\n }\n }\n }\n };\n const set_value_cardcvv = (current) => {\n if (current.value > 99) {\n setcvv_err(\"false\");\n } else {\n setcvv_err(\"true\");\n }\n if (current.value <= 9999) {\n setcvv(current.value);\n }\n };\n return (\n <>\n {!show_this_page ? (\n \n ) : (\n
\n
\n Add Payment\n
\n Method\n
\n
PAYMENT DETAILS
\n
\n {\n setnameoncard(e.target.value);\n setnameoncard_err((e.target.value == \"\").toString());\n setcard_err(\"\");\n }}\n />\n
\n
\n {\n set_value_cardno(e.target);\n setcard_err(\"\");\n }}\n />\n
\n
\n {\n set_value_carddate(e.target);\n setcard_err(\"\");\n }}\n />\n
\n
\n {\n set_value_cardcvv(e.target);\n setcard_err(\"\");\n }}\n />\n
\n {\n setis_default(!is_default);\n }}\n >\n
\n \n \n
\n \n
\n {card_err && (\n
\n {card_err}\n
\n )}\n
\n
\n
\n Cancel\n
\n {\n if (add_btn != \"type3\") return;\n setshow_this_page(false);\n add_card(\n {\n card_name: encrypt_data(nameoncard),\n card_number: encrypt_data(cardnumber.split(\" \").join(\"\")),\n card_expiry_month: encrypt_data(\n expirydate.split(\"/\")[0].trim()\n ),\n card_expiry_year: encrypt_data(\n expirydate.split(\"/\")[1].trim()\n ),\n card_cvc: encrypt_data(cvv),\n primary:\n profile.card_arr.length === 0\n ? \"1\"\n : is_default\n ? \"1\"\n : \"0\",\n // \"is_default\": profile.add_arr.length===0 ? '1' :add_details.default ? '1' : '0'\n customer_id: profile.customer_id,\n },\n current_store.user.token,\n (data) => {\n console.log(data);\n if (!data.status) {\n return navigate(\"/404\");\n }\n if (data.card_err) {\n setshow_this_page(true);\n // setTimeout(()=>{\n console.log(\"data.card_err\", data.card_err);\n setcard_err(data.card_err);\n // },2000)\n return;\n }\n setprofile({\n ...profile,\n card_arr: [\n ...data.msg.map((el) => {\n return {\n id: el.id,\n nameoncard: el.cc_name,\n cardno: `**** **** **** ${el.cc_last_4_digits}`,\n default_card: el.is_primary == \"0\" ? false : true,\n };\n }),\n ],\n });\n setshow_this_page(true);\n cancel();\n }\n );\n // let temp_arr = [...profile.card_arr];\n // temp_arr.push({\n // nameoncard: nameoncard,\n // cardno: cardnumber,\n // expirydate: expirydate,\n // cvv: cvv,\n // default_card: false,\n // });\n // setprofile({\n // ...profile,\n // card_arr: temp_arr,\n // });\n }}\n >\n Add\n
\n \n \n )}\n \n );\n};\n","import React, { useState } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\n\nimport { useSelector } from \"react-redux\";\nimport { encrypt_data } from \"../../../RSA_Encryption/RSA\";\nimport { edit_name, verify_password } from \"../../API/API\";\n\nexport const EditName = ({\n profile,\n setprofile_modal,\n cancel,\n setprofile,\n // show_this_page,\n setshow_this_page\n}) => {\n const navigate = useNavigate();\n const current_store = useSelector((state) => state);\n const [email_modal_showing, setemail_modal_showing] =\n useState(\"enterpassword\");\n const [password, setpassword] = useState(\"\");\n const [invalid_pass, setinvalid_pass] = useState(\"\");\n\n const [name, setname] = useState(\"\");\n const [name_err, setname_err] = useState(\"\");\n\n const [temp_token, settemp_token] = useState(\"\");\n\n return (\n
\n {email_modal_showing == \"enterpassword\" ? (\n <>\n
\n New\n
\n Name\n
\n
ENTER PASSWORD
\n
\n { setpassword(e.target.value); setinvalid_pass('') }}\n inp_error={invalid_pass.toString()}\n />\n
\n
\n
\n
\n Cancel\n
\n {\n\n if (password.length == 0) {\n return\n }\n verify_password(encrypt_data(password), current_store.user.token, (data) => {\n if (data.msg.verified) {\n settemp_token(data.msg.token)\n setemail_modal_showing(\"setanewemail1\")\n return\n }\n setinvalid_pass(true)\n\n // console.log(data);\n })\n\n\n }\n }\n >\n Continue\n
\n
\n \n ) : email_modal_showing == \"setanewemail1\" ? (\n <>\n
\n New\n
\n Name\n
\n
SET A NEW NAME
\n
\n {\n setname(e.target.value);\n setname_err((e.target.value.trim() == '').toString())\n }}\n />\n
\n
\n
\n
\n Cancel\n
\n {\n if (name.trim() == \"\") { return; }\n setshow_this_page(false)\n\n edit_name(\n current_store.user.token,\n temp_token,\n name,\n (data) => {\n // console.log(data);\n if (!data.status) {\n navigate('/404')\n return\n }\n setprofile({\n ...profile,\n name: data.msg\n })\n setshow_this_page(true)\n cancel();\n\n }\n )\n }}\n >\n Set new name\n
\n \n \n ) : (\n \"\"\n )\n }\n \n );\n};\n","import React, { useEffect, useState } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\n\nimport defaultimg from \"../img/defaultimg.svg\";\nimport password_shown from \"../img/password_shown.svg\";\nimport password_not_shown from \"../img/password_not_shown.svg\";\nimport pencil from \"../img/pencil.svg\";\nimport pencil_white from \"../img/pencil_white.svg\";\nimport add from \"../img/add.svg\";\nimport trash from \"../img/trash.svg\";\n// import juliette_logo from \"../img/logo.svg\";\nimport juliette_logo from \"../img/logo.png\";\n\nimport { AddressSlider } from \"./Profile/AddressSlider\";\nimport { PaymentSlider } from \"./Profile/PaymentSlider\";\n\nimport { ChangeProfilePicture } from \"./Profile/Modals/ChangeProfilePicture\";\nimport { EditEmail } from \"./Profile/Modals/EditEmail\";\nimport { EditPassword } from \"./Profile/Modals/EditPassword\";\nimport { EditMobile } from \"./Profile/Modals/EditMobile\";\nimport { AddEditAddress } from \"./Profile/Modals/AddEditAddress\";\nimport { PaymentAddressDelete } from \"./Profile/Modals/PaymentAddressDelete\";\nimport { AddPaymentMethod } from \"./Profile/Modals/AddPaymentMethod\";\nimport axios from \"axios\";\nimport { EditName, Editname } from \"./Profile/Modals/EditName\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport {\n delete_address,\n delete_card,\n edit_default_address,\n edit_default_card,\n edit_doorman,\n get_profile,\n verify_local_token,\n} from \"./API/API\";\nimport { Loading } from \"./CommonComponents/Loading\";\n\nexport const Profile = ({ setmenu, setjuliette_bg }) => {\n const dispatch = useDispatch();\n const navigate = useNavigate();\n // useEffect(() => {\n // // setloading(true);\n // setmenu(true);\n // setjuliette_bg(true);\n\n // // setTimeout(() => {\n // setprofile({\n // img: \"data:image/png;base64,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\",\n // name: \"Rechelle Balanzat\",\n // email: \"r@juliettelaundry.com\",\n // password: \"123\",\n // phone: \"+1 (315) 284-5689\",\n // add_arr: [\n // {\n // add: \"add1.1\",\n // apt: \"add1.2\",\n // zip: \"11\",\n // doorman: false,\n // default: true,\n // },\n // {\n // add: \"add2.1\",\n // apt: \"add2.2\",\n // zip: \"22\",\n // doorman: false,\n // default: false,\n // },\n // {\n // add: \"add3.1\",\n // apt: \"add3.2\",\n // zip: \"33\",\n // doorman: true,\n // default: false,\n // },\n // ],\n // card_arr: [\n // {\n // nameoncard: \"card1\",\n // cardno: \"1111 1111 1111 1111\",\n // expirydate: \"1111\",\n // cvv: \"111\",\n // default_card: false,\n // },\n // {\n // nameoncard: \"card2\",\n // cardno: \"2222 2222 2222 2222\",\n // expirydate: \"2222\",\n // cvv: \"222\",\n // default_card: true,\n // },\n // ],\n // });\n // // setloading(false);\n // // }, 0);\n // // }, 2000);\n // }, []);\n\n const [show_this_page, setshow_this_page] = useState(false);\n const current_store = useSelector((state) => state);\n useEffect(() => {\n if (current_store.user.token == \"\") {\n let token_in_localstorage = localStorage.getItem(\"juliette_user_token\");\n\n if (token_in_localstorage) {\n verify_local_token(token_in_localstorage, (data) => {\n if (!data.status) {\n setshow_this_page(true);\n return navigate(\"/\");\n }\n dispatch({ type: \"login\", payload: { token: data.token } });\n });\n // return navigate('/request-pickup')\n } else {\n return navigate(\"/\");\n }\n } else {\n get_profile(current_store.user.token, (data) => {\n if (!data.status) {\n setshow_this_page(true);\n return navigate(\"/\");\n }\n setmenu(true);\n setjuliette_bg(true);\n let temp_pass = \"\";\n for (var i = 0; i < data.msg.password_length; i++) {\n temp_pass += \"*\";\n }\n let temp_phone = data.msg.mobile;\n temp_phone = `+1 (${temp_phone.slice(1, 4)}) ${temp_phone.slice(\n 4,\n 7\n )}-${temp_phone.slice(7)}`;\n\n setprofile({\n customer_id: data.msg.customer_id,\n id: data.msg.id,\n img: data.msg.profile_photo,\n name: data.msg.name,\n email: data.msg.email,\n password: temp_pass,\n phone: temp_phone,\n add_arr: [\n ...data.msg.address.map((el) => {\n return {\n id: el.id,\n add: el.address,\n apt: el.apartment,\n zip: el.zipcode,\n doorman: el.is_doorman == \"0\" ? false : true,\n default: el.is_default == \"0\" ? false : true,\n };\n }),\n ],\n card_arr: [\n ...data.msg.cards.map((el) => {\n return {\n id: el.id,\n nameoncard: el.cc_name,\n cardno: `**** **** **** ${el.cc_last_4_digits}`,\n default_card: el.is_primary == \"0\" ? false : true,\n };\n }),\n ],\n });\n setshow_this_page(true);\n });\n }\n // console.log('profile check');\n }, [current_store.user.token]);\n const refresh_profile = () => {};\n\n const [loading, setloading] = useState(true);\n const [profile, setprofile] = useState({\n id: 0,\n img: \"\",\n name: \"\",\n email: \"\",\n password: \"\",\n phone: \"\",\n add_arr: [\n {\n add: \"\",\n apt: \"\",\n zip: \"\",\n doorman: false,\n default: false,\n },\n ],\n card_arr: [\n {\n nameoncard: \"\",\n cardno: \"\",\n expirydate: \"\",\n cvv: \"\",\n default_card: false,\n },\n ],\n });\n useEffect(() => {\n // test out\n if (profile.id != 0) {\n if (profile.add_arr.length == 0) {\n setprofile_modal([true, \"addaddress\"]);\n return console.log(\"add address-> error\", profile);\n } else {\n setprofile_modal([false, \"\"]);\n }\n if (profile.card_arr.length == 0) {\n setprofile_modal([true, \"addpayment\"]);\n return console.log(\"add card-> error\", profile);\n } else {\n setprofile_modal([false, \"\"]);\n }\n }\n }, [profile.address, profile.card_arr]);\n // console.log(profile);\n const [current_showing_add_in_slider, setcurrent_showing_add_in_slider] =\n useState(0);\n const [current_showing_card_in_slider, setcurrent_showing_card_in_slider] =\n useState(0);\n // const [password_type, setpassword_type] = useState(\"password\");\n const [profile_modal, setprofile_modal] = useState([false, \"type\"]);\n const [edit_data_holder, setedit_data_holder] = useState({});\n\n return (\n <>\n {!show_this_page ? (\n \n ) : (\n
\n
Profile
\n
\n
\n
\n
\n \n
\n \n setprofile_modal([true, \"changeprofilepicture\"])\n }\n >\n \n
\n
\n {/*
\n
{profile.name}
\n
*/}\n
\n
\n
PERSONAL DETAILS
\n\n
\n \n setprofile_modal([true, \"editname\"])}\n />\n
\n
\n \n setprofile_modal([true, \"editemail\"])}\n />\n
\n
\n
\n \n setprofile_modal([true, \"editpasssword\"])}\n />\n
\n
\n
\n \n setprofile_modal([true, \"editmobile\"])}\n />\n
\n
\n
\n
\n
ADDRESS DETAILS
\n
\n {profile.add_arr.length != 0 && (\n {\n setprofile_modal([true, \"editaddress\"]);\n }}\n />\n )}\n setprofile_modal([true, \"addaddress\"])}\n />\n {profile.add_arr.length <= 1 || (\n setprofile_modal([true, \"deleteaddress\"])}\n />\n )}\n
\n
\n {profile.add_arr.length != 0 ? (\n <>\n \n
\n {\n if (\n profile.add_arr[current_showing_add_in_slider].default\n ) {\n return;\n }\n setshow_this_page(false);\n edit_default_address(\n profile.add_arr[current_showing_add_in_slider].id,\n current_store.user.token,\n (data) => {\n if (!data.status) {\n return navigate(\"/404\");\n }\n setprofile({\n ...profile,\n add_arr: [\n ...data.msg.map((el) => {\n return {\n id: el.id,\n add: el.address,\n apt: el.apartment,\n zip: el.zipcode,\n doorman:\n el.is_doorman == \"0\" ? false : true,\n default:\n el.is_default == \"0\" ? false : true,\n };\n }),\n ],\n });\n setcurrent_showing_add_in_slider(0);\n setshow_this_page(true);\n }\n );\n }}\n >\n
\n \n \n
\n \n
\n {\n setshow_this_page(false);\n edit_doorman(\n {\n id: profile.add_arr[current_showing_add_in_slider]\n .id,\n doorman:\n !profile.add_arr[current_showing_add_in_slider]\n .doorman,\n },\n current_store.user.token,\n (data) => {\n if (!data.status) {\n return navigate(\"/404\");\n }\n setprofile({\n ...profile,\n add_arr: [\n ...data.msg.map((el) => {\n return {\n id: el.id,\n add: el.address,\n apt: el.apartment,\n zip: el.zipcode,\n doorman:\n el.is_doorman == \"0\" ? false : true,\n default:\n el.is_default == \"0\" ? false : true,\n };\n }),\n ],\n });\n setcurrent_showing_add_in_slider(0);\n setshow_this_page(true);\n }\n );\n }}\n >\n
\n \n \n
\n \n
\n
\n \n ) : (\n
\n No Address Found\n
\n Please use + Button To provide a new Address\n
\n )}\n \n
\n
\n
PAYMENT DETAILS
\n
\n setprofile_modal([true, \"addpayment\"])}\n />\n {profile.card_arr.length <= 1 || (\n setprofile_modal([true, \"deletepayment\"])}\n />\n )}\n
\n
\n {profile.card_arr.length != 0 ? (\n <>\n \n
\n
\n {\n setshow_this_page(false);\n edit_default_card(\n profile.card_arr[current_showing_card_in_slider].id,\n current_store.user.token,\n (data) => {\n if (!data.status) {\n return navigate(\"/404\");\n }\n setprofile({\n ...profile,\n card_arr: [\n ...data.msg.map((el) => {\n return {\n id: el.id,\n nameoncard: el.cc_name,\n cardno: `**** **** **** ${el.cc_last_4_digits}`,\n default_card:\n el.is_primary == \"0\" ? false : true,\n };\n }),\n ],\n });\n setcurrent_showing_card_in_slider(0);\n setshow_this_page(true);\n }\n );\n }}\n >\n \n \n setprofile({\n ...profile,\n default_card: current_showing_card_in_slider,\n })\n }\n >\n
\n \n
\n {\n setshow_this_page(false);\n edit_default_card(\n profile.card_arr[current_showing_card_in_slider].id,\n current_store.user.token,\n (data) => {\n if (!data.status) {\n return navigate(\"/404\");\n }\n setprofile({\n ...profile,\n card_arr: [\n ...data.msg.map((el) => {\n return {\n id: el.id,\n nameoncard: el.cc_name,\n cardno: `**** **** **** ${el.cc_last_4_digits}`,\n default_card:\n el.is_primary == \"0\" ? false : true,\n };\n }),\n ],\n });\n setcurrent_showing_card_in_slider(0);\n setshow_this_page(true);\n }\n );\n }}\n >\n Set as default payment\n \n
\n
\n \n ) : (\n
\n No Card Found\n
\n Please use + Button To provide a new card\n
\n )}\n \n
\n {\n localStorage.removeItem(\"juliette_user_token\");\n dispatch({ type: \"logout\" });\n }}\n >\n Logout\n
\n \n \n\n {profile_modal[0] && (\n \n e.target.id == \"profile_modal_close\" &&\n setprofile_modal([false, \"\"])\n }\n >\n {profile_modal[1] == \"deletepayment\" ||\n profile_modal[1] == \"deleteaddress\" ? (\n \"\"\n ) : (\n
\n \n
\n )}\n {profile_modal[1] == \"changeprofilepicture\" ? (\n setprofile_modal([false, \"\"])}\n />\n ) : profile_modal[1] == \"editname\" ? (\n setprofile_modal([false, \"\"])}\n // show_this_page={setshow_this_page}\n setshow_this_page={setshow_this_page}\n />\n ) : profile_modal[1] == \"editemail\" ? (\n setprofile_modal([false, \"\"])}\n />\n ) : profile_modal[1] == \"editpasssword\" ? (\n setprofile_modal([false, \"\"])}\n setshow_this_page={setshow_this_page}\n />\n ) : profile_modal[1] == \"editmobile\" ? (\n setprofile_modal([false, \"\"])}\n setshow_this_page={setshow_this_page}\n />\n ) : profile_modal[1] == \"editaddress\" ? (\n setprofile_modal([false, \"\"])}\n data_index={current_showing_add_in_slider}\n profile={profile}\n setprofile={setprofile}\n />\n ) : profile_modal[1] == \"addaddress\" ? (\n setprofile_modal([false, \"\"])}\n profile={profile}\n setprofile={setprofile}\n setshow_this_page={setshow_this_page}\n />\n ) : profile_modal[1] == \"deleteaddress\" ? (\n {\n setshow_this_page(false);\n delete_address(\n profile.add_arr[current_showing_add_in_slider].id,\n current_store.user.token,\n (data) => {\n if (!data.status) {\n return navigate(\"/404\");\n }\n setprofile({\n ...profile,\n add_arr: [\n ...data.msg.map((el) => {\n return {\n id: el.id,\n add: el.address,\n apt: el.apartment,\n zip: el.zipcode,\n doorman: el.is_doorman == \"0\" ? false : true,\n default: el.is_default == \"0\" ? false : true,\n };\n }),\n ],\n });\n setcurrent_showing_add_in_slider(0);\n setprofile_modal([false, \"\"]);\n setshow_this_page(true);\n }\n );\n }}\n cancel={() => setprofile_modal([false, \"\"])}\n />\n ) : profile_modal[1] == \"addpayment\" ? (\n setprofile_modal([false, \"\"])}\n profile={profile}\n setprofile={setprofile}\n setshow_this_page={setshow_this_page}\n />\n ) : profile_modal[1] == \"deletepayment\" ? (\n setprofile_modal([false, \"\"])}\n handelclick={() => {\n setshow_this_page(false);\n delete_card(\n profile.card_arr[current_showing_card_in_slider].id,\n current_store.user.token,\n (data) => {\n if (!data.status) {\n return navigate(\"/404\");\n }\n setprofile({\n ...profile,\n card_arr: [\n ...data.msg.map((el) => {\n return {\n id: el.id,\n nameoncard: el.cc_name,\n cardno: `**** **** **** ${el.cc_last_4_digits}`,\n default_card:\n el.is_primary == \"0\" ? false : true,\n };\n }),\n ],\n });\n setcurrent_showing_card_in_slider(0);\n setprofile_modal([false, \"\"]);\n setshow_this_page(true);\n }\n );\n }}\n />\n ) : (\n \"\"\n )}\n \n )}\n \n )}\n \n );\n};\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _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 _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 * as React from \"react\";\n\nfunction SvgArrowDown(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 20,\n viewBox: \"0 0 20 20\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16.6002 7.45801L11.1668 12.8914C10.5252 13.533 9.47516 13.533 8.8335 12.8914L3.40015 7.45801\",\n stroke: \"white\",\n strokeWidth: 1.25,\n strokeMiterlimit: 10,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgArrowDown);\nexport default __webpack_public_path__ + \"static/media/arrow_down.7b447d1cc3e999dee683494f47e994f1.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _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 _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 * as React from \"react\";\n\nfunction SvgEmailIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n viewBox: \"0 0 512 512\",\n style: {\n enableBackground: \"new 0 0 512 512\"\n },\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0,76.8v358.4h512V76.8H0z M38.4,195.2l89.6,67.2l-89.6,58.24V195.2z M473.6,396.8H38.4v-30.362l122.314-79.503L256,358.4 l95.286-71.465L473.6,366.438V396.8z M473.6,320.64L384,262.4l89.6-67.2V320.64z M473.6,147.2L256,310.4L38.4,147.2v-32h435.2 V147.2z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgEmailIcon);\nexport default __webpack_public_path__ + \"static/media/email_icon.3b98e6f78b979f1f6d2f22db4cabf29d.svg\";\nexport { ForwardRef as ReactComponent };","import React, { useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport arrow_down from \"../img/arrow_down.svg\";\nimport { get_pricelist } from \"./API/API\";\n\nexport const Pricelist = ({ setmenu, setjuliette_bg }) => {\n const current_store = useSelector((state) => state);\n const [pricelist, setpricelist] = useState([]);\n // const data = [\n // {\n // title: \"Dry Cleaning\",\n\n // body: [\n // {\n // accord_head: \"Shirts\",\n // accord_body: [\n // [\"On Hanger\", \"5.00\"],\n // [\"Boxed\", \"5.50\"],\n // [\"Hand Pressed\", \"11.50\"],\n // [\"Dry Cleaned\", \"12.00\"],\n // [\"Tuxedo\", \"16.00\"],\n // [\"Polo Shirt / Sport\", \"13.00\"],\n // ].map((el) => {\n // return { catg: el[0], cost: `$${el[1]}` };\n // }),\n // },\n // {\n // accord_head: \"Suits\",\n // accord_body: [\n // [\"Two Piece\", \"27.00\"],\n // [\"Three Piece\", \"33.00\"],\n // [\"Suit Jacket\", \"16.00\"],\n // [\"Slacks\", \"16.00\"],\n // [\"Tuxedo\", \"33.00\"],\n // [\"Vest\", \"13.00\"],\n // [\"Tie\", \"10.00\"],\n // ].map((el) => {\n // return { catg: el[0], cost: `$${el[1]}` };\n // }),\n // },\n // {\n // accord_head: \"Accessories\",\n // accord_body: [\n // [\"Tie\", \"10.00\"],\n // [\"Scarf\", \"12.00\"],\n // [\"Shawl\", \"15.00\"],\n // [\"Hat\", \"8.50\"],\n // [\"Cummerbund\", \"10.00\"],\n // [\"Socks\", \"8.00\"],\n // [\"Gloves\", \"8.00\"],\n // [\"Zitsis\", \"10.00\"],\n // [\"2 Piece Pajama\", \"18.00\"],\n // ].map((el) => {\n // return { catg: el[0], cost: `$${el[1]}` };\n // }),\n // },\n // {\n // accord_head: \"Tops\",\n // accord_body: [\n // [\"Blouse\", \"15.00\"],\n // [\"Tank Top\", \"15.00\"],\n // [\"Sweater\", \"18.00\"],\n // [\"Cardigan\", \"18.00\"],\n // [\"Hoodie\", \"18.00\"],\n // [\"TShirt\", \"12.00\"],\n // [\"Bodysuit\", \"15.00\"],\n // ].map((el) => {\n // return { catg: el[0], cost: `$${el[1]}` };\n // }),\n // },\n // {\n // accord_head: \"Bottoms\",\n // accord_body: [\n // [\"Pants\", \"16.00\"],\n // [\"Jeans\", \"16.00\"],\n // [\"Skirts\", \"16.00\"],\n // [\"Shorts\", \"12.00\"],\n // ].map((el) => {\n // return { catg: el[0], cost: `$${el[1]}` };\n // }),\n // },\n // {\n // accord_head: \"Household\",\n // accord_body: [\n // [\"Tablecloth\", \"30.00\"],\n // [\"Napkin\", \"9.00\"],\n // [\"Bathrobe\", \"20.00\"],\n // [\"Towel\", \"15.00\"],\n // [\"Bathmat\", \"15.00\"],\n // [\"Pillow Case\", \"15.00\"],\n // [\"Fitted Sheet\", \"30.00\"],\n // [\"Flat Sheet\", \"30.00\"],\n // [\"Blanket\", \"40.00\"],\n // [\"Duvet Cover\", \"40.00\"],\n // [\"Comforter\", \"55.00\"],\n // [\"Shower Curtain\", \"25.00\"],\n // ].map((el) => {\n // return { catg: el[0], cost: `$${el[1]}` };\n // }),\n // },\n // {\n // accord_head: \"Dresses\",\n // accord_body: [\n // [\"One Piece\", \"25.00\"],\n // [\"Two Piece\", \"30.00\"],\n // [\"Cocktail Dress\", \"30.00\"],\n // [\"Gown\", \"30.00\"],\n // [\"Jumpsuit\", \"25.00\"],\n // [\"Romper\", \"25.00\"],\n // ].map((el) => {\n // return { catg: el[0], cost: `$${el[1]}` };\n // }),\n // },\n // {\n // accord_head: \"Outerwear\",\n // accord_body: [\n // [\"Trench Coat\", \"40.00\"],\n // [\"Water Repellant (Extra)\", \"30.00\"],\n // [\"Jacket\", \"35.00\"],\n // [\"Parka\", \"45.00\"],\n // [\"Coat\", \"45.00\"],\n // [\"Raincoat\", \"40.00\"],\n // [\"Peacoat\", \"45.00\"],\n // [\"Duffle Coat\", \"45.00\"],\n // [\"\", \"\"],\n // ].map((el) => {\n // return { catg: el[0], cost: el[1] != \"\" ? `$${el[1]}` : \"\" };\n // }),\n // },\n // ],\n // },\n // {\n // title: \"Laundry\",\n // body: [\n // ...\"Wash&Fold,wash\".split(\",\").map((el, i) => {\n // return {\n // accord_head: el,\n // accord_body: [\n // { catg: \"10lb minimum\", cost: \"$2.50\" },\n // {\n // catg: \"\",\n // cost: (\n // <>\n // $3.00\n //
\n // per lb\n // \n // ),\n // },\n // { catg: \"\", cost: \"\" },\n // ],\n // };\n // }),\n // ],\n // },\n // {\n // title: \"Alterations\",\n // body: [\n // ...[\n // [\"Hemming\", \"25.00\"],\n // [\"Take in/out\", \"25.00\"],\n // [\"Patching\", \"25.00\"],\n // [\"Rips\", \"15.00\"],\n // ].map((el) => {\n // return {\n // accord_head: el[0],\n // cost: `$${el[1]}`,\n // };\n // }),\n // ],\n // },\n // {\n // title: \"Hand Pressed\",\n // body: [\n // ...[\n // [\"Shirts\", \"11.50\"],\n // [\"Sheets\", \"15.00\"],\n // [\"Pillowcases\", \"10.00\"],\n // ].map((el) => {\n // return {\n // accord_head: el[0],\n // cost: `$${el[1]}`,\n // };\n // }),\n // ],\n // },\n // ];\n useEffect(() => {\n setmenu(true);\n setjuliette_bg(true);\n get_pricelist(\"\", current_store.user.token, (data1) => {\n let temp_pricelist = data1;\n console.log(temp_pricelist);\n // .filter((el) => el.delete_status != 1);\n // console.log(temp_pricelist);\n temp_pricelist = temp_pricelist.map((el) => {\n if (el.has_child) {\n return {\n title: el.name,\n haschild: el.has_child,\n delete: el.delete_status === 1 || el.show_client_status === 1,\n body: [\n ...el.items.map((el1) => {\n return {\n accord_head: el1.name,\n delete:\n el1.delete_status === 1 || el1.show_client_status === 1,\n accord_body: [\n ...el1.items.map((el2) => {\n return {\n catg: el2.name,\n cost: \"$\" + Number(el2.cost).toFixed(2).toString(),\n delete:\n el2.delete_status === 1 ||\n el2.show_client_status === 1,\n };\n }),\n ],\n };\n }),\n ],\n };\n }\n if (el.special_cost) {\n return {\n title: el.name,\n haschild: false,\n delete: el.delete_status === 1 || el.show_client_status === 1,\n body: [\n ...el.items.map((el1) => {\n return {\n accord_body: [\n {\n catg: `${el1.cost.min_weight}lb minimum`,\n cost: `$${Number(el1.cost.min_cost)\n .toFixed(2)\n .toString()}`,\n delete:\n el1.delete_status === 1 || el1.show_client_status === 1,\n },\n {\n catg: \"\",\n cost: (\n <>\n ${Number(el1.cost.per_cost).toFixed(2)}\n
\n per lb\n \n ),\n },\n { catg: \"\", cost: \"\" },\n ],\n accord_head: el1.name,\n };\n }),\n ],\n };\n }\n return {\n title: el.name,\n haschild: false,\n delete: el.delete_status === 1 || el.show_client_status === 1,\n body: [\n ...el.items.map((el1) => {\n return {\n accord_head: el1.name,\n cost: \"$\" + Number(el1.cost).toFixed(2).toString(),\n delete: el1.delete_status === 1 || el1.show_client_status === 1,\n };\n }),\n ],\n };\n });\n console.log(temp_pricelist);\n setpricelist([...temp_pricelist]);\n // console.log(\"data1\", data1);\n // console.log(\"pricelist\", temp_pricelist, data);\n });\n }, []);\n // const data1 = [[data[0]], [data[1], data[2]], [data[3]]];\n // const data1 = [\n // ...data.map((el) => [el]),\n // ...data.map((el) => [el]),\n // ...data.map((el) => [el]),\n // ];\n // console.log(data, data1);\n\n const [current_open, setcurrent_open] = useState();\n const [columncount, setcolumncount] = useState(0);\n\n const switch_acccordian = (current_id, count_item) => {\n let accordian_body = document.getElementsByClassName(\"accordian_body\");\n [...accordian_body].map((el) => {\n el.style = \"\";\n el.className = \"accordian_body\";\n });\n if (current_open != current_id) {\n document.getElementById(current_id).classList.toggle(\"active\");\n setcurrent_open(current_id);\n if (document.getElementById(\"pricelist\").offsetWidth < 704) {\n // counts the height of the respective accordian to open\n document.getElementById(current_id).style.height =\n count_item * 18 + count_item * 12 + 10 + 22 + \"px\";\n } else {\n // counts the height of the respective accordian to open\n document.getElementById(current_id).style.height =\n count_item * 18 + (count_item - 1) * 12 + 10 + 22 + \"px\";\n }\n } else {\n setcurrent_open(\"\");\n }\n };\n useEffect(() => {\n // calculates number of coumns to show w.r.t the data provided if you want a horizontal scroll\n // let count = 0;\n // data1.map((el) => {\n // let x = el[0].body.length > 5 ? (count += 2) : (count += 1);\n // });\n // console.log(Math.ceil(count / 2));\n // setcolumncount(Math.ceil(count / 2) + 1);\n }, []);\n\n return (\n
\n
\n Pricelist\n
\n
\n \n
\n {/* {data1.map((main_el) => ( */}\n {[\n ...pricelist.map((el) => [el]),\n // ...pricelist.map((el) => [el]),\n // ...pricelist.map((el) => [el]),\n ].map((main_el) => (\n <>\n {/* // className=\"pricelist_body_height\" */}\n {main_el.map((el, i) => {\n if (el.delete) {\n return \"\";\n }\n return (\n
\n
{el.title}
\n
\n {el.body.map((el1, i1) => {\n if (el1.delete) {\n return \"\";\n }\n return (\n \n \n switch_acccordian(\n el.title.split(\" \").join(\"\").toLowerCase() +\n \"_accordian_body_\" +\n i1,\n el1.accord_body.length\n )\n }\n >\n {el1.accord_head}\n {el1.accord_body ? (\n \n ) : (\n
{el1.cost}
\n )}\n
\n
\n {el1.accord_body\n ? el1.accord_body.map((el2, i3) => {\n if (el2.delete) {\n return \"\";\n }\n return (\n
\n
{el2.catg}
\n
{el2.cost}
\n
\n );\n })\n : \"\"}\n
\n
\n );\n })}\n
\n
\n );\n })}\n \n ))}\n\n {/*
\n
Dry Cleaning
\n
\n \n
\n
\n
\n
Laundry
\n
\n \n
\n
\n
\n
\n
*/}\n
\n \n \n );\n};\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _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 _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 * as React from \"react\";\n\nfunction SvgCallIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"24px\",\n height: \"24px\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M3.833 4h4.49L9.77 7.618l-2.325 1.55A1 1 0 0 0 7 10c.003.094 0 .001 0 .001v.021a2.026 2.026 0 0 0 .006.134c.006.082.016.193.035.33.039.27.114.642.26 1.08.294.88.87 2.019 1.992 3.141 1.122 1.122 2.261 1.698 3.14 1.992.439.146.81.22 1.082.26a4.43 4.43 0 0 0 .463.04l.013.001h.008s.112-.006.001 0a1 1 0 0 0 .894-.553l.67-1.34 4.436.74v4.32c-2.111.305-7.813.606-12.293-3.874C3.227 11.813 3.527 6.11 3.833 4zm5.24 6.486l1.807-1.204a2 2 0 0 0 .747-2.407L10.18 3.257A2 2 0 0 0 8.323 2H3.781c-.909 0-1.764.631-1.913 1.617-.34 2.242-.801 8.864 4.425 14.09 5.226 5.226 11.848 4.764 14.09 4.425.986-.15 1.617-1.004 1.617-1.913v-4.372a2 2 0 0 0-1.671-1.973l-4.436-.739a2 2 0 0 0-2.118 1.078l-.346.693a4.71 4.71 0 0 1-.363-.105c-.62-.206-1.481-.63-2.359-1.508-.878-.878-1.302-1.739-1.508-2.36a4.59 4.59 0 0 1-.125-.447z\",\n fill: \"#0D0D0D\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgCallIcon);\nexport default __webpack_public_path__ + \"static/media/call_icon.6bb1658071d8f007334f1b76b97b104d.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _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 _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 * as React from \"react\";\n\nfunction SvgMessageIcon(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: \"24px\",\n height: \"24px\",\n viewBox: \"0 0 24 24\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n fill: \"none\",\n d: \"M0 0h24v24H0z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6.455 19L2 22.5V4a1 1 0 0 1 1-1h18a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1H6.455zm-.692-2H20V5H4v13.385L5.763 17zM11 10h2v2h-2v-2zm-4 0h2v2H7v-2zm8 0h2v2h-2v-2z\"\n }))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgMessageIcon);\nexport default __webpack_public_path__ + \"static/media/message_icon.0767cd9ee395ffb45243ce2d74ebdb65.svg\";\nexport { ForwardRef as ReactComponent };","import React, { useEffect, useState } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\n// import hiw_bg from \"../img/how_it_works_bg.svg\";\n// import hiw_bg from \"../img/jpegbg/how_it_works_bg.jpg\";\n// import hiw_bg from \"https://julietteimages.s3.amazonaws.com/systemimages/welcome-min.jpg\";\nimport \"../img/notfound_bg.png\";\nimport { check_img_loaded } from \"./CommonComponents/loader_data\";\nimport { Loading } from \"./CommonComponents/Loading\";\n\nexport const HowItWorks = ({ setmenu, setjuliette_bg, setloader }) => {\n const navigate = useNavigate();\n const [show_this_page, setshow_this_page] = useState(false)\n // const [loader, setloader] = useState(true);\n\n useEffect(() => {\n let to_redirect = localStorage.getItem(\"juliette_home\")\n let token_in_localstorage = localStorage.getItem('juliette_user_token')\n if (to_redirect && to_redirect == 'true') {\n if (token_in_localstorage) {\n return navigate(\"/request-pickup\")\n }\n return navigate(\"/login\")\n }\n setjuliette_bg(false);\n setmenu(false);\n // check_img_loaded(hiw_bg, setloader);\n setshow_this_page(true)\n // const loadImage = (image) => {\n // return new Promise((resolve, reject) => {\n // const loadImg = new Image();\n // loadImg.src = image.url;\n // // wait 2 seconds to simulate loading time\n // loadImg.onload = () => resolve(image.url);\n\n // loadImg.onerror = (err) => reject(err);\n // });\n // };\n }, []);\n const hiw_bg = 'https://julietteimages.s3.amazonaws.com/systemimages/welcome-min.jpg'\n return (\n <>\n {\n show_this_page &&\n \n
Welcome
\n
\n
\n Welcome\n {/* How it\n
\n works */}\n
\n
\n Juliette sits at the intersection of fashion, lifestyle, and\n technology. We understand that your clothes are an extension of who\n you are. But more than that, we're New Yorkers. And as New Yorkers\n we value time and convenience above all else.\n
\n
\n Our service is simple and straightforward. We'll pickup, clean, and\n deliver your clothes at the tap of a button.\n {/*
\n Request a pickup by the tap of a button and leave your clothes with\n your doorman. We pickup every night between 7-10pm.\n
\n
\n Your clothes are then taken to our flagship store on the Upper West\n Side where they are carefully cared for and beautifully packaged.\n
\n
\n Your clothes are returned to your doorman in 24-48 hours. */}\n
\n navigate(\"/login\")}\n >\n Enter\n
\n
\n
\n {\n localStorage.setItem(\"juliette_home\", e.target.checked == true)\n }} />\n \n
\n \n
\n \n \n }\n \n );\n};\n","import React, { useState } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\nimport { send_email_otp } from \"../../API/API\";\n\nexport const EnterEmailToGetPassword = ({\n setshow_forgetpassword_card,\n cancel,\n email,\n setemail,\n}) => {\n const navigate = useNavigate();\n const [email_error,setemail_error] = useState('')\n return (\n <>\n
ENTER EMAIL TO GET CODE
\n
\n {setemail(e.target.value);setemail_error('')}}\n value={email}\n >\n {\n email_error &&
{email_error}
\n }\n
\n
\n Cancel\n
\n ()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/\n ) != null\n ? \"\"\n : \"disable\")\n }\n mouse=\"pointer\"\n onClick={() =>{\n if(email.match(/^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/) != null){\n send_email_otp(\n {\n email: email,\n edit: false,\n name: ''\n },\n '',\n (data) => {\n // console.log('email_otp', data);\n // console.log(data);\n if (!data.status) {\n if(data.msg === 'User does not exist'){\n // console.log('error',data.status);\n setemail_error(data.msg)\n return\n }\n navigate('/404')\n }\n // setverificationcode(data.msg)\n // setemail_modal_showing(\"setanewemail2\");\n setshow_forgetpassword_card(\"enterverificationcode\")\n }\n )\n return\n }\n else{\n return\n }\n }\n }\n >\n Send verification code\n \n \n );\n};\n","import React, { useState } from \"react\";\nimport { just_verify_email, resend_email_otp, verify_email } from \"../../API/API\";\n\nexport const EnterVerificationCode = ({\n setshow_forgetpassword_card,\n cancel,\n email,\n setemail,\n temptoken,\n settemptoken\n}) => {\n\n const [resendcode, setresendcode] = useState(false);\n const [verificationcode, setverificationcode] = useState(\"\");\n const [verificationcode_err, setverificationcode_err] = useState(\"\");\n return (\n <>\n
ENTER EMAIL TO GET CODE
\n
\n setemail(e.target.value)}\n readOnly\n >\n
\n
ENTER VERIFICATIONS CODE
\n
\n {setverificationcode(e.target.value);setverificationcode_err('')}}\n >\n {\n verificationcode_err &&\n
{verificationcode_err}
\n }\n
\n {\n if(resendcode){\n return\n }\n setresendcode(true)\n setverificationcode('');\n resend_email_otp({\n email:email,\n },'',(data)=>{\n // console.log(data);\n setresendcode(false)\n });\n }}\n >\n {\n resendcode ? 'Resending...' : 'Resend code'\n }\n \n { setshow_forgetpassword_card(\"enteremailtogetcode\");setverificationcode('')}}\n >\n Set new email\n \n {/* {verificationcode != \"\" ? ( */}\n {\n\n if(verificationcode.trim() == \"\"){\n return\n }\n \n just_verify_email(\n {\n email: email,\n // name: profile.name,\n otp: verificationcode,\n // id: profile.id\n },\n '',\n (data) => {\n console.log(data);\n if (!data.status) {\n // navigate('/404')\n return\n }\n if (data.otp_error) {\n // console.log('otp false');\n setverificationcode_err('verification code is wrong')\n return\n }\n settemptoken(data.msg.token);\n setshow_forgetpassword_card(\"setnewpassword\")\n // dispatch({ type: \"login\", payload: { token: data.token } });\n // localStorage.setItem('juliette_user_token', data.token);\n // cancel();\n\n // setverificationcode(data.msg)\n // setemail_modal_showing(\"setanewemail2\");\n }\n )\n // verificationcode != \"\" &&\n }\n }\n >\n Confirm Verification\n \n {/* ) : (\n setshow_forgetpassword_card(\"setnewpassword\")}\n >\n enter\n \n )} */}\n \n );\n};\n","import React, { useState } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\nimport password_not_shown from \"../../../img/password_not_shown.svg\";\nimport password_shown from \"../../../img/password_shown.svg\";\nimport { encrypt_data } from \"../../../RSA_Encryption/RSA\";\nimport { edit_password, reset_password } from \"../../API/API\";\n\nexport const SetNewPassword = ({ cancel ,email,temptoken, settemptoken}) => {\n const [password1, setpassword1] = useState(\"\");\n const [password1_err, setpassword1_err] = useState(\"\");\n const [password1_type, setpassword1_type] = useState(\"password\");\n const [password2, setpassword2] = useState(\"\");\n const [password2_err, setpassword2_err] = useState(\"\");\n const [password2_type, setpassword2_type] = useState(\"password\");\n\n\n\n const navigate = useNavigate();\n console.log('temptoken',temptoken);\n \n const OnChangePassword = (e, state_password, state_passsword_err) => {\n let last_typed_letter = e.slice(-1).charCodeAt(0);\n if (last_typed_letter < 33 || last_typed_letter > 126) {\n return;\n }\n let temp_password = e.split(\"\");\n let pass_count = {\n char: 0,\n num: 0,\n special: 0,\n };\n temp_password.map((el) => {\n let last_char_code = el.charCodeAt(0);\n if (last_char_code >= 48 && last_char_code <= 57) {\n pass_count.num += 1;\n } else if (\n (last_char_code >= 65 && last_char_code <= 90) ||\n (last_char_code >= 97 && last_char_code <= 122)\n ) {\n pass_count.char += 1;\n } else if (last_char_code >= 33 && last_char_code <= 126) {\n pass_count.special += 1;\n }\n });\n state_password(e);\n state_passsword_err(\n (\n (pass_count.char + pass_count.num + pass_count.special) < 6 ||\n pass_count.num < 1 ||\n pass_count.special < 1\n ).toString()\n );\n // console.log(pass_count, last_typed_letter);\n };\n console.log( password1 != password2, password1 ,password2);\n \n return (\n <>\n
SET NEW PASSWORD
\n
\n {\n OnChangePassword(e.target.value, setpassword1, setpassword1_err);\n setpassword2('')\n }}\n >\n {password1_type === \"text\" ? (\n {\n password1_type === \"password\"\n ? setpassword1_type(\"text\")\n : setpassword1_type(\"password\");\n }}\n />\n ) : (\n {\n password1_type === \"password\"\n ? setpassword1_type(\"text\")\n : setpassword1_type(\"password\");\n }}\n />\n )}\n
\n
\n {\n OnChangePassword(e.target.value, setpassword2, setpassword2_err);\n }}\n >\n {password2_type === \"text\" ? (\n {\n password2_type === \"password\"\n ? setpassword2_type(\"text\")\n : setpassword2_type(\"password\");\n }}\n />\n ) : (\n {\n password2_type === \"password\"\n ? setpassword2_type(\"text\")\n : setpassword2_type(\"password\");\n }}\n />\n )}\n
\n {\n password1_err === 'true' &&\n
\n Your password needs to consist of\n
\n 8 characters including 1 number, 1 symbol.\n
\n }\n {\n (password1 !== password2 && password2 != '') &&\n
\n Passwords have to match.\n
\n }\n
\n Cancel\n
\n {password1 == password2 && password1 != \"\" ? (\n {\n reset_password(\n {\n email:email,\n token:temptoken,\n password:encrypt_data(password1)\n },\n temptoken,\n (data) => {\n console.log('verify password',data);\n // setshow_this_page(true)\n if (!data.status) {\n return navigate('/404');\n }\n return navigate('/login');\n // setprofile({ ...profile, password: data.msg });\n // cancel();\n return\n }\n )\n // navigate(\"/login\");\n }\n }\n >\n Continue\n \n ) : (\n
\n Continue\n
\n )}\n \n );\n};\n","import React, { useEffect, useState } from \"react\";\nimport { Navigate, useNavigate } from \"react-router-dom\";\nimport { EnterEmailToGetPassword } from \"./ForgetPassword/EnterEmailToGetPassword\";\nimport { EnterVerificationCode } from \"./ForgetPassword/EnterVerificationCode\";\nimport { SetNewPassword } from \"./ForgetPassword/SetNewPassword\";\n\nexport const ForgotPassword = ({ setmenu, setjuliette_bg }) => {\n const navigate = useNavigate();\n const [show_forgetpassword_card, setshow_forgetpassword_card] = useState(\n \"enteremailtogetcode\"\n );\n // enter email to get code -start\n const [email, setemail] = useState(\"\");\n const [temptoken, settemptoken] = useState(\"\");\n // enter email to get code -end\n\n useEffect(() => {\n setmenu(false);\n setjuliette_bg(true);\n }, []);\n\n return (\n
\n
\n
Forgot Password
\n {show_forgetpassword_card == \"enteremailtogetcode\" ? (\n navigate(\"/login\")}\n email={email}\n setemail={setemail}\n />\n ) : show_forgetpassword_card == \"enterverificationcode\" ? (\n navigate(\"/login\")}\n email={email}\n setemail={setemail}\n temptoken ={temptoken} \n settemptoken ={settemptoken}\n />\n ) : show_forgetpassword_card == \"setnewpassword\" ? (\n navigate(\"/login\")}\n email={email}\n temptoken={temptoken}\n settemptoken={settemptoken}\n />\n ) : (\n \"\"\n )}\n
\n
\n );\n};\n","import React, { useEffect } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\n\nexport const NotFound = ({ setjuliette_bg, setmenu }) => {\n const navigate = useNavigate();\n useEffect(() => {\n setjuliette_bg(false);\n setmenu(false);\n }, []);\n\n return (\n
\n
404
\n
it seems an error accured
\n navigate(\"/login\")}\n >\n Homepage\n
\n \n );\n};\n","import React, { useEffect, useState } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\nimport trash from \"../../img/trash.svg\";\nimport add_img from \"../../img/add.svg\";\nimport {\n cancel_order,\n get_orderfiledata,\n get_order_by_id,\n get_order_images,\n} from \"../API/API\";\nimport { useSelector } from \"react-redux\";\nimport { CancelPickupModal } from \"../CancelPickupModal\";\n\nconst test1_data = {\n sql_data: {\n order_id: 0,\n display_status: \"\",\n client_particulars: {\n others: \"0\",\n laundry: \"0\",\n drycleaning: \"0\",\n },\n order_date: \"\",\n amount: \"\",\n notes: \"\",\n images: [],\n discount_code: \"\",\n client_name: \"\",\n client_id: 0,\n address: \"\",\n mobile: \"\",\n last_4: \"\",\n },\n file_data: {\n order_item: [],\n globaldiscount: \"\",\n discount_switch: false,\n images_notes: [{ img: [], notes: \"\" }],\n submitted: false,\n },\n};\n\nconst status = [\"pickup requested\", \"clothes picked up\", \"clothes delivered\"];\nconst temp_obj = {\n order_item: [\n {\n item_name: \"Laundry - Wash and Fold\",\n item_price: \"75\",\n item_weight: \"15\",\n },\n { item_name: \"Hang Dry\", item_price: \"24\", item_weight: -1 },\n ],\n};\n\nexport const NewViewOrder = ({\n view_order,\n order_item,\n setloader,\n order,\n setorder,\n setshowing_order_item,\n order_item_index,\n setorder_item_index,\n setview_order,\n}) => {\n const navigate = useNavigate();\n\n const current_store = useSelector((state) => state);\n const [loadermodal, setloadermodal] = useState(false);\n useEffect(() => {\n setloader(loadermodal);\n }, [loadermodal]);\n const [test_data, settest_data] = useState({ ...test1_data });\n // const [test_data, settest_data] = useState({});\n const [calculated, setcalculated] = useState({\n subtotal: 0,\n discount: 0,\n });\n useEffect(() => {\n document.body.style = view_order ? \"overflow:hidden\" : \"\";\n if (!view_order) {\n return;\n }\n if (!order_item.id) {\n return;\n }\n setloadermodal(true);\n get_order_by_id(order_item.id, current_store.user.token, (data) => {\n setloadermodal(false);\n console.log(\"customer data\", data.msg);\n settest_data({ ...data.msg });\n let temp_test_data = { ...data.msg };\n let temp_sub_total = 0;\n let temp_discount = 0;\n // if(Object.keys(temp_test_data.file_data).length == 0){\n // return\n // }\n // if()\n temp_test_data.file_data?.order_item.map(\n (el) => (temp_sub_total += Number(el.total))\n );\n // setsub_total(temp_sub_total);\n if (temp_test_data.file_data.discount_switch) {\n temp_discount = temp_test_data.file_data.globaldiscount;\n } else {\n temp_discount =\n (temp_sub_total / 100) *\n (temp_test_data.file_data.globaldiscount || 0);\n }\n console.log({ subtotal: temp_sub_total, discount: temp_discount });\n setcalculated({\n ...calculated,\n subtotal: temp_sub_total,\n discount: temp_discount,\n });\n });\n }, [view_order]);\n const [cancelordermodalloader, setcancelordermodalloader] = useState(false);\n const [cancelpickupmodal, setcancelpickupmodal] = useState(false);\n const [cancelpickupmodal_txt, setcancelpickupmodal_txt] = useState(\"\");\n const [current_item, setcurrent_item] = useState({\n ...order_item,\n file_data: {\n order_item: [],\n },\n });\n console.log();\n useEffect(() => {\n if (Object.keys(order_item).length != 0) {\n get_orderfiledata(\"\", \"\", (data) => {\n setcurrent_item({\n ...order_item,\n file_data: {\n order_item: [...data],\n },\n });\n });\n }\n // get_order_images(\n // order_item.id,\n // current_store.user.token,\n // (data)=>{\n // console.log(data);\n // if(!data.status){\n // // return navigate('/404')\n // }\n // return setcurrent_item({\n // ...current_item,\n // photos:[\n // ...data.msg.map(el=>el.url)\n // ]\n // })\n // }\n // )\n }, [order_item]);\n\n // console.log(order_item);\n // console.log(\"current_item\", current_item);\n\n // const add_img_to_currentedit = (current) => {\n // let temp_arr = [];\n // if (current.target.files.length) {\n // console.log(Object.values(current.target.files));\n // Object.values(current.target.files).map((el) => {\n // var reader = new FileReader();\n // reader.readAsDataURL(el);\n // reader.onload = function () {\n // // console.log(\"reader\", reader.result);\n // temp_arr.push(reader.result);\n // // console.log(\"reader_temp_Arr\", temp_arr);\n // if (current.target.files.length == temp_arr.length) {\n // setcurrent_item({\n // ...current_item,\n // photos: [...current_item.photos, ...temp_arr],\n // });\n // }\n // };\n // });\n // }\n // };\n // const removeimg = (i) => {\n // let copy_current_photos = [...current_item.photos];\n // copy_current_photos.splice(i, 1);\n // setcurrent_item({\n // ...current_item,\n // photos: copy_current_photos,\n // });\n // };\n if (Object.keys(test_data).length == 0) {\n return \"\";\n } else {\n console.log(\"loadermodal\", loadermodal);\n return (\n <>\n \n {/*
\n
setview_order(false)}>
\n
*/}\n
\n {/*
{current_item.date}
*/}\n {Object.keys(test_data.file_data).length > 0 &&\n test_data.file_data.order_item.length != 0 &&\n test_data.file_data?.submitted !== false && (\n
\n {/*
{test_data.sql_data.client_name}
*/}\n
\n {test_data.sql_data.address || \"No Address Found\"}\n
\n
\n {test_data.sql_data.mobile || \"No Mobile Number Found\"}\n
\n
\n {test_data.sql_data.last_4 ? (\n <>**** **** {test_data.sql_data.last_4}\n ) : (\n \"No Card Found\"\n )}\n
\n
\n {\n // test_data.submitted &&\n test_data.file_data.order_item.map((el, i) => (\n \n
\n
\n {el.item_name.split(\"%ITEMS_NAME_DIVIDER%\")\n .length > 1\n ? el.item_name\n .split(\"%ITEMS_NAME_DIVIDER%\")\n .map((el1) =>
{el1.trim()}
)\n : el.item_name}\n
\n {el.item_weight && el.item_weight != -1 && (\n
{el.item_weight}lb
\n )}\n
\n
${el.item_price}
\n {/* {el?.addon_items && el.addon_items.length > 0 && ( */}\n
\n {el.addon_items.map((el1, i) => (\n
\n
{i + 1}.
\n
\n
{el1.addon_title}
\n
{el1.addon_sub}
\n
\n
\n ${el1.price.toFixed(2)}\n
\n
\n ))}\n {el.addon_items.length > 0 &&\n Number(el.discount_value) > 0 ? (\n
\n {/* {el.discount_value} */}\n
\n ) : (\n \"\"\n )}\n {/* start options */}\n {Number(el.discount_value) > 0 &&\n el.addon_items.length > 0 && (\n
\n {el.addon_items.length > 0 && (\n <>\n
SubTotal
\n
\n $\n {Number(el.total) === 0\n ? (\n Number(el.item_price) +\n Number(\n el.addon_items.reduce(\n (prev, curr) =>\n prev + curr.price,\n 0\n )\n )\n ).toFixed(2)\n : (\n Number(el.total) +\n (Number(el.discount_value) > 0\n ? Number(el.discount_value)\n : 0)\n ).toFixed(2)}\n
\n \n )}\n
\n )}\n {/* {el.discount_value || \"not exists\"} */}\n {Number(el.discount_value) > 0 && (\n <>\n \n
Discount
\n
\n - $\n {Number(el.total) === 0\n ? (\n Number(el.item_price) +\n Number(\n el.addon_items.reduce(\n (prev, curr) => prev + curr.price,\n 0\n )\n )\n ).toFixed(2)\n : Number(el.discount_value).toFixed(2)}\n
\n
\n \n )}\n
\n
\n
Total
\n
${el.total}
\n
\n
\n {/* )} */}\n
\n ))\n }\n
\n
\n
Subtotal
\n
\n $\n {test_data.submitted\n ? Number(calculated.subtotal).toFixed(2).toString()\n : \"0.00\"}\n
\n
\n
\n
Discount
\n
\n -$\n {test_data.submitted\n ? Number(calculated.discount).toFixed(2).toString()\n : \"0.00\"}\n
\n
\n
\n
Total
\n
\n $\n {test_data.submitted\n ? Number(\n Number(calculated.subtotal) -\n Number(calculated.discount)\n )\n .toFixed(2)\n .toString()\n : \"0.00\"}\n
\n
\n \n )}\n \n
Order Details
\n
\n
Order Date
\n
\n {test_data.sql_data.order_date}\n
\n
\n {Number(\n Object.values(test_data.sql_data.client_particulars).join(\"\")\n ) > 0 && (\n
\n
Requested Pickup
\n
\n
    \n {[\n [\"laundry\", \"Laundry\"],\n [\"drycleaning\", \"Dry Cleaning\"],\n [\"others\", \"Others\"],\n ].map((el) => {\n if (\n test_data.sql_data.client_particulars[el[0]] == \"1\"\n ) {\n return
  1. {el[1]}
  2. ;\n }\n })}\n
\n
\n
\n )}\n
\n
Status
\n
{test_data.sql_data.display_status}
\n
\n {test_data.sql_data.discount_code && (\n
\n
Discount Code
\n
{test_data.sql_data.discount_code || \"-\"}
\n
\n )}\n
\n
Notes
\n
{test_data.sql_data.notes || \"-\"}
\n
\n
\n {\n setview_order(false);\n setTimeout(() => {\n settest_data({ ...test1_data });\n }, 300);\n }}\n >\n Back\n
\n {/* {true ? ( */}\n {test_data.sql_data.stripe_reciept ? (\n
\n ) : (\n \"\"\n )}\n {test_data.sql_data.display_status === \"Pickup Requested\" ||\n (test_data.sql_data.display_status === \"Picked Up\" && (\n // {true && (\n {\n if (cancelordermodalloader) {\n return;\n }\n setcancelordermodalloader(true);\n setloadermodal(true);\n get_order_by_id(\n current_item.id,\n current_store.user.token,\n (data) => {\n setloadermodal(false);\n console.log(\"cancel\", data.msg);\n if (!data.status) {\n return navigate(\"/404\");\n }\n setcancelordermodalloader(false);\n console.log(\"order_by_id\", data.msg.display_status);\n if (data.msg.cancel_display) {\n setcancelpickupmodal_txt(data.msg.cancel_display);\n }\n if (\n data.msg.sql_data.display_status ===\n \"Pickup Requested\" ||\n data.msg.sql_data.display_status === \"Picked Up\"\n ) {\n setcancelpickupmodal(true);\n } else {\n // setcurrent_item({\n // ...current_item,\n // status: data.msg.display_status,\n // });\n settest_data({ ...data.msg });\n let temp_test_data = { ...data.msg };\n let temp_sub_total = 0;\n let temp_discount = 0;\n temp_test_data.file_data.order_item.map(\n (el) =>\n (temp_sub_total += Number(el.item_price))\n );\n // setsub_total(temp_sub_total);\n if (temp_test_data.file_data.discount_switch) {\n temp_discount =\n temp_test_data.file_data.globaldiscount;\n } else {\n temp_discount =\n (temp_sub_total / 100) *\n temp_test_data.file_data.globaldiscount;\n }\n console.log({\n subtotal: temp_sub_total,\n discount: temp_discount,\n });\n setcalculated({\n ...calculated,\n subtotal: temp_sub_total,\n discount: temp_discount,\n });\n }\n }\n );\n }}\n >\n {/* */}\n {cancelordermodalloader\n ? \"Fetching Data\"\n : \"Cancel Order\"}\n {/* */}\n \n ))}\n \n \n {/* {false && ( */}\n {test_data.sql_data.images.length > 0 && (\n
\n
Photos
\n
\n {test_data.sql_data.images.map((el) => (\n
\n \n
\n ))}\n
\n
\n )}\n \n {cancelpickupmodal && (\n {\n cancel_order(\n current_item.id,\n current_store.user.token,\n (data) => {\n if (data.error) {\n // do something\n return;\n }\n // setcancel_pickup_modal(false)\n // setshow_requestpickup(\"RequestPickupType\");\n window.location.reload();\n // console.log(data);\n }\n );\n }}\n no={() => {\n setcancelpickupmodal(false);\n }}\n />\n )}\n {/* {loadermodal && ( */}\n \n {/* {loadermodal && (\n
\n
\n Fetching Order Details\n
\n
\n
\n
\n
\n
\n
\n
\n )} */}\n \n );\n }\n};\n","import React, { useEffect, useState } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\n\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { get_order, verify_local_token } from \"./API/API\";\nimport { Loading } from \"./CommonComponents/Loading\";\n// import { ViewOrder } from \"./MyOrder/ViewOrder\";\nimport { NewViewOrder } from \"./MyOrder/NewViewOrder\";\nconst status = [\"pickup requested\", \"clothes picked up\", \"clothes delivered\"];\n{\n /* \n 0 = charge:0,delivery:0 \n 1 = charge:1,delivery:0 \n 2 = charge:1,delivery:1 \n */\n}\n{\n /*\n client side\n order created\n paid \n sent for delivery\n */\n}\nconst convertdate = (date) => {\n let temp_date = date.split(\"T\")[0];\n temp_date = temp_date.split(\"-\").reverse();\n return `${temp_date[0]}/${temp_date[1]}/${temp_date[2].slice(2)}`;\n};\nconst checkstatus = (order_status, status) => {\n // console.log(order_status, status);\n if (order_status) {\n if (order_status != 1) {\n return \"cancelled\";\n }\n return status;\n }\n return \"cancelled\";\n};\nconst status_arr = [[\"order created\"], [\"paid\", \"sent for delivery\"]];\nexport const MyOrderTemp = ({ setmenu, setjuliette_bg, setloader }) => {\n const dispatch = useDispatch();\n const navigate = useNavigate();\n\n const [order_list, setorder_list] = useState([]);\n const [show_this_page, setshow_this_page] = useState(false);\n const [view_order, setview_order] = useState(false);\n const [current_item, setcurrent_item] = useState({});\n const current_store = useSelector((state) => state);\n useEffect(() => {\n if (current_store.user.token == \"\") {\n let token_in_localstorage = localStorage.getItem(\"juliette_user_token\");\n\n if (token_in_localstorage) {\n verify_local_token(token_in_localstorage, (data) => {\n if (!data.status) {\n setshow_this_page(true);\n return navigate(\"/\");\n }\n dispatch({ type: \"login\", payload: { token: data.token } });\n });\n // return navigate('/request-pickup')\n } else {\n return navigate(\"/\");\n }\n } else {\n get_order(current_store.user.token, (data) => {\n if (!data.status) {\n setshow_this_page(true);\n return navigate(\"/\");\n }\n setmenu(true);\n setjuliette_bg(true);\n setorder_list([\n ...data.msg.map((el) => {\n return {\n id: el.order_id,\n // date: convertdate(el.order_date),\n date: el.order_date,\n notes: el.notes,\n total:\n el.amount == null || el.amount.trim().length == 0\n ? \"-\"\n : `$ ${el.amount}`,\n // status: checkstatus(el.order_status, status_arr[el.charged][el.delivered]),\n status: el.display_status,\n photos: el.images.map((el) => el.url),\n string_to_show: (\n
\n
Requested Pickup
\n {el.client_particulars.laundry === \"1\" &&
Laundry
}\n {el.client_particulars.drycleaning === \"1\" && (\n
Dry Cleaning
\n )}\n {el.client_particulars.others === \"1\" &&
Others
}\n
\n ),\n\n // order_status:(el.order_status? (el.order_status==1)\n };\n }),\n ]);\n setshow_this_page(true);\n });\n }\n }, [current_store.user.token]);\n\n return (\n <>\n {!show_this_page ? (\n \n ) : (\n <>\n
\n {/*
My Orders
*/}\n {/* {view_order && ( */}\n {/* //
*/}\n \n {/* //
*/}\n {/* )} */}\n
\n
My Orders
\n {order_list.map((el) => {\n return (\n
\n
\n
{el.date}
\n {el.string_to_show}\n
\n
Total
\n
{el.total}
\n
\n
\n
Status
\n
\n {el.status.split(\" \").map((el) => (\n
{el} 
\n ))}\n
\n
\n
\n {[\n // \"Picked Up\",\n \"Customer Charged\",\n \"Charged\",\n \"Delivering Clothes\",\n \"Driver Enroute to Dropoff\",\n \"Order Completed\",\n ].indexOf(el.status) !== -1 && (\n {\n setcurrent_item({ ...el });\n setview_order(true);\n }}\n >\n
View
\n
\n )}\n
\n
\n
\n );\n })}\n
\n \n \n )}\n \n );\n};\n","export default function warn(s) {\n console.warn('[react-ga]', s);\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nvar _excluded = [\"to\", \"target\"];\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\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 _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); Object.defineProperty(Constructor, \"prototype\", { writable: false }); 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 } }); Object.defineProperty(subClass, \"prototype\", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : 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; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } 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 { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : 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 React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport warn from '../utils/console/warn';\nvar NEWTAB = '_blank';\nvar MIDDLECLICK = 1;\n\nvar OutboundLink = /*#__PURE__*/function (_Component) {\n _inherits(OutboundLink, _Component);\n\n var _super = _createSuper(OutboundLink);\n\n function OutboundLink() {\n var _this;\n\n _classCallCheck(this, OutboundLink);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _super.call.apply(_super, [this].concat(args));\n\n _defineProperty(_assertThisInitialized(_this), \"handleClick\", function (event) {\n var _this$props = _this.props,\n target = _this$props.target,\n eventLabel = _this$props.eventLabel,\n to = _this$props.to,\n onClick = _this$props.onClick,\n trackerNames = _this$props.trackerNames;\n var eventMeta = {\n label: eventLabel\n };\n var sameTarget = target !== NEWTAB;\n var normalClick = !(event.ctrlKey || event.shiftKey || event.metaKey || event.button === MIDDLECLICK);\n\n if (sameTarget && normalClick) {\n event.preventDefault();\n OutboundLink.trackLink(eventMeta, function () {\n window.location.href = to;\n }, trackerNames);\n } else {\n OutboundLink.trackLink(eventMeta, function () {}, trackerNames);\n }\n\n if (onClick) {\n onClick(event);\n }\n });\n\n return _this;\n }\n\n _createClass(OutboundLink, [{\n key: \"render\",\n value: function render() {\n var _this$props2 = this.props,\n href = _this$props2.to,\n target = _this$props2.target,\n oldProps = _objectWithoutProperties(_this$props2, _excluded);\n\n var props = _objectSpread(_objectSpread({}, oldProps), {}, {\n target: target,\n href: href,\n onClick: this.handleClick\n });\n\n if (target === NEWTAB) {\n props.rel = \"\".concat(props.rel ? props.rel : '', \" noopener noreferrer\").trim();\n }\n\n delete props.eventLabel;\n delete props.trackerNames;\n return /*#__PURE__*/React.createElement('a', props);\n }\n }]);\n\n return OutboundLink;\n}(Component);\n\n_defineProperty(OutboundLink, \"trackLink\", function () {\n warn('ga tracking not enabled');\n});\n\nexport { OutboundLink as default };\nOutboundLink.propTypes = {\n eventLabel: PropTypes.string.isRequired,\n target: PropTypes.string,\n to: PropTypes.string,\n onClick: PropTypes.func,\n trackerNames: PropTypes.arrayOf(PropTypes.string)\n};\nOutboundLink.defaultProps = {\n target: null,\n to: null,\n onClick: null,\n trackerNames: null\n};","import warn from './console/warn';\nimport mightBeEmail from './mightBeEmail';\nvar redacted = 'REDACTED (Potential Email Address)';\nexport default function redactEmail(string) {\n if (mightBeEmail(string)) {\n warn('This arg looks like an email address, redacting.');\n return redacted;\n }\n\n return string;\n}","// See if s could be an email address. We don't want to send personal data like email.\n// https://support.google.com/analytics/answer/2795983?hl=en\nexport default function mightBeEmail(s) {\n // There's no point trying to validate rfc822 fully, just look for ...@...\n return typeof s === 'string' && s.indexOf('@') !== -1;\n}","// GA strings need to have leading/trailing whitespace trimmed, and not all\n// browsers have String.prototoype.trim().\nexport default function trim(s) {\n return s && s.toString().replace(/^\\s+|\\s+$/g, '');\n}","/**\n * To Title Case 2.1 - http://individed.com/code/to-title-case/\n * Copyright 2008-2013 David Gouch. Licensed under the MIT License.\n * https://github.com/gouch/to-title-case\n */\nimport trim from './trim';\nvar smallWords = /^(a|an|and|as|at|but|by|en|for|if|in|nor|of|on|or|per|the|to|vs?\\.?|via)$/i; // test\n\nexport default function toTitleCase(string) {\n return trim(string).replace(/[A-Za-z0-9\\u00C0-\\u00FF]+[^\\s-]*/g, function (match, index, title) {\n if (index > 0 && index + match.length !== title.length && match.search(smallWords) > -1 && title.charAt(index - 2) !== ':' && (title.charAt(index + match.length) !== '-' || title.charAt(index - 1) === '-') && title.charAt(index - 1).search(/[^\\s-]/) < 0) {\n return match.toLowerCase();\n }\n\n if (match.substr(1).search(/[A-Z]|\\../) > -1) {\n return match;\n }\n\n return match.charAt(0).toUpperCase() + match.substr(1);\n });\n}","var isLoaded = false;\nexport default function (options) {\n if (isLoaded) return;\n isLoaded = true;\n var gaAddress = 'https://www.google-analytics.com/analytics.js';\n\n if (options && options.gaAddress) {\n gaAddress = options.gaAddress;\n } else if (options && options.debug) {\n gaAddress = 'https://www.google-analytics.com/analytics_debug.js';\n }\n\n var onerror = options && options.onerror; // https://developers.google.com/analytics/devguides/collection/analyticsjs/\n\n /* eslint-disable */\n\n (function (i, s, o, g, r, a, m) {\n i['GoogleAnalyticsObject'] = r;\n i[r] = i[r] || function () {\n (i[r].q = i[r].q || []).push(arguments);\n }, i[r].l = 1 * new Date();\n a = s.createElement(o), m = s.getElementsByTagName(o)[0];\n a.async = 1;\n a.src = g;\n a.onerror = onerror;\n m.parentNode.insertBefore(a, m);\n })(window, document, 'script', gaAddress, 'ga');\n /* eslint-enable */\n\n}","export default function log(s) {\n console.info('[react-ga]', s);\n}","export var gaCalls = [];\nexport default {\n calls: gaCalls,\n ga: function ga() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n gaCalls.push([].concat(args));\n },\n resetCalls: function resetCalls() {\n gaCalls.length = 0;\n }\n};","var _excluded = [\"category\", \"action\", \"label\", \"value\", \"nonInteraction\", \"transport\"];\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 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\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 _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(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\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) 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\n/**\n * React Google Analytics Module\n *\n * @package react-ga\n * @author Adam Lofting \n * Atul Varma \n */\n\n/**\n * Utilities\n */\nimport format from './utils/format';\nimport removeLeadingSlash from './utils/removeLeadingSlash';\nimport trim from './utils/trim';\nimport loadGA from './utils/loadGA';\nimport warn from './utils/console/warn';\nimport log from './utils/console/log';\nimport TestModeAPI from './utils/testModeAPI';\n\nvar _isNotBrowser = typeof window === 'undefined' || typeof document === 'undefined';\n\nvar _debug = false;\nvar _titleCase = true;\nvar _testMode = false;\nvar _alwaysSendToDefaultTracker = true;\nvar _redactEmail = true;\n\nvar internalGa = function internalGa() {\n var _window;\n\n if (_testMode) return TestModeAPI.ga.apply(TestModeAPI, arguments);\n if (_isNotBrowser) return false;\n if (!window.ga) return warn('ReactGA.initialize must be called first or GoogleAnalytics should be loaded manually');\n return (_window = window).ga.apply(_window, arguments);\n};\n\nfunction _format(s) {\n return format(s, _titleCase, _redactEmail);\n}\n\nfunction _gaCommand(trackerNames) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var command = args[0];\n\n if (typeof internalGa === 'function') {\n if (typeof command !== 'string') {\n warn('ga command must be a string');\n return;\n }\n\n if (_alwaysSendToDefaultTracker || !Array.isArray(trackerNames)) internalGa.apply(void 0, args);\n\n if (Array.isArray(trackerNames)) {\n trackerNames.forEach(function (name) {\n internalGa.apply(void 0, _toConsumableArray([\"\".concat(name, \".\").concat(command)].concat(args.slice(1))));\n });\n }\n }\n}\n\nfunction _initialize(gaTrackingID, options) {\n if (!gaTrackingID) {\n warn('gaTrackingID is required in initialize()');\n return;\n }\n\n if (options) {\n if (options.debug && options.debug === true) {\n _debug = true;\n }\n\n if (options.titleCase === false) {\n _titleCase = false;\n }\n\n if (options.redactEmail === false) {\n _redactEmail = false;\n }\n\n if (options.useExistingGa) {\n return;\n }\n }\n\n if (options && options.gaOptions) {\n internalGa('create', gaTrackingID, options.gaOptions);\n } else {\n internalGa('create', gaTrackingID, 'auto');\n }\n}\n\nexport function addTrackers(configsOrTrackingId, options) {\n if (Array.isArray(configsOrTrackingId)) {\n configsOrTrackingId.forEach(function (config) {\n if (_typeof(config) !== 'object') {\n warn('All configs must be an object');\n return;\n }\n\n _initialize(config.trackingId, config);\n });\n } else {\n _initialize(configsOrTrackingId, options);\n }\n\n return true;\n}\nexport function initialize(configsOrTrackingId, options) {\n if (options && options.testMode === true) {\n _testMode = true;\n } else {\n if (_isNotBrowser) {\n return;\n }\n\n if (!options || options.standardImplementation !== true) loadGA(options);\n }\n\n _alwaysSendToDefaultTracker = options && typeof options.alwaysSendToDefaultTracker === 'boolean' ? options.alwaysSendToDefaultTracker : true;\n addTrackers(configsOrTrackingId, options);\n}\n/**\n * ga:\n * Returns the original GA object.\n */\n\nexport function ga() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n if (args.length > 0) {\n internalGa.apply(void 0, args);\n\n if (_debug) {\n log(\"called ga('arguments');\");\n log(\"with arguments: \".concat(JSON.stringify(args)));\n }\n }\n\n return window.ga;\n}\n/**\n * set:\n * GA tracker set method\n * @param {Object} fieldsObject - a field/value pair or a group of field/value pairs on the tracker\n * @param {Array} trackerNames - (optional) a list of extra trackers to run the command on\n */\n\nexport function set(fieldsObject, trackerNames) {\n if (!fieldsObject) {\n warn('`fieldsObject` is required in .set()');\n return;\n }\n\n if (_typeof(fieldsObject) !== 'object') {\n warn('Expected `fieldsObject` arg to be an Object');\n return;\n }\n\n if (Object.keys(fieldsObject).length === 0) {\n warn('empty `fieldsObject` given to .set()');\n }\n\n _gaCommand(trackerNames, 'set', fieldsObject);\n\n if (_debug) {\n log(\"called ga('set', fieldsObject);\");\n log(\"with fieldsObject: \".concat(JSON.stringify(fieldsObject)));\n }\n}\n/**\n * send:\n * Clone of the low level `ga.send` method\n * WARNING: No validations will be applied to this\n * @param {Object} fieldObject - field object for tracking different analytics\n * @param {Array} trackerNames - trackers to send the command to\n * @param {Array} trackerNames - (optional) a list of extra trackers to run the command on\n */\n\nexport function send(fieldObject, trackerNames) {\n _gaCommand(trackerNames, 'send', fieldObject);\n\n if (_debug) {\n log(\"called ga('send', fieldObject);\");\n log(\"with fieldObject: \".concat(JSON.stringify(fieldObject)));\n log(\"with trackers: \".concat(JSON.stringify(trackerNames)));\n }\n}\n/**\n * pageview:\n * Basic GA pageview tracking\n * @param {String} path - the current page page e.g. '/about'\n * @param {Array} trackerNames - (optional) a list of extra trackers to run the command on\n * @param {String} title - (optional) the page title e. g. 'My Website'\n */\n\nexport function pageview(rawPath, trackerNames, title) {\n if (!rawPath) {\n warn('path is required in .pageview()');\n return;\n }\n\n var path = trim(rawPath);\n\n if (path === '') {\n warn('path cannot be an empty string in .pageview()');\n return;\n }\n\n var extraFields = {};\n\n if (title) {\n extraFields.title = title;\n }\n\n if (typeof ga === 'function') {\n _gaCommand(trackerNames, 'send', _objectSpread({\n hitType: 'pageview',\n page: path\n }, extraFields));\n\n if (_debug) {\n log(\"called ga('send', 'pageview', path);\");\n var extraLog = '';\n\n if (title) {\n extraLog = \" and title: \".concat(title);\n }\n\n log(\"with path: \".concat(path).concat(extraLog));\n }\n }\n}\n/**\n * modalview:\n * a proxy to basic GA pageview tracking to consistently track\n * modal views that are an equivalent UX to a traditional pageview\n * @param {String} modalName e.g. 'add-or-edit-club'\n * @param {Array} trackerNames - (optional) a list of extra trackers to run the command on\n */\n\nexport function modalview(rawModalName, trackerNames) {\n if (!rawModalName) {\n warn('modalName is required in .modalview(modalName)');\n return;\n }\n\n var modalName = removeLeadingSlash(trim(rawModalName));\n\n if (modalName === '') {\n warn('modalName cannot be an empty string or a single / in .modalview()');\n return;\n }\n\n if (typeof ga === 'function') {\n var path = \"/modal/\".concat(modalName);\n\n _gaCommand(trackerNames, 'send', 'pageview', path);\n\n if (_debug) {\n log(\"called ga('send', 'pageview', path);\");\n log(\"with path: \".concat(path));\n }\n }\n}\n/**\n * timing:\n * GA timing\n * @param args.category {String} required\n * @param args.variable {String} required\n * @param args.value {Int} required\n * @param args.label {String} required\n * @param {Array} trackerNames - (optional) a list of extra trackers to run the command on\n */\n\nexport function timing() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n category = _ref.category,\n variable = _ref.variable,\n value = _ref.value,\n label = _ref.label;\n\n var trackerNames = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;\n\n if (typeof ga === 'function') {\n if (!category || !variable || typeof value !== 'number') {\n warn('args.category, args.variable ' + 'AND args.value are required in timing() ' + 'AND args.value has to be a number');\n return;\n } // Required Fields\n\n\n var fieldObject = {\n hitType: 'timing',\n timingCategory: _format(category),\n timingVar: _format(variable),\n timingValue: value\n };\n\n if (label) {\n fieldObject.timingLabel = _format(label);\n }\n\n send(fieldObject, trackerNames);\n }\n}\n/**\n * event:\n * GA event tracking\n * @param args.category {String} required\n * @param args.action {String} required\n * @param args.label {String} optional\n * @param args.value {Int} optional\n * @param args.nonInteraction {boolean} optional\n * @param args.transport {string} optional\n * @param {{action: string, category: string}} trackerNames - (optional) a list of extra trackers to run the command on\n */\n\nexport function event() {\n var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n category = _ref2.category,\n action = _ref2.action,\n label = _ref2.label,\n value = _ref2.value,\n nonInteraction = _ref2.nonInteraction,\n transport = _ref2.transport,\n args = _objectWithoutProperties(_ref2, _excluded);\n\n var trackerNames = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;\n\n if (typeof ga === 'function') {\n // Simple Validation\n if (!category || !action) {\n warn('args.category AND args.action are required in event()');\n return;\n } // Required Fields\n\n\n var fieldObject = {\n hitType: 'event',\n eventCategory: _format(category),\n eventAction: _format(action)\n }; // Optional Fields\n\n if (label) {\n fieldObject.eventLabel = _format(label);\n }\n\n if (typeof value !== 'undefined') {\n if (typeof value !== 'number') {\n warn('Expected `args.value` arg to be a Number.');\n } else {\n fieldObject.eventValue = value;\n }\n }\n\n if (typeof nonInteraction !== 'undefined') {\n if (typeof nonInteraction !== 'boolean') {\n warn('`args.nonInteraction` must be a boolean.');\n } else {\n fieldObject.nonInteraction = nonInteraction;\n }\n }\n\n if (typeof transport !== 'undefined') {\n if (typeof transport !== 'string') {\n warn('`args.transport` must be a string.');\n } else {\n if (['beacon', 'xhr', 'image'].indexOf(transport) === -1) {\n warn('`args.transport` must be either one of these values: `beacon`, `xhr` or `image`');\n }\n\n fieldObject.transport = transport;\n }\n }\n\n Object.keys(args).filter(function (key) {\n return key.substr(0, 'dimension'.length) === 'dimension';\n }).forEach(function (key) {\n fieldObject[key] = args[key];\n });\n Object.keys(args).filter(function (key) {\n return key.substr(0, 'metric'.length) === 'metric';\n }).forEach(function (key) {\n fieldObject[key] = args[key];\n }); // Send to GA\n\n send(fieldObject, trackerNames);\n }\n}\n/**\n * exception:\n * GA exception tracking\n * @param args.description {String} optional\n * @param args.fatal {boolean} optional\n * @param {Array} trackerNames - (optional) a list of extra trackers to run the command on\n */\n\nexport function exception(_ref3, trackerNames) {\n var description = _ref3.description,\n fatal = _ref3.fatal;\n\n if (typeof ga === 'function') {\n // Required Fields\n var fieldObject = {\n hitType: 'exception'\n }; // Optional Fields\n\n if (description) {\n fieldObject.exDescription = _format(description);\n }\n\n if (typeof fatal !== 'undefined') {\n if (typeof fatal !== 'boolean') {\n warn('`args.fatal` must be a boolean.');\n } else {\n fieldObject.exFatal = fatal;\n }\n } // Send to GA\n\n\n send(fieldObject, trackerNames);\n }\n}\nexport var plugin = {\n /**\n * require:\n * GA requires a plugin\n * @param name {String} e.g. 'ecommerce' or 'myplugin'\n * @param options {Object} optional e.g {path: '/log', debug: true}\n * @param trackerName {String} optional e.g 'trackerName'\n */\n require: function require(rawName, options, trackerName) {\n if (typeof ga === 'function') {\n // Required Fields\n if (!rawName) {\n warn('`name` is required in .require()');\n return;\n }\n\n var name = trim(rawName);\n\n if (name === '') {\n warn('`name` cannot be an empty string in .require()');\n return;\n }\n\n var requireString = trackerName ? \"\".concat(trackerName, \".require\") : 'require'; // Optional Fields\n\n if (options) {\n if (_typeof(options) !== 'object') {\n warn('Expected `options` arg to be an Object');\n return;\n }\n\n if (Object.keys(options).length === 0) {\n warn('Empty `options` given to .require()');\n }\n\n ga(requireString, name, options);\n\n if (_debug) {\n log(\"called ga('require', '\".concat(name, \"', \").concat(JSON.stringify(options)));\n }\n } else {\n ga(requireString, name);\n\n if (_debug) {\n log(\"called ga('require', '\".concat(name, \"');\"));\n }\n }\n }\n },\n\n /**\n * execute:\n * GA execute action for plugin\n * Takes variable number of arguments\n * @param pluginName {String} e.g. 'ecommerce' or 'myplugin'\n * @param action {String} e.g. 'addItem' or 'myCustomAction'\n * @param actionType {String} optional e.g. 'detail'\n * @param payload {Object} optional e.g { id: '1x5e', name : 'My product to track' }\n */\n execute: function execute(pluginName, action) {\n var payload;\n var actionType;\n\n for (var _len3 = arguments.length, args = new Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++) {\n args[_key3 - 2] = arguments[_key3];\n }\n\n if (args.length === 1) {\n payload = args[0];\n } else {\n actionType = args[0];\n payload = args[1];\n }\n\n if (typeof ga === 'function') {\n if (typeof pluginName !== 'string') {\n warn('Expected `pluginName` arg to be a String.');\n } else if (typeof action !== 'string') {\n warn('Expected `action` arg to be a String.');\n } else {\n var command = \"\".concat(pluginName, \":\").concat(action);\n payload = payload || null;\n\n if (actionType && payload) {\n ga(command, actionType, payload);\n\n if (_debug) {\n log(\"called ga('\".concat(command, \"');\"));\n log(\"actionType: \\\"\".concat(actionType, \"\\\" with payload: \").concat(JSON.stringify(payload)));\n }\n } else if (payload) {\n ga(command, payload);\n\n if (_debug) {\n log(\"called ga('\".concat(command, \"');\"));\n log(\"with payload: \".concat(JSON.stringify(payload)));\n }\n } else {\n ga(command);\n\n if (_debug) {\n log(\"called ga('\".concat(command, \"');\"));\n }\n }\n }\n }\n }\n};\n/**\n * outboundLink:\n * GA outboundLink tracking\n * @param args.label {String} e.g. url, or 'Create an Account'\n * @param {function} hitCallback - Called after processing a hit.\n */\n\nexport function outboundLink(args, hitCallback, trackerNames) {\n if (typeof hitCallback !== 'function') {\n warn('hitCallback function is required');\n return;\n }\n\n if (typeof ga === 'function') {\n // Simple Validation\n if (!args || !args.label) {\n warn('args.label is required in outboundLink()');\n return;\n } // Required Fields\n\n\n var fieldObject = {\n hitType: 'event',\n eventCategory: 'Outbound',\n eventAction: 'Click',\n eventLabel: _format(args.label)\n };\n var safetyCallbackCalled = false;\n\n var safetyCallback = function safetyCallback() {\n // This prevents a delayed response from GA\n // causing hitCallback from being fired twice\n safetyCallbackCalled = true;\n hitCallback();\n }; // Using a timeout to ensure the execution of critical application code\n // in the case when the GA server might be down\n // or an ad blocker prevents sending the data\n // register safety net timeout:\n\n\n var t = setTimeout(safetyCallback, 250);\n\n var clearableCallbackForGA = function clearableCallbackForGA() {\n clearTimeout(t);\n\n if (!safetyCallbackCalled) {\n hitCallback();\n }\n };\n\n fieldObject.hitCallback = clearableCallbackForGA; // Send to GA\n\n send(fieldObject, trackerNames);\n } else {\n // if ga is not defined, return the callback so the application\n // continues to work as expected\n setTimeout(hitCallback, 0);\n }\n}\nexport var testModeAPI = TestModeAPI;\nexport default {\n initialize: initialize,\n ga: ga,\n set: set,\n send: send,\n pageview: pageview,\n modalview: modalview,\n timing: timing,\n event: event,\n exception: exception,\n plugin: plugin,\n outboundLink: outboundLink,\n testModeAPI: TestModeAPI\n};","import redactEmail from './redactEmail';\nimport toTitleCase from './toTitleCase';\nexport default function format() {\n var s = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var titleCase = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var redactingEmail = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n\n var _str = s || '';\n\n if (titleCase) {\n _str = toTitleCase(s);\n }\n\n if (redactingEmail) {\n _str = redactEmail(_str);\n }\n\n return _str;\n}","export default function removeLeadingSlash(string) {\n if (string.substring(0, 1) === '/') {\n return string.substring(1);\n }\n\n return string;\n}","function 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\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 UnboundOutboundLink from './components/OutboundLink';\nimport * as Defaults from './core';\nvar initialize = Defaults.initialize;\nexport { initialize };\nvar addTrackers = Defaults.addTrackers;\nexport { addTrackers };\nvar ga = Defaults.ga;\nexport { ga };\nvar set = Defaults.set;\nexport { set };\nvar send = Defaults.send;\nexport { send };\nvar pageview = Defaults.pageview;\nexport { pageview };\nvar modalview = Defaults.modalview;\nexport { modalview };\nvar timing = Defaults.timing;\nexport { timing };\nvar event = Defaults.event;\nexport { event };\nvar exception = Defaults.exception;\nexport { exception };\nvar plugin = Defaults.plugin;\nexport { plugin };\nvar outboundLink = Defaults.outboundLink;\nexport { outboundLink };\nvar testModeAPI = Defaults.testModeAPI;\nexport { testModeAPI };\nUnboundOutboundLink.origTrackLink = UnboundOutboundLink.trackLink;\nUnboundOutboundLink.trackLink = Defaults.outboundLink;\nexport var OutboundLink = UnboundOutboundLink;\nexport default _objectSpread(_objectSpread({}, Defaults), {}, {\n OutboundLink: OutboundLink\n});","/*!\n * is-plain-object \n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\nfunction isObject(o) {\n return Object.prototype.toString.call(o) === '[object Object]';\n}\n\nfunction isPlainObject(o) {\n var ctor,prot;\n\n if (isObject(o) === false) return false;\n\n // If has modified constructor\n ctor = o.constructor;\n if (ctor === undefined) return true;\n\n // If has modified prototype\n prot = ctor.prototype;\n if (isObject(prot) === false) return false;\n\n // If constructor does not have an Object-specific method\n if (prot.hasOwnProperty('isPrototypeOf') === false) {\n return false;\n }\n\n // Most likely a plain Object\n return true;\n}\n\nexport { isPlainObject };\n","const errors = {\n\t0: \"Illegal state\",\n\t1: \"Immer drafts cannot have computed properties\",\n\t2: \"This object has been frozen and should not be mutated\",\n\t3(data: any) {\n\t\treturn (\n\t\t\t\"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? \" +\n\t\t\tdata\n\t\t)\n\t},\n\t4: \"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.\",\n\t5: \"Immer forbids circular references\",\n\t6: \"The first or second argument to `produce` must be a function\",\n\t7: \"The third argument to `produce` must be a function or undefined\",\n\t8: \"First argument to `createDraft` must be a plain object, an array, or an immerable object\",\n\t9: \"First argument to `finishDraft` must be a draft returned by `createDraft`\",\n\t10: \"The given draft is already finalized\",\n\t11: \"Object.defineProperty() cannot be used on an Immer draft\",\n\t12: \"Object.setPrototypeOf() cannot be used on an Immer draft\",\n\t13: \"Immer only supports deleting array indices\",\n\t14: \"Immer only supports setting array indices and the 'length' property\",\n\t15(path: string) {\n\t\treturn \"Cannot apply patch, path doesn't resolve: \" + path\n\t},\n\t16: 'Sets cannot have \"replace\" patches.',\n\t17(op: string) {\n\t\treturn \"Unsupported patch operation: \" + op\n\t},\n\t18(plugin: string) {\n\t\treturn `The plugin for '${plugin}' has not been loaded into Immer. To enable the plugin, import and call \\`enable${plugin}()\\` when initializing your application.`\n\t},\n\t20: \"Cannot use proxies if Proxy, Proxy.revocable or Reflect are not available\",\n\t21(thing: string) {\n\t\treturn `produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '${thing}'`\n\t},\n\t22(thing: string) {\n\t\treturn `'current' expects a draft, got: ${thing}`\n\t},\n\t23(thing: string) {\n\t\treturn `'original' expects a draft, got: ${thing}`\n\t},\n\t24: \"Patching reserved attributes like __proto__, prototype and constructor is not allowed\"\n} as const\n\nexport function die(error: keyof typeof errors, ...args: any[]): never {\n\tif (__DEV__) {\n\t\tconst e = errors[error]\n\t\tconst msg = !e\n\t\t\t? \"unknown error nr: \" + error\n\t\t\t: typeof e === \"function\"\n\t\t\t? e.apply(null, args as any)\n\t\t\t: e\n\t\tthrow new Error(`[Immer] ${msg}`)\n\t}\n\tthrow new Error(\n\t\t`[Immer] minified error nr: ${error}${\n\t\t\targs.length ? \" \" + args.map(s => `'${s}'`).join(\",\") : \"\"\n\t\t}. Find the full error at: https://bit.ly/3cXEKWf`\n\t)\n}\n","import {\n\tDRAFT_STATE,\n\tDRAFTABLE,\n\thasSet,\n\tObjectish,\n\tDrafted,\n\tAnyObject,\n\tAnyMap,\n\tAnySet,\n\tImmerState,\n\thasMap,\n\tArchtype,\n\tdie\n} from \"../internal\"\n\n/** Returns true if the given value is an Immer draft */\n/*#__PURE__*/\nexport function isDraft(value: any): boolean {\n\treturn !!value && !!value[DRAFT_STATE]\n}\n\n/** Returns true if the given value can be drafted by Immer */\n/*#__PURE__*/\nexport function isDraftable(value: any): boolean {\n\tif (!value) return false\n\treturn (\n\t\tisPlainObject(value) ||\n\t\tArray.isArray(value) ||\n\t\t!!value[DRAFTABLE] ||\n\t\t!!value.constructor[DRAFTABLE] ||\n\t\tisMap(value) ||\n\t\tisSet(value)\n\t)\n}\n\nconst objectCtorString = Object.prototype.constructor.toString()\n/*#__PURE__*/\nexport function isPlainObject(value: any): boolean {\n\tif (!value || typeof value !== \"object\") return false\n\tconst proto = Object.getPrototypeOf(value)\n\tif (proto === null) {\n\t\treturn true\n\t}\n\tconst Ctor =\n\t\tObject.hasOwnProperty.call(proto, \"constructor\") && proto.constructor\n\n\tif (Ctor === Object) return true\n\n\treturn (\n\t\ttypeof Ctor == \"function\" &&\n\t\tFunction.toString.call(Ctor) === objectCtorString\n\t)\n}\n\n/** Get the underlying object that is represented by the given draft */\n/*#__PURE__*/\nexport function original(value: T): T | undefined\nexport function original(value: Drafted): any {\n\tif (!isDraft(value)) die(23, value)\n\treturn value[DRAFT_STATE].base_\n}\n\n/*#__PURE__*/\nexport const ownKeys: (target: AnyObject) => PropertyKey[] =\n\ttypeof Reflect !== \"undefined\" && Reflect.ownKeys\n\t\t? Reflect.ownKeys\n\t\t: typeof Object.getOwnPropertySymbols !== \"undefined\"\n\t\t? obj =>\n\t\t\t\tObject.getOwnPropertyNames(obj).concat(\n\t\t\t\t\tObject.getOwnPropertySymbols(obj) as any\n\t\t\t\t)\n\t\t: /* istanbul ignore next */ Object.getOwnPropertyNames\n\nexport const getOwnPropertyDescriptors =\n\tObject.getOwnPropertyDescriptors ||\n\tfunction getOwnPropertyDescriptors(target: any) {\n\t\t// Polyfill needed for Hermes and IE, see https://github.com/facebook/hermes/issues/274\n\t\tconst res: any = {}\n\t\townKeys(target).forEach(key => {\n\t\t\tres[key] = Object.getOwnPropertyDescriptor(target, key)\n\t\t})\n\t\treturn res\n\t}\n\nexport function each(\n\tobj: T,\n\titer: (key: string | number, value: any, source: T) => void,\n\tenumerableOnly?: boolean\n): void\nexport function each(obj: any, iter: any, enumerableOnly = false) {\n\tif (getArchtype(obj) === Archtype.Object) {\n\t\t;(enumerableOnly ? Object.keys : ownKeys)(obj).forEach(key => {\n\t\t\tif (!enumerableOnly || typeof key !== \"symbol\") iter(key, obj[key], obj)\n\t\t})\n\t} else {\n\t\tobj.forEach((entry: any, index: any) => iter(index, entry, obj))\n\t}\n}\n\n/*#__PURE__*/\nexport function getArchtype(thing: any): Archtype {\n\t/* istanbul ignore next */\n\tconst state: undefined | ImmerState = thing[DRAFT_STATE]\n\treturn state\n\t\t? state.type_ > 3\n\t\t\t? state.type_ - 4 // cause Object and Array map back from 4 and 5\n\t\t\t: (state.type_ as any) // others are the same\n\t\t: Array.isArray(thing)\n\t\t? Archtype.Array\n\t\t: isMap(thing)\n\t\t? Archtype.Map\n\t\t: isSet(thing)\n\t\t? Archtype.Set\n\t\t: Archtype.Object\n}\n\n/*#__PURE__*/\nexport function has(thing: any, prop: PropertyKey): boolean {\n\treturn getArchtype(thing) === Archtype.Map\n\t\t? thing.has(prop)\n\t\t: Object.prototype.hasOwnProperty.call(thing, prop)\n}\n\n/*#__PURE__*/\nexport function get(thing: AnyMap | AnyObject, prop: PropertyKey): any {\n\t// @ts-ignore\n\treturn getArchtype(thing) === Archtype.Map ? thing.get(prop) : thing[prop]\n}\n\n/*#__PURE__*/\nexport function set(thing: any, propOrOldValue: PropertyKey, value: any) {\n\tconst t = getArchtype(thing)\n\tif (t === Archtype.Map) thing.set(propOrOldValue, value)\n\telse if (t === Archtype.Set) {\n\t\tthing.delete(propOrOldValue)\n\t\tthing.add(value)\n\t} else thing[propOrOldValue] = value\n}\n\n/*#__PURE__*/\nexport function is(x: any, y: any): boolean {\n\t// From: https://github.com/facebook/fbjs/blob/c69904a511b900266935168223063dd8772dfc40/packages/fbjs/src/core/shallowEqual.js\n\tif (x === y) {\n\t\treturn x !== 0 || 1 / x === 1 / y\n\t} else {\n\t\treturn x !== x && y !== y\n\t}\n}\n\n/*#__PURE__*/\nexport function isMap(target: any): target is AnyMap {\n\treturn hasMap && target instanceof Map\n}\n\n/*#__PURE__*/\nexport function isSet(target: any): target is AnySet {\n\treturn hasSet && target instanceof Set\n}\n/*#__PURE__*/\nexport function latest(state: ImmerState): any {\n\treturn state.copy_ || state.base_\n}\n\n/*#__PURE__*/\nexport function shallowCopy(base: any) {\n\tif (Array.isArray(base)) return Array.prototype.slice.call(base)\n\tconst descriptors = getOwnPropertyDescriptors(base)\n\tdelete descriptors[DRAFT_STATE as any]\n\tlet keys = ownKeys(descriptors)\n\tfor (let i = 0; i < keys.length; i++) {\n\t\tconst key: any = keys[i]\n\t\tconst desc = descriptors[key]\n\t\tif (desc.writable === false) {\n\t\t\tdesc.writable = true\n\t\t\tdesc.configurable = true\n\t\t}\n\t\t// like object.assign, we will read any _own_, get/set accessors. This helps in dealing\n\t\t// with libraries that trap values, like mobx or vue\n\t\t// unlike object.assign, non-enumerables will be copied as well\n\t\tif (desc.get || desc.set)\n\t\t\tdescriptors[key] = {\n\t\t\t\tconfigurable: true,\n\t\t\t\twritable: true, // could live with !!desc.set as well here...\n\t\t\t\tenumerable: desc.enumerable,\n\t\t\t\tvalue: base[key]\n\t\t\t}\n\t}\n\treturn Object.create(Object.getPrototypeOf(base), descriptors)\n}\n\n/**\n * Freezes draftable objects. Returns the original object.\n * By default freezes shallowly, but if the second argument is `true` it will freeze recursively.\n *\n * @param obj\n * @param deep\n */\nexport function freeze(obj: T, deep?: boolean): T\nexport function freeze(obj: any, deep: boolean = false): T {\n\tif (isFrozen(obj) || isDraft(obj) || !isDraftable(obj)) return obj\n\tif (getArchtype(obj) > 1 /* Map or Set */) {\n\t\tobj.set = obj.add = obj.clear = obj.delete = dontMutateFrozenCollections as any\n\t}\n\tObject.freeze(obj)\n\tif (deep) each(obj, (key, value) => freeze(value, true), true)\n\treturn obj\n}\n\nfunction dontMutateFrozenCollections() {\n\tdie(2)\n}\n\nexport function isFrozen(obj: any): boolean {\n\tif (obj == null || typeof obj !== \"object\") return true\n\t// See #600, IE dies on non-objects in Object.isFrozen\n\treturn Object.isFrozen(obj)\n}\n","import {\n\tImmerState,\n\tPatch,\n\tImmerScope,\n\tDrafted,\n\tAnyObject,\n\tImmerBaseState,\n\tAnyMap,\n\tAnySet,\n\tProxyType,\n\tdie\n} from \"../internal\"\n\n/** Plugin utilities */\nconst plugins: {\n\tPatches?: {\n\t\tgeneratePatches_(\n\t\t\tstate: ImmerState,\n\t\t\tbasePath: PatchPath,\n\t\t\tpatches: Patch[],\n\t\t\tinversePatches: Patch[]\n\t\t): void\n\t\tgenerateReplacementPatches_(\n\t\t\tbase: any,\n\t\t\treplacement: any,\n\t\t\tpatches: Patch[],\n\t\t\tinversePatches: Patch[]\n\t\t): void\n\t\tapplyPatches_(draft: T, patches: Patch[]): T\n\t}\n\tES5?: {\n\t\twillFinalizeES5_(scope: ImmerScope, result: any, isReplaced: boolean): void\n\t\tcreateES5Proxy_(\n\t\t\tbase: T,\n\t\t\tparent?: ImmerState\n\t\t): Drafted\n\t\thasChanges_(state: ES5ArrayState | ES5ObjectState): boolean\n\t}\n\tMapSet?: {\n\t\tproxyMap_(target: T, parent?: ImmerState): T\n\t\tproxySet_(target: T, parent?: ImmerState): T\n\t}\n} = {}\n\ntype Plugins = typeof plugins\n\nexport function getPlugin(\n\tpluginKey: K\n): Exclude {\n\tconst plugin = plugins[pluginKey]\n\tif (!plugin) {\n\t\tdie(18, pluginKey)\n\t}\n\t// @ts-ignore\n\treturn plugin\n}\n\nexport function loadPlugin(\n\tpluginKey: K,\n\timplementation: Plugins[K]\n): void {\n\tif (!plugins[pluginKey]) plugins[pluginKey] = implementation\n}\n\n/** ES5 Plugin */\n\ninterface ES5BaseState extends ImmerBaseState {\n\tassigned_: {[key: string]: any}\n\tparent_?: ImmerState\n\trevoked_: boolean\n}\n\nexport interface ES5ObjectState extends ES5BaseState {\n\ttype_: ProxyType.ES5Object\n\tdraft_: Drafted\n\tbase_: AnyObject\n\tcopy_: AnyObject | null\n}\n\nexport interface ES5ArrayState extends ES5BaseState {\n\ttype_: ProxyType.ES5Array\n\tdraft_: Drafted\n\tbase_: any\n\tcopy_: any\n}\n\n/** Map / Set plugin */\n\nexport interface MapState extends ImmerBaseState {\n\ttype_: ProxyType.Map\n\tcopy_: AnyMap | undefined\n\tassigned_: Map | undefined\n\tbase_: AnyMap\n\trevoked_: boolean\n\tdraft_: Drafted\n}\n\nexport interface SetState extends ImmerBaseState {\n\ttype_: ProxyType.Set\n\tcopy_: AnySet | undefined\n\tbase_: AnySet\n\tdrafts_: Map // maps the original value to the draft value in the new set\n\trevoked_: boolean\n\tdraft_: Drafted\n}\n\n/** Patches plugin */\n\nexport type PatchPath = (string | number)[]\n","import {\n\tPatch,\n\tPatchListener,\n\tDrafted,\n\tImmer,\n\tDRAFT_STATE,\n\tImmerState,\n\tProxyType,\n\tgetPlugin\n} from \"../internal\"\nimport {die} from \"../utils/errors\"\n\n/** Each scope represents a `produce` call. */\n\nexport interface ImmerScope {\n\tpatches_?: Patch[]\n\tinversePatches_?: Patch[]\n\tcanAutoFreeze_: boolean\n\tdrafts_: any[]\n\tparent_?: ImmerScope\n\tpatchListener_?: PatchListener\n\timmer_: Immer\n\tunfinalizedDrafts_: number\n}\n\nlet currentScope: ImmerScope | undefined\n\nexport function getCurrentScope() {\n\tif (__DEV__ && !currentScope) die(0)\n\treturn currentScope!\n}\n\nfunction createScope(\n\tparent_: ImmerScope | undefined,\n\timmer_: Immer\n): ImmerScope {\n\treturn {\n\t\tdrafts_: [],\n\t\tparent_,\n\t\timmer_,\n\t\t// Whenever the modified draft contains a draft from another scope, we\n\t\t// need to prevent auto-freezing so the unowned draft can be finalized.\n\t\tcanAutoFreeze_: true,\n\t\tunfinalizedDrafts_: 0\n\t}\n}\n\nexport function usePatchesInScope(\n\tscope: ImmerScope,\n\tpatchListener?: PatchListener\n) {\n\tif (patchListener) {\n\t\tgetPlugin(\"Patches\") // assert we have the plugin\n\t\tscope.patches_ = []\n\t\tscope.inversePatches_ = []\n\t\tscope.patchListener_ = patchListener\n\t}\n}\n\nexport function revokeScope(scope: ImmerScope) {\n\tleaveScope(scope)\n\tscope.drafts_.forEach(revokeDraft)\n\t// @ts-ignore\n\tscope.drafts_ = null\n}\n\nexport function leaveScope(scope: ImmerScope) {\n\tif (scope === currentScope) {\n\t\tcurrentScope = scope.parent_\n\t}\n}\n\nexport function enterScope(immer: Immer) {\n\treturn (currentScope = createScope(currentScope, immer))\n}\n\nfunction revokeDraft(draft: Drafted) {\n\tconst state: ImmerState = draft[DRAFT_STATE]\n\tif (\n\t\tstate.type_ === ProxyType.ProxyObject ||\n\t\tstate.type_ === ProxyType.ProxyArray\n\t)\n\t\tstate.revoke_()\n\telse state.revoked_ = true\n}\n","import {\n\tImmerScope,\n\tDRAFT_STATE,\n\tisDraftable,\n\tNOTHING,\n\tPatchPath,\n\teach,\n\thas,\n\tfreeze,\n\tImmerState,\n\tisDraft,\n\tSetState,\n\tset,\n\tProxyType,\n\tgetPlugin,\n\tdie,\n\trevokeScope,\n\tisFrozen,\n\tshallowCopy\n} from \"../internal\"\n\nexport function processResult(result: any, scope: ImmerScope) {\n\tscope.unfinalizedDrafts_ = scope.drafts_.length\n\tconst baseDraft = scope.drafts_![0]\n\tconst isReplaced = result !== undefined && result !== baseDraft\n\tif (!scope.immer_.useProxies_)\n\t\tgetPlugin(\"ES5\").willFinalizeES5_(scope, result, isReplaced)\n\tif (isReplaced) {\n\t\tif (baseDraft[DRAFT_STATE].modified_) {\n\t\t\trevokeScope(scope)\n\t\t\tdie(4)\n\t\t}\n\t\tif (isDraftable(result)) {\n\t\t\t// Finalize the result in case it contains (or is) a subset of the draft.\n\t\t\tresult = finalize(scope, result)\n\t\t\tif (!scope.parent_) maybeFreeze(scope, result)\n\t\t}\n\t\tif (scope.patches_) {\n\t\t\tgetPlugin(\"Patches\").generateReplacementPatches_(\n\t\t\t\tbaseDraft[DRAFT_STATE].base_,\n\t\t\t\tresult,\n\t\t\t\tscope.patches_,\n\t\t\t\tscope.inversePatches_!\n\t\t\t)\n\t\t}\n\t} else {\n\t\t// Finalize the base draft.\n\t\tresult = finalize(scope, baseDraft, [])\n\t}\n\trevokeScope(scope)\n\tif (scope.patches_) {\n\t\tscope.patchListener_!(scope.patches_, scope.inversePatches_!)\n\t}\n\treturn result !== NOTHING ? result : undefined\n}\n\nfunction finalize(rootScope: ImmerScope, value: any, path?: PatchPath) {\n\t// Don't recurse in tho recursive data structures\n\tif (isFrozen(value)) return value\n\n\tconst state: ImmerState = value[DRAFT_STATE]\n\t// A plain object, might need freezing, might contain drafts\n\tif (!state) {\n\t\teach(\n\t\t\tvalue,\n\t\t\t(key, childValue) =>\n\t\t\t\tfinalizeProperty(rootScope, state, value, key, childValue, path),\n\t\t\ttrue // See #590, don't recurse into non-enumerable of non drafted objects\n\t\t)\n\t\treturn value\n\t}\n\t// Never finalize drafts owned by another scope.\n\tif (state.scope_ !== rootScope) return value\n\t// Unmodified draft, return the (frozen) original\n\tif (!state.modified_) {\n\t\tmaybeFreeze(rootScope, state.base_, true)\n\t\treturn state.base_\n\t}\n\t// Not finalized yet, let's do that now\n\tif (!state.finalized_) {\n\t\tstate.finalized_ = true\n\t\tstate.scope_.unfinalizedDrafts_--\n\t\tconst result =\n\t\t\t// For ES5, create a good copy from the draft first, with added keys and without deleted keys.\n\t\t\tstate.type_ === ProxyType.ES5Object || state.type_ === ProxyType.ES5Array\n\t\t\t\t? (state.copy_ = shallowCopy(state.draft_))\n\t\t\t\t: state.copy_\n\t\t// Finalize all children of the copy\n\t\t// For sets we clone before iterating, otherwise we can get in endless loop due to modifying during iteration, see #628\n\t\t// Although the original test case doesn't seem valid anyway, so if this in the way we can turn the next line\n\t\t// back to each(result, ....)\n\t\teach(\n\t\t\tstate.type_ === ProxyType.Set ? new Set(result) : result,\n\t\t\t(key, childValue) =>\n\t\t\t\tfinalizeProperty(rootScope, state, result, key, childValue, path)\n\t\t)\n\t\t// everything inside is frozen, we can freeze here\n\t\tmaybeFreeze(rootScope, result, false)\n\t\t// first time finalizing, let's create those patches\n\t\tif (path && rootScope.patches_) {\n\t\t\tgetPlugin(\"Patches\").generatePatches_(\n\t\t\t\tstate,\n\t\t\t\tpath,\n\t\t\t\trootScope.patches_,\n\t\t\t\trootScope.inversePatches_!\n\t\t\t)\n\t\t}\n\t}\n\treturn state.copy_\n}\n\nfunction finalizeProperty(\n\trootScope: ImmerScope,\n\tparentState: undefined | ImmerState,\n\ttargetObject: any,\n\tprop: string | number,\n\tchildValue: any,\n\trootPath?: PatchPath\n) {\n\tif (__DEV__ && childValue === targetObject) die(5)\n\tif (isDraft(childValue)) {\n\t\tconst path =\n\t\t\trootPath &&\n\t\t\tparentState &&\n\t\t\tparentState!.type_ !== ProxyType.Set && // Set objects are atomic since they have no keys.\n\t\t\t!has((parentState as Exclude).assigned_!, prop) // Skip deep patches for assigned keys.\n\t\t\t\t? rootPath!.concat(prop)\n\t\t\t\t: undefined\n\t\t// Drafts owned by `scope` are finalized here.\n\t\tconst res = finalize(rootScope, childValue, path)\n\t\tset(targetObject, prop, res)\n\t\t// Drafts from another scope must prevented to be frozen\n\t\t// if we got a draft back from finalize, we're in a nested produce and shouldn't freeze\n\t\tif (isDraft(res)) {\n\t\t\trootScope.canAutoFreeze_ = false\n\t\t} else return\n\t}\n\t// Search new objects for unfinalized drafts. Frozen objects should never contain drafts.\n\tif (isDraftable(childValue) && !isFrozen(childValue)) {\n\t\tif (!rootScope.immer_.autoFreeze_ && rootScope.unfinalizedDrafts_ < 1) {\n\t\t\t// optimization: if an object is not a draft, and we don't have to\n\t\t\t// deepfreeze everything, and we are sure that no drafts are left in the remaining object\n\t\t\t// cause we saw and finalized all drafts already; we can stop visiting the rest of the tree.\n\t\t\t// This benefits especially adding large data tree's without further processing.\n\t\t\t// See add-data.js perf test\n\t\t\treturn\n\t\t}\n\t\tfinalize(rootScope, childValue)\n\t\t// immer deep freezes plain objects, so if there is no parent state, we freeze as well\n\t\tif (!parentState || !parentState.scope_.parent_)\n\t\t\tmaybeFreeze(rootScope, childValue)\n\t}\n}\n\nfunction maybeFreeze(scope: ImmerScope, value: any, deep = false) {\n\tif (scope.immer_.autoFreeze_ && scope.canAutoFreeze_) {\n\t\tfreeze(value, deep)\n\t}\n}\n","import {\n\teach,\n\thas,\n\tis,\n\tisDraftable,\n\tshallowCopy,\n\tlatest,\n\tImmerBaseState,\n\tImmerState,\n\tDrafted,\n\tAnyObject,\n\tAnyArray,\n\tObjectish,\n\tgetCurrentScope,\n\tDRAFT_STATE,\n\tdie,\n\tcreateProxy,\n\tProxyType\n} from \"../internal\"\n\ninterface ProxyBaseState extends ImmerBaseState {\n\tassigned_: {\n\t\t[property: string]: boolean\n\t}\n\tparent_?: ImmerState\n\trevoke_(): void\n}\n\nexport interface ProxyObjectState extends ProxyBaseState {\n\ttype_: ProxyType.ProxyObject\n\tbase_: any\n\tcopy_: any\n\tdraft_: Drafted\n}\n\nexport interface ProxyArrayState extends ProxyBaseState {\n\ttype_: ProxyType.ProxyArray\n\tbase_: AnyArray\n\tcopy_: AnyArray | null\n\tdraft_: Drafted\n}\n\ntype ProxyState = ProxyObjectState | ProxyArrayState\n\n/**\n * Returns a new draft of the `base` object.\n *\n * The second argument is the parent draft-state (used internally).\n */\nexport function createProxyProxy(\n\tbase: T,\n\tparent?: ImmerState\n): Drafted {\n\tconst isArray = Array.isArray(base)\n\tconst state: ProxyState = {\n\t\ttype_: isArray ? ProxyType.ProxyArray : (ProxyType.ProxyObject as any),\n\t\t// Track which produce call this is associated with.\n\t\tscope_: parent ? parent.scope_ : getCurrentScope()!,\n\t\t// True for both shallow and deep changes.\n\t\tmodified_: false,\n\t\t// Used during finalization.\n\t\tfinalized_: false,\n\t\t// Track which properties have been assigned (true) or deleted (false).\n\t\tassigned_: {},\n\t\t// The parent draft state.\n\t\tparent_: parent,\n\t\t// The base state.\n\t\tbase_: base,\n\t\t// The base proxy.\n\t\tdraft_: null as any, // set below\n\t\t// The base copy with any updated values.\n\t\tcopy_: null,\n\t\t// Called by the `produce` function.\n\t\trevoke_: null as any,\n\t\tisManual_: false\n\t}\n\n\t// the traps must target something, a bit like the 'real' base.\n\t// but also, we need to be able to determine from the target what the relevant state is\n\t// (to avoid creating traps per instance to capture the state in closure,\n\t// and to avoid creating weird hidden properties as well)\n\t// So the trick is to use 'state' as the actual 'target'! (and make sure we intercept everything)\n\t// Note that in the case of an array, we put the state in an array to have better Reflect defaults ootb\n\tlet target: T = state as any\n\tlet traps: ProxyHandler> = objectTraps\n\tif (isArray) {\n\t\ttarget = [state] as any\n\t\ttraps = arrayTraps\n\t}\n\n\tconst {revoke, proxy} = Proxy.revocable(target, traps)\n\tstate.draft_ = proxy as any\n\tstate.revoke_ = revoke\n\treturn proxy as any\n}\n\n/**\n * Object drafts\n */\nexport const objectTraps: ProxyHandler = {\n\tget(state, prop) {\n\t\tif (prop === DRAFT_STATE) return state\n\n\t\tconst source = latest(state)\n\t\tif (!has(source, prop)) {\n\t\t\t// non-existing or non-own property...\n\t\t\treturn readPropFromProto(state, source, prop)\n\t\t}\n\t\tconst value = source[prop]\n\t\tif (state.finalized_ || !isDraftable(value)) {\n\t\t\treturn value\n\t\t}\n\t\t// Check for existing draft in modified state.\n\t\t// Assigned values are never drafted. This catches any drafts we created, too.\n\t\tif (value === peek(state.base_, prop)) {\n\t\t\tprepareCopy(state)\n\t\t\treturn (state.copy_![prop as any] = createProxy(\n\t\t\t\tstate.scope_.immer_,\n\t\t\t\tvalue,\n\t\t\t\tstate\n\t\t\t))\n\t\t}\n\t\treturn value\n\t},\n\thas(state, prop) {\n\t\treturn prop in latest(state)\n\t},\n\townKeys(state) {\n\t\treturn Reflect.ownKeys(latest(state))\n\t},\n\tset(\n\t\tstate: ProxyObjectState,\n\t\tprop: string /* strictly not, but helps TS */,\n\t\tvalue\n\t) {\n\t\tconst desc = getDescriptorFromProto(latest(state), prop)\n\t\tif (desc?.set) {\n\t\t\t// special case: if this write is captured by a setter, we have\n\t\t\t// to trigger it with the correct context\n\t\t\tdesc.set.call(state.draft_, value)\n\t\t\treturn true\n\t\t}\n\t\tif (!state.modified_) {\n\t\t\t// the last check is because we need to be able to distinguish setting a non-existing to undefined (which is a change)\n\t\t\t// from setting an existing property with value undefined to undefined (which is not a change)\n\t\t\tconst current = peek(latest(state), prop)\n\t\t\t// special case, if we assigning the original value to a draft, we can ignore the assignment\n\t\t\tconst currentState: ProxyObjectState = current?.[DRAFT_STATE]\n\t\t\tif (currentState && currentState.base_ === value) {\n\t\t\t\tstate.copy_![prop] = value\n\t\t\t\tstate.assigned_[prop] = false\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tif (is(value, current) && (value !== undefined || has(state.base_, prop)))\n\t\t\t\treturn true\n\t\t\tprepareCopy(state)\n\t\t\tmarkChanged(state)\n\t\t}\n\n\t\tif (\n\t\t\tstate.copy_![prop] === value &&\n\t\t\t// special case: NaN\n\t\t\ttypeof value !== \"number\" &&\n\t\t\t// special case: handle new props with value 'undefined'\n\t\t\t(value !== undefined || prop in state.copy_)\n\t\t)\n\t\t\treturn true\n\n\t\t// @ts-ignore\n\t\tstate.copy_![prop] = value\n\t\tstate.assigned_[prop] = true\n\t\treturn true\n\t},\n\tdeleteProperty(state, prop: string) {\n\t\t// The `undefined` check is a fast path for pre-existing keys.\n\t\tif (peek(state.base_, prop) !== undefined || prop in state.base_) {\n\t\t\tstate.assigned_[prop] = false\n\t\t\tprepareCopy(state)\n\t\t\tmarkChanged(state)\n\t\t} else {\n\t\t\t// if an originally not assigned property was deleted\n\t\t\tdelete state.assigned_[prop]\n\t\t}\n\t\t// @ts-ignore\n\t\tif (state.copy_) delete state.copy_[prop]\n\t\treturn true\n\t},\n\t// Note: We never coerce `desc.value` into an Immer draft, because we can't make\n\t// the same guarantee in ES5 mode.\n\tgetOwnPropertyDescriptor(state, prop) {\n\t\tconst owner = latest(state)\n\t\tconst desc = Reflect.getOwnPropertyDescriptor(owner, prop)\n\t\tif (!desc) return desc\n\t\treturn {\n\t\t\twritable: true,\n\t\t\tconfigurable: state.type_ !== ProxyType.ProxyArray || prop !== \"length\",\n\t\t\tenumerable: desc.enumerable,\n\t\t\tvalue: owner[prop]\n\t\t}\n\t},\n\tdefineProperty() {\n\t\tdie(11)\n\t},\n\tgetPrototypeOf(state) {\n\t\treturn Object.getPrototypeOf(state.base_)\n\t},\n\tsetPrototypeOf() {\n\t\tdie(12)\n\t}\n}\n\n/**\n * Array drafts\n */\n\nconst arrayTraps: ProxyHandler<[ProxyArrayState]> = {}\neach(objectTraps, (key, fn) => {\n\t// @ts-ignore\n\tarrayTraps[key] = function() {\n\t\targuments[0] = arguments[0][0]\n\t\treturn fn.apply(this, arguments)\n\t}\n})\narrayTraps.deleteProperty = function(state, prop) {\n\tif (__DEV__ && isNaN(parseInt(prop as any))) die(13)\n\t// @ts-ignore\n\treturn arrayTraps.set!.call(this, state, prop, undefined)\n}\narrayTraps.set = function(state, prop, value) {\n\tif (__DEV__ && prop !== \"length\" && isNaN(parseInt(prop as any))) die(14)\n\treturn objectTraps.set!.call(this, state[0], prop, value, state[0])\n}\n\n// Access a property without creating an Immer draft.\nfunction peek(draft: Drafted, prop: PropertyKey) {\n\tconst state = draft[DRAFT_STATE]\n\tconst source = state ? latest(state) : draft\n\treturn source[prop]\n}\n\nfunction readPropFromProto(state: ImmerState, source: any, prop: PropertyKey) {\n\tconst desc = getDescriptorFromProto(source, prop)\n\treturn desc\n\t\t? `value` in desc\n\t\t\t? desc.value\n\t\t\t: // This is a very special case, if the prop is a getter defined by the\n\t\t\t // prototype, we should invoke it with the draft as context!\n\t\t\t desc.get?.call(state.draft_)\n\t\t: undefined\n}\n\nfunction getDescriptorFromProto(\n\tsource: any,\n\tprop: PropertyKey\n): PropertyDescriptor | undefined {\n\t// 'in' checks proto!\n\tif (!(prop in source)) return undefined\n\tlet proto = Object.getPrototypeOf(source)\n\twhile (proto) {\n\t\tconst desc = Object.getOwnPropertyDescriptor(proto, prop)\n\t\tif (desc) return desc\n\t\tproto = Object.getPrototypeOf(proto)\n\t}\n\treturn undefined\n}\n\nexport function markChanged(state: ImmerState) {\n\tif (!state.modified_) {\n\t\tstate.modified_ = true\n\t\tif (state.parent_) {\n\t\t\tmarkChanged(state.parent_)\n\t\t}\n\t}\n}\n\nexport function prepareCopy(state: {base_: any; copy_: any}) {\n\tif (!state.copy_) {\n\t\tstate.copy_ = shallowCopy(state.base_)\n\t}\n}\n","import {\n\tIProduceWithPatches,\n\tIProduce,\n\tImmerState,\n\tDrafted,\n\tisDraftable,\n\tprocessResult,\n\tPatch,\n\tObjectish,\n\tDRAFT_STATE,\n\tDraft,\n\tPatchListener,\n\tisDraft,\n\tisMap,\n\tisSet,\n\tcreateProxyProxy,\n\tgetPlugin,\n\tdie,\n\thasProxies,\n\tenterScope,\n\trevokeScope,\n\tleaveScope,\n\tusePatchesInScope,\n\tgetCurrentScope,\n\tNOTHING,\n\tfreeze,\n\tcurrent\n} from \"../internal\"\n\ninterface ProducersFns {\n\tproduce: IProduce\n\tproduceWithPatches: IProduceWithPatches\n}\n\nexport class Immer implements ProducersFns {\n\tuseProxies_: boolean = hasProxies\n\n\tautoFreeze_: boolean = true\n\n\tconstructor(config?: {useProxies?: boolean; autoFreeze?: boolean}) {\n\t\tif (typeof config?.useProxies === \"boolean\")\n\t\t\tthis.setUseProxies(config!.useProxies)\n\t\tif (typeof config?.autoFreeze === \"boolean\")\n\t\t\tthis.setAutoFreeze(config!.autoFreeze)\n\t}\n\n\t/**\n\t * The `produce` function takes a value and a \"recipe function\" (whose\n\t * return value often depends on the base state). The recipe function is\n\t * free to mutate its first argument however it wants. All mutations are\n\t * only ever applied to a __copy__ of the base state.\n\t *\n\t * Pass only a function to create a \"curried producer\" which relieves you\n\t * from passing the recipe function every time.\n\t *\n\t * Only plain objects and arrays are made mutable. All other objects are\n\t * considered uncopyable.\n\t *\n\t * Note: This function is __bound__ to its `Immer` instance.\n\t *\n\t * @param {any} base - the initial state\n\t * @param {Function} producer - function that receives a proxy of the base state as first argument and which can be freely modified\n\t * @param {Function} patchListener - optional function that will be called with all the patches produced here\n\t * @returns {any} a new state, or the initial state if nothing was modified\n\t */\n\tproduce: IProduce = (base: any, recipe?: any, patchListener?: any) => {\n\t\t// curried invocation\n\t\tif (typeof base === \"function\" && typeof recipe !== \"function\") {\n\t\t\tconst defaultBase = recipe\n\t\t\trecipe = base\n\n\t\t\tconst self = this\n\t\t\treturn function curriedProduce(\n\t\t\t\tthis: any,\n\t\t\t\tbase = defaultBase,\n\t\t\t\t...args: any[]\n\t\t\t) {\n\t\t\t\treturn self.produce(base, (draft: Drafted) => recipe.call(this, draft, ...args)) // prettier-ignore\n\t\t\t}\n\t\t}\n\n\t\tif (typeof recipe !== \"function\") die(6)\n\t\tif (patchListener !== undefined && typeof patchListener !== \"function\")\n\t\t\tdie(7)\n\n\t\tlet result\n\n\t\t// Only plain objects, arrays, and \"immerable classes\" are drafted.\n\t\tif (isDraftable(base)) {\n\t\t\tconst scope = enterScope(this)\n\t\t\tconst proxy = createProxy(this, base, undefined)\n\t\t\tlet hasError = true\n\t\t\ttry {\n\t\t\t\tresult = recipe(proxy)\n\t\t\t\thasError = false\n\t\t\t} finally {\n\t\t\t\t// finally instead of catch + rethrow better preserves original stack\n\t\t\t\tif (hasError) revokeScope(scope)\n\t\t\t\telse leaveScope(scope)\n\t\t\t}\n\t\t\tif (typeof Promise !== \"undefined\" && result instanceof Promise) {\n\t\t\t\treturn result.then(\n\t\t\t\t\tresult => {\n\t\t\t\t\t\tusePatchesInScope(scope, patchListener)\n\t\t\t\t\t\treturn processResult(result, scope)\n\t\t\t\t\t},\n\t\t\t\t\terror => {\n\t\t\t\t\t\trevokeScope(scope)\n\t\t\t\t\t\tthrow error\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t}\n\t\t\tusePatchesInScope(scope, patchListener)\n\t\t\treturn processResult(result, scope)\n\t\t} else if (!base || typeof base !== \"object\") {\n\t\t\tresult = recipe(base)\n\t\t\tif (result === undefined) result = base\n\t\t\tif (result === NOTHING) result = undefined\n\t\t\tif (this.autoFreeze_) freeze(result, true)\n\t\t\tif (patchListener) {\n\t\t\t\tconst p: Patch[] = []\n\t\t\t\tconst ip: Patch[] = []\n\t\t\t\tgetPlugin(\"Patches\").generateReplacementPatches_(base, result, p, ip)\n\t\t\t\tpatchListener(p, ip)\n\t\t\t}\n\t\t\treturn result\n\t\t} else die(21, base)\n\t}\n\n\tproduceWithPatches: IProduceWithPatches = (\n\t\targ1: any,\n\t\targ2?: any,\n\t\targ3?: any\n\t): any => {\n\t\tif (typeof arg1 === \"function\") {\n\t\t\treturn (state: any, ...args: any[]) =>\n\t\t\t\tthis.produceWithPatches(state, (draft: any) => arg1(draft, ...args))\n\t\t}\n\n\t\tlet patches: Patch[], inversePatches: Patch[]\n\t\tconst result = this.produce(arg1, arg2, (p: Patch[], ip: Patch[]) => {\n\t\t\tpatches = p\n\t\t\tinversePatches = ip\n\t\t})\n\n\t\tif (typeof Promise !== \"undefined\" && result instanceof Promise) {\n\t\t\treturn result.then(nextState => [nextState, patches!, inversePatches!])\n\t\t}\n\t\treturn [result, patches!, inversePatches!]\n\t}\n\n\tcreateDraft(base: T): Draft {\n\t\tif (!isDraftable(base)) die(8)\n\t\tif (isDraft(base)) base = current(base)\n\t\tconst scope = enterScope(this)\n\t\tconst proxy = createProxy(this, base, undefined)\n\t\tproxy[DRAFT_STATE].isManual_ = true\n\t\tleaveScope(scope)\n\t\treturn proxy as any\n\t}\n\n\tfinishDraft>(\n\t\tdraft: D,\n\t\tpatchListener?: PatchListener\n\t): D extends Draft ? T : never {\n\t\tconst state: ImmerState = draft && (draft as any)[DRAFT_STATE]\n\t\tif (__DEV__) {\n\t\t\tif (!state || !state.isManual_) die(9)\n\t\t\tif (state.finalized_) die(10)\n\t\t}\n\t\tconst {scope_: scope} = state\n\t\tusePatchesInScope(scope, patchListener)\n\t\treturn processResult(undefined, scope)\n\t}\n\n\t/**\n\t * Pass true to automatically freeze all copies created by Immer.\n\t *\n\t * By default, auto-freezing is enabled.\n\t */\n\tsetAutoFreeze(value: boolean) {\n\t\tthis.autoFreeze_ = value\n\t}\n\n\t/**\n\t * Pass true to use the ES2015 `Proxy` class when creating drafts, which is\n\t * always faster than using ES5 proxies.\n\t *\n\t * By default, feature detection is used, so calling this is rarely necessary.\n\t */\n\tsetUseProxies(value: boolean) {\n\t\tif (value && !hasProxies) {\n\t\t\tdie(20)\n\t\t}\n\t\tthis.useProxies_ = value\n\t}\n\n\tapplyPatches(base: T, patches: Patch[]): T {\n\t\t// If a patch replaces the entire state, take that replacement as base\n\t\t// before applying patches\n\t\tlet i: number\n\t\tfor (i = patches.length - 1; i >= 0; i--) {\n\t\t\tconst patch = patches[i]\n\t\t\tif (patch.path.length === 0 && patch.op === \"replace\") {\n\t\t\t\tbase = patch.value\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\t// If there was a patch that replaced the entire state, start from the\n\t\t// patch after that.\n\t\tif (i > -1) {\n\t\t\tpatches = patches.slice(i + 1)\n\t\t}\n\n\t\tconst applyPatchesImpl = getPlugin(\"Patches\").applyPatches_\n\t\tif (isDraft(base)) {\n\t\t\t// N.B: never hits if some patch a replacement, patches are never drafts\n\t\t\treturn applyPatchesImpl(base, patches)\n\t\t}\n\t\t// Otherwise, produce a copy of the base state.\n\t\treturn this.produce(base, (draft: Drafted) =>\n\t\t\tapplyPatchesImpl(draft, patches)\n\t\t)\n\t}\n}\n\nexport function createProxy(\n\timmer: Immer,\n\tvalue: T,\n\tparent?: ImmerState\n): Drafted {\n\t// precondition: createProxy should be guarded by isDraftable, so we know we can safely draft\n\tconst draft: Drafted = isMap(value)\n\t\t? getPlugin(\"MapSet\").proxyMap_(value, parent)\n\t\t: isSet(value)\n\t\t? getPlugin(\"MapSet\").proxySet_(value, parent)\n\t\t: immer.useProxies_\n\t\t? createProxyProxy(value, parent)\n\t\t: getPlugin(\"ES5\").createES5Proxy_(value, parent)\n\n\tconst scope = parent ? parent.scope_ : getCurrentScope()\n\tscope.drafts_.push(draft)\n\treturn draft\n}\n","import {\n\tdie,\n\tisDraft,\n\tshallowCopy,\n\teach,\n\tDRAFT_STATE,\n\tget,\n\tset,\n\tImmerState,\n\tisDraftable,\n\tArchtype,\n\tgetArchtype,\n\tgetPlugin\n} from \"../internal\"\n\n/** Takes a snapshot of the current state of a draft and finalizes it (but without freezing). This is a great utility to print the current state during debugging (no Proxies in the way). The output of current can also be safely leaked outside the producer. */\nexport function current(value: T): T\nexport function current(value: any): any {\n\tif (!isDraft(value)) die(22, value)\n\treturn currentImpl(value)\n}\n\nfunction currentImpl(value: any): any {\n\tif (!isDraftable(value)) return value\n\tconst state: ImmerState | undefined = value[DRAFT_STATE]\n\tlet copy: any\n\tconst archType = getArchtype(value)\n\tif (state) {\n\t\tif (\n\t\t\t!state.modified_ &&\n\t\t\t(state.type_ < 4 || !getPlugin(\"ES5\").hasChanges_(state as any))\n\t\t)\n\t\t\treturn state.base_\n\t\t// Optimization: avoid generating new drafts during copying\n\t\tstate.finalized_ = true\n\t\tcopy = copyHelper(value, archType)\n\t\tstate.finalized_ = false\n\t} else {\n\t\tcopy = copyHelper(value, archType)\n\t}\n\n\teach(copy, (key, childValue) => {\n\t\tif (state && get(state.base_, key) === childValue) return // no need to copy or search in something that didn't change\n\t\tset(copy, key, currentImpl(childValue))\n\t})\n\t// In the future, we might consider freezing here, based on the current settings\n\treturn archType === Archtype.Set ? new Set(copy) : copy\n}\n\nfunction copyHelper(value: any, archType: number): any {\n\t// creates a shallow copy, even if it is a map or set\n\tswitch (archType) {\n\t\tcase Archtype.Map:\n\t\t\treturn new Map(value)\n\t\tcase Archtype.Set:\n\t\t\t// Set will be cloned as array temporarily, so that we can replace individual items\n\t\t\treturn Array.from(value)\n\t}\n\treturn shallowCopy(value)\n}\n","import {\n\tIProduce,\n\tIProduceWithPatches,\n\tImmer,\n\tDraft,\n\tImmutable\n} from \"./internal\"\n\nexport {\n\tDraft,\n\tImmutable,\n\tPatch,\n\tPatchListener,\n\toriginal,\n\tcurrent,\n\tisDraft,\n\tisDraftable,\n\tNOTHING as nothing,\n\tDRAFTABLE as immerable,\n\tfreeze\n} from \"./internal\"\n\nconst immer = new Immer()\n\n/**\n * The `produce` function takes a value and a \"recipe function\" (whose\n * return value often depends on the base state). The recipe function is\n * free to mutate its first argument however it wants. All mutations are\n * only ever applied to a __copy__ of the base state.\n *\n * Pass only a function to create a \"curried producer\" which relieves you\n * from passing the recipe function every time.\n *\n * Only plain objects and arrays are made mutable. All other objects are\n * considered uncopyable.\n *\n * Note: This function is __bound__ to its `Immer` instance.\n *\n * @param {any} base - the initial state\n * @param {Function} producer - function that receives a proxy of the base state as first argument and which can be freely modified\n * @param {Function} patchListener - optional function that will be called with all the patches produced here\n * @returns {any} a new state, or the initial state if nothing was modified\n */\nexport const produce: IProduce = immer.produce\nexport default produce\n\n/**\n * Like `produce`, but `produceWithPatches` always returns a tuple\n * [nextState, patches, inversePatches] (instead of just the next state)\n */\nexport const produceWithPatches: IProduceWithPatches = immer.produceWithPatches.bind(\n\timmer\n)\n\n/**\n * Pass true to automatically freeze all copies created by Immer.\n *\n * Always freeze by default, even in production mode\n */\nexport const setAutoFreeze = immer.setAutoFreeze.bind(immer)\n\n/**\n * Pass true to use the ES2015 `Proxy` class when creating drafts, which is\n * always faster than using ES5 proxies.\n *\n * By default, feature detection is used, so calling this is rarely necessary.\n */\nexport const setUseProxies = immer.setUseProxies.bind(immer)\n\n/**\n * Apply an array of Immer patches to the first argument.\n *\n * This function is a producer, which means copy-on-write is in effect.\n */\nexport const applyPatches = immer.applyPatches.bind(immer)\n\n/**\n * Create an Immer draft from the given base state, which may be a draft itself.\n * The draft can be modified until you finalize it with the `finishDraft` function.\n */\nexport const createDraft = immer.createDraft.bind(immer)\n\n/**\n * Finalize an Immer draft from a `createDraft` call, returning the base state\n * (if no changes were made) or a modified copy. The draft must *not* be\n * mutated afterwards.\n *\n * Pass a function as the 2nd argument to generate Immer patches based on the\n * changes that were made.\n */\nexport const finishDraft = immer.finishDraft.bind(immer)\n\n/**\n * This function is actually a no-op, but can be used to cast an immutable type\n * to an draft type and make TypeScript happy\n *\n * @param value\n */\nexport function castDraft(value: T): Draft {\n\treturn value as any\n}\n\n/**\n * This function is actually a no-op, but can be used to cast a mutable type\n * to an immutable type and make TypeScript happy\n * @param value\n */\nexport function castImmutable(value: T): Immutable {\n\treturn value as any\n}\n\nexport {Immer}\n\nexport {enableES5} from \"./plugins/es5\"\nexport {enablePatches} from \"./plugins/patches\"\nexport {enableMapSet} from \"./plugins/mapset\"\nexport {enableAllPlugins} from \"./plugins/all\"\n","// Should be no imports here!\n\n// Some things that should be evaluated before all else...\n\n// We only want to know if non-polyfilled symbols are available\nconst hasSymbol =\n\ttypeof Symbol !== \"undefined\" && typeof Symbol(\"x\") === \"symbol\"\nexport const hasMap = typeof Map !== \"undefined\"\nexport const hasSet = typeof Set !== \"undefined\"\nexport const hasProxies =\n\ttypeof Proxy !== \"undefined\" &&\n\ttypeof Proxy.revocable !== \"undefined\" &&\n\ttypeof Reflect !== \"undefined\"\n\n/**\n * The sentinel value returned by producers to replace the draft with undefined.\n */\nexport const NOTHING: Nothing = hasSymbol\n\t? Symbol.for(\"immer-nothing\")\n\t: ({[\"immer-nothing\"]: true} as any)\n\n/**\n * To let Immer treat your class instances as plain immutable objects\n * (albeit with a custom prototype), you must define either an instance property\n * or a static property on each of your custom classes.\n *\n * Otherwise, your class instance will never be drafted, which means it won't be\n * safe to mutate in a produce callback.\n */\nexport const DRAFTABLE: unique symbol = hasSymbol\n\t? Symbol.for(\"immer-draftable\")\n\t: (\"__$immer_draftable\" as any)\n\nexport const DRAFT_STATE: unique symbol = hasSymbol\n\t? Symbol.for(\"immer-state\")\n\t: (\"__$immer_state\" as any)\n\n// Even a polyfilled Symbol might provide Symbol.iterator\nexport const iteratorSymbol: typeof Symbol.iterator =\n\t(typeof Symbol != \"undefined\" && Symbol.iterator) || (\"@@iterator\" as any)\n\n/** Use a class type for `nothing` so its type is unique */\nexport class Nothing {\n\t// This lets us do `Exclude`\n\t// @ts-ignore\n\tprivate _!: unique symbol\n}\n","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","import { Editor, Path, PathRef, PointRef, RangeRef } from '..'\n\nexport const DIRTY_PATHS: WeakMap = new WeakMap()\nexport const DIRTY_PATH_KEYS: WeakMap> = new WeakMap()\nexport const FLUSHING: WeakMap = new WeakMap()\nexport const NORMALIZING: WeakMap = new WeakMap()\nexport const PATH_REFS: WeakMap> = new WeakMap()\nexport const POINT_REFS: WeakMap> = new WeakMap()\nexport const RANGE_REFS: WeakMap> = new WeakMap()\n","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nexport default function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","// Character (grapheme cluster) boundaries are determined according to\n// the default grapheme cluster boundary specification, extended grapheme clusters variant[1].\n//\n// References:\n//\n// [1] https://www.unicode.org/reports/tr29/#Default_Grapheme_Cluster_Table\n// [2] https://www.unicode.org/Public/UCD/latest/ucd/auxiliary/GraphemeBreakProperty.txt\n// [3] https://www.unicode.org/Public/UCD/latest/ucd/auxiliary/GraphemeBreakTest.html\n// [4] https://www.unicode.org/Public/UCD/latest/ucd/auxiliary/GraphemeBreakTest.txt\n\n/**\n * Get the distance to the end of the first character in a string of text.\n */\n\nexport const getCharacterDistance = (str: string, isRTL = false): number => {\n const isLTR = !isRTL\n const codepoints = isRTL ? codepointsIteratorRTL(str) : str\n\n let left: CodepointType = CodepointType.None\n let right: CodepointType = CodepointType.None\n let distance = 0\n // Evaluation of these conditions are deferred.\n let gb11: boolean | null = null // Is GB11 applicable?\n let gb12Or13: boolean | null = null // Is GB12 or GB13 applicable?\n\n for (const char of codepoints) {\n const code = char.codePointAt(0)\n if (!code) break\n\n const type = getCodepointType(char, code)\n ;[left, right] = isLTR ? [right, type] : [type, left]\n\n if (\n intersects(left, CodepointType.ZWJ) &&\n intersects(right, CodepointType.ExtPict)\n ) {\n if (isLTR) {\n gb11 = endsWithEmojiZWJ(str.substring(0, distance))\n } else {\n gb11 = endsWithEmojiZWJ(str.substring(0, str.length - distance))\n }\n if (!gb11) break\n }\n\n if (\n intersects(left, CodepointType.RI) &&\n intersects(right, CodepointType.RI)\n ) {\n if (gb12Or13 !== null) {\n gb12Or13 = !gb12Or13\n } else {\n if (isLTR) {\n gb12Or13 = true\n } else {\n gb12Or13 = endsWithOddNumberOfRIs(\n str.substring(0, str.length - distance)\n )\n }\n }\n if (!gb12Or13) break\n }\n\n if (\n left !== CodepointType.None &&\n right !== CodepointType.None &&\n isBoundaryPair(left, right)\n ) {\n break\n }\n\n distance += char.length\n }\n\n return distance || 1\n}\n\nconst SPACE = /\\s/\nconst PUNCTUATION = /[\\u0021-\\u0023\\u0025-\\u002A\\u002C-\\u002F\\u003A\\u003B\\u003F\\u0040\\u005B-\\u005D\\u005F\\u007B\\u007D\\u00A1\\u00A7\\u00AB\\u00B6\\u00B7\\u00BB\\u00BF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061E\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u0AF0\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166D\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E3B\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]/\nconst CHAMELEON = /['\\u2018\\u2019]/\n\n/**\n * Get the distance to the end of the first word in a string of text.\n */\n\nexport const getWordDistance = (text: string, isRTL = false): number => {\n let dist = 0\n let started = false\n\n while (text.length > 0) {\n const charDist = getCharacterDistance(text, isRTL)\n const [char, remaining] = splitByCharacterDistance(text, charDist, isRTL)\n\n if (isWordCharacter(char, remaining, isRTL)) {\n started = true\n dist += charDist\n } else if (!started) {\n dist += charDist\n } else {\n break\n }\n\n text = remaining\n }\n\n return dist\n}\n\n/**\n * Split a string in two parts at a given distance starting from the end when\n * `isRTL` is set to `true`.\n */\n\nexport const splitByCharacterDistance = (\n str: string,\n dist: number,\n isRTL?: boolean\n): [string, string] => {\n if (isRTL) {\n const at = str.length - dist\n return [str.slice(at, str.length), str.slice(0, at)]\n }\n\n return [str.slice(0, dist), str.slice(dist)]\n}\n\n/**\n * Check if a character is a word character. The `remaining` argument is used\n * because sometimes you must read subsequent characters to truly determine it.\n */\n\nconst isWordCharacter = (\n char: string,\n remaining: string,\n isRTL = false\n): boolean => {\n if (SPACE.test(char)) {\n return false\n }\n\n // Chameleons count as word characters as long as they're in a word, so\n // recurse to see if the next one is a word character or not.\n if (CHAMELEON.test(char)) {\n const charDist = getCharacterDistance(remaining, isRTL)\n const [nextChar, nextRemaining] = splitByCharacterDistance(\n remaining,\n charDist,\n isRTL\n )\n\n if (isWordCharacter(nextChar, nextRemaining, isRTL)) {\n return true\n }\n }\n\n if (PUNCTUATION.test(char)) {\n return false\n }\n\n return true\n}\n\n/**\n * Iterate on codepoints from right to left.\n */\n\nexport const codepointsIteratorRTL = function*(str: string) {\n const end = str.length - 1\n\n for (let i = 0; i < str.length; i++) {\n const char1 = str.charAt(end - i)\n\n if (isLowSurrogate(char1.charCodeAt(0))) {\n const char2 = str.charAt(end - i - 1)\n if (isHighSurrogate(char2.charCodeAt(0))) {\n yield char2 + char1\n\n i++\n continue\n }\n }\n\n yield char1\n }\n}\n\n/**\n * Is `charCode` a high surrogate.\n *\n * https://en.wikipedia.org/wiki/Universal_Character_Set_characters#Surrogates\n */\n\nconst isHighSurrogate = (charCode: number) => {\n return charCode >= 0xd800 && charCode <= 0xdbff\n}\n\n/**\n * Is `charCode` a low surrogate.\n *\n * https://en.wikipedia.org/wiki/Universal_Character_Set_characters#Surrogates\n */\n\nconst isLowSurrogate = (charCode: number) => {\n return charCode >= 0xdc00 && charCode <= 0xdfff\n}\n\nenum CodepointType {\n None = 0,\n Extend = 1 << 0,\n ZWJ = 1 << 1,\n RI = 1 << 2,\n Prepend = 1 << 3,\n SpacingMark = 1 << 4,\n L = 1 << 5,\n V = 1 << 6,\n T = 1 << 7,\n LV = 1 << 8,\n LVT = 1 << 9,\n ExtPict = 1 << 10,\n Any = 1 << 11,\n}\n\nconst reExtend = /^[\\p{Gr_Ext}\\p{EMod}]$/u\nconst rePrepend = /^[\\u0600-\\u0605\\u06DD\\u070F\\u0890-\\u0891\\u08E2\\u0D4E\\u{110BD}\\u{110CD}\\u{111C2}-\\u{111C3}\\u{1193F}\\u{11941}\\u{11A3A}\\u{11A84}-\\u{11A89}\\u{11D46}]$/u\nconst reSpacingMark = /^[\\u0903\\u093B\\u093E-\\u0940\\u0949-\\u094C\\u094E-\\u094F\\u0982-\\u0983\\u09BF-\\u09C0\\u09C7-\\u09C8\\u09CB-\\u09CC\\u0A03\\u0A3E-\\u0A40\\u0A83\\u0ABE-\\u0AC0\\u0AC9\\u0ACB-\\u0ACC\\u0B02-\\u0B03\\u0B40\\u0B47-\\u0B48\\u0B4B-\\u0B4C\\u0BBF\\u0BC1-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCC\\u0C01-\\u0C03\\u0C41-\\u0C44\\u0C82-\\u0C83\\u0CBE\\u0CC0-\\u0CC1\\u0CC3-\\u0CC4\\u0CC7-\\u0CC8\\u0CCA-\\u0CCB\\u0D02-\\u0D03\\u0D3F-\\u0D40\\u0D46-\\u0D48\\u0D4A-\\u0D4C\\u0D82-\\u0D83\\u0DD0-\\u0DD1\\u0DD8-\\u0DDE\\u0DF2-\\u0DF3\\u0E33\\u0EB3\\u0F3E-\\u0F3F\\u0F7F\\u1031\\u103B-\\u103C\\u1056-\\u1057\\u1084\\u1715\\u1734\\u17B6\\u17BE-\\u17C5\\u17C7-\\u17C8\\u1923-\\u1926\\u1929-\\u192B\\u1930-\\u1931\\u1933-\\u1938\\u1A19-\\u1A1A\\u1A55\\u1A57\\u1A6D-\\u1A72\\u1B04\\u1B3B\\u1B3D-\\u1B41\\u1B43-\\u1B44\\u1B82\\u1BA1\\u1BA6-\\u1BA7\\u1BAA\\u1BE7\\u1BEA-\\u1BEC\\u1BEE\\u1BF2-\\u1BF3\\u1C24-\\u1C2B\\u1C34-\\u1C35\\u1CE1\\u1CF7\\uA823-\\uA824\\uA827\\uA880-\\uA881\\uA8B4-\\uA8C3\\uA952-\\uA953\\uA983\\uA9B4-\\uA9B5\\uA9BA-\\uA9BB\\uA9BE-\\uA9C0\\uAA2F-\\uAA30\\uAA33-\\uAA34\\uAA4D\\uAAEB\\uAAEE-\\uAAEF\\uAAF5\\uABE3-\\uABE4\\uABE6-\\uABE7\\uABE9-\\uABEA\\uABEC\\u{11000}\\u{11002}\\u{11082}\\u{110B0}-\\u{110B2}\\u{110B7}-\\u{110B8}\\u{1112C}\\u{11145}-\\u{11146}\\u{11182}\\u{111B3}-\\u{111B5}\\u{111BF}-\\u{111C0}\\u{111CE}\\u{1122C}-\\u{1122E}\\u{11232}-\\u{11233}\\u{11235}\\u{112E0}-\\u{112E2}\\u{11302}-\\u{11303}\\u{1133F}\\u{11341}-\\u{11344}\\u{11347}-\\u{11348}\\u{1134B}-\\u{1134D}\\u{11362}-\\u{11363}\\u{11435}-\\u{11437}\\u{11440}-\\u{11441}\\u{11445}\\u{114B1}-\\u{114B2}\\u{114B9}\\u{114BB}-\\u{114BC}\\u{114BE}\\u{114C1}\\u{115B0}-\\u{115B1}\\u{115B8}-\\u{115BB}\\u{115BE}\\u{11630}-\\u{11632}\\u{1163B}-\\u{1163C}\\u{1163E}\\u{116AC}\\u{116AE}-\\u{116AF}\\u{116B6}\\u{11726}\\u{1182C}-\\u{1182E}\\u{11838}\\u{11931}-\\u{11935}\\u{11937}-\\u{11938}\\u{1193D}\\u{11940}\\u{11942}\\u{119D1}-\\u{119D3}\\u{119DC}-\\u{119DF}\\u{119E4}\\u{11A39}\\u{11A57}-\\u{11A58}\\u{11A97}\\u{11C2F}\\u{11C3E}\\u{11CA9}\\u{11CB1}\\u{11CB4}\\u{11D8A}-\\u{11D8E}\\u{11D93}-\\u{11D94}\\u{11D96}\\u{11EF5}-\\u{11EF6}\\u{16F51}-\\u{16F87}\\u{16FF0}-\\u{16FF1}\\u{1D166}\\u{1D16D}]$/u\nconst reL = /^[\\u1100-\\u115F\\uA960-\\uA97C]$/u\nconst reV = /^[\\u1160-\\u11A7\\uD7B0-\\uD7C6]$/u\nconst reT = /^[\\u11A8-\\u11FF\\uD7CB-\\uD7FB]$/u\nconst reLV = /^[\\uAC00\\uAC1C\\uAC38\\uAC54\\uAC70\\uAC8C\\uACA8\\uACC4\\uACE0\\uACFC\\uAD18\\uAD34\\uAD50\\uAD6C\\uAD88\\uADA4\\uADC0\\uADDC\\uADF8\\uAE14\\uAE30\\uAE4C\\uAE68\\uAE84\\uAEA0\\uAEBC\\uAED8\\uAEF4\\uAF10\\uAF2C\\uAF48\\uAF64\\uAF80\\uAF9C\\uAFB8\\uAFD4\\uAFF0\\uB00C\\uB028\\uB044\\uB060\\uB07C\\uB098\\uB0B4\\uB0D0\\uB0EC\\uB108\\uB124\\uB140\\uB15C\\uB178\\uB194\\uB1B0\\uB1CC\\uB1E8\\uB204\\uB220\\uB23C\\uB258\\uB274\\uB290\\uB2AC\\uB2C8\\uB2E4\\uB300\\uB31C\\uB338\\uB354\\uB370\\uB38C\\uB3A8\\uB3C4\\uB3E0\\uB3FC\\uB418\\uB434\\uB450\\uB46C\\uB488\\uB4A4\\uB4C0\\uB4DC\\uB4F8\\uB514\\uB530\\uB54C\\uB568\\uB584\\uB5A0\\uB5BC\\uB5D8\\uB5F4\\uB610\\uB62C\\uB648\\uB664\\uB680\\uB69C\\uB6B8\\uB6D4\\uB6F0\\uB70C\\uB728\\uB744\\uB760\\uB77C\\uB798\\uB7B4\\uB7D0\\uB7EC\\uB808\\uB824\\uB840\\uB85C\\uB878\\uB894\\uB8B0\\uB8CC\\uB8E8\\uB904\\uB920\\uB93C\\uB958\\uB974\\uB990\\uB9AC\\uB9C8\\uB9E4\\uBA00\\uBA1C\\uBA38\\uBA54\\uBA70\\uBA8C\\uBAA8\\uBAC4\\uBAE0\\uBAFC\\uBB18\\uBB34\\uBB50\\uBB6C\\uBB88\\uBBA4\\uBBC0\\uBBDC\\uBBF8\\uBC14\\uBC30\\uBC4C\\uBC68\\uBC84\\uBCA0\\uBCBC\\uBCD8\\uBCF4\\uBD10\\uBD2C\\uBD48\\uBD64\\uBD80\\uBD9C\\uBDB8\\uBDD4\\uBDF0\\uBE0C\\uBE28\\uBE44\\uBE60\\uBE7C\\uBE98\\uBEB4\\uBED0\\uBEEC\\uBF08\\uBF24\\uBF40\\uBF5C\\uBF78\\uBF94\\uBFB0\\uBFCC\\uBFE8\\uC004\\uC020\\uC03C\\uC058\\uC074\\uC090\\uC0AC\\uC0C8\\uC0E4\\uC100\\uC11C\\uC138\\uC154\\uC170\\uC18C\\uC1A8\\uC1C4\\uC1E0\\uC1FC\\uC218\\uC234\\uC250\\uC26C\\uC288\\uC2A4\\uC2C0\\uC2DC\\uC2F8\\uC314\\uC330\\uC34C\\uC368\\uC384\\uC3A0\\uC3BC\\uC3D8\\uC3F4\\uC410\\uC42C\\uC448\\uC464\\uC480\\uC49C\\uC4B8\\uC4D4\\uC4F0\\uC50C\\uC528\\uC544\\uC560\\uC57C\\uC598\\uC5B4\\uC5D0\\uC5EC\\uC608\\uC624\\uC640\\uC65C\\uC678\\uC694\\uC6B0\\uC6CC\\uC6E8\\uC704\\uC720\\uC73C\\uC758\\uC774\\uC790\\uC7AC\\uC7C8\\uC7E4\\uC800\\uC81C\\uC838\\uC854\\uC870\\uC88C\\uC8A8\\uC8C4\\uC8E0\\uC8FC\\uC918\\uC934\\uC950\\uC96C\\uC988\\uC9A4\\uC9C0\\uC9DC\\uC9F8\\uCA14\\uCA30\\uCA4C\\uCA68\\uCA84\\uCAA0\\uCABC\\uCAD8\\uCAF4\\uCB10\\uCB2C\\uCB48\\uCB64\\uCB80\\uCB9C\\uCBB8\\uCBD4\\uCBF0\\uCC0C\\uCC28\\uCC44\\uCC60\\uCC7C\\uCC98\\uCCB4\\uCCD0\\uCCEC\\uCD08\\uCD24\\uCD40\\uCD5C\\uCD78\\uCD94\\uCDB0\\uCDCC\\uCDE8\\uCE04\\uCE20\\uCE3C\\uCE58\\uCE74\\uCE90\\uCEAC\\uCEC8\\uCEE4\\uCF00\\uCF1C\\uCF38\\uCF54\\uCF70\\uCF8C\\uCFA8\\uCFC4\\uCFE0\\uCFFC\\uD018\\uD034\\uD050\\uD06C\\uD088\\uD0A4\\uD0C0\\uD0DC\\uD0F8\\uD114\\uD130\\uD14C\\uD168\\uD184\\uD1A0\\uD1BC\\uD1D8\\uD1F4\\uD210\\uD22C\\uD248\\uD264\\uD280\\uD29C\\uD2B8\\uD2D4\\uD2F0\\uD30C\\uD328\\uD344\\uD360\\uD37C\\uD398\\uD3B4\\uD3D0\\uD3EC\\uD408\\uD424\\uD440\\uD45C\\uD478\\uD494\\uD4B0\\uD4CC\\uD4E8\\uD504\\uD520\\uD53C\\uD558\\uD574\\uD590\\uD5AC\\uD5C8\\uD5E4\\uD600\\uD61C\\uD638\\uD654\\uD670\\uD68C\\uD6A8\\uD6C4\\uD6E0\\uD6FC\\uD718\\uD734\\uD750\\uD76C\\uD788]$/u\nconst reLVT = /^[\\uAC01-\\uAC1B\\uAC1D-\\uAC37\\uAC39-\\uAC53\\uAC55-\\uAC6F\\uAC71-\\uAC8B\\uAC8D-\\uACA7\\uACA9-\\uACC3\\uACC5-\\uACDF\\uACE1-\\uACFB\\uACFD-\\uAD17\\uAD19-\\uAD33\\uAD35-\\uAD4F\\uAD51-\\uAD6B\\uAD6D-\\uAD87\\uAD89-\\uADA3\\uADA5-\\uADBF\\uADC1-\\uADDB\\uADDD-\\uADF7\\uADF9-\\uAE13\\uAE15-\\uAE2F\\uAE31-\\uAE4B\\uAE4D-\\uAE67\\uAE69-\\uAE83\\uAE85-\\uAE9F\\uAEA1-\\uAEBB\\uAEBD-\\uAED7\\uAED9-\\uAEF3\\uAEF5-\\uAF0F\\uAF11-\\uAF2B\\uAF2D-\\uAF47\\uAF49-\\uAF63\\uAF65-\\uAF7F\\uAF81-\\uAF9B\\uAF9D-\\uAFB7\\uAFB9-\\uAFD3\\uAFD5-\\uAFEF\\uAFF1-\\uB00B\\uB00D-\\uB027\\uB029-\\uB043\\uB045-\\uB05F\\uB061-\\uB07B\\uB07D-\\uB097\\uB099-\\uB0B3\\uB0B5-\\uB0CF\\uB0D1-\\uB0EB\\uB0ED-\\uB107\\uB109-\\uB123\\uB125-\\uB13F\\uB141-\\uB15B\\uB15D-\\uB177\\uB179-\\uB193\\uB195-\\uB1AF\\uB1B1-\\uB1CB\\uB1CD-\\uB1E7\\uB1E9-\\uB203\\uB205-\\uB21F\\uB221-\\uB23B\\uB23D-\\uB257\\uB259-\\uB273\\uB275-\\uB28F\\uB291-\\uB2AB\\uB2AD-\\uB2C7\\uB2C9-\\uB2E3\\uB2E5-\\uB2FF\\uB301-\\uB31B\\uB31D-\\uB337\\uB339-\\uB353\\uB355-\\uB36F\\uB371-\\uB38B\\uB38D-\\uB3A7\\uB3A9-\\uB3C3\\uB3C5-\\uB3DF\\uB3E1-\\uB3FB\\uB3FD-\\uB417\\uB419-\\uB433\\uB435-\\uB44F\\uB451-\\uB46B\\uB46D-\\uB487\\uB489-\\uB4A3\\uB4A5-\\uB4BF\\uB4C1-\\uB4DB\\uB4DD-\\uB4F7\\uB4F9-\\uB513\\uB515-\\uB52F\\uB531-\\uB54B\\uB54D-\\uB567\\uB569-\\uB583\\uB585-\\uB59F\\uB5A1-\\uB5BB\\uB5BD-\\uB5D7\\uB5D9-\\uB5F3\\uB5F5-\\uB60F\\uB611-\\uB62B\\uB62D-\\uB647\\uB649-\\uB663\\uB665-\\uB67F\\uB681-\\uB69B\\uB69D-\\uB6B7\\uB6B9-\\uB6D3\\uB6D5-\\uB6EF\\uB6F1-\\uB70B\\uB70D-\\uB727\\uB729-\\uB743\\uB745-\\uB75F\\uB761-\\uB77B\\uB77D-\\uB797\\uB799-\\uB7B3\\uB7B5-\\uB7CF\\uB7D1-\\uB7EB\\uB7ED-\\uB807\\uB809-\\uB823\\uB825-\\uB83F\\uB841-\\uB85B\\uB85D-\\uB877\\uB879-\\uB893\\uB895-\\uB8AF\\uB8B1-\\uB8CB\\uB8CD-\\uB8E7\\uB8E9-\\uB903\\uB905-\\uB91F\\uB921-\\uB93B\\uB93D-\\uB957\\uB959-\\uB973\\uB975-\\uB98F\\uB991-\\uB9AB\\uB9AD-\\uB9C7\\uB9C9-\\uB9E3\\uB9E5-\\uB9FF\\uBA01-\\uBA1B\\uBA1D-\\uBA37\\uBA39-\\uBA53\\uBA55-\\uBA6F\\uBA71-\\uBA8B\\uBA8D-\\uBAA7\\uBAA9-\\uBAC3\\uBAC5-\\uBADF\\uBAE1-\\uBAFB\\uBAFD-\\uBB17\\uBB19-\\uBB33\\uBB35-\\uBB4F\\uBB51-\\uBB6B\\uBB6D-\\uBB87\\uBB89-\\uBBA3\\uBBA5-\\uBBBF\\uBBC1-\\uBBDB\\uBBDD-\\uBBF7\\uBBF9-\\uBC13\\uBC15-\\uBC2F\\uBC31-\\uBC4B\\uBC4D-\\uBC67\\uBC69-\\uBC83\\uBC85-\\uBC9F\\uBCA1-\\uBCBB\\uBCBD-\\uBCD7\\uBCD9-\\uBCF3\\uBCF5-\\uBD0F\\uBD11-\\uBD2B\\uBD2D-\\uBD47\\uBD49-\\uBD63\\uBD65-\\uBD7F\\uBD81-\\uBD9B\\uBD9D-\\uBDB7\\uBDB9-\\uBDD3\\uBDD5-\\uBDEF\\uBDF1-\\uBE0B\\uBE0D-\\uBE27\\uBE29-\\uBE43\\uBE45-\\uBE5F\\uBE61-\\uBE7B\\uBE7D-\\uBE97\\uBE99-\\uBEB3\\uBEB5-\\uBECF\\uBED1-\\uBEEB\\uBEED-\\uBF07\\uBF09-\\uBF23\\uBF25-\\uBF3F\\uBF41-\\uBF5B\\uBF5D-\\uBF77\\uBF79-\\uBF93\\uBF95-\\uBFAF\\uBFB1-\\uBFCB\\uBFCD-\\uBFE7\\uBFE9-\\uC003\\uC005-\\uC01F\\uC021-\\uC03B\\uC03D-\\uC057\\uC059-\\uC073\\uC075-\\uC08F\\uC091-\\uC0AB\\uC0AD-\\uC0C7\\uC0C9-\\uC0E3\\uC0E5-\\uC0FF\\uC101-\\uC11B\\uC11D-\\uC137\\uC139-\\uC153\\uC155-\\uC16F\\uC171-\\uC18B\\uC18D-\\uC1A7\\uC1A9-\\uC1C3\\uC1C5-\\uC1DF\\uC1E1-\\uC1FB\\uC1FD-\\uC217\\uC219-\\uC233\\uC235-\\uC24F\\uC251-\\uC26B\\uC26D-\\uC287\\uC289-\\uC2A3\\uC2A5-\\uC2BF\\uC2C1-\\uC2DB\\uC2DD-\\uC2F7\\uC2F9-\\uC313\\uC315-\\uC32F\\uC331-\\uC34B\\uC34D-\\uC367\\uC369-\\uC383\\uC385-\\uC39F\\uC3A1-\\uC3BB\\uC3BD-\\uC3D7\\uC3D9-\\uC3F3\\uC3F5-\\uC40F\\uC411-\\uC42B\\uC42D-\\uC447\\uC449-\\uC463\\uC465-\\uC47F\\uC481-\\uC49B\\uC49D-\\uC4B7\\uC4B9-\\uC4D3\\uC4D5-\\uC4EF\\uC4F1-\\uC50B\\uC50D-\\uC527\\uC529-\\uC543\\uC545-\\uC55F\\uC561-\\uC57B\\uC57D-\\uC597\\uC599-\\uC5B3\\uC5B5-\\uC5CF\\uC5D1-\\uC5EB\\uC5ED-\\uC607\\uC609-\\uC623\\uC625-\\uC63F\\uC641-\\uC65B\\uC65D-\\uC677\\uC679-\\uC693\\uC695-\\uC6AF\\uC6B1-\\uC6CB\\uC6CD-\\uC6E7\\uC6E9-\\uC703\\uC705-\\uC71F\\uC721-\\uC73B\\uC73D-\\uC757\\uC759-\\uC773\\uC775-\\uC78F\\uC791-\\uC7AB\\uC7AD-\\uC7C7\\uC7C9-\\uC7E3\\uC7E5-\\uC7FF\\uC801-\\uC81B\\uC81D-\\uC837\\uC839-\\uC853\\uC855-\\uC86F\\uC871-\\uC88B\\uC88D-\\uC8A7\\uC8A9-\\uC8C3\\uC8C5-\\uC8DF\\uC8E1-\\uC8FB\\uC8FD-\\uC917\\uC919-\\uC933\\uC935-\\uC94F\\uC951-\\uC96B\\uC96D-\\uC987\\uC989-\\uC9A3\\uC9A5-\\uC9BF\\uC9C1-\\uC9DB\\uC9DD-\\uC9F7\\uC9F9-\\uCA13\\uCA15-\\uCA2F\\uCA31-\\uCA4B\\uCA4D-\\uCA67\\uCA69-\\uCA83\\uCA85-\\uCA9F\\uCAA1-\\uCABB\\uCABD-\\uCAD7\\uCAD9-\\uCAF3\\uCAF5-\\uCB0F\\uCB11-\\uCB2B\\uCB2D-\\uCB47\\uCB49-\\uCB63\\uCB65-\\uCB7F\\uCB81-\\uCB9B\\uCB9D-\\uCBB7\\uCBB9-\\uCBD3\\uCBD5-\\uCBEF\\uCBF1-\\uCC0B\\uCC0D-\\uCC27\\uCC29-\\uCC43\\uCC45-\\uCC5F\\uCC61-\\uCC7B\\uCC7D-\\uCC97\\uCC99-\\uCCB3\\uCCB5-\\uCCCF\\uCCD1-\\uCCEB\\uCCED-\\uCD07\\uCD09-\\uCD23\\uCD25-\\uCD3F\\uCD41-\\uCD5B\\uCD5D-\\uCD77\\uCD79-\\uCD93\\uCD95-\\uCDAF\\uCDB1-\\uCDCB\\uCDCD-\\uCDE7\\uCDE9-\\uCE03\\uCE05-\\uCE1F\\uCE21-\\uCE3B\\uCE3D-\\uCE57\\uCE59-\\uCE73\\uCE75-\\uCE8F\\uCE91-\\uCEAB\\uCEAD-\\uCEC7\\uCEC9-\\uCEE3\\uCEE5-\\uCEFF\\uCF01-\\uCF1B\\uCF1D-\\uCF37\\uCF39-\\uCF53\\uCF55-\\uCF6F\\uCF71-\\uCF8B\\uCF8D-\\uCFA7\\uCFA9-\\uCFC3\\uCFC5-\\uCFDF\\uCFE1-\\uCFFB\\uCFFD-\\uD017\\uD019-\\uD033\\uD035-\\uD04F\\uD051-\\uD06B\\uD06D-\\uD087\\uD089-\\uD0A3\\uD0A5-\\uD0BF\\uD0C1-\\uD0DB\\uD0DD-\\uD0F7\\uD0F9-\\uD113\\uD115-\\uD12F\\uD131-\\uD14B\\uD14D-\\uD167\\uD169-\\uD183\\uD185-\\uD19F\\uD1A1-\\uD1BB\\uD1BD-\\uD1D7\\uD1D9-\\uD1F3\\uD1F5-\\uD20F\\uD211-\\uD22B\\uD22D-\\uD247\\uD249-\\uD263\\uD265-\\uD27F\\uD281-\\uD29B\\uD29D-\\uD2B7\\uD2B9-\\uD2D3\\uD2D5-\\uD2EF\\uD2F1-\\uD30B\\uD30D-\\uD327\\uD329-\\uD343\\uD345-\\uD35F\\uD361-\\uD37B\\uD37D-\\uD397\\uD399-\\uD3B3\\uD3B5-\\uD3CF\\uD3D1-\\uD3EB\\uD3ED-\\uD407\\uD409-\\uD423\\uD425-\\uD43F\\uD441-\\uD45B\\uD45D-\\uD477\\uD479-\\uD493\\uD495-\\uD4AF\\uD4B1-\\uD4CB\\uD4CD-\\uD4E7\\uD4E9-\\uD503\\uD505-\\uD51F\\uD521-\\uD53B\\uD53D-\\uD557\\uD559-\\uD573\\uD575-\\uD58F\\uD591-\\uD5AB\\uD5AD-\\uD5C7\\uD5C9-\\uD5E3\\uD5E5-\\uD5FF\\uD601-\\uD61B\\uD61D-\\uD637\\uD639-\\uD653\\uD655-\\uD66F\\uD671-\\uD68B\\uD68D-\\uD6A7\\uD6A9-\\uD6C3\\uD6C5-\\uD6DF\\uD6E1-\\uD6FB\\uD6FD-\\uD717\\uD719-\\uD733\\uD735-\\uD74F\\uD751-\\uD76B\\uD76D-\\uD787\\uD789-\\uD7A3]$/u\nconst reExtPict = /^\\p{ExtPict}$/u\n\nconst getCodepointType = (char: string, code: number): CodepointType => {\n let type = CodepointType.Any\n if (char.search(reExtend) !== -1) {\n type |= CodepointType.Extend\n }\n if (code === 0x200d) {\n type |= CodepointType.ZWJ\n }\n if (code >= 0x1f1e6 && code <= 0x1f1ff) {\n type |= CodepointType.RI\n }\n if (char.search(rePrepend) !== -1) {\n type |= CodepointType.Prepend\n }\n if (char.search(reSpacingMark) !== -1) {\n type |= CodepointType.SpacingMark\n }\n if (char.search(reL) !== -1) {\n type |= CodepointType.L\n }\n if (char.search(reV) !== -1) {\n type |= CodepointType.V\n }\n if (char.search(reT) !== -1) {\n type |= CodepointType.T\n }\n if (char.search(reLV) !== -1) {\n type |= CodepointType.LV\n }\n if (char.search(reLVT) !== -1) {\n type |= CodepointType.LVT\n }\n if (char.search(reExtPict) !== -1) {\n type |= CodepointType.ExtPict\n }\n\n return type\n}\n\nfunction intersects(x: CodepointType, y: CodepointType) {\n return (x & y) !== 0\n}\n\nconst NonBoundaryPairs: [CodepointType, CodepointType][] = [\n // GB6\n [\n CodepointType.L,\n CodepointType.L | CodepointType.V | CodepointType.LV | CodepointType.LVT,\n ],\n // GB7\n [CodepointType.LV | CodepointType.V, CodepointType.V | CodepointType.T],\n // GB8\n [CodepointType.LVT | CodepointType.T, CodepointType.T],\n // GB9\n [CodepointType.Any, CodepointType.Extend | CodepointType.ZWJ],\n // GB9a\n [CodepointType.Any, CodepointType.SpacingMark],\n // GB9b\n [CodepointType.Prepend, CodepointType.Any],\n // GB11\n [CodepointType.ZWJ, CodepointType.ExtPict],\n // GB12 and GB13\n [CodepointType.RI, CodepointType.RI],\n]\n\nfunction isBoundaryPair(left: CodepointType, right: CodepointType) {\n return (\n NonBoundaryPairs.findIndex(\n r => intersects(left, r[0]) && intersects(right, r[1])\n ) === -1\n )\n}\n\nconst endingEmojiZWJ = /\\p{ExtPict}[\\p{Gr_Ext}\\p{EMod}]*\\u200D$/u\nconst endsWithEmojiZWJ = (str: string): boolean => {\n return str.search(endingEmojiZWJ) !== -1\n}\n\nconst endingRIs = /\\p{RI}+$/gu\nconst endsWithOddNumberOfRIs = (str: string): boolean => {\n const match = str.match(endingRIs)\n if (match === null) {\n return false\n } else {\n // A RI is represented by a surrogate pair.\n const numRIs = match[0].length / 2\n return numRIs % 2 === 1\n }\n}\n","import { isPlainObject } from 'is-plain-object'\nimport { Editor, Node, Path, Descendant, ExtendedType, Ancestor } from '..'\n\n/**\n * `Element` objects are a type of node in a Slate document that contain other\n * element nodes or text nodes. They can be either \"blocks\" or \"inlines\"\n * depending on the Slate editor's configuration.\n */\n\nexport interface BaseElement {\n children: Descendant[]\n}\n\nexport type Element = ExtendedType<'Element', BaseElement>\n\nexport interface ElementInterface {\n isAncestor: (value: any) => value is Ancestor\n isElement: (value: any) => value is Element\n isElementList: (value: any) => value is Element[]\n isElementProps: (props: any) => props is Partial\n isElementType: (\n value: any,\n elementVal: string,\n elementKey?: string\n ) => value is T\n matches: (element: Element, props: Partial) => boolean\n}\n\n/**\n * Shared the function with isElementType utility\n */\nconst isElement = (value: any): value is Element => {\n return (\n isPlainObject(value) &&\n Node.isNodeList(value.children) &&\n !Editor.isEditor(value)\n )\n}\n\n// eslint-disable-next-line no-redeclare\nexport const Element: ElementInterface = {\n /**\n * Check if a value implements the 'Ancestor' interface.\n */\n\n isAncestor(value: any): value is Ancestor {\n return isPlainObject(value) && Node.isNodeList(value.children)\n },\n\n /**\n * Check if a value implements the `Element` interface.\n */\n\n isElement,\n /**\n * Check if a value is an array of `Element` objects.\n */\n\n isElementList(value: any): value is Element[] {\n return Array.isArray(value) && value.every(val => Element.isElement(val))\n },\n\n /**\n * Check if a set of props is a partial of Element.\n */\n\n isElementProps(props: any): props is Partial {\n return (props as Partial).children !== undefined\n },\n\n /**\n * Check if a value implements the `Element` interface and has elementKey with selected value.\n * Default it check to `type` key value\n */\n\n isElementType: (\n value: any,\n elementVal: string,\n elementKey: string = 'type'\n ): value is T => {\n return isElement(value) && value[elementKey] === elementVal\n },\n\n /**\n * Check if an element matches set of properties.\n *\n * Note: this checks custom properties, and it does not ensure that any\n * children are equivalent.\n */\n\n matches(element: Element, props: Partial): boolean {\n for (const key in props) {\n if (key === 'children') {\n continue\n }\n\n if (element[key] !== props[key]) {\n return false\n }\n }\n\n return true\n },\n}\n\n/**\n * `ElementEntry` objects refer to an `Element` and the `Path` where it can be\n * found inside a root node.\n */\n\nexport type ElementEntry = [Element, Path]\n","import { isPlainObject } from 'is-plain-object'\n\nimport {\n Ancestor,\n ExtendedType,\n Location,\n Node,\n NodeEntry,\n Operation,\n Path,\n PathRef,\n Point,\n PointRef,\n Range,\n RangeRef,\n Span,\n Text,\n} from '..'\nimport {\n DIRTY_PATHS,\n DIRTY_PATH_KEYS,\n NORMALIZING,\n PATH_REFS,\n POINT_REFS,\n RANGE_REFS,\n} from '../utils/weak-maps'\nimport {\n getWordDistance,\n getCharacterDistance,\n splitByCharacterDistance,\n} from '../utils/string'\nimport { Descendant } from './node'\nimport { Element } from './element'\nimport {\n LeafEdge,\n SelectionMode,\n TextDirection,\n TextUnit,\n TextUnitAdjustment,\n RangeDirection,\n MaximizeMode,\n} from './types'\n\nexport type BaseSelection = Range | null\n\nexport type Selection = ExtendedType<'Selection', BaseSelection>\n\nexport type EditorMarks = Omit\n\n/**\n * The `Editor` interface stores all the state of a Slate editor. It is extended\n * by plugins that wish to add their own helpers and implement new behaviors.\n */\n\nexport interface BaseEditor {\n children: Descendant[]\n selection: Selection\n operations: Operation[]\n marks: EditorMarks | null\n\n // Schema-specific node behaviors.\n isInline: (element: Element) => boolean\n isVoid: (element: Element) => boolean\n normalizeNode: (entry: NodeEntry) => void\n onChange: () => void\n\n // Overrideable core actions.\n addMark: (key: string, value: any) => void\n apply: (operation: Operation) => void\n deleteBackward: (unit: TextUnit) => void\n deleteForward: (unit: TextUnit) => void\n deleteFragment: (direction?: TextDirection) => void\n getFragment: () => Descendant[]\n insertBreak: () => void\n insertSoftBreak: () => void\n insertFragment: (fragment: Node[]) => void\n insertNode: (node: Node) => void\n insertText: (text: string) => void\n removeMark: (key: string) => void\n getDirtyPaths: (op: Operation) => Path[]\n}\n\nexport type Editor = ExtendedType<'Editor', BaseEditor>\n\nexport interface EditorAboveOptions {\n at?: Location\n match?: NodeMatch\n mode?: MaximizeMode\n voids?: boolean\n}\n\nexport interface EditorAfterOptions {\n distance?: number\n unit?: TextUnitAdjustment\n voids?: boolean\n}\n\nexport interface EditorBeforeOptions {\n distance?: number\n unit?: TextUnitAdjustment\n voids?: boolean\n}\n\nexport interface EditorDirectedDeletionOptions {\n unit?: TextUnit\n}\n\nexport interface EditorFragmentDeletionOptions {\n direction?: TextDirection\n}\n\nexport interface EditorLeafOptions {\n depth?: number\n edge?: LeafEdge\n}\n\nexport interface EditorLevelsOptions {\n at?: Location\n match?: NodeMatch\n reverse?: boolean\n voids?: boolean\n}\n\nexport interface EditorNextOptions {\n at?: Location\n match?: NodeMatch\n mode?: SelectionMode\n voids?: boolean\n}\n\nexport interface EditorNodeOptions {\n depth?: number\n edge?: LeafEdge\n}\n\nexport interface EditorNodesOptions {\n at?: Location | Span\n match?: NodeMatch\n mode?: SelectionMode\n universal?: boolean\n reverse?: boolean\n voids?: boolean\n}\n\nexport interface EditorNormalizeOptions {\n force?: boolean\n}\n\nexport interface EditorParentOptions {\n depth?: number\n edge?: LeafEdge\n}\n\nexport interface EditorPathOptions {\n depth?: number\n edge?: LeafEdge\n}\n\nexport interface EditorPathRefOptions {\n affinity?: TextDirection | null\n}\n\nexport interface EditorPointOptions {\n edge?: LeafEdge\n}\n\nexport interface EditorPointRefOptions {\n affinity?: TextDirection | null\n}\n\nexport interface EditorPositionsOptions {\n at?: Location\n unit?: TextUnitAdjustment\n reverse?: boolean\n voids?: boolean\n}\n\nexport interface EditorPreviousOptions {\n at?: Location\n match?: NodeMatch\n mode?: SelectionMode\n voids?: boolean\n}\n\nexport interface EditorRangeRefOptions {\n affinity?: RangeDirection | null\n}\n\nexport interface EditorStringOptions {\n voids?: boolean\n}\n\nexport interface EditorUnhangRangeOptions {\n voids?: boolean\n}\n\nexport interface EditorVoidOptions {\n at?: Location\n mode?: MaximizeMode\n voids?: boolean\n}\n\nexport interface EditorInterface {\n above: (\n editor: Editor,\n options?: EditorAboveOptions\n ) => NodeEntry | undefined\n addMark: (editor: Editor, key: string, value: any) => void\n after: (\n editor: Editor,\n at: Location,\n options?: EditorAfterOptions\n ) => Point | undefined\n before: (\n editor: Editor,\n at: Location,\n options?: EditorBeforeOptions\n ) => Point | undefined\n deleteBackward: (\n editor: Editor,\n options?: EditorDirectedDeletionOptions\n ) => void\n deleteForward: (\n editor: Editor,\n options?: EditorDirectedDeletionOptions\n ) => void\n deleteFragment: (\n editor: Editor,\n options?: EditorFragmentDeletionOptions\n ) => void\n edges: (editor: Editor, at: Location) => [Point, Point]\n end: (editor: Editor, at: Location) => Point\n first: (editor: Editor, at: Location) => NodeEntry\n fragment: (editor: Editor, at: Location) => Descendant[]\n hasBlocks: (editor: Editor, element: Element) => boolean\n hasInlines: (editor: Editor, element: Element) => boolean\n hasPath: (editor: Editor, path: Path) => boolean\n hasTexts: (editor: Editor, element: Element) => boolean\n insertBreak: (editor: Editor) => void\n insertSoftBreak: (editor: Editor) => void\n insertFragment: (editor: Editor, fragment: Node[]) => void\n insertNode: (editor: Editor, node: Node) => void\n insertText: (editor: Editor, text: string) => void\n isBlock: (editor: Editor, value: any) => value is Element\n isEditor: (value: any) => value is Editor\n isEnd: (editor: Editor, point: Point, at: Location) => boolean\n isEdge: (editor: Editor, point: Point, at: Location) => boolean\n isEmpty: (editor: Editor, element: Element) => boolean\n isInline: (editor: Editor, value: any) => value is Element\n isNormalizing: (editor: Editor) => boolean\n isStart: (editor: Editor, point: Point, at: Location) => boolean\n isVoid: (editor: Editor, value: any) => value is Element\n last: (editor: Editor, at: Location) => NodeEntry\n leaf: (\n editor: Editor,\n at: Location,\n options?: EditorLeafOptions\n ) => NodeEntry\n levels: (\n editor: Editor,\n options?: EditorLevelsOptions\n ) => Generator, void, undefined>\n marks: (editor: Editor) => Omit | null\n next: (\n editor: Editor,\n options?: EditorNextOptions\n ) => NodeEntry | undefined\n node: (editor: Editor, at: Location, options?: EditorNodeOptions) => NodeEntry\n nodes: (\n editor: Editor,\n options?: EditorNodesOptions\n ) => Generator, void, undefined>\n normalize: (editor: Editor, options?: EditorNormalizeOptions) => void\n parent: (\n editor: Editor,\n at: Location,\n options?: EditorParentOptions\n ) => NodeEntry\n path: (editor: Editor, at: Location, options?: EditorPathOptions) => Path\n pathRef: (\n editor: Editor,\n path: Path,\n options?: EditorPathRefOptions\n ) => PathRef\n pathRefs: (editor: Editor) => Set\n point: (editor: Editor, at: Location, options?: EditorPointOptions) => Point\n pointRef: (\n editor: Editor,\n point: Point,\n options?: EditorPointRefOptions\n ) => PointRef\n pointRefs: (editor: Editor) => Set\n positions: (\n editor: Editor,\n options?: EditorPositionsOptions\n ) => Generator\n previous: (\n editor: Editor,\n options?: EditorPreviousOptions\n ) => NodeEntry | undefined\n range: (editor: Editor, at: Location, to?: Location) => Range\n rangeRef: (\n editor: Editor,\n range: Range,\n options?: EditorRangeRefOptions\n ) => RangeRef\n rangeRefs: (editor: Editor) => Set\n removeMark: (editor: Editor, key: string) => void\n setNormalizing: (editor: Editor, isNormalizing: boolean) => void\n start: (editor: Editor, at: Location) => Point\n string: (\n editor: Editor,\n at: Location,\n options?: EditorStringOptions\n ) => string\n unhangRange: (\n editor: Editor,\n range: Range,\n options?: EditorUnhangRangeOptions\n ) => Range\n void: (\n editor: Editor,\n options?: EditorVoidOptions\n ) => NodeEntry | undefined\n withoutNormalizing: (editor: Editor, fn: () => void) => void\n}\n\nconst IS_EDITOR_CACHE = new WeakMap()\n\n// eslint-disable-next-line no-redeclare\nexport const Editor: EditorInterface = {\n /**\n * Get the ancestor above a location in the document.\n */\n\n above(\n editor: Editor,\n options: EditorAboveOptions = {}\n ): NodeEntry | undefined {\n const {\n voids = false,\n mode = 'lowest',\n at = editor.selection,\n match,\n } = options\n\n if (!at) {\n return\n }\n\n const path = Editor.path(editor, at)\n const reverse = mode === 'lowest'\n\n for (const [n, p] of Editor.levels(editor, {\n at: path,\n voids,\n match,\n reverse,\n })) {\n if (!Text.isText(n) && !Path.equals(path, p)) {\n return [n, p]\n }\n }\n },\n\n /**\n * Add a custom property to the leaf text nodes in the current selection.\n *\n * If the selection is currently collapsed, the marks will be added to the\n * `editor.marks` property instead, and applied when text is inserted next.\n */\n\n addMark(editor: Editor, key: string, value: any): void {\n editor.addMark(key, value)\n },\n\n /**\n * Get the point after a location.\n */\n\n after(\n editor: Editor,\n at: Location,\n options: EditorAfterOptions = {}\n ): Point | undefined {\n const anchor = Editor.point(editor, at, { edge: 'end' })\n const focus = Editor.end(editor, [])\n const range = { anchor, focus }\n const { distance = 1 } = options\n let d = 0\n let target\n\n for (const p of Editor.positions(editor, {\n ...options,\n at: range,\n })) {\n if (d > distance) {\n break\n }\n\n if (d !== 0) {\n target = p\n }\n\n d++\n }\n\n return target\n },\n\n /**\n * Get the point before a location.\n */\n\n before(\n editor: Editor,\n at: Location,\n options: EditorBeforeOptions = {}\n ): Point | undefined {\n const anchor = Editor.start(editor, [])\n const focus = Editor.point(editor, at, { edge: 'start' })\n const range = { anchor, focus }\n const { distance = 1 } = options\n let d = 0\n let target\n\n for (const p of Editor.positions(editor, {\n ...options,\n at: range,\n reverse: true,\n })) {\n if (d > distance) {\n break\n }\n\n if (d !== 0) {\n target = p\n }\n\n d++\n }\n\n return target\n },\n\n /**\n * Delete content in the editor backward from the current selection.\n */\n\n deleteBackward(\n editor: Editor,\n options: EditorDirectedDeletionOptions = {}\n ): void {\n const { unit = 'character' } = options\n editor.deleteBackward(unit)\n },\n\n /**\n * Delete content in the editor forward from the current selection.\n */\n\n deleteForward(\n editor: Editor,\n options: EditorDirectedDeletionOptions = {}\n ): void {\n const { unit = 'character' } = options\n editor.deleteForward(unit)\n },\n\n /**\n * Delete the content in the current selection.\n */\n\n deleteFragment(\n editor: Editor,\n options: EditorFragmentDeletionOptions = {}\n ): void {\n const { direction = 'forward' } = options\n editor.deleteFragment(direction)\n },\n\n /**\n * Get the start and end points of a location.\n */\n\n edges(editor: Editor, at: Location): [Point, Point] {\n return [Editor.start(editor, at), Editor.end(editor, at)]\n },\n\n /**\n * Get the end point of a location.\n */\n\n end(editor: Editor, at: Location): Point {\n return Editor.point(editor, at, { edge: 'end' })\n },\n\n /**\n * Get the first node at a location.\n */\n\n first(editor: Editor, at: Location): NodeEntry {\n const path = Editor.path(editor, at, { edge: 'start' })\n return Editor.node(editor, path)\n },\n\n /**\n * Get the fragment at a location.\n */\n\n fragment(editor: Editor, at: Location): Descendant[] {\n const range = Editor.range(editor, at)\n const fragment = Node.fragment(editor, range)\n return fragment\n },\n /**\n * Check if a node has block children.\n */\n\n hasBlocks(editor: Editor, element: Element): boolean {\n return element.children.some(n => Editor.isBlock(editor, n))\n },\n\n /**\n * Check if a node has inline and text children.\n */\n\n hasInlines(editor: Editor, element: Element): boolean {\n return element.children.some(\n n => Text.isText(n) || Editor.isInline(editor, n)\n )\n },\n\n /**\n * Check if a node has text children.\n */\n\n hasTexts(editor: Editor, element: Element): boolean {\n return element.children.every(n => Text.isText(n))\n },\n\n /**\n * Insert a block break at the current selection.\n *\n * If the selection is currently expanded, it will be deleted first.\n */\n\n insertBreak(editor: Editor): void {\n editor.insertBreak()\n },\n\n /**\n * Insert a soft break at the current selection.\n *\n * If the selection is currently expanded, it will be deleted first.\n */\n\n insertSoftBreak(editor: Editor): void {\n editor.insertSoftBreak()\n },\n\n /**\n * Insert a fragment at the current selection.\n *\n * If the selection is currently expanded, it will be deleted first.\n */\n\n insertFragment(editor: Editor, fragment: Node[]): void {\n editor.insertFragment(fragment)\n },\n\n /**\n * Insert a node at the current selection.\n *\n * If the selection is currently expanded, it will be deleted first.\n */\n\n insertNode(editor: Editor, node: Node): void {\n editor.insertNode(node)\n },\n\n /**\n * Insert text at the current selection.\n *\n * If the selection is currently expanded, it will be deleted first.\n */\n\n insertText(editor: Editor, text: string): void {\n editor.insertText(text)\n },\n\n /**\n * Check if a value is a block `Element` object.\n */\n\n isBlock(editor: Editor, value: any): value is Element {\n return Element.isElement(value) && !editor.isInline(value)\n },\n\n /**\n * Check if a value is an `Editor` object.\n */\n\n isEditor(value: any): value is Editor {\n const cachedIsEditor = IS_EDITOR_CACHE.get(value)\n if (cachedIsEditor !== undefined) {\n return cachedIsEditor\n }\n\n if (!isPlainObject(value)) {\n return false\n }\n\n const isEditor =\n typeof value.addMark === 'function' &&\n typeof value.apply === 'function' &&\n typeof value.deleteBackward === 'function' &&\n typeof value.deleteForward === 'function' &&\n typeof value.deleteFragment === 'function' &&\n typeof value.insertBreak === 'function' &&\n typeof value.insertSoftBreak === 'function' &&\n typeof value.insertFragment === 'function' &&\n typeof value.insertNode === 'function' &&\n typeof value.insertText === 'function' &&\n typeof value.isInline === 'function' &&\n typeof value.isVoid === 'function' &&\n typeof value.normalizeNode === 'function' &&\n typeof value.onChange === 'function' &&\n typeof value.removeMark === 'function' &&\n typeof value.getDirtyPaths === 'function' &&\n (value.marks === null || isPlainObject(value.marks)) &&\n (value.selection === null || Range.isRange(value.selection)) &&\n Node.isNodeList(value.children) &&\n Operation.isOperationList(value.operations)\n IS_EDITOR_CACHE.set(value, isEditor)\n return isEditor\n },\n\n /**\n * Check if a point is the end point of a location.\n */\n\n isEnd(editor: Editor, point: Point, at: Location): boolean {\n const end = Editor.end(editor, at)\n return Point.equals(point, end)\n },\n\n /**\n * Check if a point is an edge of a location.\n */\n\n isEdge(editor: Editor, point: Point, at: Location): boolean {\n return Editor.isStart(editor, point, at) || Editor.isEnd(editor, point, at)\n },\n\n /**\n * Check if an element is empty, accounting for void nodes.\n */\n\n isEmpty(editor: Editor, element: Element): boolean {\n const { children } = element\n const [first] = children\n return (\n children.length === 0 ||\n (children.length === 1 &&\n Text.isText(first) &&\n first.text === '' &&\n !editor.isVoid(element))\n )\n },\n\n /**\n * Check if a value is an inline `Element` object.\n */\n\n isInline(editor: Editor, value: any): value is Element {\n return Element.isElement(value) && editor.isInline(value)\n },\n\n /**\n * Check if the editor is currently normalizing after each operation.\n */\n\n isNormalizing(editor: Editor): boolean {\n const isNormalizing = NORMALIZING.get(editor)\n return isNormalizing === undefined ? true : isNormalizing\n },\n\n /**\n * Check if a point is the start point of a location.\n */\n\n isStart(editor: Editor, point: Point, at: Location): boolean {\n // PERF: If the offset isn't `0` we know it's not the start.\n if (point.offset !== 0) {\n return false\n }\n\n const start = Editor.start(editor, at)\n return Point.equals(point, start)\n },\n\n /**\n * Check if a value is a void `Element` object.\n */\n\n isVoid(editor: Editor, value: any): value is Element {\n return Element.isElement(value) && editor.isVoid(value)\n },\n\n /**\n * Get the last node at a location.\n */\n\n last(editor: Editor, at: Location): NodeEntry {\n const path = Editor.path(editor, at, { edge: 'end' })\n return Editor.node(editor, path)\n },\n\n /**\n * Get the leaf text node at a location.\n */\n\n leaf(\n editor: Editor,\n at: Location,\n options: EditorLeafOptions = {}\n ): NodeEntry {\n const path = Editor.path(editor, at, options)\n const node = Node.leaf(editor, path)\n return [node, path]\n },\n\n /**\n * Iterate through all of the levels at a location.\n */\n\n *levels(\n editor: Editor,\n options: EditorLevelsOptions = {}\n ): Generator, void, undefined> {\n const { at = editor.selection, reverse = false, voids = false } = options\n let { match } = options\n\n if (match == null) {\n match = () => true\n }\n\n if (!at) {\n return\n }\n\n const levels: NodeEntry[] = []\n const path = Editor.path(editor, at)\n\n for (const [n, p] of Node.levels(editor, path)) {\n if (!match(n, p)) {\n continue\n }\n\n levels.push([n, p])\n\n if (!voids && Editor.isVoid(editor, n)) {\n break\n }\n }\n\n if (reverse) {\n levels.reverse()\n }\n\n yield* levels\n },\n\n /**\n * Get the marks that would be added to text at the current selection.\n */\n\n marks(editor: Editor): Omit | null {\n const { marks, selection } = editor\n\n if (!selection) {\n return null\n }\n\n if (marks) {\n return marks\n }\n\n if (Range.isExpanded(selection)) {\n const [match] = Editor.nodes(editor, { match: Text.isText })\n\n if (match) {\n const [node] = match as NodeEntry\n const { text, ...rest } = node\n return rest\n } else {\n return {}\n }\n }\n\n const { anchor } = selection\n const { path } = anchor\n let [node] = Editor.leaf(editor, path)\n\n if (anchor.offset === 0) {\n const prev = Editor.previous(editor, { at: path, match: Text.isText })\n const block = Editor.above(editor, {\n match: n => Editor.isBlock(editor, n),\n })\n\n if (prev && block) {\n const [prevNode, prevPath] = prev\n const [, blockPath] = block\n\n if (Path.isAncestor(blockPath, prevPath)) {\n node = prevNode as Text\n }\n }\n }\n\n const { text, ...rest } = node\n return rest\n },\n\n /**\n * Get the matching node in the branch of the document after a location.\n */\n\n next(\n editor: Editor,\n options: EditorNextOptions = {}\n ): NodeEntry | undefined {\n const { mode = 'lowest', voids = false } = options\n let { match, at = editor.selection } = options\n\n if (!at) {\n return\n }\n\n const pointAfterLocation = Editor.after(editor, at, { voids })\n\n if (!pointAfterLocation) return\n\n const [, to] = Editor.last(editor, [])\n\n const span: Span = [pointAfterLocation.path, to]\n\n if (Path.isPath(at) && at.length === 0) {\n throw new Error(`Cannot get the next node from the root node!`)\n }\n\n if (match == null) {\n if (Path.isPath(at)) {\n const [parent] = Editor.parent(editor, at)\n match = n => parent.children.includes(n)\n } else {\n match = () => true\n }\n }\n\n const [next] = Editor.nodes(editor, { at: span, match, mode, voids })\n return next\n },\n\n /**\n * Get the node at a location.\n */\n\n node(\n editor: Editor,\n at: Location,\n options: EditorNodeOptions = {}\n ): NodeEntry {\n const path = Editor.path(editor, at, options)\n const node = Node.get(editor, path)\n return [node, path]\n },\n\n /**\n * Iterate through all of the nodes in the Editor.\n */\n\n *nodes(\n editor: Editor,\n options: EditorNodesOptions = {}\n ): Generator, void, undefined> {\n const {\n at = editor.selection,\n mode = 'all',\n universal = false,\n reverse = false,\n voids = false,\n } = options\n let { match } = options\n\n if (!match) {\n match = () => true\n }\n\n if (!at) {\n return\n }\n\n let from\n let to\n\n if (Span.isSpan(at)) {\n from = at[0]\n to = at[1]\n } else {\n const first = Editor.path(editor, at, { edge: 'start' })\n const last = Editor.path(editor, at, { edge: 'end' })\n from = reverse ? last : first\n to = reverse ? first : last\n }\n\n const nodeEntries = Node.nodes(editor, {\n reverse,\n from,\n to,\n pass: ([n]) => (voids ? false : Editor.isVoid(editor, n)),\n })\n\n const matches: NodeEntry[] = []\n let hit: NodeEntry | undefined\n\n for (const [node, path] of nodeEntries) {\n const isLower = hit && Path.compare(path, hit[1]) === 0\n\n // In highest mode any node lower than the last hit is not a match.\n if (mode === 'highest' && isLower) {\n continue\n }\n\n if (!match(node, path)) {\n // If we've arrived at a leaf text node that is not lower than the last\n // hit, then we've found a branch that doesn't include a match, which\n // means the match is not universal.\n if (universal && !isLower && Text.isText(node)) {\n return\n } else {\n continue\n }\n }\n\n // If there's a match and it's lower than the last, update the hit.\n if (mode === 'lowest' && isLower) {\n hit = [node, path]\n continue\n }\n\n // In lowest mode we emit the last hit, once it's guaranteed lowest.\n const emit: NodeEntry | undefined =\n mode === 'lowest' ? hit : [node, path]\n\n if (emit) {\n if (universal) {\n matches.push(emit)\n } else {\n yield emit\n }\n }\n\n hit = [node, path]\n }\n\n // Since lowest is always emitting one behind, catch up at the end.\n if (mode === 'lowest' && hit) {\n if (universal) {\n matches.push(hit)\n } else {\n yield hit\n }\n }\n\n // Universal defers to ensure that the match occurs in every branch, so we\n // yield all of the matches after iterating.\n if (universal) {\n yield* matches\n }\n },\n /**\n * Normalize any dirty objects in the editor.\n */\n\n normalize(editor: Editor, options: EditorNormalizeOptions = {}): void {\n const { force = false } = options\n const getDirtyPaths = (editor: Editor) => {\n return DIRTY_PATHS.get(editor) || []\n }\n\n const getDirtyPathKeys = (editor: Editor) => {\n return DIRTY_PATH_KEYS.get(editor) || new Set()\n }\n\n const popDirtyPath = (editor: Editor): Path => {\n const path = getDirtyPaths(editor).pop()!\n const key = path.join(',')\n getDirtyPathKeys(editor).delete(key)\n return path\n }\n\n if (!Editor.isNormalizing(editor)) {\n return\n }\n\n if (force) {\n const allPaths = Array.from(Node.nodes(editor), ([, p]) => p)\n const allPathKeys = new Set(allPaths.map(p => p.join(',')))\n DIRTY_PATHS.set(editor, allPaths)\n DIRTY_PATH_KEYS.set(editor, allPathKeys)\n }\n\n if (getDirtyPaths(editor).length === 0) {\n return\n }\n\n Editor.withoutNormalizing(editor, () => {\n /*\n Fix dirty elements with no children.\n editor.normalizeNode() does fix this, but some normalization fixes also require it to work.\n Running an initial pass avoids the catch-22 race condition.\n */\n for (const dirtyPath of getDirtyPaths(editor)) {\n if (Node.has(editor, dirtyPath)) {\n const entry = Editor.node(editor, dirtyPath)\n const [node, _] = entry\n\n /*\n The default normalizer inserts an empty text node in this scenario, but it can be customised.\n So there is some risk here.\n\n As long as the normalizer only inserts child nodes for this case it is safe to do in any order;\n by definition adding children to an empty node can't cause other paths to change.\n */\n if (Element.isElement(node) && node.children.length === 0) {\n editor.normalizeNode(entry)\n }\n }\n }\n\n const max = getDirtyPaths(editor).length * 42 // HACK: better way?\n let m = 0\n\n while (getDirtyPaths(editor).length !== 0) {\n if (m > max) {\n throw new Error(`\n Could not completely normalize the editor after ${max} iterations! This is usually due to incorrect normalization logic that leaves a node in an invalid state.\n `)\n }\n\n const dirtyPath = popDirtyPath(editor)\n\n // If the node doesn't exist in the tree, it does not need to be normalized.\n if (Node.has(editor, dirtyPath)) {\n const entry = Editor.node(editor, dirtyPath)\n editor.normalizeNode(entry)\n }\n m++\n }\n })\n },\n\n /**\n * Get the parent node of a location.\n */\n\n parent(\n editor: Editor,\n at: Location,\n options: EditorParentOptions = {}\n ): NodeEntry {\n const path = Editor.path(editor, at, options)\n const parentPath = Path.parent(path)\n const entry = Editor.node(editor, parentPath)\n return entry as NodeEntry\n },\n\n /**\n * Get the path of a location.\n */\n\n path(editor: Editor, at: Location, options: EditorPathOptions = {}): Path {\n const { depth, edge } = options\n\n if (Path.isPath(at)) {\n if (edge === 'start') {\n const [, firstPath] = Node.first(editor, at)\n at = firstPath\n } else if (edge === 'end') {\n const [, lastPath] = Node.last(editor, at)\n at = lastPath\n }\n }\n\n if (Range.isRange(at)) {\n if (edge === 'start') {\n at = Range.start(at)\n } else if (edge === 'end') {\n at = Range.end(at)\n } else {\n at = Path.common(at.anchor.path, at.focus.path)\n }\n }\n\n if (Point.isPoint(at)) {\n at = at.path\n }\n\n if (depth != null) {\n at = at.slice(0, depth)\n }\n\n return at\n },\n\n hasPath(editor: Editor, path: Path): boolean {\n return Node.has(editor, path)\n },\n\n /**\n * Create a mutable ref for a `Path` object, which will stay in sync as new\n * operations are applied to the editor.\n */\n\n pathRef(\n editor: Editor,\n path: Path,\n options: EditorPathRefOptions = {}\n ): PathRef {\n const { affinity = 'forward' } = options\n const ref: PathRef = {\n current: path,\n affinity,\n unref() {\n const { current } = ref\n const pathRefs = Editor.pathRefs(editor)\n pathRefs.delete(ref)\n ref.current = null\n return current\n },\n }\n\n const refs = Editor.pathRefs(editor)\n refs.add(ref)\n return ref\n },\n\n /**\n * Get the set of currently tracked path refs of the editor.\n */\n\n pathRefs(editor: Editor): Set {\n let refs = PATH_REFS.get(editor)\n\n if (!refs) {\n refs = new Set()\n PATH_REFS.set(editor, refs)\n }\n\n return refs\n },\n\n /**\n * Get the start or end point of a location.\n */\n\n point(editor: Editor, at: Location, options: EditorPointOptions = {}): Point {\n const { edge = 'start' } = options\n\n if (Path.isPath(at)) {\n let path\n\n if (edge === 'end') {\n const [, lastPath] = Node.last(editor, at)\n path = lastPath\n } else {\n const [, firstPath] = Node.first(editor, at)\n path = firstPath\n }\n\n const node = Node.get(editor, path)\n\n if (!Text.isText(node)) {\n throw new Error(\n `Cannot get the ${edge} point in the node at path [${at}] because it has no ${edge} text node.`\n )\n }\n\n return { path, offset: edge === 'end' ? node.text.length : 0 }\n }\n\n if (Range.isRange(at)) {\n const [start, end] = Range.edges(at)\n return edge === 'start' ? start : end\n }\n\n return at\n },\n\n /**\n * Create a mutable ref for a `Point` object, which will stay in sync as new\n * operations are applied to the editor.\n */\n\n pointRef(\n editor: Editor,\n point: Point,\n options: EditorPointRefOptions = {}\n ): PointRef {\n const { affinity = 'forward' } = options\n const ref: PointRef = {\n current: point,\n affinity,\n unref() {\n const { current } = ref\n const pointRefs = Editor.pointRefs(editor)\n pointRefs.delete(ref)\n ref.current = null\n return current\n },\n }\n\n const refs = Editor.pointRefs(editor)\n refs.add(ref)\n return ref\n },\n\n /**\n * Get the set of currently tracked point refs of the editor.\n */\n\n pointRefs(editor: Editor): Set {\n let refs = POINT_REFS.get(editor)\n\n if (!refs) {\n refs = new Set()\n POINT_REFS.set(editor, refs)\n }\n\n return refs\n },\n\n /**\n * Return all the positions in `at` range where a `Point` can be placed.\n *\n * By default, moves forward by individual offsets at a time, but\n * the `unit` option can be used to to move by character, word, line, or block.\n *\n * The `reverse` option can be used to change iteration direction.\n *\n * Note: By default void nodes are treated as a single point and iteration\n * will not happen inside their content unless you pass in true for the\n * `voids` option, then iteration will occur.\n */\n\n *positions(\n editor: Editor,\n options: EditorPositionsOptions = {}\n ): Generator {\n const {\n at = editor.selection,\n unit = 'offset',\n reverse = false,\n voids = false,\n } = options\n\n if (!at) {\n return\n }\n\n /**\n * Algorithm notes:\n *\n * Each step `distance` is dynamic depending on the underlying text\n * and the `unit` specified. Each step, e.g., a line or word, may\n * span multiple text nodes, so we iterate through the text both on\n * two levels in step-sync:\n *\n * `leafText` stores the text on a text leaf level, and is advanced\n * through using the counters `leafTextOffset` and `leafTextRemaining`.\n *\n * `blockText` stores the text on a block level, and is shortened\n * by `distance` every time it is advanced.\n *\n * We only maintain a window of one blockText and one leafText because\n * a block node always appears before all of its leaf nodes.\n */\n\n const range = Editor.range(editor, at)\n const [start, end] = Range.edges(range)\n const first = reverse ? end : start\n let isNewBlock = false\n let blockText = ''\n let distance = 0 // Distance for leafText to catch up to blockText.\n let leafTextRemaining = 0\n let leafTextOffset = 0\n\n // Iterate through all nodes in range, grabbing entire textual content\n // of block nodes in blockText, and text nodes in leafText.\n // Exploits the fact that nodes are sequenced in such a way that we first\n // encounter the block node, then all of its text nodes, so when iterating\n // through the blockText and leafText we just need to remember a window of\n // one block node and leaf node, respectively.\n for (const [node, path] of Editor.nodes(editor, { at, reverse, voids })) {\n /*\n * ELEMENT NODE - Yield position(s) for voids, collect blockText for blocks\n */\n if (Element.isElement(node)) {\n // Void nodes are a special case, so by default we will always\n // yield their first point. If the `voids` option is set to true,\n // then we will iterate over their content.\n if (!voids && editor.isVoid(node)) {\n yield Editor.start(editor, path)\n continue\n }\n\n // Inline element nodes are ignored as they don't themselves\n // contribute to `blockText` or `leafText` - their parent and\n // children do.\n if (editor.isInline(node)) continue\n\n // Block element node - set `blockText` to its text content.\n if (Editor.hasInlines(editor, node)) {\n // We always exhaust block nodes before encountering a new one:\n // console.assert(blockText === '',\n // `blockText='${blockText}' - `+\n // `not exhausted before new block node`, path)\n\n // Ensure range considered is capped to `range`, in the\n // start/end edge cases where block extends beyond range.\n // Equivalent to this, but presumably more performant:\n // blockRange = Editor.range(editor, ...Editor.edges(editor, path))\n // blockRange = Range.intersection(range, blockRange) // intersect\n // blockText = Editor.string(editor, blockRange, { voids })\n const e = Path.isAncestor(path, end.path)\n ? end\n : Editor.end(editor, path)\n const s = Path.isAncestor(path, start.path)\n ? start\n : Editor.start(editor, path)\n\n blockText = Editor.string(editor, { anchor: s, focus: e }, { voids })\n isNewBlock = true\n }\n }\n\n /*\n * TEXT LEAF NODE - Iterate through text content, yielding\n * positions every `distance` offset according to `unit`.\n */\n if (Text.isText(node)) {\n const isFirst = Path.equals(path, first.path)\n\n // Proof that we always exhaust text nodes before encountering a new one:\n // console.assert(leafTextRemaining <= 0,\n // `leafTextRemaining=${leafTextRemaining} - `+\n // `not exhausted before new leaf text node`, path)\n\n // Reset `leafText` counters for new text node.\n if (isFirst) {\n leafTextRemaining = reverse\n ? first.offset\n : node.text.length - first.offset\n leafTextOffset = first.offset // Works for reverse too.\n } else {\n leafTextRemaining = node.text.length\n leafTextOffset = reverse ? leafTextRemaining : 0\n }\n\n // Yield position at the start of node (potentially).\n if (isFirst || isNewBlock || unit === 'offset') {\n yield { path, offset: leafTextOffset }\n isNewBlock = false\n }\n\n // Yield positions every (dynamically calculated) `distance` offset.\n while (true) {\n // If `leafText` has caught up with `blockText` (distance=0),\n // and if blockText is exhausted, break to get another block node,\n // otherwise advance blockText forward by the new `distance`.\n if (distance === 0) {\n if (blockText === '') break\n distance = calcDistance(blockText, unit, reverse)\n // Split the string at the previously found distance and use the\n // remaining string for the next iteration.\n blockText = splitByCharacterDistance(\n blockText,\n distance,\n reverse\n )[1]\n }\n\n // Advance `leafText` by the current `distance`.\n leafTextOffset = reverse\n ? leafTextOffset - distance\n : leafTextOffset + distance\n leafTextRemaining = leafTextRemaining - distance\n\n // If `leafText` is exhausted, break to get a new leaf node\n // and set distance to the overflow amount, so we'll (maybe)\n // catch up to blockText in the next leaf text node.\n if (leafTextRemaining < 0) {\n distance = -leafTextRemaining\n break\n }\n\n // Successfully walked `distance` offsets through `leafText`\n // to catch up with `blockText`, so we can reset `distance`\n // and yield this position in this node.\n distance = 0\n yield { path, offset: leafTextOffset }\n }\n }\n }\n // Proof that upon completion, we've exahusted both leaf and block text:\n // console.assert(leafTextRemaining <= 0, \"leafText wasn't exhausted\")\n // console.assert(blockText === '', \"blockText wasn't exhausted\")\n\n // Helper:\n // Return the distance in offsets for a step of size `unit` on given string.\n function calcDistance(text: string, unit: string, reverse?: boolean) {\n if (unit === 'character') {\n return getCharacterDistance(text, reverse)\n } else if (unit === 'word') {\n return getWordDistance(text, reverse)\n } else if (unit === 'line' || unit === 'block') {\n return text.length\n }\n return 1\n }\n },\n\n /**\n * Get the matching node in the branch of the document before a location.\n */\n\n previous(\n editor: Editor,\n options: EditorPreviousOptions = {}\n ): NodeEntry | undefined {\n const { mode = 'lowest', voids = false } = options\n let { match, at = editor.selection } = options\n\n if (!at) {\n return\n }\n\n const pointBeforeLocation = Editor.before(editor, at, { voids })\n\n if (!pointBeforeLocation) {\n return\n }\n\n const [, to] = Editor.first(editor, [])\n\n // The search location is from the start of the document to the path of\n // the point before the location passed in\n const span: Span = [pointBeforeLocation.path, to]\n\n if (Path.isPath(at) && at.length === 0) {\n throw new Error(`Cannot get the previous node from the root node!`)\n }\n\n if (match == null) {\n if (Path.isPath(at)) {\n const [parent] = Editor.parent(editor, at)\n match = n => parent.children.includes(n)\n } else {\n match = () => true\n }\n }\n\n const [previous] = Editor.nodes(editor, {\n reverse: true,\n at: span,\n match,\n mode,\n voids,\n })\n\n return previous\n },\n\n /**\n * Get a range of a location.\n */\n\n range(editor: Editor, at: Location, to?: Location): Range {\n if (Range.isRange(at) && !to) {\n return at\n }\n\n const start = Editor.start(editor, at)\n const end = Editor.end(editor, to || at)\n return { anchor: start, focus: end }\n },\n\n /**\n * Create a mutable ref for a `Range` object, which will stay in sync as new\n * operations are applied to the editor.\n */\n\n rangeRef(\n editor: Editor,\n range: Range,\n options: EditorRangeRefOptions = {}\n ): RangeRef {\n const { affinity = 'forward' } = options\n const ref: RangeRef = {\n current: range,\n affinity,\n unref() {\n const { current } = ref\n const rangeRefs = Editor.rangeRefs(editor)\n rangeRefs.delete(ref)\n ref.current = null\n return current\n },\n }\n\n const refs = Editor.rangeRefs(editor)\n refs.add(ref)\n return ref\n },\n\n /**\n * Get the set of currently tracked range refs of the editor.\n */\n\n rangeRefs(editor: Editor): Set {\n let refs = RANGE_REFS.get(editor)\n\n if (!refs) {\n refs = new Set()\n RANGE_REFS.set(editor, refs)\n }\n\n return refs\n },\n\n /**\n * Remove a custom property from all of the leaf text nodes in the current\n * selection.\n *\n * If the selection is currently collapsed, the removal will be stored on\n * `editor.marks` and applied to the text inserted next.\n */\n\n removeMark(editor: Editor, key: string): void {\n editor.removeMark(key)\n },\n\n /**\n * Manually set if the editor should currently be normalizing.\n *\n * Note: Using this incorrectly can leave the editor in an invalid state.\n *\n */\n setNormalizing(editor: Editor, isNormalizing: boolean): void {\n NORMALIZING.set(editor, isNormalizing)\n },\n\n /**\n * Get the start point of a location.\n */\n\n start(editor: Editor, at: Location): Point {\n return Editor.point(editor, at, { edge: 'start' })\n },\n\n /**\n * Get the text string content of a location.\n *\n * Note: by default the text of void nodes is considered to be an empty\n * string, regardless of content, unless you pass in true for the voids option\n */\n\n string(\n editor: Editor,\n at: Location,\n options: EditorStringOptions = {}\n ): string {\n const { voids = false } = options\n const range = Editor.range(editor, at)\n const [start, end] = Range.edges(range)\n let text = ''\n\n for (const [node, path] of Editor.nodes(editor, {\n at: range,\n match: Text.isText,\n voids,\n })) {\n let t = node.text\n\n if (Path.equals(path, end.path)) {\n t = t.slice(0, end.offset)\n }\n\n if (Path.equals(path, start.path)) {\n t = t.slice(start.offset)\n }\n\n text += t\n }\n\n return text\n },\n\n /**\n * Convert a range into a non-hanging one.\n */\n\n unhangRange(\n editor: Editor,\n range: Range,\n options: EditorUnhangRangeOptions = {}\n ): Range {\n const { voids = false } = options\n let [start, end] = Range.edges(range)\n\n // PERF: exit early if we can guarantee that the range isn't hanging.\n if (start.offset !== 0 || end.offset !== 0 || Range.isCollapsed(range)) {\n return range\n }\n\n const endBlock = Editor.above(editor, {\n at: end,\n match: n => Editor.isBlock(editor, n),\n })\n const blockPath = endBlock ? endBlock[1] : []\n const first = Editor.start(editor, start)\n const before = { anchor: first, focus: end }\n let skip = true\n\n for (const [node, path] of Editor.nodes(editor, {\n at: before,\n match: Text.isText,\n reverse: true,\n voids,\n })) {\n if (skip) {\n skip = false\n continue\n }\n\n if (node.text !== '' || Path.isBefore(path, blockPath)) {\n end = { path, offset: node.text.length }\n break\n }\n }\n\n return { anchor: start, focus: end }\n },\n\n /**\n * Match a void node in the current branch of the editor.\n */\n\n void(\n editor: Editor,\n options: EditorVoidOptions = {}\n ): NodeEntry | undefined {\n return Editor.above(editor, {\n ...options,\n match: n => Editor.isVoid(editor, n),\n })\n },\n\n /**\n * Call a function, deferring normalization until after it completes.\n */\n\n withoutNormalizing(editor: Editor, fn: () => void): void {\n const value = Editor.isNormalizing(editor)\n Editor.setNormalizing(editor, false)\n try {\n fn()\n } finally {\n Editor.setNormalizing(editor, value)\n }\n Editor.normalize(editor)\n },\n}\n\n/**\n * A helper type for narrowing matched nodes with a predicate.\n */\n\nexport type NodeMatch =\n | ((node: Node, path: Path) => node is T)\n | ((node: Node, path: Path) => boolean)\n\nexport type PropsCompare = (prop: Partial, node: Partial) => boolean\nexport type PropsMerge = (prop: Partial, node: Partial) => object\n","import { Path, Point, Range } from '..'\n\n/**\n * The `Location` interface is a union of the ways to refer to a specific\n * location in a Slate document: paths, points or ranges.\n *\n * Methods will often accept a `Location` instead of requiring only a `Path`,\n * `Point` or `Range`. This eliminates the need for developers to manage\n * converting between the different interfaces in their own code base.\n */\n\nexport type Location = Path | Point | Range\n\nexport interface LocationInterface {\n isLocation: (value: any) => value is Location\n}\n\n// eslint-disable-next-line no-redeclare\nexport const Location: LocationInterface = {\n /**\n * Check if a value implements the `Location` interface.\n */\n\n isLocation(value: any): value is Location {\n return Path.isPath(value) || Point.isPoint(value) || Range.isRange(value)\n },\n}\n\n/**\n * The `Span` interface is a low-level way to refer to locations in nodes\n * without using `Point` which requires leaf text nodes to be present.\n */\n\nexport type Span = [Path, Path]\n\nexport interface SpanInterface {\n isSpan: (value: any) => value is Span\n}\n\n// eslint-disable-next-line no-redeclare\nexport const Span: SpanInterface = {\n /**\n * Check if a value implements the `Span` interface.\n */\n\n isSpan(value: any): value is Span {\n return (\n Array.isArray(value) && value.length === 2 && value.every(Path.isPath)\n )\n },\n}\n","import { produce } from 'immer'\nimport { Editor, Path, Range, Text, Scrubber } from '..'\nimport { Element, ElementEntry } from './element'\n\n/**\n * The `Node` union type represents all of the different types of nodes that\n * occur in a Slate document tree.\n */\n\nexport type BaseNode = Editor | Element | Text\nexport type Node = Editor | Element | Text\n\nexport interface NodeAncestorsOptions {\n reverse?: boolean\n}\n\nexport interface NodeChildrenOptions {\n reverse?: boolean\n}\n\nexport interface NodeDescendantsOptions {\n from?: Path\n to?: Path\n reverse?: boolean\n pass?: (node: NodeEntry) => boolean\n}\n\nexport interface NodeElementsOptions {\n from?: Path\n to?: Path\n reverse?: boolean\n pass?: (node: NodeEntry) => boolean\n}\n\nexport interface NodeLevelsOptions {\n reverse?: boolean\n}\n\nexport interface NodeNodesOptions {\n from?: Path\n to?: Path\n reverse?: boolean\n pass?: (entry: NodeEntry) => boolean\n}\n\nexport interface NodeTextsOptions {\n from?: Path\n to?: Path\n reverse?: boolean\n pass?: (node: NodeEntry) => boolean\n}\n\nexport interface NodeInterface {\n ancestor: (root: Node, path: Path) => Ancestor\n ancestors: (\n root: Node,\n path: Path,\n options?: NodeAncestorsOptions\n ) => Generator, void, undefined>\n child: (root: Node, index: number) => Descendant\n children: (\n root: Node,\n path: Path,\n options?: NodeChildrenOptions\n ) => Generator, void, undefined>\n common: (root: Node, path: Path, another: Path) => NodeEntry\n descendant: (root: Node, path: Path) => Descendant\n descendants: (\n root: Node,\n options?: NodeDescendantsOptions\n ) => Generator, void, undefined>\n elements: (\n root: Node,\n options?: NodeElementsOptions\n ) => Generator\n extractProps: (node: Node) => NodeProps\n first: (root: Node, path: Path) => NodeEntry\n fragment: (root: Node, range: Range) => Descendant[]\n get: (root: Node, path: Path) => Node\n has: (root: Node, path: Path) => boolean\n isNode: (value: any) => value is Node\n isNodeList: (value: any) => value is Node[]\n last: (root: Node, path: Path) => NodeEntry\n leaf: (root: Node, path: Path) => Text\n levels: (\n root: Node,\n path: Path,\n options?: NodeLevelsOptions\n ) => Generator\n matches: (node: Node, props: Partial) => boolean\n nodes: (\n root: Node,\n options?: NodeNodesOptions\n ) => Generator\n parent: (root: Node, path: Path) => Ancestor\n string: (node: Node) => string\n texts: (\n root: Node,\n options?: NodeTextsOptions\n ) => Generator, void, undefined>\n}\n\nconst IS_NODE_LIST_CACHE = new WeakMap()\n\n// eslint-disable-next-line no-redeclare\nexport const Node: NodeInterface = {\n /**\n * Get the node at a specific path, asserting that it's an ancestor node.\n */\n\n ancestor(root: Node, path: Path): Ancestor {\n const node = Node.get(root, path)\n\n if (Text.isText(node)) {\n throw new Error(\n `Cannot get the ancestor node at path [${path}] because it refers to a text node instead: ${Scrubber.stringify(\n node\n )}`\n )\n }\n\n return node\n },\n\n /**\n * Return a generator of all the ancestor nodes above a specific path.\n *\n * By default the order is top-down, from highest to lowest ancestor in\n * the tree, but you can pass the `reverse: true` option to go bottom-up.\n */\n\n *ancestors(\n root: Node,\n path: Path,\n options: NodeAncestorsOptions = {}\n ): Generator, void, undefined> {\n for (const p of Path.ancestors(path, options)) {\n const n = Node.ancestor(root, p)\n const entry: NodeEntry = [n, p]\n yield entry\n }\n },\n\n /**\n * Get the child of a node at a specific index.\n */\n\n child(root: Node, index: number): Descendant {\n if (Text.isText(root)) {\n throw new Error(\n `Cannot get the child of a text node: ${Scrubber.stringify(root)}`\n )\n }\n\n const c = root.children[index] as Descendant\n\n if (c == null) {\n throw new Error(\n `Cannot get child at index \\`${index}\\` in node: ${Scrubber.stringify(\n root\n )}`\n )\n }\n\n return c\n },\n\n /**\n * Iterate over the children of a node at a specific path.\n */\n\n *children(\n root: Node,\n path: Path,\n options: NodeChildrenOptions = {}\n ): Generator, void, undefined> {\n const { reverse = false } = options\n const ancestor = Node.ancestor(root, path)\n const { children } = ancestor\n let index = reverse ? children.length - 1 : 0\n\n while (reverse ? index >= 0 : index < children.length) {\n const child = Node.child(ancestor, index)\n const childPath = path.concat(index)\n yield [child, childPath]\n index = reverse ? index - 1 : index + 1\n }\n },\n\n /**\n * Get an entry for the common ancesetor node of two paths.\n */\n\n common(root: Node, path: Path, another: Path): NodeEntry {\n const p = Path.common(path, another)\n const n = Node.get(root, p)\n return [n, p]\n },\n\n /**\n * Get the node at a specific path, asserting that it's a descendant node.\n */\n\n descendant(root: Node, path: Path): Descendant {\n const node = Node.get(root, path)\n\n if (Editor.isEditor(node)) {\n throw new Error(\n `Cannot get the descendant node at path [${path}] because it refers to the root editor node instead: ${Scrubber.stringify(\n node\n )}`\n )\n }\n\n return node\n },\n\n /**\n * Return a generator of all the descendant node entries inside a root node.\n */\n\n *descendants(\n root: Node,\n options: NodeDescendantsOptions = {}\n ): Generator, void, undefined> {\n for (const [node, path] of Node.nodes(root, options)) {\n if (path.length !== 0) {\n // NOTE: we have to coerce here because checking the path's length does\n // guarantee that `node` is not a `Editor`, but TypeScript doesn't know.\n yield [node, path] as NodeEntry\n }\n }\n },\n\n /**\n * Return a generator of all the element nodes inside a root node. Each iteration\n * will return an `ElementEntry` tuple consisting of `[Element, Path]`. If the\n * root node is an element it will be included in the iteration as well.\n */\n\n *elements(\n root: Node,\n options: NodeElementsOptions = {}\n ): Generator {\n for (const [node, path] of Node.nodes(root, options)) {\n if (Element.isElement(node)) {\n yield [node, path]\n }\n }\n },\n\n /**\n * Extract props from a Node.\n */\n\n extractProps(node: Node): NodeProps {\n if (Element.isAncestor(node)) {\n const { children, ...properties } = node\n\n return properties\n } else {\n const { text, ...properties } = node\n\n return properties\n }\n },\n\n /**\n * Get the first node entry in a root node from a path.\n */\n\n first(root: Node, path: Path): NodeEntry {\n const p = path.slice()\n let n = Node.get(root, p)\n\n while (n) {\n if (Text.isText(n) || n.children.length === 0) {\n break\n } else {\n n = n.children[0]\n p.push(0)\n }\n }\n\n return [n, p]\n },\n\n /**\n * Get the sliced fragment represented by a range inside a root node.\n */\n\n fragment(root: Node, range: Range): Descendant[] {\n if (Text.isText(root)) {\n throw new Error(\n `Cannot get a fragment starting from a root text node: ${Scrubber.stringify(\n root\n )}`\n )\n }\n\n const newRoot = produce({ children: root.children }, r => {\n const [start, end] = Range.edges(range)\n const nodeEntries = Node.nodes(r, {\n reverse: true,\n pass: ([, path]) => !Range.includes(range, path),\n })\n\n for (const [, path] of nodeEntries) {\n if (!Range.includes(range, path)) {\n const parent = Node.parent(r, path)\n const index = path[path.length - 1]\n parent.children.splice(index, 1)\n }\n\n if (Path.equals(path, end.path)) {\n const leaf = Node.leaf(r, path)\n leaf.text = leaf.text.slice(0, end.offset)\n }\n\n if (Path.equals(path, start.path)) {\n const leaf = Node.leaf(r, path)\n leaf.text = leaf.text.slice(start.offset)\n }\n }\n\n if (Editor.isEditor(r)) {\n r.selection = null\n }\n })\n\n return newRoot.children\n },\n\n /**\n * Get the descendant node referred to by a specific path. If the path is an\n * empty array, it refers to the root node itself.\n */\n\n get(root: Node, path: Path): Node {\n let node = root\n\n for (let i = 0; i < path.length; i++) {\n const p = path[i]\n\n if (Text.isText(node) || !node.children[p]) {\n throw new Error(\n `Cannot find a descendant at path [${path}] in node: ${Scrubber.stringify(\n root\n )}`\n )\n }\n\n node = node.children[p]\n }\n\n return node\n },\n\n /**\n * Check if a descendant node exists at a specific path.\n */\n\n has(root: Node, path: Path): boolean {\n let node = root\n\n for (let i = 0; i < path.length; i++) {\n const p = path[i]\n\n if (Text.isText(node) || !node.children[p]) {\n return false\n }\n\n node = node.children[p]\n }\n\n return true\n },\n\n /**\n * Check if a value implements the `Node` interface.\n */\n\n isNode(value: any): value is Node {\n return (\n Text.isText(value) || Element.isElement(value) || Editor.isEditor(value)\n )\n },\n\n /**\n * Check if a value is a list of `Node` objects.\n */\n\n isNodeList(value: any): value is Node[] {\n if (!Array.isArray(value)) {\n return false\n }\n const cachedResult = IS_NODE_LIST_CACHE.get(value)\n if (cachedResult !== undefined) {\n return cachedResult\n }\n const isNodeList = value.every(val => Node.isNode(val))\n IS_NODE_LIST_CACHE.set(value, isNodeList)\n return isNodeList\n },\n\n /**\n * Get the last node entry in a root node from a path.\n */\n\n last(root: Node, path: Path): NodeEntry {\n const p = path.slice()\n let n = Node.get(root, p)\n\n while (n) {\n if (Text.isText(n) || n.children.length === 0) {\n break\n } else {\n const i = n.children.length - 1\n n = n.children[i]\n p.push(i)\n }\n }\n\n return [n, p]\n },\n\n /**\n * Get the node at a specific path, ensuring it's a leaf text node.\n */\n\n leaf(root: Node, path: Path): Text {\n const node = Node.get(root, path)\n\n if (!Text.isText(node)) {\n throw new Error(\n `Cannot get the leaf node at path [${path}] because it refers to a non-leaf node: ${Scrubber.stringify(\n node\n )}`\n )\n }\n\n return node\n },\n\n /**\n * Return a generator of the in a branch of the tree, from a specific path.\n *\n * By default the order is top-down, from highest to lowest node in the tree,\n * but you can pass the `reverse: true` option to go bottom-up.\n */\n\n *levels(\n root: Node,\n path: Path,\n options: NodeLevelsOptions = {}\n ): Generator {\n for (const p of Path.levels(path, options)) {\n const n = Node.get(root, p)\n yield [n, p]\n }\n },\n\n /**\n * Check if a node matches a set of props.\n */\n\n matches(node: Node, props: Partial): boolean {\n return (\n (Element.isElement(node) &&\n Element.isElementProps(props) &&\n Element.matches(node, props)) ||\n (Text.isText(node) &&\n Text.isTextProps(props) &&\n Text.matches(node, props))\n )\n },\n\n /**\n * Return a generator of all the node entries of a root node. Each entry is\n * returned as a `[Node, Path]` tuple, with the path referring to the node's\n * position inside the root node.\n */\n\n *nodes(\n root: Node,\n options: NodeNodesOptions = {}\n ): Generator {\n const { pass, reverse = false } = options\n const { from = [], to } = options\n const visited = new Set()\n let p: Path = []\n let n = root\n\n while (true) {\n if (to && (reverse ? Path.isBefore(p, to) : Path.isAfter(p, to))) {\n break\n }\n\n if (!visited.has(n)) {\n yield [n, p]\n }\n\n // If we're allowed to go downward and we haven't descended yet, do.\n if (\n !visited.has(n) &&\n !Text.isText(n) &&\n n.children.length !== 0 &&\n (pass == null || pass([n, p]) === false)\n ) {\n visited.add(n)\n let nextIndex = reverse ? n.children.length - 1 : 0\n\n if (Path.isAncestor(p, from)) {\n nextIndex = from[p.length]\n }\n\n p = p.concat(nextIndex)\n n = Node.get(root, p)\n continue\n }\n\n // If we're at the root and we can't go down, we're done.\n if (p.length === 0) {\n break\n }\n\n // If we're going forward...\n if (!reverse) {\n const newPath = Path.next(p)\n\n if (Node.has(root, newPath)) {\n p = newPath\n n = Node.get(root, p)\n continue\n }\n }\n\n // If we're going backward...\n if (reverse && p[p.length - 1] !== 0) {\n const newPath = Path.previous(p)\n p = newPath\n n = Node.get(root, p)\n continue\n }\n\n // Otherwise we're going upward...\n p = Path.parent(p)\n n = Node.get(root, p)\n visited.add(n)\n }\n },\n\n /**\n * Get the parent of a node at a specific path.\n */\n\n parent(root: Node, path: Path): Ancestor {\n const parentPath = Path.parent(path)\n const p = Node.get(root, parentPath)\n\n if (Text.isText(p)) {\n throw new Error(\n `Cannot get the parent of path [${path}] because it does not exist in the root.`\n )\n }\n\n return p\n },\n\n /**\n * Get the concatenated text string of a node's content.\n *\n * Note that this will not include spaces or line breaks between block nodes.\n * It is not a user-facing string, but a string for performing offset-related\n * computations for a node.\n */\n\n string(node: Node): string {\n if (Text.isText(node)) {\n return node.text\n } else {\n return node.children.map(Node.string).join('')\n }\n },\n\n /**\n * Return a generator of all leaf text nodes in a root node.\n */\n\n *texts(\n root: Node,\n options: NodeTextsOptions = {}\n ): Generator, void, undefined> {\n for (const [node, path] of Node.nodes(root, options)) {\n if (Text.isText(node)) {\n yield [node, path]\n }\n }\n },\n}\n\n/**\n * The `Descendant` union type represents nodes that are descendants in the\n * tree. It is returned as a convenience in certain cases to narrow a value\n * further than the more generic `Node` union.\n */\n\nexport type Descendant = Element | Text\n\n/**\n * The `Ancestor` union type represents nodes that are ancestors in the tree.\n * It is returned as a convenience in certain cases to narrow a value further\n * than the more generic `Node` union.\n */\n\nexport type Ancestor = Editor | Element\n\n/**\n * `NodeEntry` objects are returned when iterating over the nodes in a Slate\n * document tree. They consist of the node and its `Path` relative to the root\n * node in the document.\n */\n\nexport type NodeEntry = [T, Path]\n\n/**\n * Convenience type for returning the props of a node.\n */\nexport type NodeProps =\n | Omit\n | Omit\n | Omit\n","import { ExtendedType, Node, Path, Range } from '..'\nimport { isPlainObject } from 'is-plain-object'\n\nexport type BaseInsertNodeOperation = {\n type: 'insert_node'\n path: Path\n node: Node\n}\n\nexport type InsertNodeOperation = ExtendedType<\n 'InsertNodeOperation',\n BaseInsertNodeOperation\n>\n\nexport type BaseInsertTextOperation = {\n type: 'insert_text'\n path: Path\n offset: number\n text: string\n}\n\nexport type InsertTextOperation = ExtendedType<\n 'InsertTextOperation',\n BaseInsertTextOperation\n>\n\nexport type BaseMergeNodeOperation = {\n type: 'merge_node'\n path: Path\n position: number\n properties: Partial\n}\n\nexport type MergeNodeOperation = ExtendedType<\n 'MergeNodeOperation',\n BaseMergeNodeOperation\n>\n\nexport type BaseMoveNodeOperation = {\n type: 'move_node'\n path: Path\n newPath: Path\n}\n\nexport type MoveNodeOperation = ExtendedType<\n 'MoveNodeOperation',\n BaseMoveNodeOperation\n>\n\nexport type BaseRemoveNodeOperation = {\n type: 'remove_node'\n path: Path\n node: Node\n}\n\nexport type RemoveNodeOperation = ExtendedType<\n 'RemoveNodeOperation',\n BaseRemoveNodeOperation\n>\n\nexport type BaseRemoveTextOperation = {\n type: 'remove_text'\n path: Path\n offset: number\n text: string\n}\n\nexport type RemoveTextOperation = ExtendedType<\n 'RemoveTextOperation',\n BaseRemoveTextOperation\n>\n\nexport type BaseSetNodeOperation = {\n type: 'set_node'\n path: Path\n properties: Partial\n newProperties: Partial\n}\n\nexport type SetNodeOperation = ExtendedType<\n 'SetNodeOperation',\n BaseSetNodeOperation\n>\n\nexport type BaseSetSelectionOperation =\n | {\n type: 'set_selection'\n properties: null\n newProperties: Range\n }\n | {\n type: 'set_selection'\n properties: Partial\n newProperties: Partial\n }\n | {\n type: 'set_selection'\n properties: Range\n newProperties: null\n }\n\nexport type SetSelectionOperation = ExtendedType<\n 'SetSelectionOperation',\n BaseSetSelectionOperation\n>\n\nexport type BaseSplitNodeOperation = {\n type: 'split_node'\n path: Path\n position: number\n properties: Partial\n}\n\nexport type SplitNodeOperation = ExtendedType<\n 'SplitNodeOperation',\n BaseSplitNodeOperation\n>\n\nexport type NodeOperation =\n | InsertNodeOperation\n | MergeNodeOperation\n | MoveNodeOperation\n | RemoveNodeOperation\n | SetNodeOperation\n | SplitNodeOperation\n\nexport type SelectionOperation = SetSelectionOperation\n\nexport type TextOperation = InsertTextOperation | RemoveTextOperation\n\n/**\n * `Operation` objects define the low-level instructions that Slate editors use\n * to apply changes to their internal state. Representing all changes as\n * operations is what allows Slate editors to easily implement history,\n * collaboration, and other features.\n */\n\nexport type BaseOperation = NodeOperation | SelectionOperation | TextOperation\nexport type Operation = ExtendedType<'Operation', BaseOperation>\n\nexport interface OperationInterface {\n isNodeOperation: (value: any) => value is NodeOperation\n isOperation: (value: any) => value is Operation\n isOperationList: (value: any) => value is Operation[]\n isSelectionOperation: (value: any) => value is SelectionOperation\n isTextOperation: (value: any) => value is TextOperation\n inverse: (op: Operation) => Operation\n}\n\n// eslint-disable-next-line no-redeclare\nexport const Operation: OperationInterface = {\n /**\n * Check of a value is a `NodeOperation` object.\n */\n\n isNodeOperation(value: any): value is NodeOperation {\n return Operation.isOperation(value) && value.type.endsWith('_node')\n },\n\n /**\n * Check of a value is an `Operation` object.\n */\n\n isOperation(value: any): value is Operation {\n if (!isPlainObject(value)) {\n return false\n }\n\n switch (value.type) {\n case 'insert_node':\n return Path.isPath(value.path) && Node.isNode(value.node)\n case 'insert_text':\n return (\n typeof value.offset === 'number' &&\n typeof value.text === 'string' &&\n Path.isPath(value.path)\n )\n case 'merge_node':\n return (\n typeof value.position === 'number' &&\n Path.isPath(value.path) &&\n isPlainObject(value.properties)\n )\n case 'move_node':\n return Path.isPath(value.path) && Path.isPath(value.newPath)\n case 'remove_node':\n return Path.isPath(value.path) && Node.isNode(value.node)\n case 'remove_text':\n return (\n typeof value.offset === 'number' &&\n typeof value.text === 'string' &&\n Path.isPath(value.path)\n )\n case 'set_node':\n return (\n Path.isPath(value.path) &&\n isPlainObject(value.properties) &&\n isPlainObject(value.newProperties)\n )\n case 'set_selection':\n return (\n (value.properties === null && Range.isRange(value.newProperties)) ||\n (value.newProperties === null && Range.isRange(value.properties)) ||\n (isPlainObject(value.properties) &&\n isPlainObject(value.newProperties))\n )\n case 'split_node':\n return (\n Path.isPath(value.path) &&\n typeof value.position === 'number' &&\n isPlainObject(value.properties)\n )\n default:\n return false\n }\n },\n\n /**\n * Check if a value is a list of `Operation` objects.\n */\n\n isOperationList(value: any): value is Operation[] {\n return (\n Array.isArray(value) && value.every(val => Operation.isOperation(val))\n )\n },\n\n /**\n * Check of a value is a `SelectionOperation` object.\n */\n\n isSelectionOperation(value: any): value is SelectionOperation {\n return Operation.isOperation(value) && value.type.endsWith('_selection')\n },\n\n /**\n * Check of a value is a `TextOperation` object.\n */\n\n isTextOperation(value: any): value is TextOperation {\n return Operation.isOperation(value) && value.type.endsWith('_text')\n },\n\n /**\n * Invert an operation, returning a new operation that will exactly undo the\n * original when applied.\n */\n\n inverse(op: Operation): Operation {\n switch (op.type) {\n case 'insert_node': {\n return { ...op, type: 'remove_node' }\n }\n\n case 'insert_text': {\n return { ...op, type: 'remove_text' }\n }\n\n case 'merge_node': {\n return { ...op, type: 'split_node', path: Path.previous(op.path) }\n }\n\n case 'move_node': {\n const { newPath, path } = op\n\n // PERF: in this case the move operation is a no-op anyways.\n if (Path.equals(newPath, path)) {\n return op\n }\n\n // If the move happens completely within a single parent the path and\n // newPath are stable with respect to each other.\n if (Path.isSibling(path, newPath)) {\n return { ...op, path: newPath, newPath: path }\n }\n\n // If the move does not happen within a single parent it is possible\n // for the move to impact the true path to the location where the node\n // was removed from and where it was inserted. We have to adjust for this\n // and find the original path. We can accomplish this (only in non-sibling)\n // moves by looking at the impact of the move operation on the node\n // after the original move path.\n const inversePath = Path.transform(path, op)!\n const inverseNewPath = Path.transform(Path.next(path), op)!\n return { ...op, path: inversePath, newPath: inverseNewPath }\n }\n\n case 'remove_node': {\n return { ...op, type: 'insert_node' }\n }\n\n case 'remove_text': {\n return { ...op, type: 'insert_text' }\n }\n\n case 'set_node': {\n const { properties, newProperties } = op\n return { ...op, properties: newProperties, newProperties: properties }\n }\n\n case 'set_selection': {\n const { properties, newProperties } = op\n\n if (properties == null) {\n return {\n ...op,\n properties: newProperties as Range,\n newProperties: null,\n }\n } else if (newProperties == null) {\n return {\n ...op,\n properties: null,\n newProperties: properties as Range,\n }\n } else {\n return { ...op, properties: newProperties, newProperties: properties }\n }\n }\n\n case 'split_node': {\n return { ...op, type: 'merge_node', path: Path.next(op.path) }\n }\n }\n },\n}\n","import { Operation } from '..'\nimport { TextDirection } from './types'\n\n/**\n * `Path` arrays are a list of indexes that describe a node's exact position in\n * a Slate node tree. Although they are usually relative to the root `Editor`\n * object, they can be relative to any `Node` object.\n */\n\nexport type Path = number[]\n\nexport interface PathAncestorsOptions {\n reverse?: boolean\n}\n\nexport interface PathLevelsOptions {\n reverse?: boolean\n}\n\nexport interface PathTransformOptions {\n affinity?: TextDirection | null\n}\n\nexport interface PathInterface {\n ancestors: (path: Path, options?: PathAncestorsOptions) => Path[]\n common: (path: Path, another: Path) => Path\n compare: (path: Path, another: Path) => -1 | 0 | 1\n endsAfter: (path: Path, another: Path) => boolean\n endsAt: (path: Path, another: Path) => boolean\n endsBefore: (path: Path, another: Path) => boolean\n equals: (path: Path, another: Path) => boolean\n hasPrevious: (path: Path) => boolean\n isAfter: (path: Path, another: Path) => boolean\n isAncestor: (path: Path, another: Path) => boolean\n isBefore: (path: Path, another: Path) => boolean\n isChild: (path: Path, another: Path) => boolean\n isCommon: (path: Path, another: Path) => boolean\n isDescendant: (path: Path, another: Path) => boolean\n isParent: (path: Path, another: Path) => boolean\n isPath: (value: any) => value is Path\n isSibling: (path: Path, another: Path) => boolean\n levels: (path: Path, options?: PathLevelsOptions) => Path[]\n next: (path: Path) => Path\n operationCanTransformPath: (operation: Operation) => boolean\n parent: (path: Path) => Path\n previous: (path: Path) => Path\n relative: (path: Path, ancestor: Path) => Path\n transform: (\n path: Path,\n operation: Operation,\n options?: PathTransformOptions\n ) => Path | null\n}\n\n// eslint-disable-next-line no-redeclare\nexport const Path: PathInterface = {\n /**\n * Get a list of ancestor paths for a given path.\n *\n * The paths are sorted from shallowest to deepest ancestor. However, if the\n * `reverse: true` option is passed, they are reversed.\n */\n\n ancestors(path: Path, options: PathAncestorsOptions = {}): Path[] {\n const { reverse = false } = options\n let paths = Path.levels(path, options)\n\n if (reverse) {\n paths = paths.slice(1)\n } else {\n paths = paths.slice(0, -1)\n }\n\n return paths\n },\n\n /**\n * Get the common ancestor path of two paths.\n */\n\n common(path: Path, another: Path): Path {\n const common: Path = []\n\n for (let i = 0; i < path.length && i < another.length; i++) {\n const av = path[i]\n const bv = another[i]\n\n if (av !== bv) {\n break\n }\n\n common.push(av)\n }\n\n return common\n },\n\n /**\n * Compare a path to another, returning an integer indicating whether the path\n * was before, at, or after the other.\n *\n * Note: Two paths of unequal length can still receive a `0` result if one is\n * directly above or below the other. If you want exact matching, use\n * [[Path.equals]] instead.\n */\n\n compare(path: Path, another: Path): -1 | 0 | 1 {\n const min = Math.min(path.length, another.length)\n\n for (let i = 0; i < min; i++) {\n if (path[i] < another[i]) return -1\n if (path[i] > another[i]) return 1\n }\n\n return 0\n },\n\n /**\n * Check if a path ends after one of the indexes in another.\n */\n\n endsAfter(path: Path, another: Path): boolean {\n const i = path.length - 1\n const as = path.slice(0, i)\n const bs = another.slice(0, i)\n const av = path[i]\n const bv = another[i]\n return Path.equals(as, bs) && av > bv\n },\n\n /**\n * Check if a path ends at one of the indexes in another.\n */\n\n endsAt(path: Path, another: Path): boolean {\n const i = path.length\n const as = path.slice(0, i)\n const bs = another.slice(0, i)\n return Path.equals(as, bs)\n },\n\n /**\n * Check if a path ends before one of the indexes in another.\n */\n\n endsBefore(path: Path, another: Path): boolean {\n const i = path.length - 1\n const as = path.slice(0, i)\n const bs = another.slice(0, i)\n const av = path[i]\n const bv = another[i]\n return Path.equals(as, bs) && av < bv\n },\n\n /**\n * Check if a path is exactly equal to another.\n */\n\n equals(path: Path, another: Path): boolean {\n return (\n path.length === another.length && path.every((n, i) => n === another[i])\n )\n },\n\n /**\n * Check if the path of previous sibling node exists\n */\n\n hasPrevious(path: Path): boolean {\n return path[path.length - 1] > 0\n },\n\n /**\n * Check if a path is after another.\n */\n\n isAfter(path: Path, another: Path): boolean {\n return Path.compare(path, another) === 1\n },\n\n /**\n * Check if a path is an ancestor of another.\n */\n\n isAncestor(path: Path, another: Path): boolean {\n return path.length < another.length && Path.compare(path, another) === 0\n },\n\n /**\n * Check if a path is before another.\n */\n\n isBefore(path: Path, another: Path): boolean {\n return Path.compare(path, another) === -1\n },\n\n /**\n * Check if a path is a child of another.\n */\n\n isChild(path: Path, another: Path): boolean {\n return (\n path.length === another.length + 1 && Path.compare(path, another) === 0\n )\n },\n\n /**\n * Check if a path is equal to or an ancestor of another.\n */\n\n isCommon(path: Path, another: Path): boolean {\n return path.length <= another.length && Path.compare(path, another) === 0\n },\n\n /**\n * Check if a path is a descendant of another.\n */\n\n isDescendant(path: Path, another: Path): boolean {\n return path.length > another.length && Path.compare(path, another) === 0\n },\n\n /**\n * Check if a path is the parent of another.\n */\n\n isParent(path: Path, another: Path): boolean {\n return (\n path.length + 1 === another.length && Path.compare(path, another) === 0\n )\n },\n\n /**\n * Check is a value implements the `Path` interface.\n */\n\n isPath(value: any): value is Path {\n return (\n Array.isArray(value) &&\n (value.length === 0 || typeof value[0] === 'number')\n )\n },\n\n /**\n * Check if a path is a sibling of another.\n */\n\n isSibling(path: Path, another: Path): boolean {\n if (path.length !== another.length) {\n return false\n }\n\n const as = path.slice(0, -1)\n const bs = another.slice(0, -1)\n const al = path[path.length - 1]\n const bl = another[another.length - 1]\n return al !== bl && Path.equals(as, bs)\n },\n\n /**\n * Get a list of paths at every level down to a path. Note: this is the same\n * as `Path.ancestors`, but including the path itself.\n *\n * The paths are sorted from shallowest to deepest. However, if the `reverse:\n * true` option is passed, they are reversed.\n */\n\n levels(path: Path, options: PathLevelsOptions = {}): Path[] {\n const { reverse = false } = options\n const list: Path[] = []\n\n for (let i = 0; i <= path.length; i++) {\n list.push(path.slice(0, i))\n }\n\n if (reverse) {\n list.reverse()\n }\n\n return list\n },\n\n /**\n * Given a path, get the path to the next sibling node.\n */\n\n next(path: Path): Path {\n if (path.length === 0) {\n throw new Error(\n `Cannot get the next path of a root path [${path}], because it has no next index.`\n )\n }\n\n const last = path[path.length - 1]\n return path.slice(0, -1).concat(last + 1)\n },\n\n /**\n * Returns whether this operation can affect paths or not. Used as an\n * optimization when updating dirty paths during normalization\n *\n * NOTE: This *must* be kept in sync with the implementation of 'transform'\n * below\n */\n operationCanTransformPath(operation: Operation): boolean {\n switch (operation.type) {\n case 'insert_node':\n case 'remove_node':\n case 'merge_node':\n case 'split_node':\n case 'move_node':\n return true\n default:\n return false\n }\n },\n\n /**\n * Given a path, return a new path referring to the parent node above it.\n */\n\n parent(path: Path): Path {\n if (path.length === 0) {\n throw new Error(`Cannot get the parent path of the root path [${path}].`)\n }\n\n return path.slice(0, -1)\n },\n\n /**\n * Given a path, get the path to the previous sibling node.\n */\n\n previous(path: Path): Path {\n if (path.length === 0) {\n throw new Error(\n `Cannot get the previous path of a root path [${path}], because it has no previous index.`\n )\n }\n\n const last = path[path.length - 1]\n\n if (last <= 0) {\n throw new Error(\n `Cannot get the previous path of a first child path [${path}] because it would result in a negative index.`\n )\n }\n\n return path.slice(0, -1).concat(last - 1)\n },\n\n /**\n * Get a path relative to an ancestor.\n */\n\n relative(path: Path, ancestor: Path): Path {\n if (!Path.isAncestor(ancestor, path) && !Path.equals(path, ancestor)) {\n throw new Error(\n `Cannot get the relative path of [${path}] inside ancestor [${ancestor}], because it is not above or equal to the path.`\n )\n }\n\n return path.slice(ancestor.length)\n },\n\n /**\n * Transform a path by an operation.\n */\n\n transform(\n path: Path | null,\n operation: Operation,\n options: PathTransformOptions = {}\n ): Path | null {\n if (!path) return null\n\n // PERF: use destructing instead of immer\n const p = [...path]\n const { affinity = 'forward' } = options\n\n // PERF: Exit early if the operation is guaranteed not to have an effect.\n if (path.length === 0) {\n return p\n }\n\n switch (operation.type) {\n case 'insert_node': {\n const { path: op } = operation\n\n if (\n Path.equals(op, p) ||\n Path.endsBefore(op, p) ||\n Path.isAncestor(op, p)\n ) {\n p[op.length - 1] += 1\n }\n\n break\n }\n\n case 'remove_node': {\n const { path: op } = operation\n\n if (Path.equals(op, p) || Path.isAncestor(op, p)) {\n return null\n } else if (Path.endsBefore(op, p)) {\n p[op.length - 1] -= 1\n }\n\n break\n }\n\n case 'merge_node': {\n const { path: op, position } = operation\n\n if (Path.equals(op, p) || Path.endsBefore(op, p)) {\n p[op.length - 1] -= 1\n } else if (Path.isAncestor(op, p)) {\n p[op.length - 1] -= 1\n p[op.length] += position\n }\n\n break\n }\n\n case 'split_node': {\n const { path: op, position } = operation\n\n if (Path.equals(op, p)) {\n if (affinity === 'forward') {\n p[p.length - 1] += 1\n } else if (affinity === 'backward') {\n // Nothing, because it still refers to the right path.\n } else {\n return null\n }\n } else if (Path.endsBefore(op, p)) {\n p[op.length - 1] += 1\n } else if (Path.isAncestor(op, p) && path[op.length] >= position) {\n p[op.length - 1] += 1\n p[op.length] -= position\n }\n\n break\n }\n\n case 'move_node': {\n const { path: op, newPath: onp } = operation\n\n // If the old and new path are the same, it's a no-op.\n if (Path.equals(op, onp)) {\n return p\n }\n\n if (Path.isAncestor(op, p) || Path.equals(op, p)) {\n const copy = onp.slice()\n\n if (Path.endsBefore(op, onp) && op.length < onp.length) {\n copy[op.length - 1] -= 1\n }\n\n return copy.concat(p.slice(op.length))\n } else if (\n Path.isSibling(op, onp) &&\n (Path.isAncestor(onp, p) || Path.equals(onp, p))\n ) {\n if (Path.endsBefore(op, p)) {\n p[op.length - 1] -= 1\n } else {\n p[op.length - 1] += 1\n }\n } else if (\n Path.endsBefore(onp, p) ||\n Path.equals(onp, p) ||\n Path.isAncestor(onp, p)\n ) {\n if (Path.endsBefore(op, p)) {\n p[op.length - 1] -= 1\n }\n\n p[onp.length - 1] += 1\n } else if (Path.endsBefore(op, p)) {\n if (Path.equals(onp, p)) {\n p[onp.length - 1] += 1\n }\n\n p[op.length - 1] -= 1\n }\n\n break\n }\n }\n\n return p\n },\n}\n","import { Operation, Path } from '..'\n\n/**\n * `PathRef` objects keep a specific path in a document synced over time as new\n * operations are applied to the editor. You can access their `current` property\n * at any time for the up-to-date path value.\n */\n\nexport interface PathRef {\n current: Path | null\n affinity: 'forward' | 'backward' | null\n unref(): Path | null\n}\n\nexport interface PathRefInterface {\n transform: (ref: PathRef, op: Operation) => void\n}\n\n// eslint-disable-next-line no-redeclare\nexport const PathRef: PathRefInterface = {\n /**\n * Transform the path ref's current value by an operation.\n */\n\n transform(ref: PathRef, op: Operation): void {\n const { current, affinity } = ref\n\n if (current == null) {\n return\n }\n\n const path = Path.transform(current, op, { affinity })\n ref.current = path\n\n if (path == null) {\n ref.unref()\n }\n },\n}\n","import { isPlainObject } from 'is-plain-object'\nimport { produce } from 'immer'\nimport { ExtendedType, Operation, Path } from '..'\nimport { TextDirection } from './types'\n\n/**\n * `Point` objects refer to a specific location in a text node in a Slate\n * document. Its path refers to the location of the node in the tree, and its\n * offset refers to the distance into the node's string of text. Points can\n * only refer to `Text` nodes.\n */\n\nexport interface BasePoint {\n path: Path\n offset: number\n}\n\nexport type Point = ExtendedType<'Point', BasePoint>\n\nexport interface PointTransformOptions {\n affinity?: TextDirection | null\n}\n\nexport interface PointInterface {\n compare: (point: Point, another: Point) => -1 | 0 | 1\n isAfter: (point: Point, another: Point) => boolean\n isBefore: (point: Point, another: Point) => boolean\n equals: (point: Point, another: Point) => boolean\n isPoint: (value: any) => value is Point\n transform: (\n point: Point,\n op: Operation,\n options?: PointTransformOptions\n ) => Point | null\n}\n\n// eslint-disable-next-line no-redeclare\nexport const Point: PointInterface = {\n /**\n * Compare a point to another, returning an integer indicating whether the\n * point was before, at, or after the other.\n */\n\n compare(point: Point, another: Point): -1 | 0 | 1 {\n const result = Path.compare(point.path, another.path)\n\n if (result === 0) {\n if (point.offset < another.offset) return -1\n if (point.offset > another.offset) return 1\n return 0\n }\n\n return result\n },\n\n /**\n * Check if a point is after another.\n */\n\n isAfter(point: Point, another: Point): boolean {\n return Point.compare(point, another) === 1\n },\n\n /**\n * Check if a point is before another.\n */\n\n isBefore(point: Point, another: Point): boolean {\n return Point.compare(point, another) === -1\n },\n\n /**\n * Check if a point is exactly equal to another.\n */\n\n equals(point: Point, another: Point): boolean {\n // PERF: ensure the offsets are equal first since they are cheaper to check.\n return (\n point.offset === another.offset && Path.equals(point.path, another.path)\n )\n },\n\n /**\n * Check if a value implements the `Point` interface.\n */\n\n isPoint(value: any): value is Point {\n return (\n isPlainObject(value) &&\n typeof value.offset === 'number' &&\n Path.isPath(value.path)\n )\n },\n\n /**\n * Transform a point by an operation.\n */\n\n transform(\n point: Point | null,\n op: Operation,\n options: PointTransformOptions = {}\n ): Point | null {\n return produce(point, p => {\n if (p === null) {\n return null\n }\n const { affinity = 'forward' } = options\n const { path, offset } = p\n\n switch (op.type) {\n case 'insert_node':\n case 'move_node': {\n p.path = Path.transform(path, op, options)!\n break\n }\n\n case 'insert_text': {\n if (\n Path.equals(op.path, path) &&\n (op.offset < offset ||\n (op.offset === offset && affinity === 'forward'))\n ) {\n p.offset += op.text.length\n }\n\n break\n }\n\n case 'merge_node': {\n if (Path.equals(op.path, path)) {\n p.offset += op.position\n }\n\n p.path = Path.transform(path, op, options)!\n break\n }\n\n case 'remove_text': {\n if (Path.equals(op.path, path) && op.offset <= offset) {\n p.offset -= Math.min(offset - op.offset, op.text.length)\n }\n\n break\n }\n\n case 'remove_node': {\n if (Path.equals(op.path, path) || Path.isAncestor(op.path, path)) {\n return null\n }\n\n p.path = Path.transform(path, op, options)!\n break\n }\n\n case 'split_node': {\n if (Path.equals(op.path, path)) {\n if (op.position === offset && affinity == null) {\n return null\n } else if (\n op.position < offset ||\n (op.position === offset && affinity === 'forward')\n ) {\n p.offset -= op.position\n\n p.path = Path.transform(path, op, {\n ...options,\n affinity: 'forward',\n })!\n }\n } else {\n p.path = Path.transform(path, op, options)!\n }\n\n break\n }\n }\n })\n },\n}\n\n/**\n * `PointEntry` objects are returned when iterating over `Point` objects that\n * belong to a range.\n */\n\nexport type PointEntry = [Point, 'anchor' | 'focus']\n","import { Operation, Point } from '..'\nimport { TextDirection } from './types'\n\n/**\n * `PointRef` objects keep a specific point in a document synced over time as new\n * operations are applied to the editor. You can access their `current` property\n * at any time for the up-to-date point value.\n */\n\nexport interface PointRef {\n current: Point | null\n affinity: TextDirection | null\n unref(): Point | null\n}\n\nexport interface PointRefInterface {\n transform: (ref: PointRef, op: Operation) => void\n}\n\n// eslint-disable-next-line no-redeclare\nexport const PointRef: PointRefInterface = {\n /**\n * Transform the point ref's current value by an operation.\n */\n\n transform(ref: PointRef, op: Operation): void {\n const { current, affinity } = ref\n\n if (current == null) {\n return\n }\n\n const point = Point.transform(current, op, { affinity })\n ref.current = point\n\n if (point == null) {\n ref.unref()\n }\n },\n}\n","import { produce } from 'immer'\nimport { isPlainObject } from 'is-plain-object'\nimport { ExtendedType, Operation, Path, Point, PointEntry } from '..'\nimport { RangeDirection } from './types'\n\n/**\n * `Range` objects are a set of points that refer to a specific span of a Slate\n * document. They can define a span inside a single node or a can span across\n * multiple nodes.\n */\n\nexport interface BaseRange {\n anchor: Point\n focus: Point\n}\n\nexport type Range = ExtendedType<'Range', BaseRange>\n\nexport interface RangeEdgesOptions {\n reverse?: boolean\n}\n\nexport interface RangeTransformOptions {\n affinity?: RangeDirection | null\n}\n\nexport interface RangeInterface {\n edges: (range: Range, options?: RangeEdgesOptions) => [Point, Point]\n end: (range: Range) => Point\n equals: (range: Range, another: Range) => boolean\n includes: (range: Range, target: Path | Point | Range) => boolean\n intersection: (range: Range, another: Range) => Range | null\n isBackward: (range: Range) => boolean\n isCollapsed: (range: Range) => boolean\n isExpanded: (range: Range) => boolean\n isForward: (range: Range) => boolean\n isRange: (value: any) => value is Range\n points: (range: Range) => Generator\n start: (range: Range) => Point\n transform: (\n range: Range,\n op: Operation,\n options?: RangeTransformOptions\n ) => Range | null\n}\n\n// eslint-disable-next-line no-redeclare\nexport const Range: RangeInterface = {\n /**\n * Get the start and end points of a range, in the order in which they appear\n * in the document.\n */\n\n edges(range: Range, options: RangeEdgesOptions = {}): [Point, Point] {\n const { reverse = false } = options\n const { anchor, focus } = range\n return Range.isBackward(range) === reverse\n ? [anchor, focus]\n : [focus, anchor]\n },\n\n /**\n * Get the end point of a range.\n */\n\n end(range: Range): Point {\n const [, end] = Range.edges(range)\n return end\n },\n\n /**\n * Check if a range is exactly equal to another.\n */\n\n equals(range: Range, another: Range): boolean {\n return (\n Point.equals(range.anchor, another.anchor) &&\n Point.equals(range.focus, another.focus)\n )\n },\n\n /**\n * Check if a range includes a path, a point or part of another range.\n */\n\n includes(range: Range, target: Path | Point | Range): boolean {\n if (Range.isRange(target)) {\n if (\n Range.includes(range, target.anchor) ||\n Range.includes(range, target.focus)\n ) {\n return true\n }\n\n const [rs, re] = Range.edges(range)\n const [ts, te] = Range.edges(target)\n return Point.isBefore(rs, ts) && Point.isAfter(re, te)\n }\n\n const [start, end] = Range.edges(range)\n let isAfterStart = false\n let isBeforeEnd = false\n\n if (Point.isPoint(target)) {\n isAfterStart = Point.compare(target, start) >= 0\n isBeforeEnd = Point.compare(target, end) <= 0\n } else {\n isAfterStart = Path.compare(target, start.path) >= 0\n isBeforeEnd = Path.compare(target, end.path) <= 0\n }\n\n return isAfterStart && isBeforeEnd\n },\n\n /**\n * Get the intersection of a range with another.\n */\n\n intersection(range: Range, another: Range): Range | null {\n const { anchor, focus, ...rest } = range\n const [s1, e1] = Range.edges(range)\n const [s2, e2] = Range.edges(another)\n const start = Point.isBefore(s1, s2) ? s2 : s1\n const end = Point.isBefore(e1, e2) ? e1 : e2\n\n if (Point.isBefore(end, start)) {\n return null\n } else {\n return { anchor: start, focus: end, ...rest }\n }\n },\n\n /**\n * Check if a range is backward, meaning that its anchor point appears in the\n * document _after_ its focus point.\n */\n\n isBackward(range: Range): boolean {\n const { anchor, focus } = range\n return Point.isAfter(anchor, focus)\n },\n\n /**\n * Check if a range is collapsed, meaning that both its anchor and focus\n * points refer to the exact same position in the document.\n */\n\n isCollapsed(range: Range): boolean {\n const { anchor, focus } = range\n return Point.equals(anchor, focus)\n },\n\n /**\n * Check if a range is expanded.\n *\n * This is the opposite of [[Range.isCollapsed]] and is provided for legibility.\n */\n\n isExpanded(range: Range): boolean {\n return !Range.isCollapsed(range)\n },\n\n /**\n * Check if a range is forward.\n *\n * This is the opposite of [[Range.isBackward]] and is provided for legibility.\n */\n\n isForward(range: Range): boolean {\n return !Range.isBackward(range)\n },\n\n /**\n * Check if a value implements the [[Range]] interface.\n */\n\n isRange(value: any): value is Range {\n return (\n isPlainObject(value) &&\n Point.isPoint(value.anchor) &&\n Point.isPoint(value.focus)\n )\n },\n\n /**\n * Iterate through all of the point entries in a range.\n */\n\n *points(range: Range): Generator {\n yield [range.anchor, 'anchor']\n yield [range.focus, 'focus']\n },\n\n /**\n * Get the start point of a range.\n */\n\n start(range: Range): Point {\n const [start] = Range.edges(range)\n return start\n },\n\n /**\n * Transform a range by an operation.\n */\n\n transform(\n range: Range | null,\n op: Operation,\n options: RangeTransformOptions = {}\n ): Range | null {\n return produce(range, r => {\n if (r === null) {\n return null\n }\n const { affinity = 'inward' } = options\n let affinityAnchor: 'forward' | 'backward' | null\n let affinityFocus: 'forward' | 'backward' | null\n\n if (affinity === 'inward') {\n // If the range is collapsed, make sure to use the same affinity to\n // avoid the two points passing each other and expanding in the opposite\n // direction\n const isCollapsed = Range.isCollapsed(r)\n if (Range.isForward(r)) {\n affinityAnchor = 'forward'\n affinityFocus = isCollapsed ? affinityAnchor : 'backward'\n } else {\n affinityAnchor = 'backward'\n affinityFocus = isCollapsed ? affinityAnchor : 'forward'\n }\n } else if (affinity === 'outward') {\n if (Range.isForward(r)) {\n affinityAnchor = 'backward'\n affinityFocus = 'forward'\n } else {\n affinityAnchor = 'forward'\n affinityFocus = 'backward'\n }\n } else {\n affinityAnchor = affinity\n affinityFocus = affinity\n }\n const anchor = Point.transform(r.anchor, op, { affinity: affinityAnchor })\n const focus = Point.transform(r.focus, op, { affinity: affinityFocus })\n\n if (!anchor || !focus) {\n return null\n }\n\n r.anchor = anchor\n r.focus = focus\n })\n },\n}\n","import { Operation, Range } from '..'\n\n/**\n * `RangeRef` objects keep a specific range in a document synced over time as new\n * operations are applied to the editor. You can access their `current` property\n * at any time for the up-to-date range value.\n */\n\nexport interface RangeRef {\n current: Range | null\n affinity: 'forward' | 'backward' | 'outward' | 'inward' | null\n unref(): Range | null\n}\n\nexport interface RangeRefInterface {\n transform: (ref: RangeRef, op: Operation) => void\n}\n\n// eslint-disable-next-line no-redeclare\nexport const RangeRef: RangeRefInterface = {\n /**\n * Transform the range ref's current value by an operation.\n */\n\n transform(ref: RangeRef, op: Operation): void {\n const { current, affinity } = ref\n\n if (current == null) {\n return\n }\n\n const path = Range.transform(current, op, { affinity })\n ref.current = path\n\n if (path == null) {\n ref.unref()\n }\n },\n}\n","export type Scrubber = (key: string, value: unknown) => unknown\n\nexport interface ScrubberInterface {\n setScrubber(scrubber: Scrubber | undefined): void\n stringify(value: any): string\n}\n\nlet _scrubber: Scrubber | undefined = undefined\n\n/**\n * This interface implements a stringify() function, which is used by Slate\n * internally when generating exceptions containing end user data. Developers\n * using Slate may call Scrubber.setScrubber() to alter the behavior of this\n * stringify() function.\n *\n * For example, to prevent the cleartext logging of 'text' fields within Nodes:\n *\n * import { Scrubber } from 'slate';\n * Scrubber.setScrubber((key, val) => {\n * if (key === 'text') return '...scrubbed...'\n * return val\n * });\n *\n */\n// eslint-disable-next-line no-redeclare\nexport const Scrubber: ScrubberInterface = {\n setScrubber(scrubber: Scrubber | undefined): void {\n _scrubber = scrubber\n },\n\n stringify(value: any): string {\n return JSON.stringify(value, _scrubber)\n },\n}\n","import { isPlainObject } from 'is-plain-object'\n\n/*\n Custom deep equal comparison for Slate nodes.\n\n We don't need general purpose deep equality;\n Slate only supports plain values, Arrays, and nested objects.\n Complex values nested inside Arrays are not supported.\n\n Slate objects are designed to be serialised, so\n missing keys are deliberately normalised to undefined.\n */\nexport const isDeepEqual = (\n node: Record,\n another: Record\n): boolean => {\n for (const key in node) {\n const a = node[key]\n const b = another[key]\n if (isPlainObject(a) && isPlainObject(b)) {\n if (!isDeepEqual(a, b)) return false\n } else if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) return false\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) return false\n }\n } else if (a !== b) {\n return false\n }\n }\n\n /*\n Deep object equality is only necessary in one direction; in the reverse direction\n we are only looking for keys that are missing.\n As above, undefined keys are normalised to missing.\n */\n\n for (const key in another) {\n if (node[key] === undefined && another[key] !== undefined) {\n return false\n }\n }\n\n return true\n}\n","import { isPlainObject } from 'is-plain-object'\nimport { Range } from '..'\nimport { ExtendedType } from './custom-types'\nimport { isDeepEqual } from '../utils/deep-equal'\n\n/**\n * `Text` objects represent the nodes that contain the actual text content of a\n * Slate document along with any formatting properties. They are always leaf\n * nodes in the document tree as they cannot contain any children.\n */\n\nexport interface BaseText {\n text: string\n}\n\nexport type Text = ExtendedType<'Text', BaseText>\n\nexport interface TextEqualsOptions {\n loose?: boolean\n}\n\nexport interface TextInterface {\n equals: (text: Text, another: Text, options?: TextEqualsOptions) => boolean\n isText: (value: any) => value is Text\n isTextList: (value: any) => value is Text[]\n isTextProps: (props: any) => props is Partial\n matches: (text: Text, props: Partial) => boolean\n decorations: (node: Text, decorations: Range[]) => Text[]\n}\n\n// eslint-disable-next-line no-redeclare\nexport const Text: TextInterface = {\n /**\n * Check if two text nodes are equal.\n *\n * When loose is set, the text is not compared. This is\n * used to check whether sibling text nodes can be merged.\n */\n equals(text: Text, another: Text, options: TextEqualsOptions = {}): boolean {\n const { loose = false } = options\n\n function omitText(obj: Record) {\n const { text, ...rest } = obj\n\n return rest\n }\n\n return isDeepEqual(\n loose ? omitText(text) : text,\n loose ? omitText(another) : another\n )\n },\n\n /**\n * Check if a value implements the `Text` interface.\n */\n\n isText(value: any): value is Text {\n return isPlainObject(value) && typeof value.text === 'string'\n },\n\n /**\n * Check if a value is a list of `Text` objects.\n */\n\n isTextList(value: any): value is Text[] {\n return Array.isArray(value) && value.every(val => Text.isText(val))\n },\n\n /**\n * Check if some props are a partial of Text.\n */\n\n isTextProps(props: any): props is Partial {\n return (props as Partial).text !== undefined\n },\n\n /**\n * Check if an text matches set of properties.\n *\n * Note: this is for matching custom properties, and it does not ensure that\n * the `text` property are two nodes equal.\n */\n\n matches(text: Text, props: Partial): boolean {\n for (const key in props) {\n if (key === 'text') {\n continue\n }\n\n if (!text.hasOwnProperty(key) || text[key] !== props[key]) {\n return false\n }\n }\n\n return true\n },\n\n /**\n * Get the leaves for a text node given decorations.\n */\n\n decorations(node: Text, decorations: Range[]): Text[] {\n let leaves: Text[] = [{ ...node }]\n\n for (const dec of decorations) {\n const { anchor, focus, ...rest } = dec\n const [start, end] = Range.edges(dec)\n const next = []\n let leafEnd = 0\n const decorationStart = start.offset\n const decorationEnd = end.offset\n\n for (const leaf of leaves) {\n const { length } = leaf.text\n const leafStart = leafEnd\n leafEnd += length\n\n // If the range encompasses the entire leaf, add the range.\n if (decorationStart <= leafStart && leafEnd <= decorationEnd) {\n Object.assign(leaf, rest)\n next.push(leaf)\n continue\n }\n\n // If the range expanded and match the leaf, or starts after, or ends before it, continue.\n if (\n (decorationStart !== decorationEnd &&\n (decorationStart === leafEnd || decorationEnd === leafStart)) ||\n decorationStart > leafEnd ||\n decorationEnd < leafStart ||\n (decorationEnd === leafStart && leafStart !== 0)\n ) {\n next.push(leaf)\n continue\n }\n\n // Otherwise we need to split the leaf, at the start, end, or both,\n // and add the range to the middle intersecting section. Do the end\n // split first since we don't need to update the offset that way.\n let middle = leaf\n let before\n let after\n\n if (decorationEnd < leafEnd) {\n const off = decorationEnd - leafStart\n after = { ...middle, text: middle.text.slice(off) }\n middle = { ...middle, text: middle.text.slice(0, off) }\n }\n\n if (decorationStart > leafStart) {\n const off = decorationStart - leafStart\n before = { ...middle, text: middle.text.slice(0, off) }\n middle = { ...middle, text: middle.text.slice(off) }\n }\n\n Object.assign(middle, rest)\n\n if (before) {\n next.push(before)\n }\n\n next.push(middle)\n\n if (after) {\n next.push(after)\n }\n }\n\n leaves = next\n }\n\n return leaves\n },\n}\n","import { createDraft, finishDraft, isDraft } from 'immer'\nimport {\n Ancestor,\n Descendant,\n Editor,\n Element,\n Node,\n NodeEntry,\n Operation,\n Path,\n Point,\n Range,\n Scrubber,\n Selection,\n Text,\n} from '..'\n\nexport interface GeneralTransforms {\n transform: (editor: Editor, op: Operation) => void\n}\n\nconst applyToDraft = (editor: Editor, selection: Selection, op: Operation) => {\n switch (op.type) {\n case 'insert_node': {\n const { path, node } = op\n const parent = Node.parent(editor, path)\n const index = path[path.length - 1]\n\n if (index > parent.children.length) {\n throw new Error(\n `Cannot apply an \"insert_node\" operation at path [${path}] because the destination is past the end of the node.`\n )\n }\n\n parent.children.splice(index, 0, node)\n\n if (selection) {\n for (const [point, key] of Range.points(selection)) {\n selection[key] = Point.transform(point, op)!\n }\n }\n\n break\n }\n\n case 'insert_text': {\n const { path, offset, text } = op\n if (text.length === 0) break\n const node = Node.leaf(editor, path)\n const before = node.text.slice(0, offset)\n const after = node.text.slice(offset)\n node.text = before + text + after\n\n if (selection) {\n for (const [point, key] of Range.points(selection)) {\n selection[key] = Point.transform(point, op)!\n }\n }\n\n break\n }\n\n case 'merge_node': {\n const { path } = op\n const node = Node.get(editor, path)\n const prevPath = Path.previous(path)\n const prev = Node.get(editor, prevPath)\n const parent = Node.parent(editor, path)\n const index = path[path.length - 1]\n\n if (Text.isText(node) && Text.isText(prev)) {\n prev.text += node.text\n } else if (!Text.isText(node) && !Text.isText(prev)) {\n prev.children.push(...node.children)\n } else {\n throw new Error(\n `Cannot apply a \"merge_node\" operation at path [${path}] to nodes of different interfaces: ${Scrubber.stringify(\n node\n )} ${Scrubber.stringify(prev)}`\n )\n }\n\n parent.children.splice(index, 1)\n\n if (selection) {\n for (const [point, key] of Range.points(selection)) {\n selection[key] = Point.transform(point, op)!\n }\n }\n\n break\n }\n\n case 'move_node': {\n const { path, newPath } = op\n\n if (Path.isAncestor(path, newPath)) {\n throw new Error(\n `Cannot move a path [${path}] to new path [${newPath}] because the destination is inside itself.`\n )\n }\n\n const node = Node.get(editor, path)\n const parent = Node.parent(editor, path)\n const index = path[path.length - 1]\n\n // This is tricky, but since the `path` and `newPath` both refer to\n // the same snapshot in time, there's a mismatch. After either\n // removing the original position, the second step's path can be out\n // of date. So instead of using the `op.newPath` directly, we\n // transform `op.path` to ascertain what the `newPath` would be after\n // the operation was applied.\n parent.children.splice(index, 1)\n const truePath = Path.transform(path, op)!\n const newParent = Node.get(editor, Path.parent(truePath)) as Ancestor\n const newIndex = truePath[truePath.length - 1]\n\n newParent.children.splice(newIndex, 0, node)\n\n if (selection) {\n for (const [point, key] of Range.points(selection)) {\n selection[key] = Point.transform(point, op)!\n }\n }\n\n break\n }\n\n case 'remove_node': {\n const { path } = op\n const index = path[path.length - 1]\n const parent = Node.parent(editor, path)\n parent.children.splice(index, 1)\n\n // Transform all of the points in the value, but if the point was in the\n // node that was removed we need to update the range or remove it.\n if (selection) {\n for (const [point, key] of Range.points(selection)) {\n const result = Point.transform(point, op)\n\n if (selection != null && result != null) {\n selection[key] = result\n } else {\n let prev: NodeEntry | undefined\n let next: NodeEntry | undefined\n\n for (const [n, p] of Node.texts(editor)) {\n if (Path.compare(p, path) === -1) {\n prev = [n, p]\n } else {\n next = [n, p]\n break\n }\n }\n\n let preferNext = false\n if (prev && next) {\n if (Path.equals(next[1], path)) {\n preferNext = !Path.hasPrevious(next[1])\n } else {\n preferNext =\n Path.common(prev[1], path).length <\n Path.common(next[1], path).length\n }\n }\n\n if (prev && !preferNext) {\n point.path = prev[1]\n point.offset = prev[0].text.length\n } else if (next) {\n point.path = next[1]\n point.offset = 0\n } else {\n selection = null\n }\n }\n }\n }\n\n break\n }\n\n case 'remove_text': {\n const { path, offset, text } = op\n if (text.length === 0) break\n const node = Node.leaf(editor, path)\n const before = node.text.slice(0, offset)\n const after = node.text.slice(offset + text.length)\n node.text = before + after\n\n if (selection) {\n for (const [point, key] of Range.points(selection)) {\n selection[key] = Point.transform(point, op)!\n }\n }\n\n break\n }\n\n case 'set_node': {\n const { path, properties, newProperties } = op\n\n if (path.length === 0) {\n throw new Error(`Cannot set properties on the root node!`)\n }\n\n const node = Node.get(editor, path)\n\n for (const key in newProperties) {\n if (key === 'children' || key === 'text') {\n throw new Error(`Cannot set the \"${key}\" property of nodes!`)\n }\n\n const value = newProperties[key]\n\n if (value == null) {\n delete node[key]\n } else {\n node[key] = value\n }\n }\n\n // properties that were previously defined, but are now missing, must be deleted\n for (const key in properties) {\n if (!newProperties.hasOwnProperty(key)) {\n delete node[key]\n }\n }\n\n break\n }\n\n case 'set_selection': {\n const { newProperties } = op\n\n if (newProperties == null) {\n selection = newProperties\n } else {\n if (selection == null) {\n if (!Range.isRange(newProperties)) {\n throw new Error(\n `Cannot apply an incomplete \"set_selection\" operation properties ${Scrubber.stringify(\n newProperties\n )} when there is no current selection.`\n )\n }\n\n selection = { ...newProperties }\n }\n\n for (const key in newProperties) {\n const value = newProperties[key]\n\n if (value == null) {\n if (key === 'anchor' || key === 'focus') {\n throw new Error(`Cannot remove the \"${key}\" selection property`)\n }\n\n delete selection[key]\n } else {\n selection[key] = value\n }\n }\n }\n\n break\n }\n\n case 'split_node': {\n const { path, position, properties } = op\n\n if (path.length === 0) {\n throw new Error(\n `Cannot apply a \"split_node\" operation at path [${path}] because the root node cannot be split.`\n )\n }\n\n const node = Node.get(editor, path)\n const parent = Node.parent(editor, path)\n const index = path[path.length - 1]\n let newNode: Descendant\n\n if (Text.isText(node)) {\n const before = node.text.slice(0, position)\n const after = node.text.slice(position)\n node.text = before\n newNode = {\n ...(properties as Partial),\n text: after,\n }\n } else {\n const before = node.children.slice(0, position)\n const after = node.children.slice(position)\n node.children = before\n\n newNode = {\n ...(properties as Partial),\n children: after,\n }\n }\n\n parent.children.splice(index + 1, 0, newNode)\n\n if (selection) {\n for (const [point, key] of Range.points(selection)) {\n selection[key] = Point.transform(point, op)!\n }\n }\n\n break\n }\n }\n return selection\n}\n\n// eslint-disable-next-line no-redeclare\nexport const GeneralTransforms: GeneralTransforms = {\n /**\n * Transform the editor by an operation.\n */\n\n transform(editor: Editor, op: Operation): void {\n editor.children = createDraft(editor.children)\n let selection = editor.selection && createDraft(editor.selection)\n\n try {\n selection = applyToDraft(editor, selection, op)\n } finally {\n editor.children = finishDraft(editor.children)\n\n if (selection) {\n editor.selection = isDraft(selection)\n ? (finishDraft(selection) as Range)\n : selection\n } else {\n editor.selection = null\n }\n }\n },\n}\n","import {\n Ancestor,\n Editor,\n Element,\n Location,\n Node,\n NodeEntry,\n Path,\n Point,\n Range,\n Scrubber,\n Text,\n Transforms,\n} from '..'\nimport { NodeMatch, PropsCompare, PropsMerge } from '../interfaces/editor'\nimport { PointRef } from '../interfaces/point-ref'\nimport { RangeMode, MaximizeMode } from '../interfaces/types'\n\nexport interface NodeTransforms {\n insertNodes: (\n editor: Editor,\n nodes: Node | Node[],\n options?: {\n at?: Location\n match?: NodeMatch\n mode?: RangeMode\n hanging?: boolean\n select?: boolean\n voids?: boolean\n }\n ) => void\n liftNodes: (\n editor: Editor,\n options?: {\n at?: Location\n match?: NodeMatch\n mode?: MaximizeMode\n voids?: boolean\n }\n ) => void\n mergeNodes: (\n editor: Editor,\n options?: {\n at?: Location\n match?: NodeMatch\n mode?: RangeMode\n hanging?: boolean\n voids?: boolean\n }\n ) => void\n moveNodes: (\n editor: Editor,\n options: {\n at?: Location\n match?: NodeMatch\n mode?: MaximizeMode\n to: Path\n voids?: boolean\n }\n ) => void\n removeNodes: (\n editor: Editor,\n options?: {\n at?: Location\n match?: NodeMatch\n mode?: RangeMode\n hanging?: boolean\n voids?: boolean\n }\n ) => void\n setNodes: (\n editor: Editor,\n props: Partial,\n options?: {\n at?: Location\n match?: NodeMatch\n mode?: MaximizeMode\n hanging?: boolean\n split?: boolean\n voids?: boolean\n compare?: PropsCompare\n merge?: PropsMerge\n }\n ) => void\n splitNodes: (\n editor: Editor,\n options?: {\n at?: Location\n match?: NodeMatch\n mode?: RangeMode\n always?: boolean\n height?: number\n voids?: boolean\n }\n ) => void\n unsetNodes: (\n editor: Editor,\n props: string | string[],\n options?: {\n at?: Location\n match?: NodeMatch\n mode?: MaximizeMode\n split?: boolean\n voids?: boolean\n }\n ) => void\n unwrapNodes: (\n editor: Editor,\n options?: {\n at?: Location\n match?: NodeMatch\n mode?: MaximizeMode\n split?: boolean\n voids?: boolean\n }\n ) => void\n wrapNodes: (\n editor: Editor,\n element: Element,\n options?: {\n at?: Location\n match?: NodeMatch\n mode?: MaximizeMode\n split?: boolean\n voids?: boolean\n }\n ) => void\n}\n\n// eslint-disable-next-line no-redeclare\nexport const NodeTransforms: NodeTransforms = {\n /**\n * Insert nodes at a specific location in the Editor.\n */\n\n insertNodes(\n editor: Editor,\n nodes: Node | Node[],\n options: {\n at?: Location\n match?: NodeMatch\n mode?: RangeMode\n hanging?: boolean\n select?: boolean\n voids?: boolean\n } = {}\n ): void {\n Editor.withoutNormalizing(editor, () => {\n const { hanging = false, voids = false, mode = 'lowest' } = options\n let { at, match, select } = options\n\n if (Node.isNode(nodes)) {\n nodes = [nodes]\n }\n\n if (nodes.length === 0) {\n return\n }\n\n const [node] = nodes\n\n // By default, use the selection as the target location. But if there is\n // no selection, insert at the end of the document since that is such a\n // common use case when inserting from a non-selected state.\n if (!at) {\n if (editor.selection) {\n at = editor.selection\n } else if (editor.children.length > 0) {\n at = Editor.end(editor, [])\n } else {\n at = [0]\n }\n\n select = true\n }\n\n if (select == null) {\n select = false\n }\n\n if (Range.isRange(at)) {\n if (!hanging) {\n at = Editor.unhangRange(editor, at)\n }\n\n if (Range.isCollapsed(at)) {\n at = at.anchor\n } else {\n const [, end] = Range.edges(at)\n const pointRef = Editor.pointRef(editor, end)\n Transforms.delete(editor, { at })\n at = pointRef.unref()!\n }\n }\n\n if (Point.isPoint(at)) {\n if (match == null) {\n if (Text.isText(node)) {\n match = n => Text.isText(n)\n } else if (editor.isInline(node)) {\n match = n => Text.isText(n) || Editor.isInline(editor, n)\n } else {\n match = n => Editor.isBlock(editor, n)\n }\n }\n\n const [entry] = Editor.nodes(editor, {\n at: at.path,\n match,\n mode,\n voids,\n })\n\n if (entry) {\n const [, matchPath] = entry\n const pathRef = Editor.pathRef(editor, matchPath)\n const isAtEnd = Editor.isEnd(editor, at, matchPath)\n Transforms.splitNodes(editor, { at, match, mode, voids })\n const path = pathRef.unref()!\n at = isAtEnd ? Path.next(path) : path\n } else {\n return\n }\n }\n\n const parentPath = Path.parent(at)\n let index = at[at.length - 1]\n\n if (!voids && Editor.void(editor, { at: parentPath })) {\n return\n }\n\n for (const node of nodes) {\n const path = parentPath.concat(index)\n index++\n editor.apply({ type: 'insert_node', path, node })\n at = Path.next(at)\n }\n at = Path.previous(at)\n\n if (select) {\n const point = Editor.end(editor, at)\n\n if (point) {\n Transforms.select(editor, point)\n }\n }\n })\n },\n\n /**\n * Lift nodes at a specific location upwards in the document tree, splitting\n * their parent in two if necessary.\n */\n\n liftNodes(\n editor: Editor,\n options: {\n at?: Location\n match?: NodeMatch\n mode?: MaximizeMode\n voids?: boolean\n } = {}\n ): void {\n Editor.withoutNormalizing(editor, () => {\n const { at = editor.selection, mode = 'lowest', voids = false } = options\n let { match } = options\n\n if (match == null) {\n match = Path.isPath(at)\n ? matchPath(editor, at)\n : n => Editor.isBlock(editor, n)\n }\n\n if (!at) {\n return\n }\n\n const matches = Editor.nodes(editor, { at, match, mode, voids })\n const pathRefs = Array.from(matches, ([, p]) => Editor.pathRef(editor, p))\n\n for (const pathRef of pathRefs) {\n const path = pathRef.unref()!\n\n if (path.length < 2) {\n throw new Error(\n `Cannot lift node at a path [${path}] because it has a depth of less than \\`2\\`.`\n )\n }\n\n const parentNodeEntry = Editor.node(editor, Path.parent(path))\n const [parent, parentPath] = parentNodeEntry as NodeEntry\n const index = path[path.length - 1]\n const { length } = parent.children\n\n if (length === 1) {\n const toPath = Path.next(parentPath)\n Transforms.moveNodes(editor, { at: path, to: toPath, voids })\n Transforms.removeNodes(editor, { at: parentPath, voids })\n } else if (index === 0) {\n Transforms.moveNodes(editor, { at: path, to: parentPath, voids })\n } else if (index === length - 1) {\n const toPath = Path.next(parentPath)\n Transforms.moveNodes(editor, { at: path, to: toPath, voids })\n } else {\n const splitPath = Path.next(path)\n const toPath = Path.next(parentPath)\n Transforms.splitNodes(editor, { at: splitPath, voids })\n Transforms.moveNodes(editor, { at: path, to: toPath, voids })\n }\n }\n })\n },\n\n /**\n * Merge a node at a location with the previous node of the same depth,\n * removing any empty containing nodes after the merge if necessary.\n */\n\n mergeNodes(\n editor: Editor,\n options: {\n at?: Location\n match?: NodeMatch\n mode?: RangeMode\n hanging?: boolean\n voids?: boolean\n } = {}\n ): void {\n Editor.withoutNormalizing(editor, () => {\n let { match, at = editor.selection } = options\n const { hanging = false, voids = false, mode = 'lowest' } = options\n\n if (!at) {\n return\n }\n\n if (match == null) {\n if (Path.isPath(at)) {\n const [parent] = Editor.parent(editor, at)\n match = n => parent.children.includes(n)\n } else {\n match = n => Editor.isBlock(editor, n)\n }\n }\n\n if (!hanging && Range.isRange(at)) {\n at = Editor.unhangRange(editor, at)\n }\n\n if (Range.isRange(at)) {\n if (Range.isCollapsed(at)) {\n at = at.anchor\n } else {\n const [, end] = Range.edges(at)\n const pointRef = Editor.pointRef(editor, end)\n Transforms.delete(editor, { at })\n at = pointRef.unref()!\n\n if (options.at == null) {\n Transforms.select(editor, at)\n }\n }\n }\n\n const [current] = Editor.nodes(editor, { at, match, voids, mode })\n const prev = Editor.previous(editor, { at, match, voids, mode })\n\n if (!current || !prev) {\n return\n }\n\n const [node, path] = current\n const [prevNode, prevPath] = prev\n\n if (path.length === 0 || prevPath.length === 0) {\n return\n }\n\n const newPath = Path.next(prevPath)\n const commonPath = Path.common(path, prevPath)\n const isPreviousSibling = Path.isSibling(path, prevPath)\n const levels = Array.from(Editor.levels(editor, { at: path }), ([n]) => n)\n .slice(commonPath.length)\n .slice(0, -1)\n\n // Determine if the merge will leave an ancestor of the path empty as a\n // result, in which case we'll want to remove it after merging.\n const emptyAncestor = Editor.above(editor, {\n at: path,\n mode: 'highest',\n match: n => levels.includes(n) && hasSingleChildNest(editor, n),\n })\n\n const emptyRef = emptyAncestor && Editor.pathRef(editor, emptyAncestor[1])\n let properties\n let position\n\n // Ensure that the nodes are equivalent, and figure out what the position\n // and extra properties of the merge will be.\n if (Text.isText(node) && Text.isText(prevNode)) {\n const { text, ...rest } = node\n position = prevNode.text.length\n properties = rest as Partial\n } else if (Element.isElement(node) && Element.isElement(prevNode)) {\n const { children, ...rest } = node\n position = prevNode.children.length\n properties = rest as Partial\n } else {\n throw new Error(\n `Cannot merge the node at path [${path}] with the previous sibling because it is not the same kind: ${Scrubber.stringify(\n node\n )} ${Scrubber.stringify(prevNode)}`\n )\n }\n\n // If the node isn't already the next sibling of the previous node, move\n // it so that it is before merging.\n if (!isPreviousSibling) {\n Transforms.moveNodes(editor, { at: path, to: newPath, voids })\n }\n\n // If there was going to be an empty ancestor of the node that was merged,\n // we remove it from the tree.\n if (emptyRef) {\n Transforms.removeNodes(editor, { at: emptyRef.current!, voids })\n }\n\n // If the target node that we're merging with is empty, remove it instead\n // of merging the two. This is a common rich text editor behavior to\n // prevent losing formatting when deleting entire nodes when you have a\n // hanging selection.\n // if prevNode is first child in parent,don't remove it.\n if (\n (Element.isElement(prevNode) && Editor.isEmpty(editor, prevNode)) ||\n (Text.isText(prevNode) &&\n prevNode.text === '' &&\n prevPath[prevPath.length - 1] !== 0)\n ) {\n Transforms.removeNodes(editor, { at: prevPath, voids })\n } else {\n editor.apply({\n type: 'merge_node',\n path: newPath,\n position,\n properties,\n })\n }\n\n if (emptyRef) {\n emptyRef.unref()\n }\n })\n },\n\n /**\n * Move the nodes at a location to a new location.\n */\n\n moveNodes(\n editor: Editor,\n options: {\n at?: Location\n match?: NodeMatch\n mode?: MaximizeMode\n to: Path\n voids?: boolean\n }\n ): void {\n Editor.withoutNormalizing(editor, () => {\n const {\n to,\n at = editor.selection,\n mode = 'lowest',\n voids = false,\n } = options\n let { match } = options\n\n if (!at) {\n return\n }\n\n if (match == null) {\n match = Path.isPath(at)\n ? matchPath(editor, at)\n : n => Editor.isBlock(editor, n)\n }\n\n const toRef = Editor.pathRef(editor, to)\n const targets = Editor.nodes(editor, { at, match, mode, voids })\n const pathRefs = Array.from(targets, ([, p]) => Editor.pathRef(editor, p))\n\n for (const pathRef of pathRefs) {\n const path = pathRef.unref()!\n const newPath = toRef.current!\n\n if (path.length !== 0) {\n editor.apply({ type: 'move_node', path, newPath })\n }\n\n if (\n toRef.current &&\n Path.isSibling(newPath, path) &&\n Path.isAfter(newPath, path)\n ) {\n // When performing a sibling move to a later index, the path at the destination is shifted\n // to before the insertion point instead of after. To ensure our group of nodes are inserted\n // in the correct order we increment toRef to account for that\n toRef.current = Path.next(toRef.current)\n }\n }\n\n toRef.unref()\n })\n },\n\n /**\n * Remove the nodes at a specific location in the document.\n */\n\n removeNodes(\n editor: Editor,\n options: {\n at?: Location\n match?: NodeMatch\n mode?: RangeMode\n hanging?: boolean\n voids?: boolean\n } = {}\n ): void {\n Editor.withoutNormalizing(editor, () => {\n const { hanging = false, voids = false, mode = 'lowest' } = options\n let { at = editor.selection, match } = options\n\n if (!at) {\n return\n }\n\n if (match == null) {\n match = Path.isPath(at)\n ? matchPath(editor, at)\n : n => Editor.isBlock(editor, n)\n }\n\n if (!hanging && Range.isRange(at)) {\n at = Editor.unhangRange(editor, at)\n }\n\n const depths = Editor.nodes(editor, { at, match, mode, voids })\n const pathRefs = Array.from(depths, ([, p]) => Editor.pathRef(editor, p))\n\n for (const pathRef of pathRefs) {\n const path = pathRef.unref()!\n\n if (path) {\n const [node] = Editor.node(editor, path)\n editor.apply({ type: 'remove_node', path, node })\n }\n }\n })\n },\n\n /**\n * Set new properties on the nodes at a location.\n */\n\n setNodes(\n editor: Editor,\n props: Partial,\n options: {\n at?: Location\n match?: NodeMatch\n mode?: MaximizeMode\n hanging?: boolean\n split?: boolean\n voids?: boolean\n compare?: PropsCompare\n merge?: PropsMerge\n } = {}\n ): void {\n Editor.withoutNormalizing(editor, () => {\n let { match, at = editor.selection, compare, merge } = options\n const {\n hanging = false,\n mode = 'lowest',\n split = false,\n voids = false,\n } = options\n\n if (!at) {\n return\n }\n\n if (match == null) {\n match = Path.isPath(at)\n ? matchPath(editor, at)\n : n => Editor.isBlock(editor, n)\n }\n\n if (!hanging && Range.isRange(at)) {\n at = Editor.unhangRange(editor, at)\n }\n\n if (split && Range.isRange(at)) {\n if (\n Range.isCollapsed(at) &&\n Editor.leaf(editor, at.anchor)[0].text.length > 0\n ) {\n // If the range is collapsed in a non-empty node and 'split' is true, there's nothing to\n // set that won't get normalized away\n return\n }\n const rangeRef = Editor.rangeRef(editor, at, { affinity: 'inward' })\n const [start, end] = Range.edges(at)\n const splitMode = mode === 'lowest' ? 'lowest' : 'highest'\n const endAtEndOfNode = Editor.isEnd(editor, end, end.path)\n Transforms.splitNodes(editor, {\n at: end,\n match,\n mode: splitMode,\n voids,\n always: !endAtEndOfNode,\n })\n const startAtStartOfNode = Editor.isStart(editor, start, start.path)\n Transforms.splitNodes(editor, {\n at: start,\n match,\n mode: splitMode,\n voids,\n always: !startAtStartOfNode,\n })\n at = rangeRef.unref()!\n\n if (options.at == null) {\n Transforms.select(editor, at)\n }\n }\n\n if (!compare) {\n compare = (prop, nodeProp) => prop !== nodeProp\n }\n\n for (const [node, path] of Editor.nodes(editor, {\n at,\n match,\n mode,\n voids,\n })) {\n const properties: Partial = {}\n const newProperties: Partial = {}\n\n // You can't set properties on the editor node.\n if (path.length === 0) {\n continue\n }\n\n let hasChanges = false\n\n for (const k in props) {\n if (k === 'children' || k === 'text') {\n continue\n }\n\n if (compare(props[k], node[k])) {\n hasChanges = true\n // Omit new properties from the old properties list\n if (node.hasOwnProperty(k)) properties[k] = node[k]\n // Omit properties that have been removed from the new properties list\n if (merge) {\n if (props[k] != null) newProperties[k] = merge(node[k], props[k])\n } else {\n if (props[k] != null) newProperties[k] = props[k]\n }\n }\n }\n\n if (hasChanges) {\n editor.apply({\n type: 'set_node',\n path,\n properties,\n newProperties,\n })\n }\n }\n })\n },\n\n /**\n * Split the nodes at a specific location.\n */\n\n splitNodes(\n editor: Editor,\n options: {\n at?: Location\n match?: NodeMatch\n mode?: RangeMode\n always?: boolean\n height?: number\n voids?: boolean\n } = {}\n ): void {\n Editor.withoutNormalizing(editor, () => {\n const { mode = 'lowest', voids = false } = options\n let { match, at = editor.selection, height = 0, always = false } = options\n\n if (match == null) {\n match = n => Editor.isBlock(editor, n)\n }\n\n if (Range.isRange(at)) {\n at = deleteRange(editor, at)\n }\n\n // If the target is a path, the default height-skipping and position\n // counters need to account for us potentially splitting at a non-leaf.\n if (Path.isPath(at)) {\n const path = at\n const point = Editor.point(editor, path)\n const [parent] = Editor.parent(editor, path)\n match = n => n === parent\n height = point.path.length - path.length + 1\n at = point\n always = true\n }\n\n if (!at) {\n return\n }\n\n const beforeRef = Editor.pointRef(editor, at, {\n affinity: 'backward',\n })\n let afterRef: PointRef | undefined\n try {\n const [highest] = Editor.nodes(editor, { at, match, mode, voids })\n\n if (!highest) {\n return\n }\n\n const voidMatch = Editor.void(editor, { at, mode: 'highest' })\n const nudge = 0\n\n if (!voids && voidMatch) {\n const [voidNode, voidPath] = voidMatch\n\n if (Element.isElement(voidNode) && editor.isInline(voidNode)) {\n let after = Editor.after(editor, voidPath)\n\n if (!after) {\n const text = { text: '' }\n const afterPath = Path.next(voidPath)\n Transforms.insertNodes(editor, text, { at: afterPath, voids })\n after = Editor.point(editor, afterPath)!\n }\n\n at = after\n always = true\n }\n\n const siblingHeight = at.path.length - voidPath.length\n height = siblingHeight + 1\n always = true\n }\n\n afterRef = Editor.pointRef(editor, at)\n const depth = at.path.length - height\n const [, highestPath] = highest\n const lowestPath = at.path.slice(0, depth)\n let position = height === 0 ? at.offset : at.path[depth] + nudge\n\n for (const [node, path] of Editor.levels(editor, {\n at: lowestPath,\n reverse: true,\n voids,\n })) {\n let split = false\n\n if (\n path.length < highestPath.length ||\n path.length === 0 ||\n (!voids && Editor.isVoid(editor, node))\n ) {\n break\n }\n\n const point = beforeRef.current!\n const isEnd = Editor.isEnd(editor, point, path)\n\n if (always || !beforeRef || !Editor.isEdge(editor, point, path)) {\n split = true\n const properties = Node.extractProps(node)\n editor.apply({\n type: 'split_node',\n path,\n position,\n properties,\n })\n }\n\n position = path[path.length - 1] + (split || isEnd ? 1 : 0)\n }\n\n if (options.at == null) {\n const point = afterRef.current || Editor.end(editor, [])\n Transforms.select(editor, point)\n }\n } finally {\n beforeRef.unref()\n afterRef?.unref()\n }\n })\n },\n\n /**\n * Unset properties on the nodes at a location.\n */\n\n unsetNodes(\n editor: Editor,\n props: string | string[],\n options: {\n at?: Location\n match?: NodeMatch\n mode?: MaximizeMode\n split?: boolean\n voids?: boolean\n } = {}\n ): void {\n if (!Array.isArray(props)) {\n props = [props]\n }\n\n const obj = {}\n\n for (const key of props) {\n obj[key] = null\n }\n\n Transforms.setNodes(editor, obj, options)\n },\n\n /**\n * Unwrap the nodes at a location from a parent node, splitting the parent if\n * necessary to ensure that only the content in the range is unwrapped.\n */\n\n unwrapNodes(\n editor: Editor,\n options: {\n at?: Location\n match?: NodeMatch\n mode?: MaximizeMode\n split?: boolean\n voids?: boolean\n } = {}\n ): void {\n Editor.withoutNormalizing(editor, () => {\n const { mode = 'lowest', split = false, voids = false } = options\n let { at = editor.selection, match } = options\n\n if (!at) {\n return\n }\n\n if (match == null) {\n match = Path.isPath(at)\n ? matchPath(editor, at)\n : n => Editor.isBlock(editor, n)\n }\n\n if (Path.isPath(at)) {\n at = Editor.range(editor, at)\n }\n\n const rangeRef = Range.isRange(at) ? Editor.rangeRef(editor, at) : null\n const matches = Editor.nodes(editor, { at, match, mode, voids })\n const pathRefs = Array.from(\n matches,\n ([, p]) => Editor.pathRef(editor, p)\n // unwrapNode will call liftNode which does not support splitting the node when nested.\n // If we do not reverse the order and call it from top to the bottom, it will remove all blocks\n // that wrap target node. So we reverse the order.\n ).reverse()\n\n for (const pathRef of pathRefs) {\n const path = pathRef.unref()!\n const [node] = Editor.node(editor, path)\n let range = Editor.range(editor, path)\n\n if (split && rangeRef) {\n range = Range.intersection(rangeRef.current!, range)!\n }\n\n Transforms.liftNodes(editor, {\n at: range,\n match: n => Element.isAncestor(node) && node.children.includes(n),\n voids,\n })\n }\n\n if (rangeRef) {\n rangeRef.unref()\n }\n })\n },\n\n /**\n * Wrap the nodes at a location in a new container node, splitting the edges\n * of the range first to ensure that only the content in the range is wrapped.\n */\n\n wrapNodes(\n editor: Editor,\n element: Element,\n options: {\n at?: Location\n match?: NodeMatch\n mode?: MaximizeMode\n split?: boolean\n voids?: boolean\n } = {}\n ): void {\n Editor.withoutNormalizing(editor, () => {\n const { mode = 'lowest', split = false, voids = false } = options\n let { match, at = editor.selection } = options\n\n if (!at) {\n return\n }\n\n if (match == null) {\n if (Path.isPath(at)) {\n match = matchPath(editor, at)\n } else if (editor.isInline(element)) {\n match = n => Editor.isInline(editor, n) || Text.isText(n)\n } else {\n match = n => Editor.isBlock(editor, n)\n }\n }\n\n if (split && Range.isRange(at)) {\n const [start, end] = Range.edges(at)\n const rangeRef = Editor.rangeRef(editor, at, {\n affinity: 'inward',\n })\n Transforms.splitNodes(editor, { at: end, match, voids })\n Transforms.splitNodes(editor, { at: start, match, voids })\n at = rangeRef.unref()!\n\n if (options.at == null) {\n Transforms.select(editor, at)\n }\n }\n\n const roots = Array.from(\n Editor.nodes(editor, {\n at,\n match: editor.isInline(element)\n ? n => Editor.isBlock(editor, n)\n : n => Editor.isEditor(n),\n mode: 'lowest',\n voids,\n })\n )\n\n for (const [, rootPath] of roots) {\n const a = Range.isRange(at)\n ? Range.intersection(at, Editor.range(editor, rootPath))\n : at\n\n if (!a) {\n continue\n }\n\n const matches = Array.from(\n Editor.nodes(editor, { at: a, match, mode, voids })\n )\n\n if (matches.length > 0) {\n const [first] = matches\n const last = matches[matches.length - 1]\n const [, firstPath] = first\n const [, lastPath] = last\n\n if (firstPath.length === 0 && lastPath.length === 0) {\n // if there's no matching parent - usually means the node is an editor - don't do anything\n continue\n }\n\n const commonPath = Path.equals(firstPath, lastPath)\n ? Path.parent(firstPath)\n : Path.common(firstPath, lastPath)\n\n const range = Editor.range(editor, firstPath, lastPath)\n const commonNodeEntry = Editor.node(editor, commonPath)\n const [commonNode] = commonNodeEntry\n const depth = commonPath.length + 1\n const wrapperPath = Path.next(lastPath.slice(0, depth))\n const wrapper = { ...element, children: [] }\n Transforms.insertNodes(editor, wrapper, { at: wrapperPath, voids })\n\n Transforms.moveNodes(editor, {\n at: range,\n match: n =>\n Element.isAncestor(commonNode) && commonNode.children.includes(n),\n to: wrapperPath.concat(0),\n voids,\n })\n }\n }\n })\n },\n}\n\nconst hasSingleChildNest = (editor: Editor, node: Node): boolean => {\n if (Element.isElement(node)) {\n const element = node as Element\n if (Editor.isVoid(editor, node)) {\n return true\n } else if (element.children.length === 1) {\n return hasSingleChildNest(editor, element.children[0])\n } else {\n return false\n }\n } else if (Editor.isEditor(node)) {\n return false\n } else {\n return true\n }\n}\n\n/**\n * Convert a range into a point by deleting it's content.\n */\n\nconst deleteRange = (editor: Editor, range: Range): Point | null => {\n if (Range.isCollapsed(range)) {\n return range.anchor\n } else {\n const [, end] = Range.edges(range)\n const pointRef = Editor.pointRef(editor, end)\n Transforms.delete(editor, { at: range })\n return pointRef.unref()\n }\n}\n\nconst matchPath = (editor: Editor, path: Path): ((node: Node) => boolean) => {\n const [node] = Editor.node(editor, path)\n return n => n === node\n}\n","import { Editor, Location, Point, Range, Scrubber, Transforms } from '..'\nimport { SelectionEdge, MoveUnit } from '../interfaces/types'\n\nexport interface SelectionCollapseOptions {\n edge?: SelectionEdge\n}\n\nexport interface SelectionMoveOptions {\n distance?: number\n unit?: MoveUnit\n reverse?: boolean\n edge?: SelectionEdge\n}\n\nexport interface SelectionSetPointOptions {\n edge?: SelectionEdge\n}\n\nexport interface SelectionTransforms {\n collapse: (editor: Editor, options?: SelectionCollapseOptions) => void\n deselect: (editor: Editor) => void\n move: (editor: Editor, options?: SelectionMoveOptions) => void\n select: (editor: Editor, target: Location) => void\n setPoint: (\n editor: Editor,\n props: Partial,\n options?: SelectionSetPointOptions\n ) => void\n setSelection: (editor: Editor, props: Partial) => void\n}\n\n// eslint-disable-next-line no-redeclare\nexport const SelectionTransforms: SelectionTransforms = {\n /**\n * Collapse the selection.\n */\n\n collapse(editor: Editor, options: SelectionCollapseOptions = {}): void {\n const { edge = 'anchor' } = options\n const { selection } = editor\n\n if (!selection) {\n return\n } else if (edge === 'anchor') {\n Transforms.select(editor, selection.anchor)\n } else if (edge === 'focus') {\n Transforms.select(editor, selection.focus)\n } else if (edge === 'start') {\n const [start] = Range.edges(selection)\n Transforms.select(editor, start)\n } else if (edge === 'end') {\n const [, end] = Range.edges(selection)\n Transforms.select(editor, end)\n }\n },\n\n /**\n * Unset the selection.\n */\n\n deselect(editor: Editor): void {\n const { selection } = editor\n\n if (selection) {\n editor.apply({\n type: 'set_selection',\n properties: selection,\n newProperties: null,\n })\n }\n },\n\n /**\n * Move the selection's point forward or backward.\n */\n\n move(editor: Editor, options: SelectionMoveOptions = {}): void {\n const { selection } = editor\n const { distance = 1, unit = 'character', reverse = false } = options\n let { edge = null } = options\n\n if (!selection) {\n return\n }\n\n if (edge === 'start') {\n edge = Range.isBackward(selection) ? 'focus' : 'anchor'\n }\n\n if (edge === 'end') {\n edge = Range.isBackward(selection) ? 'anchor' : 'focus'\n }\n\n const { anchor, focus } = selection\n const opts = { distance, unit }\n const props: Partial = {}\n\n if (edge == null || edge === 'anchor') {\n const point = reverse\n ? Editor.before(editor, anchor, opts)\n : Editor.after(editor, anchor, opts)\n\n if (point) {\n props.anchor = point\n }\n }\n\n if (edge == null || edge === 'focus') {\n const point = reverse\n ? Editor.before(editor, focus, opts)\n : Editor.after(editor, focus, opts)\n\n if (point) {\n props.focus = point\n }\n }\n\n Transforms.setSelection(editor, props)\n },\n\n /**\n * Set the selection to a new value.\n */\n\n select(editor: Editor, target: Location): void {\n const { selection } = editor\n target = Editor.range(editor, target)\n\n if (selection) {\n Transforms.setSelection(editor, target)\n return\n }\n\n if (!Range.isRange(target)) {\n throw new Error(\n `When setting the selection and the current selection is \\`null\\` you must provide at least an \\`anchor\\` and \\`focus\\`, but you passed: ${Scrubber.stringify(\n target\n )}`\n )\n }\n\n editor.apply({\n type: 'set_selection',\n properties: selection,\n newProperties: target,\n })\n },\n\n /**\n * Set new properties on one of the selection's points.\n */\n\n setPoint(\n editor: Editor,\n props: Partial,\n options: SelectionSetPointOptions = {}\n ): void {\n const { selection } = editor\n let { edge = 'both' } = options\n\n if (!selection) {\n return\n }\n\n if (edge === 'start') {\n edge = Range.isBackward(selection) ? 'focus' : 'anchor'\n }\n\n if (edge === 'end') {\n edge = Range.isBackward(selection) ? 'anchor' : 'focus'\n }\n\n const { anchor, focus } = selection\n const point = edge === 'anchor' ? anchor : focus\n\n Transforms.setSelection(editor, {\n [edge === 'anchor' ? 'anchor' : 'focus']: { ...point, ...props },\n })\n },\n\n /**\n * Set new properties on the selection.\n */\n\n setSelection(editor: Editor, props: Partial): void {\n const { selection } = editor\n const oldProps: Partial | null = {}\n const newProps: Partial = {}\n\n if (!selection) {\n return\n }\n\n for (const k in props) {\n if (\n (k === 'anchor' &&\n props.anchor != null &&\n !Point.equals(props.anchor, selection.anchor)) ||\n (k === 'focus' &&\n props.focus != null &&\n !Point.equals(props.focus, selection.focus)) ||\n (k !== 'anchor' && k !== 'focus' && props[k] !== selection[k])\n ) {\n oldProps[k] = selection[k]\n newProps[k] = props[k]\n }\n }\n\n if (Object.keys(oldProps).length > 0) {\n editor.apply({\n type: 'set_selection',\n properties: oldProps,\n newProperties: newProps,\n })\n }\n },\n}\n","import {\n Editor,\n Element,\n Location,\n Node,\n NodeEntry,\n Path,\n Text,\n Point,\n Range,\n Transforms,\n} from '..'\nimport { TextUnit } from '../interfaces/types'\n\nexport interface TextDeleteOptions {\n at?: Location\n distance?: number\n unit?: TextUnit\n reverse?: boolean\n hanging?: boolean\n voids?: boolean\n}\n\nexport interface TextInsertFragmentOptions {\n at?: Location\n hanging?: boolean\n voids?: boolean\n}\n\nexport interface TextInsertTextOptions {\n at?: Location\n voids?: boolean\n}\n\nexport interface TextTransforms {\n delete: (editor: Editor, options?: TextDeleteOptions) => void\n insertFragment: (\n editor: Editor,\n fragment: Node[],\n options?: TextInsertFragmentOptions\n ) => void\n insertText: (\n editor: Editor,\n text: string,\n options?: TextInsertTextOptions\n ) => void\n}\n\n// eslint-disable-next-line no-redeclare\nexport const TextTransforms: TextTransforms = {\n /**\n * Delete content in the editor.\n */\n\n delete(editor: Editor, options: TextDeleteOptions = {}): void {\n Editor.withoutNormalizing(editor, () => {\n const {\n reverse = false,\n unit = 'character',\n distance = 1,\n voids = false,\n } = options\n let { at = editor.selection, hanging = false } = options\n\n if (!at) {\n return\n }\n\n let isCollapsed = false\n if (Range.isRange(at) && Range.isCollapsed(at)) {\n isCollapsed = true\n at = at.anchor\n }\n\n if (Point.isPoint(at)) {\n const furthestVoid = Editor.void(editor, { at, mode: 'highest' })\n\n if (!voids && furthestVoid) {\n const [, voidPath] = furthestVoid\n at = voidPath\n } else {\n const opts = { unit, distance }\n const target = reverse\n ? Editor.before(editor, at, opts) || Editor.start(editor, [])\n : Editor.after(editor, at, opts) || Editor.end(editor, [])\n at = { anchor: at, focus: target }\n hanging = true\n }\n }\n\n if (Path.isPath(at)) {\n Transforms.removeNodes(editor, { at, voids })\n return\n }\n\n if (Range.isCollapsed(at)) {\n return\n }\n\n if (!hanging) {\n const [, end] = Range.edges(at)\n const endOfDoc = Editor.end(editor, [])\n\n if (!Point.equals(end, endOfDoc)) {\n at = Editor.unhangRange(editor, at, { voids })\n }\n }\n\n let [start, end] = Range.edges(at)\n const startBlock = Editor.above(editor, {\n match: n => Editor.isBlock(editor, n),\n at: start,\n voids,\n })\n const endBlock = Editor.above(editor, {\n match: n => Editor.isBlock(editor, n),\n at: end,\n voids,\n })\n const isAcrossBlocks =\n startBlock && endBlock && !Path.equals(startBlock[1], endBlock[1])\n const isSingleText = Path.equals(start.path, end.path)\n const startVoid = voids\n ? null\n : Editor.void(editor, { at: start, mode: 'highest' })\n const endVoid = voids\n ? null\n : Editor.void(editor, { at: end, mode: 'highest' })\n\n // If the start or end points are inside an inline void, nudge them out.\n if (startVoid) {\n const before = Editor.before(editor, start)\n\n if (\n before &&\n startBlock &&\n Path.isAncestor(startBlock[1], before.path)\n ) {\n start = before\n }\n }\n\n if (endVoid) {\n const after = Editor.after(editor, end)\n\n if (after && endBlock && Path.isAncestor(endBlock[1], after.path)) {\n end = after\n }\n }\n\n // Get the highest nodes that are completely inside the range, as well as\n // the start and end nodes.\n const matches: NodeEntry[] = []\n let lastPath: Path | undefined\n\n for (const entry of Editor.nodes(editor, { at, voids })) {\n const [node, path] = entry\n\n if (lastPath && Path.compare(path, lastPath) === 0) {\n continue\n }\n\n if (\n (!voids && Editor.isVoid(editor, node)) ||\n (!Path.isCommon(path, start.path) && !Path.isCommon(path, end.path))\n ) {\n matches.push(entry)\n lastPath = path\n }\n }\n\n const pathRefs = Array.from(matches, ([, p]) => Editor.pathRef(editor, p))\n const startRef = Editor.pointRef(editor, start)\n const endRef = Editor.pointRef(editor, end)\n\n let removedText = ''\n\n if (!isSingleText && !startVoid) {\n const point = startRef.current!\n const [node] = Editor.leaf(editor, point)\n const { path } = point\n const { offset } = start\n const text = node.text.slice(offset)\n if (text.length > 0) {\n editor.apply({ type: 'remove_text', path, offset, text })\n removedText = text\n }\n }\n\n pathRefs\n .reverse()\n .map(r => r.unref())\n .filter((r): r is Path => r !== null)\n .forEach(p => Transforms.removeNodes(editor, { at: p, voids }))\n\n if (!endVoid) {\n const point = endRef.current!\n const [node] = Editor.leaf(editor, point)\n const { path } = point\n const offset = isSingleText ? start.offset : 0\n const text = node.text.slice(offset, end.offset)\n if (text.length > 0) {\n editor.apply({ type: 'remove_text', path, offset, text })\n removedText = text\n }\n }\n\n if (\n !isSingleText &&\n isAcrossBlocks &&\n endRef.current &&\n startRef.current\n ) {\n Transforms.mergeNodes(editor, {\n at: endRef.current,\n hanging: true,\n voids,\n })\n }\n\n // For Thai script, deleting N character(s) backward should delete\n // N code point(s) instead of an entire grapheme cluster.\n // Therefore, the remaining code points should be inserted back.\n if (\n isCollapsed &&\n reverse &&\n unit === 'character' &&\n removedText.length > 1 &&\n removedText.match(/[\\u0E00-\\u0E7F]+/)\n ) {\n Transforms.insertText(\n editor,\n removedText.slice(0, removedText.length - distance)\n )\n }\n\n const startUnref = startRef.unref()\n const endUnref = endRef.unref()\n const point = reverse ? startUnref || endUnref : endUnref || startUnref\n\n if (options.at == null && point) {\n Transforms.select(editor, point)\n }\n })\n },\n\n /**\n * Insert a fragment at a specific location in the editor.\n */\n\n insertFragment(\n editor: Editor,\n fragment: Node[],\n options: TextInsertFragmentOptions = {}\n ): void {\n Editor.withoutNormalizing(editor, () => {\n const { hanging = false, voids = false } = options\n let { at = editor.selection } = options\n\n if (!fragment.length) {\n return\n }\n\n if (!at) {\n return\n } else if (Range.isRange(at)) {\n if (!hanging) {\n at = Editor.unhangRange(editor, at)\n }\n\n if (Range.isCollapsed(at)) {\n at = at.anchor\n } else {\n const [, end] = Range.edges(at)\n\n if (!voids && Editor.void(editor, { at: end })) {\n return\n }\n\n const pointRef = Editor.pointRef(editor, end)\n Transforms.delete(editor, { at })\n at = pointRef.unref()!\n }\n } else if (Path.isPath(at)) {\n at = Editor.start(editor, at)\n }\n\n if (!voids && Editor.void(editor, { at })) {\n return\n }\n\n // If the insert point is at the edge of an inline node, move it outside\n // instead since it will need to be split otherwise.\n const inlineElementMatch = Editor.above(editor, {\n at,\n match: n => Editor.isInline(editor, n),\n mode: 'highest',\n voids,\n })\n\n if (inlineElementMatch) {\n const [, inlinePath] = inlineElementMatch\n\n if (Editor.isEnd(editor, at, inlinePath)) {\n const after = Editor.after(editor, inlinePath)!\n at = after\n } else if (Editor.isStart(editor, at, inlinePath)) {\n const before = Editor.before(editor, inlinePath)!\n at = before\n }\n }\n\n const blockMatch = Editor.above(editor, {\n match: n => Editor.isBlock(editor, n),\n at,\n voids,\n })!\n const [, blockPath] = blockMatch\n const isBlockStart = Editor.isStart(editor, at, blockPath)\n const isBlockEnd = Editor.isEnd(editor, at, blockPath)\n const isBlockEmpty = isBlockStart && isBlockEnd\n const mergeStart = !isBlockStart || (isBlockStart && isBlockEnd)\n const mergeEnd = !isBlockEnd\n const [, firstPath] = Node.first({ children: fragment }, [])\n const [, lastPath] = Node.last({ children: fragment }, [])\n\n const matches: NodeEntry[] = []\n const matcher = ([n, p]: NodeEntry) => {\n const isRoot = p.length === 0\n if (isRoot) {\n return false\n }\n\n if (isBlockEmpty) {\n return true\n }\n\n if (\n mergeStart &&\n Path.isAncestor(p, firstPath) &&\n Element.isElement(n) &&\n !editor.isVoid(n) &&\n !editor.isInline(n)\n ) {\n return false\n }\n\n if (\n mergeEnd &&\n Path.isAncestor(p, lastPath) &&\n Element.isElement(n) &&\n !editor.isVoid(n) &&\n !editor.isInline(n)\n ) {\n return false\n }\n\n return true\n }\n\n for (const entry of Node.nodes(\n { children: fragment },\n { pass: matcher }\n )) {\n if (matcher(entry)) {\n matches.push(entry)\n }\n }\n\n const starts = []\n const middles = []\n const ends = []\n let starting = true\n let hasBlocks = false\n\n for (const [node] of matches) {\n if (Element.isElement(node) && !editor.isInline(node)) {\n starting = false\n hasBlocks = true\n middles.push(node)\n } else if (starting) {\n starts.push(node)\n } else {\n ends.push(node)\n }\n }\n\n const [inlineMatch] = Editor.nodes(editor, {\n at,\n match: n => Text.isText(n) || Editor.isInline(editor, n),\n mode: 'highest',\n voids,\n })!\n\n const [, inlinePath] = inlineMatch\n const isInlineStart = Editor.isStart(editor, at, inlinePath)\n const isInlineEnd = Editor.isEnd(editor, at, inlinePath)\n\n const middleRef = Editor.pathRef(\n editor,\n isBlockEnd && !ends.length ? Path.next(blockPath) : blockPath\n )\n\n const endRef = Editor.pathRef(\n editor,\n isInlineEnd ? Path.next(inlinePath) : inlinePath\n )\n\n Transforms.splitNodes(editor, {\n at,\n match: n =>\n hasBlocks\n ? Editor.isBlock(editor, n)\n : Text.isText(n) || Editor.isInline(editor, n),\n mode: hasBlocks ? 'lowest' : 'highest',\n always:\n hasBlocks &&\n (!isBlockStart || starts.length > 0) &&\n (!isBlockEnd || ends.length > 0),\n voids,\n })\n\n const startRef = Editor.pathRef(\n editor,\n !isInlineStart || (isInlineStart && isInlineEnd)\n ? Path.next(inlinePath)\n : inlinePath\n )\n\n Transforms.insertNodes(editor, starts, {\n at: startRef.current!,\n match: n => Text.isText(n) || Editor.isInline(editor, n),\n mode: 'highest',\n voids,\n })\n\n if (isBlockEmpty && !starts.length && middles.length && !ends.length) {\n Transforms.delete(editor, { at: blockPath, voids })\n }\n\n Transforms.insertNodes(editor, middles, {\n at: middleRef.current!,\n match: n => Editor.isBlock(editor, n),\n mode: 'lowest',\n voids,\n })\n\n Transforms.insertNodes(editor, ends, {\n at: endRef.current!,\n match: n => Text.isText(n) || Editor.isInline(editor, n),\n mode: 'highest',\n voids,\n })\n\n if (!options.at) {\n let path\n\n if (ends.length > 0 && endRef.current) {\n path = Path.previous(endRef.current)\n } else if (middles.length > 0 && middleRef.current) {\n path = Path.previous(middleRef.current)\n } else if (startRef.current) {\n path = Path.previous(startRef.current)\n }\n\n if (path) {\n const end = Editor.end(editor, path)\n Transforms.select(editor, end)\n }\n }\n\n startRef.unref()\n middleRef.unref()\n endRef.unref()\n })\n },\n\n /**\n * Insert a string of text in the Editor.\n */\n\n insertText(\n editor: Editor,\n text: string,\n options: TextInsertTextOptions = {}\n ): void {\n Editor.withoutNormalizing(editor, () => {\n const { voids = false } = options\n let { at = editor.selection } = options\n\n if (!at) {\n return\n }\n\n if (Path.isPath(at)) {\n at = Editor.range(editor, at)\n }\n\n if (Range.isRange(at)) {\n if (Range.isCollapsed(at)) {\n at = at.anchor\n } else {\n const end = Range.end(at)\n if (!voids && Editor.void(editor, { at: end })) {\n return\n }\n const start = Range.start(at)\n const startRef = Editor.pointRef(editor, start)\n const endRef = Editor.pointRef(editor, end)\n Transforms.delete(editor, { at, voids })\n const startPoint = startRef.unref()\n const endPoint = endRef.unref()\n\n at = startPoint || endPoint!\n Transforms.setSelection(editor, { anchor: at, focus: at })\n }\n }\n\n if (!voids && Editor.void(editor, { at })) {\n return\n }\n\n const { path, offset } = at\n if (text.length > 0)\n editor.apply({ type: 'insert_text', path, offset, text })\n })\n },\n}\n","import { GeneralTransforms } from './general'\nimport { NodeTransforms } from './node'\nimport { SelectionTransforms } from './selection'\nimport { TextTransforms } from './text'\n\nexport const Transforms: GeneralTransforms &\n NodeTransforms &\n SelectionTransforms &\n TextTransforms = {\n ...GeneralTransforms,\n ...NodeTransforms,\n ...SelectionTransforms,\n ...TextTransforms,\n}\n","import { isPlainObject } from 'is-plain-object'\nimport { Operation } from 'slate'\n\n/**\n * `History` objects hold all of the operations that are applied to a value, so\n * they can be undone or redone as necessary.\n */\n\nexport interface History {\n redos: Operation[][]\n undos: Operation[][]\n}\n\nexport const History = {\n /**\n * Check if a value is a `History` object.\n */\n\n isHistory(value: any): value is History {\n return (\n isPlainObject(value) &&\n Array.isArray(value.redos) &&\n Array.isArray(value.undos) &&\n (value.redos.length === 0 || Operation.isOperationList(value.redos[0])) &&\n (value.undos.length === 0 || Operation.isOperationList(value.undos[0]))\n )\n },\n}\n","import { BaseEditor, Editor } from 'slate'\nimport { History } from './history'\n\n/**\n * Weakmaps for attaching state to the editor.\n */\n\nexport const HISTORY = new WeakMap()\nexport const SAVING = new WeakMap()\nexport const MERGING = new WeakMap()\n\n/**\n * `HistoryEditor` contains helpers for history-enabled editors.\n */\n\nexport interface HistoryEditor extends BaseEditor {\n history: History\n undo: () => void\n redo: () => void\n}\n\nexport const HistoryEditor = {\n /**\n * Check if a value is a `HistoryEditor` object.\n */\n\n isHistoryEditor(value: any): value is HistoryEditor {\n return History.isHistory(value.history) && Editor.isEditor(value)\n },\n\n /**\n * Get the merge flag's current value.\n */\n\n isMerging(editor: HistoryEditor): boolean | undefined {\n return MERGING.get(editor)\n },\n\n /**\n * Get the saving flag's current value.\n */\n\n isSaving(editor: HistoryEditor): boolean | undefined {\n return SAVING.get(editor)\n },\n\n /**\n * Redo to the previous saved state.\n */\n\n redo(editor: HistoryEditor): void {\n editor.redo()\n },\n\n /**\n * Undo to the previous saved state.\n */\n\n undo(editor: HistoryEditor): void {\n editor.undo()\n },\n\n /**\n * Apply a series of changes inside a synchronous `fn`, without merging any of\n * the new operations into previous save point in the history.\n */\n\n withoutMerging(editor: HistoryEditor, fn: () => void): void {\n const prev = HistoryEditor.isMerging(editor)\n MERGING.set(editor, false)\n fn()\n MERGING.set(editor, prev)\n },\n\n /**\n * Apply a series of changes inside a synchronous `fn`, without saving any of\n * their operations into the history.\n */\n\n withoutSaving(editor: HistoryEditor, fn: () => void): void {\n const prev = HistoryEditor.isSaving(editor)\n SAVING.set(editor, false)\n fn()\n SAVING.set(editor, prev)\n },\n}\n","import { Editor, Operation, Path } from 'slate'\n\nimport { HistoryEditor } from './history-editor'\n\n/**\n * The `withHistory` plugin keeps track of the operation history of a Slate\n * editor as operations are applied to it, using undo and redo stacks.\n *\n * If you are using TypeScript, you must extend Slate's CustomTypes to use\n * this plugin.\n *\n * See https://docs.slatejs.org/concepts/11-typescript to learn how.\n */\n\nexport const withHistory = (editor: T) => {\n const e = editor as T & HistoryEditor\n const { apply } = e\n e.history = { undos: [], redos: [] }\n\n e.redo = () => {\n const { history } = e\n const { redos } = history\n\n if (redos.length > 0) {\n const batch = redos[redos.length - 1]\n\n HistoryEditor.withoutSaving(e, () => {\n Editor.withoutNormalizing(e, () => {\n for (const op of batch) {\n e.apply(op)\n }\n })\n })\n\n history.redos.pop()\n history.undos.push(batch)\n }\n }\n\n e.undo = () => {\n const { history } = e\n const { undos } = history\n\n if (undos.length > 0) {\n const batch = undos[undos.length - 1]\n\n HistoryEditor.withoutSaving(e, () => {\n Editor.withoutNormalizing(e, () => {\n const inverseOps = batch.map(Operation.inverse).reverse()\n\n for (const op of inverseOps) {\n e.apply(op)\n }\n })\n })\n\n history.redos.push(batch)\n history.undos.pop()\n }\n }\n\n e.apply = (op: Operation) => {\n const { operations, history } = e\n const { undos } = history\n const lastBatch = undos[undos.length - 1]\n const lastOp = lastBatch && lastBatch[lastBatch.length - 1]\n const overwrite = shouldOverwrite(op, lastOp)\n let save = HistoryEditor.isSaving(e)\n let merge = HistoryEditor.isMerging(e)\n\n if (save == null) {\n save = shouldSave(op, lastOp)\n }\n\n if (save) {\n if (merge == null) {\n if (lastBatch == null) {\n merge = false\n } else if (operations.length !== 0) {\n merge = true\n } else {\n merge = shouldMerge(op, lastOp) || overwrite\n }\n }\n\n if (lastBatch && merge) {\n if (overwrite) {\n lastBatch.pop()\n }\n\n lastBatch.push(op)\n } else {\n const batch = [op]\n undos.push(batch)\n }\n\n while (undos.length > 100) {\n undos.shift()\n }\n\n if (shouldClear(op)) {\n history.redos = []\n }\n }\n\n apply(op)\n }\n\n return e\n}\n\n/**\n * Check whether to merge an operation into the previous operation.\n */\n\nconst shouldMerge = (op: Operation, prev: Operation | undefined): boolean => {\n if (op.type === 'set_selection') {\n return true\n }\n\n if (\n prev &&\n op.type === 'insert_text' &&\n prev.type === 'insert_text' &&\n op.offset === prev.offset + prev.text.length &&\n Path.equals(op.path, prev.path)\n ) {\n return true\n }\n\n if (\n prev &&\n op.type === 'remove_text' &&\n prev.type === 'remove_text' &&\n op.offset + op.text.length === prev.offset &&\n Path.equals(op.path, prev.path)\n ) {\n return true\n }\n\n return false\n}\n\n/**\n * Check whether an operation needs to be saved to the history.\n */\n\nconst shouldSave = (op: Operation, prev: Operation | undefined): boolean => {\n if (\n op.type === 'set_selection' &&\n (op.properties == null || op.newProperties == null)\n ) {\n return false\n }\n\n return true\n}\n\n/**\n * Check whether an operation should overwrite the previous one.\n */\n\nconst shouldOverwrite = (\n op: Operation,\n prev: Operation | undefined\n): boolean => {\n if (prev && op.type === 'set_selection' && prev.type === 'set_selection') {\n return true\n }\n\n return false\n}\n\n/**\n * Check whether an operation should clear the redos stack.\n */\n\nconst shouldClear = (op: Operation): boolean => {\n if (op.type === 'set_selection') {\n return false\n }\n\n return true\n}\n","// Compute what scrolling needs to be done on required scrolling boxes for target to be in view\n\n// The type names here are named after the spec to make it easier to find more information around what they mean:\n// To reduce churn and reduce things that need be maintained things from the official TS DOM library is used here\n// https://drafts.csswg.org/cssom-view/\n\n// For a definition on what is \"block flow direction\" exactly, check this: https://drafts.csswg.org/css-writing-modes-4/#block-flow-direction\n\n// add support for visualViewport object currently implemented in chrome\ninterface visualViewport {\n height: number\n width: number\n}\n\ntype ScrollLogicalPosition = 'start' | 'center' | 'end' | 'nearest'\n// This new option is tracked in this PR, which is the most likely candidate at the time: https://github.com/w3c/csswg-drafts/pull/1805\ntype ScrollMode = 'always' | 'if-needed'\n// New option that skips auto-scrolling all nodes with overflow: hidden set\n// See FF implementation: https://hg.mozilla.org/integration/fx-team/rev/c48c3ec05012#l7.18\ntype SkipOverflowHiddenElements = boolean\n\ninterface Options {\n block?: ScrollLogicalPosition\n inline?: ScrollLogicalPosition\n scrollMode?: ScrollMode\n boundary?: CustomScrollBoundary\n skipOverflowHiddenElements?: SkipOverflowHiddenElements\n}\n\n// Custom behavior, not in any spec\ntype CustomScrollBoundaryCallback = (parent: Element) => boolean\ntype CustomScrollBoundary = Element | CustomScrollBoundaryCallback | null\ninterface CustomScrollAction {\n el: Element\n top: number\n left: number\n}\n\n// @TODO better shadowdom test, 11 = document fragment\nfunction isElement(el: any): el is Element {\n return typeof el === 'object' && el != null && el.nodeType === 1\n}\n\nfunction canOverflow(\n overflow: string | null,\n skipOverflowHiddenElements?: boolean\n) {\n if (skipOverflowHiddenElements && overflow === 'hidden') {\n return false\n }\n\n return overflow !== 'visible' && overflow !== 'clip'\n}\n\nfunction getFrameElement(el: Element) {\n if (!el.ownerDocument || !el.ownerDocument.defaultView) {\n return null\n }\n\n try {\n return el.ownerDocument.defaultView.frameElement\n } catch (e) {\n return null\n }\n}\n\nfunction isHiddenByFrame(el: Element): boolean {\n const frame = getFrameElement(el)\n if (!frame) {\n return false\n }\n\n return (\n frame.clientHeight < el.scrollHeight || frame.clientWidth < el.scrollWidth\n )\n}\n\nfunction isScrollable(el: Element, skipOverflowHiddenElements?: boolean) {\n if (el.clientHeight < el.scrollHeight || el.clientWidth < el.scrollWidth) {\n const style = getComputedStyle(el, null)\n return (\n canOverflow(style.overflowY, skipOverflowHiddenElements) ||\n canOverflow(style.overflowX, skipOverflowHiddenElements) ||\n isHiddenByFrame(el)\n )\n }\n\n return false\n}\n/**\n * Find out which edge to align against when logical scroll position is \"nearest\"\n * Interesting fact: \"nearest\" works similarily to \"if-needed\", if the element is fully visible it will not scroll it\n *\n * Legends:\n * ┌────────┐ ┏ ━ ━ ━ ┓\n * │ target │ frame\n * └────────┘ ┗ ━ ━ ━ ┛\n */\nfunction alignNearest(\n scrollingEdgeStart: number,\n scrollingEdgeEnd: number,\n scrollingSize: number,\n scrollingBorderStart: number,\n scrollingBorderEnd: number,\n elementEdgeStart: number,\n elementEdgeEnd: number,\n elementSize: number\n) {\n /**\n * If element edge A and element edge B are both outside scrolling box edge A and scrolling box edge B\n *\n * ┌──┐\n * ┏━│━━│━┓\n * │ │\n * ┃ │ │ ┃ do nothing\n * │ │\n * ┗━│━━│━┛\n * └──┘\n *\n * If element edge C and element edge D are both outside scrolling box edge C and scrolling box edge D\n *\n * ┏ ━ ━ ━ ━ ┓\n * ┌───────────┐\n * │┃ ┃│ do nothing\n * └───────────┘\n * ┗ ━ ━ ━ ━ ┛\n */\n if (\n (elementEdgeStart < scrollingEdgeStart &&\n elementEdgeEnd > scrollingEdgeEnd) ||\n (elementEdgeStart > scrollingEdgeStart && elementEdgeEnd < scrollingEdgeEnd)\n ) {\n return 0\n }\n\n /**\n * If element edge A is outside scrolling box edge A and element height is less than scrolling box height\n *\n * ┌──┐\n * ┏━│━━│━┓ ┏━┌━━┐━┓\n * └──┘ │ │\n * from ┃ ┃ to ┃ └──┘ ┃\n *\n * ┗━ ━━ ━┛ ┗━ ━━ ━┛\n *\n * If element edge B is outside scrolling box edge B and element height is greater than scrolling box height\n *\n * ┏━ ━━ ━┓ ┏━┌━━┐━┓\n * │ │\n * from ┃ ┌──┐ ┃ to ┃ │ │ ┃\n * │ │ │ │\n * ┗━│━━│━┛ ┗━│━━│━┛\n * │ │ └──┘\n * │ │\n * └──┘\n *\n * If element edge C is outside scrolling box edge C and element width is less than scrolling box width\n *\n * from to\n * ┏ ━ ━ ━ ━ ┓ ┏ ━ ━ ━ ━ ┓\n * ┌───┐ ┌───┐\n * │ ┃ │ ┃ ┃ │ ┃\n * └───┘ └───┘\n * ┗ ━ ━ ━ ━ ┛ ┗ ━ ━ ━ ━ ┛\n *\n * If element edge D is outside scrolling box edge D and element width is greater than scrolling box width\n *\n * from to\n * ┏ ━ ━ ━ ━ ┓ ┏ ━ ━ ━ ━ ┓\n * ┌───────────┐ ┌───────────┐\n * ┃ │ ┃ │ ┃ ┃ │\n * └───────────┘ └───────────┘\n * ┗ ━ ━ ━ ━ ┛ ┗ ━ ━ ━ ━ ┛\n */\n if (\n (elementEdgeStart <= scrollingEdgeStart && elementSize <= scrollingSize) ||\n (elementEdgeEnd >= scrollingEdgeEnd && elementSize >= scrollingSize)\n ) {\n return elementEdgeStart - scrollingEdgeStart - scrollingBorderStart\n }\n\n /**\n * If element edge B is outside scrolling box edge B and element height is less than scrolling box height\n *\n * ┏━ ━━ ━┓ ┏━ ━━ ━┓\n *\n * from ┃ ┃ to ┃ ┌──┐ ┃\n * ┌──┐ │ │\n * ┗━│━━│━┛ ┗━└━━┘━┛\n * └──┘\n *\n * If element edge A is outside scrolling box edge A and element height is greater than scrolling box height\n *\n * ┌──┐\n * │ │\n * │ │ ┌──┐\n * ┏━│━━│━┓ ┏━│━━│━┓\n * │ │ │ │\n * from ┃ └──┘ ┃ to ┃ │ │ ┃\n * │ │\n * ┗━ ━━ ━┛ ┗━└━━┘━┛\n *\n * If element edge C is outside scrolling box edge C and element width is greater than scrolling box width\n *\n * from to\n * ┏ ━ ━ ━ ━ ┓ ┏ ━ ━ ━ ━ ┓\n * ┌───────────┐ ┌───────────┐\n * │ ┃ │ ┃ │ ┃ ┃\n * └───────────┘ └───────────┘\n * ┗ ━ ━ ━ ━ ┛ ┗ ━ ━ ━ ━ ┛\n *\n * If element edge D is outside scrolling box edge D and element width is less than scrolling box width\n *\n * from to\n * ┏ ━ ━ ━ ━ ┓ ┏ ━ ━ ━ ━ ┓\n * ┌───┐ ┌───┐\n * ┃ │ ┃ │ ┃ │ ┃\n * └───┘ └───┘\n * ┗ ━ ━ ━ ━ ┛ ┗ ━ ━ ━ ━ ┛\n *\n */\n if (\n (elementEdgeEnd > scrollingEdgeEnd && elementSize < scrollingSize) ||\n (elementEdgeStart < scrollingEdgeStart && elementSize > scrollingSize)\n ) {\n return elementEdgeEnd - scrollingEdgeEnd + scrollingBorderEnd\n }\n\n return 0\n}\n\nexport default (target: Element, options: Options): CustomScrollAction[] => {\n //TODO: remove this hack when microbundle will support typescript >= 4.0\n const windowWithViewport = (window as unknown) as Window & {\n visualViewport: visualViewport\n }\n\n const {\n scrollMode,\n block,\n inline,\n boundary,\n skipOverflowHiddenElements,\n } = options\n // Allow using a callback to check the boundary\n // The default behavior is to check if the current target matches the boundary element or not\n // If undefined it'll check that target is never undefined (can happen as we recurse up the tree)\n const checkBoundary =\n typeof boundary === 'function' ? boundary : (node: any) => node !== boundary\n\n if (!isElement(target)) {\n throw new TypeError('Invalid target')\n }\n\n // Used to handle the top most element that can be scrolled\n const scrollingElement = document.scrollingElement || document.documentElement\n\n // Collect all the scrolling boxes, as defined in the spec: https://drafts.csswg.org/cssom-view/#scrolling-box\n const frames: Element[] = []\n let cursor: Element | null = target\n while (isElement(cursor) && checkBoundary(cursor)) {\n // Move cursor to parent\n cursor = cursor.parentElement\n\n // Stop when we reach the viewport\n if (cursor === scrollingElement) {\n frames.push(cursor)\n break\n }\n\n // Skip document.body if it's not the scrollingElement and documentElement isn't independently scrollable\n if (\n cursor != null &&\n cursor === document.body &&\n isScrollable(cursor) &&\n !isScrollable(document.documentElement)\n ) {\n continue\n }\n\n // Now we check if the element is scrollable, this code only runs if the loop haven't already hit the viewport or a custom boundary\n if (cursor != null && isScrollable(cursor, skipOverflowHiddenElements)) {\n frames.push(cursor)\n }\n }\n\n // Support pinch-zooming properly, making sure elements scroll into the visual viewport\n // Browsers that don't support visualViewport will report the layout viewport dimensions on document.documentElement.clientWidth/Height\n // and viewport dimensions on window.innerWidth/Height\n // https://www.quirksmode.org/mobile/viewports2.html\n // https://bokand.github.io/viewport/index.html\n const viewportWidth = windowWithViewport.visualViewport\n ? windowWithViewport.visualViewport.width\n : innerWidth\n const viewportHeight = windowWithViewport.visualViewport\n ? windowWithViewport.visualViewport.height\n : innerHeight\n\n // Newer browsers supports scroll[X|Y], page[X|Y]Offset is\n const viewportX = window.scrollX || pageXOffset\n const viewportY = window.scrollY || pageYOffset\n\n const {\n height: targetHeight,\n width: targetWidth,\n top: targetTop,\n right: targetRight,\n bottom: targetBottom,\n left: targetLeft,\n } = target.getBoundingClientRect()\n\n // These values mutate as we loop through and generate scroll coordinates\n let targetBlock: number =\n block === 'start' || block === 'nearest'\n ? targetTop\n : block === 'end'\n ? targetBottom\n : targetTop + targetHeight / 2 // block === 'center\n let targetInline: number =\n inline === 'center'\n ? targetLeft + targetWidth / 2\n : inline === 'end'\n ? targetRight\n : targetLeft // inline === 'start || inline === 'nearest\n\n // Collect new scroll positions\n const computations: CustomScrollAction[] = []\n // In chrome there's no longer a difference between caching the `frames.length` to a var or not, so we don't in this case (size > speed anyways)\n for (let index = 0; index < frames.length; index++) {\n const frame = frames[index]\n\n // @TODO add a shouldScroll hook here that allows userland code to take control\n\n const {\n height,\n width,\n top,\n right,\n bottom,\n left,\n } = frame.getBoundingClientRect()\n\n // If the element is already visible we can end it here\n // @TODO targetBlock and targetInline should be taken into account to be compliant with https://github.com/w3c/csswg-drafts/pull/1805/files#diff-3c17f0e43c20f8ecf89419d49e7ef5e0R1333\n if (\n scrollMode === 'if-needed' &&\n targetTop >= 0 &&\n targetLeft >= 0 &&\n targetBottom <= viewportHeight &&\n targetRight <= viewportWidth &&\n targetTop >= top &&\n targetBottom <= bottom &&\n targetLeft >= left &&\n targetRight <= right\n ) {\n // Break the loop and return the computations for things that are not fully visible\n return computations\n }\n\n const frameStyle = getComputedStyle(frame)\n const borderLeft = parseInt(frameStyle.borderLeftWidth as string, 10)\n const borderTop = parseInt(frameStyle.borderTopWidth as string, 10)\n const borderRight = parseInt(frameStyle.borderRightWidth as string, 10)\n const borderBottom = parseInt(frameStyle.borderBottomWidth as string, 10)\n\n let blockScroll: number = 0\n let inlineScroll: number = 0\n\n // The property existance checks for offfset[Width|Height] is because only HTMLElement objects have them, but any Element might pass by here\n // @TODO find out if the \"as HTMLElement\" overrides can be dropped\n const scrollbarWidth =\n 'offsetWidth' in frame\n ? (frame as HTMLElement).offsetWidth -\n (frame as HTMLElement).clientWidth -\n borderLeft -\n borderRight\n : 0\n const scrollbarHeight =\n 'offsetHeight' in frame\n ? (frame as HTMLElement).offsetHeight -\n (frame as HTMLElement).clientHeight -\n borderTop -\n borderBottom\n : 0\n\n if (scrollingElement === frame) {\n // Handle viewport logic (document.documentElement or document.body)\n\n if (block === 'start') {\n blockScroll = targetBlock\n } else if (block === 'end') {\n blockScroll = targetBlock - viewportHeight\n } else if (block === 'nearest') {\n blockScroll = alignNearest(\n viewportY,\n viewportY + viewportHeight,\n viewportHeight,\n borderTop,\n borderBottom,\n viewportY + targetBlock,\n viewportY + targetBlock + targetHeight,\n targetHeight\n )\n } else {\n // block === 'center' is the default\n blockScroll = targetBlock - viewportHeight / 2\n }\n\n if (inline === 'start') {\n inlineScroll = targetInline\n } else if (inline === 'center') {\n inlineScroll = targetInline - viewportWidth / 2\n } else if (inline === 'end') {\n inlineScroll = targetInline - viewportWidth\n } else {\n // inline === 'nearest' is the default\n inlineScroll = alignNearest(\n viewportX,\n viewportX + viewportWidth,\n viewportWidth,\n borderLeft,\n borderRight,\n viewportX + targetInline,\n viewportX + targetInline + targetWidth,\n targetWidth\n )\n }\n\n // Apply scroll position offsets and ensure they are within bounds\n // @TODO add more test cases to cover this 100%\n blockScroll = Math.max(0, blockScroll + viewportY)\n inlineScroll = Math.max(0, inlineScroll + viewportX)\n } else {\n // Handle each scrolling frame that might exist between the target and the viewport\n\n if (block === 'start') {\n blockScroll = targetBlock - top - borderTop\n } else if (block === 'end') {\n blockScroll = targetBlock - bottom + borderBottom + scrollbarHeight\n } else if (block === 'nearest') {\n blockScroll = alignNearest(\n top,\n bottom,\n height,\n borderTop,\n borderBottom + scrollbarHeight,\n targetBlock,\n targetBlock + targetHeight,\n targetHeight\n )\n } else {\n // block === 'center' is the default\n blockScroll = targetBlock - (top + height / 2) + scrollbarHeight / 2\n }\n\n if (inline === 'start') {\n inlineScroll = targetInline - left - borderLeft\n } else if (inline === 'center') {\n inlineScroll = targetInline - (left + width / 2) + scrollbarWidth / 2\n } else if (inline === 'end') {\n inlineScroll = targetInline - right + borderRight + scrollbarWidth\n } else {\n // inline === 'nearest' is the default\n inlineScroll = alignNearest(\n left,\n right,\n width,\n borderLeft,\n borderRight + scrollbarWidth,\n targetInline,\n targetInline + targetWidth,\n targetWidth\n )\n }\n\n const { scrollLeft, scrollTop } = frame\n // Ensure scroll coordinates are not out of bounds while applying scroll offsets\n blockScroll = Math.max(\n 0,\n Math.min(\n scrollTop + blockScroll,\n frame.scrollHeight - height + scrollbarHeight\n )\n )\n inlineScroll = Math.max(\n 0,\n Math.min(\n scrollLeft + inlineScroll,\n frame.scrollWidth - width + scrollbarWidth\n )\n )\n\n // Cache the offset so that parent frames can scroll this into view correctly\n targetBlock += scrollTop - blockScroll\n targetInline += scrollLeft - inlineScroll\n }\n\n computations.push({ el: frame, top: blockScroll, left: inlineScroll })\n }\n\n return computations\n}\n","import compute from 'compute-scroll-into-view';\n\nfunction isOptionsObject(options) {\n return options === Object(options) && Object.keys(options).length !== 0;\n}\n\nfunction defaultBehavior(actions, behavior) {\n if (behavior === void 0) {\n behavior = 'auto';\n }\n\n var canSmoothScroll = ('scrollBehavior' in document.body.style);\n actions.forEach(function (_ref) {\n var el = _ref.el,\n top = _ref.top,\n left = _ref.left;\n\n if (el.scroll && canSmoothScroll) {\n el.scroll({\n top: top,\n left: left,\n behavior: behavior\n });\n } else {\n el.scrollTop = top;\n el.scrollLeft = left;\n }\n });\n}\n\nfunction getOptions(options) {\n if (options === false) {\n return {\n block: 'end',\n inline: 'nearest'\n };\n }\n\n if (isOptionsObject(options)) {\n return options;\n }\n\n return {\n block: 'start',\n inline: 'nearest'\n };\n}\n\nfunction scrollIntoView(target, options) {\n var isTargetAttached = target.isConnected || target.ownerDocument.documentElement.contains(target);\n\n if (isOptionsObject(options) && typeof options.behavior === 'function') {\n return options.behavior(isTargetAttached ? compute(target, options) : []);\n }\n\n if (!isTargetAttached) {\n return;\n }\n\n var computeOptions = getOptions(options);\n return defaultBehavior(compute(target, computeOptions), computeOptions.behavior);\n}\n\nexport default scrollIntoView;","/**\n * An auto-incrementing identifier for keys.\n */\n\nlet n = 0\n\n/**\n * A class that keeps track of a key string. We use a full class here because we\n * want to be able to use them as keys in `WeakMap` objects.\n */\n\nexport class Key {\n id: string\n\n constructor() {\n this.id = `${n++}`\n }\n}\n","import { Ancestor, Editor, Node, Range, RangeRef, Text } from 'slate'\nimport { Action } from '../hooks/android-input-manager/android-input-manager'\nimport { TextDiff } from './diff-text'\nimport { Key } from './key'\n\n/**\n * Two weak maps that allow us rebuild a path given a node. They are populated\n * at render time such that after a render occurs we can always backtrack.\n */\n\nexport const NODE_TO_INDEX: WeakMap = new WeakMap()\nexport const NODE_TO_PARENT: WeakMap = new WeakMap()\n\n/**\n * Weak maps that allow us to go between Slate nodes and DOM nodes. These\n * are used to resolve DOM event-related logic into Slate actions.\n */\nexport const EDITOR_TO_WINDOW: WeakMap = new WeakMap()\nexport const EDITOR_TO_ELEMENT: WeakMap = new WeakMap()\nexport const EDITOR_TO_PLACEHOLDER: WeakMap = new WeakMap()\nexport const EDITOR_TO_PLACEHOLDER_ELEMENT: WeakMap<\n Editor,\n HTMLElement\n> = new WeakMap()\nexport const ELEMENT_TO_NODE: WeakMap = new WeakMap()\nexport const NODE_TO_ELEMENT: WeakMap = new WeakMap()\nexport const NODE_TO_KEY: WeakMap = new WeakMap()\nexport const EDITOR_TO_KEY_TO_ELEMENT: WeakMap<\n Editor,\n WeakMap\n> = new WeakMap()\n\n/**\n * Weak maps for storing editor-related state.\n */\n\nexport const IS_READ_ONLY: WeakMap = new WeakMap()\nexport const IS_FOCUSED: WeakMap = new WeakMap()\nexport const IS_DRAGGING: WeakMap = new WeakMap()\nexport const IS_CLICKING: WeakMap = new WeakMap()\nexport const IS_COMPOSING: WeakMap = new WeakMap()\n\nexport const EDITOR_TO_USER_SELECTION: WeakMap<\n Editor,\n RangeRef | null\n> = new WeakMap()\n\n/**\n * Weak map for associating the context `onChange` context with the plugin.\n */\n\nexport const EDITOR_TO_ON_CHANGE = new WeakMap void>()\n\n/**\n * Weak maps for saving pending state on composition stage.\n */\n\nexport const EDITOR_TO_SCHEDULE_FLUSH: WeakMap<\n Editor,\n () => void\n> = new WeakMap()\n\nexport const EDITOR_TO_PENDING_INSERTION_MARKS: WeakMap<\n Editor,\n Partial | null\n> = new WeakMap()\n\nexport const EDITOR_TO_USER_MARKS: WeakMap<\n Editor,\n Partial | null\n> = new WeakMap()\n\n/**\n * Android input handling specific weak-maps\n */\n\nexport const EDITOR_TO_PENDING_DIFFS: WeakMap<\n Editor,\n TextDiff[]\n> = new WeakMap()\n\nexport const EDITOR_TO_PENDING_ACTION: WeakMap<\n Editor,\n Action | null\n> = new WeakMap()\n\nexport const EDITOR_TO_PENDING_SELECTION: WeakMap<\n Editor,\n Range | null\n> = new WeakMap()\n\nexport const EDITOR_TO_FORCE_RENDER: WeakMap void> = new WeakMap()\n\n/**\n * Symbols.\n */\n\nexport const PLACEHOLDER_SYMBOL = (Symbol('placeholder') as unknown) as string\nexport const MARK_PLACEHOLDER_SYMBOL = (Symbol(\n 'mark-placeholder'\n) as unknown) as string\n","/**\n * Types.\n */\n\n// COMPAT: This is required to prevent TypeScript aliases from doing some very\n// weird things for Slate's types with the same name as globals. (2019/11/27)\n// https://github.com/microsoft/TypeScript/issues/35002\nimport DOMNode = globalThis.Node\nimport DOMComment = globalThis.Comment\nimport DOMElement = globalThis.Element\nimport DOMText = globalThis.Text\nimport DOMRange = globalThis.Range\nimport DOMSelection = globalThis.Selection\nimport DOMStaticRange = globalThis.StaticRange\nimport { ReactEditor } from '../plugin/react-editor'\n\nexport {\n DOMNode,\n DOMComment,\n DOMElement,\n DOMText,\n DOMRange,\n DOMSelection,\n DOMStaticRange,\n}\n\ndeclare global {\n interface Window {\n Selection: typeof Selection['constructor']\n DataTransfer: typeof DataTransfer['constructor']\n Node: typeof Node['constructor']\n }\n}\n\nexport type DOMPoint = [Node, number]\n\n/**\n * Returns the host window of a DOM node\n */\n\nexport const getDefaultView = (value: any): Window | null => {\n return (\n (value && value.ownerDocument && value.ownerDocument.defaultView) || null\n )\n}\n\n/**\n * Check if a DOM node is a comment node.\n */\n\nexport const isDOMComment = (value: any): value is DOMComment => {\n return isDOMNode(value) && value.nodeType === 8\n}\n\n/**\n * Check if a DOM node is an element node.\n */\n\nexport const isDOMElement = (value: any): value is DOMElement => {\n return isDOMNode(value) && value.nodeType === 1\n}\n\n/**\n * Check if a value is a DOM node.\n */\n\nexport const isDOMNode = (value: any): value is DOMNode => {\n const window = getDefaultView(value)\n return !!window && value instanceof window.Node\n}\n\n/**\n * Check if a value is a DOM selection.\n */\n\nexport const isDOMSelection = (value: any): value is DOMSelection => {\n const window = value && value.anchorNode && getDefaultView(value.anchorNode)\n return !!window && value instanceof window.Selection\n}\n\n/**\n * Check if a DOM node is an element node.\n */\n\nexport const isDOMText = (value: any): value is DOMText => {\n return isDOMNode(value) && value.nodeType === 3\n}\n\n/**\n * Checks whether a paste event is a plaintext-only event.\n */\n\nexport const isPlainTextOnlyPaste = (event: ClipboardEvent) => {\n return (\n event.clipboardData &&\n event.clipboardData.getData('text/plain') !== '' &&\n event.clipboardData.types.length === 1\n )\n}\n\n/**\n * Normalize a DOM point so that it always refers to a text node.\n */\n\nexport const normalizeDOMPoint = (domPoint: DOMPoint): DOMPoint => {\n let [node, offset] = domPoint\n\n // If it's an element node, its offset refers to the index of its children\n // including comment nodes, so try to find the right text child node.\n if (isDOMElement(node) && node.childNodes.length) {\n let isLast = offset === node.childNodes.length\n let index = isLast ? offset - 1 : offset\n ;[node, index] = getEditableChildAndIndex(\n node,\n index,\n isLast ? 'backward' : 'forward'\n )\n // If the editable child found is in front of input offset, we instead seek to its end\n isLast = index < offset\n\n // If the node has children, traverse until we have a leaf node. Leaf nodes\n // can be either text nodes, or other void DOM nodes.\n while (isDOMElement(node) && node.childNodes.length) {\n const i = isLast ? node.childNodes.length - 1 : 0\n node = getEditableChild(node, i, isLast ? 'backward' : 'forward')\n }\n\n // Determine the new offset inside the text node.\n offset = isLast && node.textContent != null ? node.textContent.length : 0\n }\n\n // Return the node and offset.\n return [node, offset]\n}\n\n/**\n * Determines wether the active element is nested within a shadowRoot\n */\n\nexport const hasShadowRoot = () => {\n return !!(\n window.document.activeElement && window.document.activeElement.shadowRoot\n )\n}\n\n/**\n * Get the nearest editable child and index at `index` in a `parent`, preferring\n * `direction`.\n */\n\nexport const getEditableChildAndIndex = (\n parent: DOMElement,\n index: number,\n direction: 'forward' | 'backward'\n): [DOMNode, number] => {\n const { childNodes } = parent\n let child = childNodes[index]\n let i = index\n let triedForward = false\n let triedBackward = false\n\n // While the child is a comment node, or an element node with no children,\n // keep iterating to find a sibling non-void, non-comment node.\n while (\n isDOMComment(child) ||\n (isDOMElement(child) && child.childNodes.length === 0) ||\n (isDOMElement(child) && child.getAttribute('contenteditable') === 'false')\n ) {\n if (triedForward && triedBackward) {\n break\n }\n\n if (i >= childNodes.length) {\n triedForward = true\n i = index - 1\n direction = 'backward'\n continue\n }\n\n if (i < 0) {\n triedBackward = true\n i = index + 1\n direction = 'forward'\n continue\n }\n\n child = childNodes[i]\n index = i\n i += direction === 'forward' ? 1 : -1\n }\n\n return [child, index]\n}\n\n/**\n * Get the nearest editable child at `index` in a `parent`, preferring\n * `direction`.\n */\n\nexport const getEditableChild = (\n parent: DOMElement,\n index: number,\n direction: 'forward' | 'backward'\n): DOMNode => {\n const [child] = getEditableChildAndIndex(parent, index, direction)\n return child\n}\n\n/**\n * Get a plaintext representation of the content of a node, accounting for block\n * elements which get a newline appended.\n *\n * The domNode must be attached to the DOM.\n */\n\nexport const getPlainText = (domNode: DOMNode) => {\n let text = ''\n\n if (isDOMText(domNode) && domNode.nodeValue) {\n return domNode.nodeValue\n }\n\n if (isDOMElement(domNode)) {\n for (const childNode of Array.from(domNode.childNodes)) {\n text += getPlainText(childNode)\n }\n\n const display = getComputedStyle(domNode).getPropertyValue('display')\n\n if (display === 'block' || display === 'list' || domNode.tagName === 'BR') {\n text += '\\n'\n }\n }\n\n return text\n}\n\n/**\n * Get x-slate-fragment attribute from data-slate-fragment\n */\nconst catchSlateFragment = /data-slate-fragment=\"(.+?)\"/m\nexport const getSlateFragmentAttribute = (\n dataTransfer: DataTransfer\n): string | void => {\n const htmlData = dataTransfer.getData('text/html')\n const [, fragment] = htmlData.match(catchSlateFragment) || []\n return fragment\n}\n\n/**\n * Get the x-slate-fragment attribute that exist in text/html data\n * and append it to the DataTransfer object\n */\nexport const getClipboardData = (dataTransfer: DataTransfer): DataTransfer => {\n if (!dataTransfer.getData('application/x-slate-fragment')) {\n const fragment = getSlateFragmentAttribute(dataTransfer)\n if (fragment) {\n const clipboardData = new DataTransfer()\n dataTransfer.types.forEach(type => {\n clipboardData.setData(type, dataTransfer.getData(type))\n })\n clipboardData.setData('application/x-slate-fragment', fragment)\n return clipboardData\n }\n }\n return dataTransfer\n}\n\n/**\n * Check whether a mutation originates from a editable element inside the editor.\n */\n\nexport const isTrackedMutation = (\n editor: ReactEditor,\n mutation: MutationRecord,\n batch: MutationRecord[]\n): boolean => {\n const { target } = mutation\n if (isDOMElement(target) && target.matches('[contentEditable=\"false\"]')) {\n return false\n }\n\n const { document } = ReactEditor.getWindow(editor)\n if (document.contains(target)) {\n return ReactEditor.hasDOMNode(editor, target, { editable: true })\n }\n\n const parentMutation = batch.find(({ addedNodes, removedNodes }) => {\n for (const node of addedNodes) {\n if (node === target || node.contains(target)) {\n return true\n }\n }\n\n for (const node of removedNodes) {\n if (node === target || node.contains(target)) {\n return true\n }\n }\n })\n\n if (!parentMutation || parentMutation === mutation) {\n return false\n }\n\n // Target add/remove is tracked. Track the mutation if we track the parent mutation.\n return isTrackedMutation(editor, parentMutation, batch)\n}\n","import React from 'react'\n\nexport const IS_REACT_VERSION_17_OR_ABOVE =\n parseInt(React.version.split('.')[0], 10) >= 17\n\nexport const IS_IOS =\n typeof navigator !== 'undefined' &&\n typeof window !== 'undefined' &&\n /iPad|iPhone|iPod/.test(navigator.userAgent) &&\n !window.MSStream\n\nexport const IS_APPLE =\n typeof navigator !== 'undefined' && /Mac OS X/.test(navigator.userAgent)\n\nexport const IS_ANDROID =\n typeof navigator !== 'undefined' && /Android/.test(navigator.userAgent)\n\nexport const IS_FIREFOX =\n typeof navigator !== 'undefined' &&\n /^(?!.*Seamonkey)(?=.*Firefox).*/i.test(navigator.userAgent)\n\nexport const IS_SAFARI =\n typeof navigator !== 'undefined' &&\n /Version\\/[\\d\\.]+.*Safari/.test(navigator.userAgent)\n\n// \"modern\" Edge was released at 79.x\nexport const IS_EDGE_LEGACY =\n typeof navigator !== 'undefined' &&\n /Edge?\\/(?:[0-6][0-9]|[0-7][0-8])(?:\\.)/i.test(navigator.userAgent)\n\nexport const IS_CHROME =\n typeof navigator !== 'undefined' && /Chrome/i.test(navigator.userAgent)\n\n// Native `beforeInput` events don't work well with react on Chrome 75\n// and older, Chrome 76+ can use `beforeInput` though.\nexport const IS_CHROME_LEGACY =\n typeof navigator !== 'undefined' &&\n /Chrome?\\/(?:[0-7][0-5]|[0-6][0-9])(?:\\.)/i.test(navigator.userAgent)\n\n// Firefox did not support `beforeInput` until `v87`.\nexport const IS_FIREFOX_LEGACY =\n typeof navigator !== 'undefined' &&\n /^(?!.*Seamonkey)(?=.*Firefox\\/(?:[0-7][0-9]|[0-8][0-6])(?:\\.)).*/i.test(\n navigator.userAgent\n )\n\n// qq browser\nexport const IS_QQBROWSER =\n typeof navigator !== 'undefined' && /.*QQBrowser/.test(navigator.userAgent)\n\n// UC mobile browser\nexport const IS_UC_MOBILE =\n typeof navigator !== 'undefined' && /.*UCBrowser/.test(navigator.userAgent)\n\n// Wechat browser\nexport const IS_WECHATBROWSER =\n typeof navigator !== 'undefined' && /.*Wechat/.test(navigator.userAgent)\n\n// Check if DOM is available as React does internally.\n// https://github.com/facebook/react/blob/master/packages/shared/ExecutionEnvironment.js\nexport const CAN_USE_DOM = !!(\n typeof window !== 'undefined' &&\n typeof window.document !== 'undefined' &&\n typeof window.document.createElement !== 'undefined'\n)\n\n// COMPAT: Firefox/Edge Legacy don't support the `beforeinput` event\n// Chrome Legacy doesn't support `beforeinput` correctly\nexport const HAS_BEFORE_INPUT_SUPPORT =\n !IS_CHROME_LEGACY &&\n !IS_EDGE_LEGACY &&\n // globalThis is undefined in older browsers\n typeof globalThis !== 'undefined' &&\n globalThis.InputEvent &&\n // @ts-ignore The `getTargetRanges` property isn't recognized.\n typeof globalThis.InputEvent.prototype.getTargetRanges === 'function'\n","import {\n BaseEditor,\n Editor,\n Node,\n Path,\n Point,\n Range,\n Scrubber,\n Transforms,\n} from 'slate'\n\nimport { Key } from '../utils/key'\nimport {\n EDITOR_TO_ELEMENT,\n ELEMENT_TO_NODE,\n IS_FOCUSED,\n IS_READ_ONLY,\n NODE_TO_INDEX,\n NODE_TO_KEY,\n NODE_TO_PARENT,\n EDITOR_TO_WINDOW,\n EDITOR_TO_KEY_TO_ELEMENT,\n IS_COMPOSING,\n EDITOR_TO_SCHEDULE_FLUSH,\n EDITOR_TO_PENDING_DIFFS,\n} from '../utils/weak-maps'\nimport {\n DOMElement,\n DOMNode,\n DOMPoint,\n DOMRange,\n DOMSelection,\n DOMStaticRange,\n isDOMElement,\n isDOMSelection,\n normalizeDOMPoint,\n hasShadowRoot,\n DOMText,\n} from '../utils/dom'\nimport { IS_CHROME, IS_FIREFOX, IS_ANDROID } from '../utils/environment'\n\n/**\n * A React and DOM-specific version of the `Editor` interface.\n */\n\nexport interface ReactEditor extends BaseEditor {\n insertData: (data: DataTransfer) => void\n insertFragmentData: (data: DataTransfer) => boolean\n insertTextData: (data: DataTransfer) => boolean\n setFragmentData: (\n data: DataTransfer,\n originEvent?: 'drag' | 'copy' | 'cut'\n ) => void\n hasRange: (editor: ReactEditor, range: Range) => boolean\n}\n\n// eslint-disable-next-line no-redeclare\nexport const ReactEditor = {\n /**\n * Check if the user is currently composing inside the editor.\n */\n\n isComposing(editor: ReactEditor): boolean {\n return !!IS_COMPOSING.get(editor)\n },\n\n /**\n * Return the host window of the current editor.\n */\n\n getWindow(editor: ReactEditor): Window {\n const window = EDITOR_TO_WINDOW.get(editor)\n if (!window) {\n throw new Error('Unable to find a host window element for this editor')\n }\n return window\n },\n\n /**\n * Find a key for a Slate node.\n */\n\n findKey(editor: ReactEditor, node: Node): Key {\n let key = NODE_TO_KEY.get(node)\n\n if (!key) {\n key = new Key()\n NODE_TO_KEY.set(node, key)\n }\n\n return key\n },\n\n /**\n * Find the path of Slate node.\n */\n\n findPath(editor: ReactEditor, node: Node): Path {\n const path: Path = []\n let child = node\n\n while (true) {\n const parent = NODE_TO_PARENT.get(child)\n\n if (parent == null) {\n if (Editor.isEditor(child)) {\n return path\n } else {\n break\n }\n }\n\n const i = NODE_TO_INDEX.get(child)\n\n if (i == null) {\n break\n }\n\n path.unshift(i)\n child = parent\n }\n\n throw new Error(\n `Unable to find the path for Slate node: ${Scrubber.stringify(node)}`\n )\n },\n\n /**\n * Find the DOM node that implements DocumentOrShadowRoot for the editor.\n */\n\n findDocumentOrShadowRoot(editor: ReactEditor): Document | ShadowRoot {\n const el = ReactEditor.toDOMNode(editor, editor)\n const root = el.getRootNode()\n\n if (\n (root instanceof Document || root instanceof ShadowRoot) &&\n root.getSelection != null\n ) {\n return root\n }\n\n return el.ownerDocument\n },\n\n /**\n * Check if the editor is focused.\n */\n\n isFocused(editor: ReactEditor): boolean {\n return !!IS_FOCUSED.get(editor)\n },\n\n /**\n * Check if the editor is in read-only mode.\n */\n\n isReadOnly(editor: ReactEditor): boolean {\n return !!IS_READ_ONLY.get(editor)\n },\n\n /**\n * Blur the editor.\n */\n\n blur(editor: ReactEditor): void {\n const el = ReactEditor.toDOMNode(editor, editor)\n const root = ReactEditor.findDocumentOrShadowRoot(editor)\n IS_FOCUSED.set(editor, false)\n\n if (root.activeElement === el) {\n el.blur()\n }\n },\n\n /**\n * Focus the editor.\n */\n\n focus(editor: ReactEditor): void {\n const el = ReactEditor.toDOMNode(editor, editor)\n const root = ReactEditor.findDocumentOrShadowRoot(editor)\n IS_FOCUSED.set(editor, true)\n\n if (root.activeElement !== el) {\n el.focus({ preventScroll: true })\n }\n },\n\n /**\n * Deselect the editor.\n */\n\n deselect(editor: ReactEditor): void {\n const { selection } = editor\n const root = ReactEditor.findDocumentOrShadowRoot(editor)\n const domSelection = root.getSelection()\n\n if (domSelection && domSelection.rangeCount > 0) {\n domSelection.removeAllRanges()\n }\n\n if (selection) {\n Transforms.deselect(editor)\n }\n },\n\n /**\n * Check if a DOM node is within the editor.\n */\n\n hasDOMNode(\n editor: ReactEditor,\n target: DOMNode,\n options: { editable?: boolean } = {}\n ): boolean {\n const { editable = false } = options\n const editorEl = ReactEditor.toDOMNode(editor, editor)\n let targetEl\n\n // COMPAT: In Firefox, reading `target.nodeType` will throw an error if\n // target is originating from an internal \"restricted\" element (e.g. a\n // stepper arrow on a number input). (2018/05/04)\n // https://github.com/ianstormtaylor/slate/issues/1819\n try {\n targetEl = (isDOMElement(target)\n ? target\n : target.parentElement) as HTMLElement\n } catch (err) {\n if (\n !err.message.includes('Permission denied to access property \"nodeType\"')\n ) {\n throw err\n }\n }\n\n if (!targetEl) {\n return false\n }\n\n return (\n targetEl.closest(`[data-slate-editor]`) === editorEl &&\n (!editable || targetEl.isContentEditable\n ? true\n : (typeof targetEl.isContentEditable === 'boolean' && // isContentEditable exists only on HTMLElement, and on other nodes it will be undefined\n // this is the core logic that lets you know you got the right editor.selection instead of null when editor is contenteditable=\"false\"(readOnly)\n targetEl.closest('[contenteditable=\"false\"]') === editorEl) ||\n !!targetEl.getAttribute('data-slate-zero-width'))\n )\n },\n\n /**\n * Insert data from a `DataTransfer` into the editor.\n */\n\n insertData(editor: ReactEditor, data: DataTransfer): void {\n editor.insertData(data)\n },\n\n /**\n * Insert fragment data from a `DataTransfer` into the editor.\n */\n\n insertFragmentData(editor: ReactEditor, data: DataTransfer): boolean {\n return editor.insertFragmentData(data)\n },\n\n /**\n * Insert text data from a `DataTransfer` into the editor.\n */\n\n insertTextData(editor: ReactEditor, data: DataTransfer): boolean {\n return editor.insertTextData(data)\n },\n\n /**\n * Sets data from the currently selected fragment on a `DataTransfer`.\n */\n\n setFragmentData(\n editor: ReactEditor,\n data: DataTransfer,\n originEvent?: 'drag' | 'copy' | 'cut'\n ): void {\n editor.setFragmentData(data, originEvent)\n },\n\n /**\n * Find the native DOM element from a Slate node.\n */\n\n toDOMNode(editor: ReactEditor, node: Node): HTMLElement {\n const KEY_TO_ELEMENT = EDITOR_TO_KEY_TO_ELEMENT.get(editor)\n const domNode = Editor.isEditor(node)\n ? EDITOR_TO_ELEMENT.get(editor)\n : KEY_TO_ELEMENT?.get(ReactEditor.findKey(editor, node))\n\n if (!domNode) {\n throw new Error(\n `Cannot resolve a DOM node from Slate node: ${Scrubber.stringify(node)}`\n )\n }\n\n return domNode\n },\n\n /**\n * Find a native DOM selection point from a Slate point.\n */\n\n toDOMPoint(editor: ReactEditor, point: Point): DOMPoint {\n const [node] = Editor.node(editor, point.path)\n const el = ReactEditor.toDOMNode(editor, node)\n let domPoint: DOMPoint | undefined\n\n // If we're inside a void node, force the offset to 0, otherwise the zero\n // width spacing character will result in an incorrect offset of 1\n if (Editor.void(editor, { at: point })) {\n point = { path: point.path, offset: 0 }\n }\n\n // For each leaf, we need to isolate its content, which means filtering\n // to its direct text and zero-width spans. (We have to filter out any\n // other siblings that may have been rendered alongside them.)\n const selector = `[data-slate-string], [data-slate-zero-width]`\n const texts = Array.from(el.querySelectorAll(selector))\n let start = 0\n\n for (let i = 0; i < texts.length; i++) {\n const text = texts[i]\n const domNode = text.childNodes[0] as HTMLElement\n\n if (domNode == null || domNode.textContent == null) {\n continue\n }\n\n const { length } = domNode.textContent\n const attr = text.getAttribute('data-slate-length')\n const trueLength = attr == null ? length : parseInt(attr, 10)\n const end = start + trueLength\n\n // Prefer putting the selection inside the mark placeholder to ensure\n // composed text is displayed with the correct marks.\n const nextText = texts[i + 1]\n if (\n point.offset === end &&\n nextText?.hasAttribute('data-slate-mark-placeholder')\n ) {\n const domText = nextText.childNodes[0]\n\n domPoint = [\n // COMPAT: If we don't explicity set the dom point to be on the actual\n // dom text element, chrome will put the selection behind the actual dom\n // text element, causing domRange.getBoundingClientRect() calls on a collapsed\n // selection to return incorrect zero values (https://bugs.chromium.org/p/chromium/issues/detail?id=435438)\n // which will cause issues when scrolling to it.\n domText instanceof DOMText ? domText : nextText,\n nextText.textContent?.startsWith('\\uFEFF') ? 1 : 0,\n ]\n break\n }\n\n if (point.offset <= end) {\n const offset = Math.min(length, Math.max(0, point.offset - start))\n domPoint = [domNode, offset]\n break\n }\n\n start = end\n }\n\n if (!domPoint) {\n throw new Error(\n `Cannot resolve a DOM point from Slate point: ${Scrubber.stringify(\n point\n )}`\n )\n }\n\n return domPoint\n },\n\n /**\n * Find a native DOM range from a Slate `range`.\n *\n * Notice: the returned range will always be ordinal regardless of the direction of Slate `range` due to DOM API limit.\n *\n * there is no way to create a reverse DOM Range using Range.setStart/setEnd\n * according to https://dom.spec.whatwg.org/#concept-range-bp-set.\n */\n\n toDOMRange(editor: ReactEditor, range: Range): DOMRange {\n const { anchor, focus } = range\n const isBackward = Range.isBackward(range)\n const domAnchor = ReactEditor.toDOMPoint(editor, anchor)\n const domFocus = Range.isCollapsed(range)\n ? domAnchor\n : ReactEditor.toDOMPoint(editor, focus)\n\n const window = ReactEditor.getWindow(editor)\n const domRange = window.document.createRange()\n const [startNode, startOffset] = isBackward ? domFocus : domAnchor\n const [endNode, endOffset] = isBackward ? domAnchor : domFocus\n\n // A slate Point at zero-width Leaf always has an offset of 0 but a native DOM selection at\n // zero-width node has an offset of 1 so we have to check if we are in a zero-width node and\n // adjust the offset accordingly.\n const startEl = (isDOMElement(startNode)\n ? startNode\n : startNode.parentElement) as HTMLElement\n const isStartAtZeroWidth = !!startEl.getAttribute('data-slate-zero-width')\n const endEl = (isDOMElement(endNode)\n ? endNode\n : endNode.parentElement) as HTMLElement\n const isEndAtZeroWidth = !!endEl.getAttribute('data-slate-zero-width')\n\n domRange.setStart(startNode, isStartAtZeroWidth ? 1 : startOffset)\n domRange.setEnd(endNode, isEndAtZeroWidth ? 1 : endOffset)\n return domRange\n },\n\n /**\n * Find a Slate node from a native DOM `element`.\n */\n\n toSlateNode(editor: ReactEditor, domNode: DOMNode): Node {\n let domEl = isDOMElement(domNode) ? domNode : domNode.parentElement\n\n if (domEl && !domEl.hasAttribute('data-slate-node')) {\n domEl = domEl.closest(`[data-slate-node]`)\n }\n\n const node = domEl ? ELEMENT_TO_NODE.get(domEl as HTMLElement) : null\n\n if (!node) {\n throw new Error(`Cannot resolve a Slate node from DOM node: ${domEl}`)\n }\n\n return node\n },\n\n /**\n * Get the target range from a DOM `event`.\n */\n\n findEventRange(editor: ReactEditor, event: any): Range {\n if ('nativeEvent' in event) {\n event = event.nativeEvent\n }\n\n const { clientX: x, clientY: y, target } = event\n\n if (x == null || y == null) {\n throw new Error(`Cannot resolve a Slate range from a DOM event: ${event}`)\n }\n\n const node = ReactEditor.toSlateNode(editor, event.target)\n const path = ReactEditor.findPath(editor, node)\n\n // If the drop target is inside a void node, move it into either the\n // next or previous node, depending on which side the `x` and `y`\n // coordinates are closest to.\n if (Editor.isVoid(editor, node)) {\n const rect = target.getBoundingClientRect()\n const isPrev = editor.isInline(node)\n ? x - rect.left < rect.left + rect.width - x\n : y - rect.top < rect.top + rect.height - y\n\n const edge = Editor.point(editor, path, {\n edge: isPrev ? 'start' : 'end',\n })\n const point = isPrev\n ? Editor.before(editor, edge)\n : Editor.after(editor, edge)\n\n if (point) {\n const range = Editor.range(editor, point)\n return range\n }\n }\n\n // Else resolve a range from the caret position where the drop occured.\n let domRange\n const { document } = ReactEditor.getWindow(editor)\n\n // COMPAT: In Firefox, `caretRangeFromPoint` doesn't exist. (2016/07/25)\n if (document.caretRangeFromPoint) {\n domRange = document.caretRangeFromPoint(x, y)\n } else {\n const position = document.caretPositionFromPoint(x, y)\n\n if (position) {\n domRange = document.createRange()\n domRange.setStart(position.offsetNode, position.offset)\n domRange.setEnd(position.offsetNode, position.offset)\n }\n }\n\n if (!domRange) {\n throw new Error(`Cannot resolve a Slate range from a DOM event: ${event}`)\n }\n\n // Resolve a Slate range from the DOM range.\n const range = ReactEditor.toSlateRange(editor, domRange, {\n exactMatch: false,\n suppressThrow: false,\n })\n return range\n },\n\n /**\n * Find a Slate point from a DOM selection's `domNode` and `domOffset`.\n */\n\n toSlatePoint(\n editor: ReactEditor,\n domPoint: DOMPoint,\n options: {\n exactMatch: T\n suppressThrow: T\n }\n ): T extends true ? Point | null : Point {\n const { exactMatch, suppressThrow } = options\n const [nearestNode, nearestOffset] = exactMatch\n ? domPoint\n : normalizeDOMPoint(domPoint)\n const parentNode = nearestNode.parentNode as DOMElement\n let textNode: DOMElement | null = null\n let offset = 0\n\n if (parentNode) {\n const editorEl = ReactEditor.toDOMNode(editor, editor)\n const potentialVoidNode = parentNode.closest('[data-slate-void=\"true\"]')\n // Need to ensure that the closest void node is actually a void node\n // within this editor, and not a void node within some parent editor. This can happen\n // if this editor is within a void node of another editor (\"nested editors\", like in\n // the \"Editable Voids\" example on the docs site).\n const voidNode =\n potentialVoidNode && editorEl.contains(potentialVoidNode)\n ? potentialVoidNode\n : null\n let leafNode = parentNode.closest('[data-slate-leaf]')\n let domNode: DOMElement | null = null\n\n // Calculate how far into the text node the `nearestNode` is, so that we\n // can determine what the offset relative to the text node is.\n if (leafNode) {\n textNode = leafNode.closest('[data-slate-node=\"text\"]')\n\n if (textNode) {\n const window = ReactEditor.getWindow(editor)\n const range = window.document.createRange()\n range.setStart(textNode, 0)\n range.setEnd(nearestNode, nearestOffset)\n\n const contents = range.cloneContents()\n const removals = [\n ...Array.prototype.slice.call(\n contents.querySelectorAll('[data-slate-zero-width]')\n ),\n ...Array.prototype.slice.call(\n contents.querySelectorAll('[contenteditable=false]')\n ),\n ]\n\n removals.forEach(el => {\n // COMPAT: While composing at the start of a text node, some keyboards put\n // the text content inside the zero width space.\n if (\n IS_ANDROID &&\n !exactMatch &&\n el.hasAttribute('data-slate-zero-width') &&\n el.textContent.length > 0 &&\n el.textContext !== '\\uFEFF'\n ) {\n if (el.textContent.startsWith('\\uFEFF')) {\n el.textContent = el.textContent.slice(1)\n }\n\n return\n }\n\n el!.parentNode!.removeChild(el)\n })\n\n // COMPAT: Edge has a bug where Range.prototype.toString() will\n // convert \\n into \\r\\n. The bug causes a loop when slate-react\n // attempts to reposition its cursor to match the native position. Use\n // textContent.length instead.\n // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/10291116/\n offset = contents.textContent!.length\n domNode = textNode\n }\n } else if (voidNode) {\n // For void nodes, the element with the offset key will be a cousin, not an\n // ancestor, so find it by going down from the nearest void parent and taking the\n // first one that isn't inside a nested editor.\n const leafNodes = voidNode.querySelectorAll('[data-slate-leaf]')\n for (let index = 0; index < leafNodes.length; index++) {\n const current = leafNodes[index]\n if (ReactEditor.hasDOMNode(editor, current)) {\n leafNode = current\n break\n }\n }\n\n // COMPAT: In read-only editors the leaf is not rendered.\n if (!leafNode) {\n offset = 1\n } else {\n textNode = leafNode.closest('[data-slate-node=\"text\"]')!\n domNode = leafNode\n offset = domNode.textContent!.length\n domNode.querySelectorAll('[data-slate-zero-width]').forEach(el => {\n offset -= el.textContent!.length\n })\n }\n }\n\n if (\n domNode &&\n offset === domNode.textContent!.length &&\n // COMPAT: Android IMEs might remove the zero width space while composing,\n // and we don't add it for line-breaks.\n IS_ANDROID &&\n domNode.getAttribute('data-slate-zero-width') === 'z' &&\n domNode.textContent?.startsWith('\\uFEFF') &&\n // COMPAT: If the parent node is a Slate zero-width space, editor is\n // because the text node should have no characters. However, during IME\n // composition the ASCII characters will be prepended to the zero-width\n // space, so subtract 1 from the offset to account for the zero-width\n // space character.\n (parentNode.hasAttribute('data-slate-zero-width') ||\n // COMPAT: In Firefox, `range.cloneContents()` returns an extra trailing '\\n'\n // when the document ends with a new-line character. This results in the offset\n // length being off by one, so we need to subtract one to account for this.\n (IS_FIREFOX && domNode.textContent?.endsWith('\\n\\n')))\n ) {\n offset--\n }\n }\n\n if (IS_ANDROID && !textNode && !exactMatch) {\n const node = parentNode.hasAttribute('data-slate-node')\n ? parentNode\n : parentNode.closest('[data-slate-node]')\n\n if (node && ReactEditor.hasDOMNode(editor, node, { editable: true })) {\n const slateNode = ReactEditor.toSlateNode(editor, node)\n let { path, offset } = Editor.start(\n editor,\n ReactEditor.findPath(editor, slateNode)\n )\n\n if (!node.querySelector('[data-slate-leaf]')) {\n offset = nearestOffset\n }\n\n return { path, offset } as T extends true ? Point | null : Point\n }\n }\n\n if (!textNode) {\n if (suppressThrow) {\n return null as T extends true ? Point | null : Point\n }\n throw new Error(\n `Cannot resolve a Slate point from DOM point: ${domPoint}`\n )\n }\n\n // COMPAT: If someone is clicking from one Slate editor into another,\n // the select event fires twice, once for the old editor's `element`\n // first, and then afterwards for the correct `element`. (2017/03/03)\n const slateNode = ReactEditor.toSlateNode(editor, textNode!)\n const path = ReactEditor.findPath(editor, slateNode)\n return { path, offset } as T extends true ? Point | null : Point\n },\n\n /**\n * Find a Slate range from a DOM range or selection.\n */\n\n toSlateRange(\n editor: ReactEditor,\n domRange: DOMRange | DOMStaticRange | DOMSelection,\n options: {\n exactMatch: T\n suppressThrow: T\n }\n ): T extends true ? Range | null : Range {\n const { exactMatch, suppressThrow } = options\n const el = isDOMSelection(domRange)\n ? domRange.anchorNode\n : domRange.startContainer\n let anchorNode\n let anchorOffset\n let focusNode\n let focusOffset\n let isCollapsed\n\n if (el) {\n if (isDOMSelection(domRange)) {\n anchorNode = domRange.anchorNode\n anchorOffset = domRange.anchorOffset\n focusNode = domRange.focusNode\n focusOffset = domRange.focusOffset\n // COMPAT: There's a bug in chrome that always returns `true` for\n // `isCollapsed` for a Selection that comes from a ShadowRoot.\n // (2020/08/08)\n // https://bugs.chromium.org/p/chromium/issues/detail?id=447523\n if (IS_CHROME && hasShadowRoot()) {\n isCollapsed =\n domRange.anchorNode === domRange.focusNode &&\n domRange.anchorOffset === domRange.focusOffset\n } else {\n isCollapsed = domRange.isCollapsed\n }\n } else {\n anchorNode = domRange.startContainer\n anchorOffset = domRange.startOffset\n focusNode = domRange.endContainer\n focusOffset = domRange.endOffset\n isCollapsed = domRange.collapsed\n }\n }\n\n if (\n anchorNode == null ||\n focusNode == null ||\n anchorOffset == null ||\n focusOffset == null\n ) {\n throw new Error(\n `Cannot resolve a Slate range from DOM range: ${domRange}`\n )\n }\n\n const anchor = ReactEditor.toSlatePoint(\n editor,\n [anchorNode, anchorOffset],\n { exactMatch, suppressThrow }\n )\n if (!anchor) {\n return null as T extends true ? Range | null : Range\n }\n\n const focus = isCollapsed\n ? anchor\n : ReactEditor.toSlatePoint(editor, [focusNode, focusOffset], {\n exactMatch,\n suppressThrow,\n })\n if (!focus) {\n return null as T extends true ? Range | null : Range\n }\n\n let range: Range = { anchor: anchor as Point, focus: focus as Point }\n // if the selection is a hanging range that ends in a void\n // and the DOM focus is an Element\n // (meaning that the selection ends before the element)\n // unhang the range to avoid mistakenly including the void\n if (\n Range.isExpanded(range) &&\n Range.isForward(range) &&\n isDOMElement(focusNode) &&\n Editor.void(editor, { at: range.focus, mode: 'highest' })\n ) {\n range = Editor.unhangRange(editor, range, { voids: true })\n }\n\n return (range as unknown) as T extends true ? Range | null : Range\n },\n\n hasRange(editor: ReactEditor, range: Range): boolean {\n const { anchor, focus } = range\n return (\n Editor.hasPath(editor, anchor.path) && Editor.hasPath(editor, focus.path)\n )\n },\n\n /**\n * Experimental and android specific: Flush all pending diffs and cancel composition at the next possible time.\n */\n androidScheduleFlush(editor: Editor) {\n EDITOR_TO_SCHEDULE_FLUSH.get(editor)?.()\n },\n\n /**\n * Experimental and android specific: Get pending diffs\n */\n androidPendingDiffs(editor: Editor) {\n return EDITOR_TO_PENDING_DIFFS.get(editor)\n },\n}\n","import { useLayoutEffect, useEffect } from 'react'\nimport { CAN_USE_DOM } from '../utils/environment'\n\n/**\n * Prevent warning on SSR by falling back to useEffect when DOM isn't available\n */\n\nexport const useIsomorphicLayoutEffect = CAN_USE_DOM\n ? useLayoutEffect\n : useEffect\n","import { Range } from 'slate'\nimport { PLACEHOLDER_SYMBOL } from './weak-maps'\n\nexport const shallowCompare = (obj1: {}, obj2: {}) =>\n Object.keys(obj1).length === Object.keys(obj2).length &&\n Object.keys(obj1).every(\n key => obj2.hasOwnProperty(key) && obj1[key] === obj2[key]\n )\n\n/**\n * Check if a list of decorator ranges are equal to another.\n *\n * PERF: this requires the two lists to also have the ranges inside them in the\n * same order, but this is an okay constraint for us since decorations are\n * kept in order, and the odd case where they aren't is okay to re-render for.\n */\n\nexport const isDecoratorRangeListEqual = (\n list: Range[],\n another: Range[]\n): boolean => {\n if (list.length !== another.length) {\n return false\n }\n\n for (let i = 0; i < list.length; i++) {\n const range = list[i]\n const other = another[i]\n\n const { anchor: rangeAnchor, focus: rangeFocus, ...rangeOwnProps } = range\n const { anchor: otherAnchor, focus: otherFocus, ...otherOwnProps } = other\n\n if (\n !Range.equals(range, other) ||\n range[PLACEHOLDER_SYMBOL] !== other[PLACEHOLDER_SYMBOL] ||\n !shallowCompare(rangeOwnProps, otherOwnProps)\n ) {\n return false\n }\n }\n\n return true\n}\n","import React, { useRef } from 'react'\nimport { Editor, Text, Path, Element, Node } from 'slate'\n\nimport { ReactEditor, useSlateStatic } from '..'\nimport { useIsomorphicLayoutEffect } from '../hooks/use-isomorphic-layout-effect'\nimport { IS_ANDROID } from '../utils/environment'\nimport { MARK_PLACEHOLDER_SYMBOL } from '../utils/weak-maps'\n\n/**\n * Leaf content strings.\n */\n\nconst String = (props: {\n isLast: boolean\n leaf: Text\n parent: Element\n text: Text\n}) => {\n const { isLast, leaf, parent, text } = props\n const editor = useSlateStatic()\n const path = ReactEditor.findPath(editor, text)\n const parentPath = Path.parent(path)\n const isMarkPlaceholder = leaf[MARK_PLACEHOLDER_SYMBOL] === true\n\n // COMPAT: Render text inside void nodes with a zero-width space.\n // So the node can contain selection but the text is not visible.\n if (editor.isVoid(parent)) {\n return \n }\n\n // COMPAT: If this is the last text node in an empty block, render a zero-\n // width space that will convert into a line break when copying and pasting\n // to support expected plain text.\n if (\n leaf.text === '' &&\n parent.children[parent.children.length - 1] === text &&\n !editor.isInline(parent) &&\n Editor.string(editor, parentPath) === ''\n ) {\n return \n }\n\n // COMPAT: If the text is empty, it's because it's on the edge of an inline\n // node, so we render a zero-width space so that the selection can be\n // inserted next to it still.\n if (leaf.text === '') {\n return \n }\n\n // COMPAT: Browsers will collapse trailing new lines at the end of blocks,\n // so we need to add an extra trailing new lines to prevent that.\n if (isLast && leaf.text.slice(-1) === '\\n') {\n return \n }\n\n return \n}\n\n/**\n * Leaf strings with text in them.\n */\nconst TextString = (props: { text: string; isTrailing?: boolean }) => {\n const { text, isTrailing = false } = props\n\n const ref = useRef(null)\n\n const getTextContent = () => {\n return `${text ?? ''}${isTrailing ? '\\n' : ''}`\n }\n\n // This is the actual text rendering boundary where we interface with the DOM\n // The text is not rendered as part of the virtual DOM, as since we handle basic character insertions natively,\n // updating the DOM is not a one way dataflow anymore. What we need here is not reconciliation and diffing\n // with previous version of the virtual DOM, but rather diffing with the actual DOM element, and replace the DOM content\n // exactly if and only if its current content does not match our current virtual DOM.\n // Otherwise the DOM TextNode would always be replaced by React as the user types, which interferes with native text features,\n // eg makes native spellcheck opt out from checking the text node.\n\n // useLayoutEffect: updating our span before browser paint\n useIsomorphicLayoutEffect(() => {\n // null coalescing text to make sure we're not outputing \"null\" as a string in the extreme case it is nullish at runtime\n const textWithTrailing = getTextContent()\n\n if (ref.current && ref.current.textContent !== textWithTrailing) {\n ref.current.textContent = textWithTrailing\n }\n\n // intentionally not specifying dependencies, so that this effect runs on every render\n // as this effectively replaces \"specifying the text in the virtual DOM under the below\" on each render\n })\n\n // Render text content immediately if it's the first-time render\n // Ensure that text content is rendered on server-side rendering\n if (!ref.current) {\n return (\n \n {getTextContent()}\n \n )\n }\n\n // the span is intentionally same on every render in virtual DOM, actual rendering happens in the layout effect above\n return \n}\n\n/**\n * Leaf strings without text, render as zero-width strings.\n */\n\nexport const ZeroWidthString = (props: {\n length?: number\n isLineBreak?: boolean\n isMarkPlaceholder?: boolean\n}) => {\n const { length = 0, isLineBreak = false, isMarkPlaceholder = false } = props\n\n const attributes = {\n 'data-slate-zero-width': isLineBreak ? 'n' : 'z',\n 'data-slate-length': length,\n }\n\n if (isMarkPlaceholder) {\n attributes['data-slate-mark-placeholder'] = true\n }\n\n return (\n \n {!IS_ANDROID || !isLineBreak ? '\\uFEFF' : null}\n {isLineBreak ?
: null}\n
\n )\n}\n\nexport default String\n","import { createContext, useContext } from 'react'\nimport { ReactEditor } from '../plugin/react-editor'\nimport { Editor } from 'slate'\n\n/**\n * A React context for sharing the editor object.\n */\n\nexport const EditorContext = createContext(null)\n\n/**\n * Get the current editor object from the React context.\n */\n\nexport const useSlateStatic = (): Editor => {\n const editor = useContext(EditorContext)\n\n if (!editor) {\n throw new Error(\n `The \\`useSlateStatic\\` hook must be used inside the component's context.`\n )\n }\n\n return editor\n}\n","import React, { useRef, useEffect } from 'react'\nimport { Element, Text } from 'slate'\nimport String from './string'\nimport {\n PLACEHOLDER_SYMBOL,\n EDITOR_TO_PLACEHOLDER_ELEMENT,\n} from '../utils/weak-maps'\nimport { RenderLeafProps, RenderPlaceholderProps } from './editable'\nimport { useSlateStatic } from '../hooks/use-slate-static'\nimport { ReactEditor } from '..'\n\n/**\n * Individual leaves in a text node with unique formatting.\n */\n\nconst Leaf = (props: {\n isLast: boolean\n leaf: Text\n parent: Element\n renderPlaceholder: (props: RenderPlaceholderProps) => JSX.Element\n renderLeaf?: (props: RenderLeafProps) => JSX.Element\n text: Text\n}) => {\n const {\n leaf,\n isLast,\n text,\n parent,\n renderPlaceholder,\n renderLeaf = (props: RenderLeafProps) => ,\n } = props\n\n const placeholderRef = useRef(null)\n const editor = useSlateStatic()\n\n useEffect(() => {\n const placeholderEl = placeholderRef?.current\n const editorEl = ReactEditor.toDOMNode(editor, editor)\n\n if (!placeholderEl || !editorEl) {\n return\n }\n\n editorEl.style.minHeight = `${placeholderEl.clientHeight}px`\n EDITOR_TO_PLACEHOLDER_ELEMENT.set(editor, placeholderEl)\n\n return () => {\n editorEl.style.minHeight = 'auto'\n EDITOR_TO_PLACEHOLDER_ELEMENT.delete(editor)\n }\n }, [placeholderRef, leaf])\n\n let children = (\n \n )\n\n if (leaf[PLACEHOLDER_SYMBOL]) {\n const placeholderProps: RenderPlaceholderProps = {\n children: leaf.placeholder,\n attributes: {\n 'data-slate-placeholder': true,\n style: {\n position: 'absolute',\n pointerEvents: 'none',\n width: '100%',\n maxWidth: '100%',\n display: 'block',\n opacity: '0.333',\n userSelect: 'none',\n textDecoration: 'none',\n },\n contentEditable: false,\n ref: placeholderRef,\n },\n }\n\n children = (\n \n {renderPlaceholder(placeholderProps)}\n {children}\n \n )\n }\n\n // COMPAT: Having the `data-` attributes on these leaf elements ensures that\n // in certain misbehaving browsers they aren't weirdly cloned/destroyed by\n // contenteditable behaviors. (2019/05/08)\n const attributes: {\n 'data-slate-leaf': true\n } = {\n 'data-slate-leaf': true,\n }\n\n return renderLeaf({ attributes, children, leaf, text })\n}\n\nconst MemoizedLeaf = React.memo(Leaf, (prev, next) => {\n return (\n next.parent === prev.parent &&\n next.isLast === prev.isLast &&\n next.renderLeaf === prev.renderLeaf &&\n next.renderPlaceholder === prev.renderPlaceholder &&\n next.text === prev.text &&\n Text.equals(next.leaf, prev.leaf) &&\n next.leaf[PLACEHOLDER_SYMBOL] === prev.leaf[PLACEHOLDER_SYMBOL]\n )\n})\n\nexport const DefaultLeaf = (props: RenderLeafProps) => {\n const { attributes, children } = props\n return {children}\n}\n\nexport default MemoizedLeaf\n","import React, { useRef } from 'react'\nimport { Element, Range, Text as SlateText } from 'slate'\nimport { ReactEditor, useSlateStatic } from '..'\nimport { useIsomorphicLayoutEffect } from '../hooks/use-isomorphic-layout-effect'\nimport { isDecoratorRangeListEqual } from '../utils/range-list'\nimport {\n EDITOR_TO_KEY_TO_ELEMENT,\n ELEMENT_TO_NODE,\n NODE_TO_ELEMENT,\n} from '../utils/weak-maps'\nimport { RenderLeafProps, RenderPlaceholderProps } from './editable'\nimport Leaf from './leaf'\n\n/**\n * Text.\n */\n\nconst Text = (props: {\n decorations: Range[]\n isLast: boolean\n parent: Element\n renderPlaceholder: (props: RenderPlaceholderProps) => JSX.Element\n renderLeaf?: (props: RenderLeafProps) => JSX.Element\n text: SlateText\n}) => {\n const {\n decorations,\n isLast,\n parent,\n renderPlaceholder,\n renderLeaf,\n text,\n } = props\n const editor = useSlateStatic()\n const ref = useRef(null)\n const leaves = SlateText.decorations(text, decorations)\n const key = ReactEditor.findKey(editor, text)\n const children = []\n\n for (let i = 0; i < leaves.length; i++) {\n const leaf = leaves[i]\n\n children.push(\n \n )\n }\n\n // Update element-related weak maps with the DOM element ref.\n useIsomorphicLayoutEffect(() => {\n const KEY_TO_ELEMENT = EDITOR_TO_KEY_TO_ELEMENT.get(editor)\n if (ref.current) {\n KEY_TO_ELEMENT?.set(key, ref.current)\n NODE_TO_ELEMENT.set(text, ref.current)\n ELEMENT_TO_NODE.set(ref.current, text)\n } else {\n KEY_TO_ELEMENT?.delete(key)\n NODE_TO_ELEMENT.delete(text)\n }\n })\n\n return (\n \n {children}\n \n )\n}\n\nconst MemoizedText = React.memo(Text, (prev, next) => {\n return (\n next.parent === prev.parent &&\n next.isLast === prev.isLast &&\n next.renderLeaf === prev.renderLeaf &&\n next.text === prev.text &&\n isDecoratorRangeListEqual(next.decorations, prev.decorations)\n )\n})\n\nexport default MemoizedText\n","import React, { useCallback } from 'react'\nimport getDirection from 'direction'\nimport { Editor, Node, Range, Element as SlateElement } from 'slate'\n\nimport Text from './text'\nimport useChildren from '../hooks/use-children'\nimport { ReactEditor, useSlateStatic, useReadOnly } from '..'\nimport {\n NODE_TO_ELEMENT,\n ELEMENT_TO_NODE,\n NODE_TO_PARENT,\n NODE_TO_INDEX,\n EDITOR_TO_KEY_TO_ELEMENT,\n} from '../utils/weak-maps'\nimport { isDecoratorRangeListEqual } from '../utils/range-list'\nimport {\n RenderElementProps,\n RenderLeafProps,\n RenderPlaceholderProps,\n} from './editable'\n\n/**\n * Element.\n */\n\nconst Element = (props: {\n decorations: Range[]\n element: SlateElement\n renderElement?: (props: RenderElementProps) => JSX.Element\n renderPlaceholder: (props: RenderPlaceholderProps) => JSX.Element\n renderLeaf?: (props: RenderLeafProps) => JSX.Element\n selection: Range | null\n}) => {\n const {\n decorations,\n element,\n renderElement = (p: RenderElementProps) => ,\n renderPlaceholder,\n renderLeaf,\n selection,\n } = props\n const editor = useSlateStatic()\n const readOnly = useReadOnly()\n const isInline = editor.isInline(element)\n const key = ReactEditor.findKey(editor, element)\n const ref = useCallback(\n (ref: HTMLElement | null) => {\n // Update element-related weak maps with the DOM element ref.\n const KEY_TO_ELEMENT = EDITOR_TO_KEY_TO_ELEMENT.get(editor)\n if (ref) {\n KEY_TO_ELEMENT?.set(key, ref)\n NODE_TO_ELEMENT.set(element, ref)\n ELEMENT_TO_NODE.set(ref, element)\n } else {\n KEY_TO_ELEMENT?.delete(key)\n NODE_TO_ELEMENT.delete(element)\n }\n },\n [editor, key, element]\n )\n let children: React.ReactNode = useChildren({\n decorations,\n node: element,\n renderElement,\n renderPlaceholder,\n renderLeaf,\n selection,\n })\n\n // Attributes that the developer must mix into the element in their\n // custom node renderer component.\n const attributes: {\n 'data-slate-node': 'element'\n 'data-slate-void'?: true\n 'data-slate-inline'?: true\n contentEditable?: false\n dir?: 'rtl'\n ref: any\n } = {\n 'data-slate-node': 'element',\n ref,\n }\n\n if (isInline) {\n attributes['data-slate-inline'] = true\n }\n\n // If it's a block node with inline children, add the proper `dir` attribute\n // for text direction.\n if (!isInline && Editor.hasInlines(editor, element)) {\n const text = Node.string(element)\n const dir = getDirection(text)\n\n if (dir === 'rtl') {\n attributes.dir = dir\n }\n }\n\n // If it's a void node, wrap the children in extra void-specific elements.\n if (Editor.isVoid(editor, element)) {\n attributes['data-slate-void'] = true\n\n if (!readOnly && isInline) {\n attributes.contentEditable = false\n }\n\n const Tag = isInline ? 'span' : 'div'\n const [[text]] = Node.texts(element)\n\n children = (\n \n \n \n )\n\n NODE_TO_INDEX.set(text, 0)\n NODE_TO_PARENT.set(text, element)\n }\n\n return renderElement({ attributes, children, element })\n}\n\nconst MemoizedElement = React.memo(Element, (prev, next) => {\n return (\n prev.element === next.element &&\n prev.renderElement === next.renderElement &&\n prev.renderLeaf === next.renderLeaf &&\n isDecoratorRangeListEqual(prev.decorations, next.decorations) &&\n (prev.selection === next.selection ||\n (!!prev.selection &&\n !!next.selection &&\n Range.equals(prev.selection, next.selection)))\n )\n})\n\n/**\n * The default element renderer.\n */\n\nexport const DefaultElement = (props: RenderElementProps) => {\n const { attributes, children, element } = props\n const editor = useSlateStatic()\n const Tag = editor.isInline(element) ? 'span' : 'div'\n return (\n \n {children}\n \n )\n}\n\nexport default MemoizedElement\n","import { createContext, useContext } from 'react'\nimport { Range, NodeEntry } from 'slate'\n\n/**\n * A React context for sharing the `decorate` prop of the editable.\n */\n\nexport const DecorateContext = createContext<(entry: NodeEntry) => Range[]>(\n () => []\n)\n\n/**\n * Get the current `decorate` prop of the editable.\n */\n\nexport const useDecorate = (): ((entry: NodeEntry) => Range[]) => {\n return useContext(DecorateContext)\n}\n","import { createContext, useContext } from 'react'\n\n/**\n * A React context for sharing the `selected` state of an element.\n */\n\nexport const SelectedContext = createContext(false)\n\n/**\n * Get the current `selected` state of an element.\n */\n\nexport const useSelected = (): boolean => {\n return useContext(SelectedContext)\n}\n","import React from 'react'\nimport { Editor, Range, Element, Ancestor, Descendant } from 'slate'\n\nimport ElementComponent from '../components/element'\nimport TextComponent from '../components/text'\nimport { ReactEditor } from '../plugin/react-editor'\nimport { useSlateStatic } from './use-slate-static'\nimport { useDecorate } from './use-decorate'\nimport { NODE_TO_INDEX, NODE_TO_PARENT } from '../utils/weak-maps'\nimport {\n RenderElementProps,\n RenderLeafProps,\n RenderPlaceholderProps,\n} from '../components/editable'\nimport { SelectedContext } from './use-selected'\n\n/**\n * Children.\n */\n\nconst useChildren = (props: {\n decorations: Range[]\n node: Ancestor\n renderElement?: (props: RenderElementProps) => JSX.Element\n renderPlaceholder: (props: RenderPlaceholderProps) => JSX.Element\n renderLeaf?: (props: RenderLeafProps) => JSX.Element\n selection: Range | null\n}) => {\n const {\n decorations,\n node,\n renderElement,\n renderPlaceholder,\n renderLeaf,\n selection,\n } = props\n const decorate = useDecorate()\n const editor = useSlateStatic()\n const path = ReactEditor.findPath(editor, node)\n const children = []\n const isLeafBlock =\n Element.isElement(node) &&\n !editor.isInline(node) &&\n Editor.hasInlines(editor, node)\n\n for (let i = 0; i < node.children.length; i++) {\n const p = path.concat(i)\n const n = node.children[i] as Descendant\n const key = ReactEditor.findKey(editor, n)\n const range = Editor.range(editor, p)\n const sel = selection && Range.intersection(range, selection)\n const ds = decorate([n, p])\n\n for (const dec of decorations) {\n const d = Range.intersection(dec, range)\n\n if (d) {\n ds.push(d)\n }\n }\n\n if (Element.isElement(n)) {\n children.push(\n \n \n \n )\n } else {\n children.push(\n \n )\n }\n\n NODE_TO_INDEX.set(n, i)\n NODE_TO_PARENT.set(n, node)\n }\n\n return children\n}\n\nexport default useChildren\n","import { createContext, useContext } from 'react'\n\n/**\n * A React context for sharing the `readOnly` state of the editor.\n */\n\nexport const ReadOnlyContext = createContext(false)\n\n/**\n * Get the current `readOnly` state of the editor.\n */\n\nexport const useReadOnly = (): boolean => {\n return useContext(ReadOnlyContext)\n}\n","import { createContext, useContext } from 'react'\nimport { Editor } from 'slate'\nimport { ReactEditor } from '../plugin/react-editor'\n\n/**\n * A React context for sharing the editor object, in a way that re-renders the\n * context whenever changes occur.\n */\n\nexport interface SlateContextValue {\n v: number\n editor: ReactEditor\n}\n\nexport const SlateContext = createContext<{\n v: number\n editor: ReactEditor\n} | null>(null)\n\n/**\n * Get the current editor object from the React context.\n */\n\nexport const useSlate = (): Editor => {\n const context = useContext(SlateContext)\n\n if (!context) {\n throw new Error(\n `The \\`useSlate\\` hook must be used inside the component's context.`\n )\n }\n\n const { editor } = context\n return editor\n}\n\nexport const useSlateWithV = () => {\n const context = useContext(SlateContext)\n\n if (!context) {\n throw new Error(\n `The \\`useSlate\\` hook must be used inside the component's context.`\n )\n }\n\n return context\n}\n","import { isKeyHotkey } from 'is-hotkey'\nimport { IS_APPLE } from './environment'\n\n/**\n * Hotkey mappings for each platform.\n */\n\nconst HOTKEYS = {\n bold: 'mod+b',\n compose: ['down', 'left', 'right', 'up', 'backspace', 'enter'],\n moveBackward: 'left',\n moveForward: 'right',\n moveWordBackward: 'ctrl+left',\n moveWordForward: 'ctrl+right',\n deleteBackward: 'shift?+backspace',\n deleteForward: 'shift?+delete',\n extendBackward: 'shift+left',\n extendForward: 'shift+right',\n italic: 'mod+i',\n insertSoftBreak: 'shift+enter',\n splitBlock: 'enter',\n undo: 'mod+z',\n}\n\nconst APPLE_HOTKEYS = {\n moveLineBackward: 'opt+up',\n moveLineForward: 'opt+down',\n moveWordBackward: 'opt+left',\n moveWordForward: 'opt+right',\n deleteBackward: ['ctrl+backspace', 'ctrl+h'],\n deleteForward: ['ctrl+delete', 'ctrl+d'],\n deleteLineBackward: 'cmd+shift?+backspace',\n deleteLineForward: ['cmd+shift?+delete', 'ctrl+k'],\n deleteWordBackward: 'opt+shift?+backspace',\n deleteWordForward: 'opt+shift?+delete',\n extendLineBackward: 'opt+shift+up',\n extendLineForward: 'opt+shift+down',\n redo: 'cmd+shift+z',\n transposeCharacter: 'ctrl+t',\n}\n\nconst WINDOWS_HOTKEYS = {\n deleteWordBackward: 'ctrl+shift?+backspace',\n deleteWordForward: 'ctrl+shift?+delete',\n redo: ['ctrl+y', 'ctrl+shift+z'],\n}\n\n/**\n * Create a platform-aware hotkey checker.\n */\n\nconst create = (key: string) => {\n const generic = HOTKEYS[key]\n const apple = APPLE_HOTKEYS[key]\n const windows = WINDOWS_HOTKEYS[key]\n const isGeneric = generic && isKeyHotkey(generic)\n const isApple = apple && isKeyHotkey(apple)\n const isWindows = windows && isKeyHotkey(windows)\n\n return (event: KeyboardEvent) => {\n if (isGeneric && isGeneric(event)) return true\n if (IS_APPLE && isApple && isApple(event)) return true\n if (!IS_APPLE && isWindows && isWindows(event)) return true\n return false\n }\n}\n\n/**\n * Hotkeys.\n */\n\nexport default {\n isBold: create('bold'),\n isCompose: create('compose'),\n isMoveBackward: create('moveBackward'),\n isMoveForward: create('moveForward'),\n isDeleteBackward: create('deleteBackward'),\n isDeleteForward: create('deleteForward'),\n isDeleteLineBackward: create('deleteLineBackward'),\n isDeleteLineForward: create('deleteLineForward'),\n isDeleteWordBackward: create('deleteWordBackward'),\n isDeleteWordForward: create('deleteWordForward'),\n isExtendBackward: create('extendBackward'),\n isExtendForward: create('extendForward'),\n isExtendLineBackward: create('extendLineBackward'),\n isExtendLineForward: create('extendLineForward'),\n isItalic: create('italic'),\n isMoveLineBackward: create('moveLineBackward'),\n isMoveLineForward: create('moveLineForward'),\n isMoveWordBackward: create('moveWordBackward'),\n isMoveWordForward: create('moveWordForward'),\n isRedo: create('redo'),\n isSoftBreak: create('insertSoftBreak'),\n isSplitBlock: create('splitBlock'),\n isTransposeCharacter: create('transposeCharacter'),\n isUndo: create('undo'),\n}\n","import React, { Component, ComponentType, ContextType, RefObject } from 'react'\nimport { EditorContext } from '../../hooks/use-slate-static'\nimport { IS_ANDROID } from '../../utils/environment'\nimport {\n createRestoreDomManager,\n RestoreDOMManager,\n} from './restore-dom-manager'\n\nconst MUTATION_OBSERVER_CONFIG: MutationObserverInit = {\n subtree: true,\n childList: true,\n characterData: true,\n characterDataOldValue: true,\n}\n\ntype RestoreDOMProps = {\n receivedUserInput: RefObject\n node: RefObject\n}\n\n// We have to use a class component here since we rely on `getSnapshotBeforeUpdate` which has no FC equivalent\n// to run code synchronously immediately before react commits the component update to the DOM.\nclass RestoreDOMComponent extends Component {\n static contextType = EditorContext\n context: ContextType = null\n\n private manager: RestoreDOMManager | null = null\n private mutationObserver: MutationObserver | null = null\n\n observe() {\n const { node } = this.props\n if (!node.current) {\n throw new Error('Failed to attach MutationObserver, `node` is undefined')\n }\n\n this.mutationObserver?.observe(node.current, MUTATION_OBSERVER_CONFIG)\n }\n\n componentDidMount() {\n const { receivedUserInput } = this.props\n const editor = this.context!\n\n this.manager = createRestoreDomManager(editor, receivedUserInput)\n this.mutationObserver = new MutationObserver(this.manager.registerMutations)\n\n this.observe()\n }\n\n getSnapshotBeforeUpdate() {\n const pendingMutations = this.mutationObserver?.takeRecords()\n if (pendingMutations?.length) {\n this.manager?.registerMutations(pendingMutations)\n }\n\n this.mutationObserver?.disconnect()\n this.manager?.restoreDOM()\n\n return null\n }\n\n componentDidUpdate() {\n this.manager?.clear()\n this.observe()\n }\n\n componentWillUnmount() {\n this.mutationObserver?.disconnect()\n }\n\n render() {\n return this.props.children\n }\n}\n\nexport const RestoreDOM: ComponentType = IS_ANDROID\n ? RestoreDOMComponent\n : ({ children }) => <>{children}\n","import { RefObject } from 'react'\nimport { ReactEditor } from '../../plugin/react-editor'\nimport { isTrackedMutation } from '../../utils/dom'\n\nexport type RestoreDOMManager = {\n registerMutations: (mutations: MutationRecord[]) => void\n restoreDOM: () => void\n clear: () => void\n}\n\nexport const createRestoreDomManager = (\n editor: ReactEditor,\n receivedUserInput: RefObject\n): RestoreDOMManager => {\n let bufferedMutations: MutationRecord[] = []\n\n const clear = () => {\n bufferedMutations = []\n }\n\n const registerMutations = (mutations: MutationRecord[]) => {\n if (!receivedUserInput.current) {\n return\n }\n\n const trackedMutations = mutations.filter(mutation =>\n isTrackedMutation(editor, mutation, mutations)\n )\n\n bufferedMutations.push(...trackedMutations)\n }\n\n function restoreDOM() {\n bufferedMutations.reverse().forEach(mutation => {\n if (mutation.type === 'characterData') {\n mutation.target.textContent = mutation.oldValue\n return\n }\n\n mutation.removedNodes.forEach(node => {\n mutation.target.insertBefore(node, mutation.nextSibling)\n })\n\n mutation.addedNodes.forEach(node => {\n mutation.target.removeChild(node)\n })\n })\n\n // Clear buffered mutations to ensure we don't undo them twice\n clear()\n }\n\n return {\n registerMutations,\n restoreDOM,\n clear,\n }\n}\n","import { Editor, Node, Operation, Path, Point, Range, Text } from 'slate'\nimport { EDITOR_TO_PENDING_DIFFS } from './weak-maps'\n\nexport type StringDiff = {\n start: number\n end: number\n text: string\n}\n\nexport type TextDiff = {\n id: number\n path: Path\n diff: StringDiff\n}\n\n/**\n * Check whether a text diff was applied in a way we can perform the pending action on /\n * recover the pending selection.\n */\nexport function verifyDiffState(editor: Editor, textDiff: TextDiff): boolean {\n const { path, diff } = textDiff\n if (!Editor.hasPath(editor, path)) {\n return false\n }\n\n const node = Node.get(editor, path)\n if (!Text.isText(node)) {\n return false\n }\n\n if (diff.start !== node.text.length || diff.text.length === 0) {\n return (\n node.text.slice(diff.start, diff.start + diff.text.length) === diff.text\n )\n }\n\n const nextPath = Path.next(path)\n if (!Editor.hasPath(editor, nextPath)) {\n return false\n }\n\n const nextNode = Node.get(editor, nextPath)\n return Text.isText(nextNode) && nextNode.text.startsWith(diff.text)\n}\n\nfunction applyStringDiff(text: string, ...diffs: StringDiff[]) {\n return diffs.reduce(\n (text, diff) =>\n text.slice(0, diff.start) + diff.text + text.slice(diff.end),\n text\n )\n}\n\nfunction longestCommonPrefixLength(str: string, another: string) {\n const length = Math.min(str.length, another.length)\n\n for (let i = 0; i < length; i++) {\n if (str.charAt(i) !== another.charAt(i)) {\n return i\n }\n }\n\n return length\n}\n\nfunction longestCommonSuffixLength(\n str: string,\n another: string,\n max: number\n): number {\n const length = Math.min(str.length, another.length, max)\n\n for (let i = 0; i < length; i++) {\n if (\n str.charAt(str.length - i - 1) !== another.charAt(another.length - i - 1)\n ) {\n return i\n }\n }\n\n return length\n}\n\n/**\n * Remove redundant changes from the diff so that it spans the minimal possible range\n */\nexport function normalizeStringDiff(targetText: string, diff: StringDiff) {\n const { start, end, text } = diff\n const removedText = targetText.slice(start, end)\n\n const prefixLength = longestCommonPrefixLength(removedText, text)\n const max = Math.min(\n removedText.length - prefixLength,\n text.length - prefixLength\n )\n const suffixLength = longestCommonSuffixLength(removedText, text, max)\n\n const normalized: StringDiff = {\n start: start + prefixLength,\n end: end - suffixLength,\n text: text.slice(prefixLength, text.length - suffixLength),\n }\n\n if (normalized.start === normalized.end && normalized.text.length === 0) {\n return null\n }\n\n return normalized\n}\n\n/**\n * Return a string diff that is equivalent to applying b after a spanning the range of\n * both changes\n */\nexport function mergeStringDiffs(\n targetText: string,\n a: StringDiff,\n b: StringDiff\n): StringDiff | null {\n const start = Math.min(a.start, b.start)\n const overlap = Math.max(\n 0,\n Math.min(a.start + a.text.length, b.end) - b.start\n )\n\n const applied = applyStringDiff(targetText, a, b)\n const sliceEnd = Math.max(\n b.start + b.text.length,\n a.start +\n a.text.length +\n (a.start + a.text.length > b.start ? b.text.length : 0) -\n overlap\n )\n\n const text = applied.slice(start, sliceEnd)\n const end = Math.max(a.end, b.end - a.text.length + (a.end - a.start))\n return normalizeStringDiff(targetText, { start, end, text })\n}\n\n/**\n * Get the slate range the text diff spans.\n */\nexport function targetRange(textDiff: TextDiff): Range {\n const { path, diff } = textDiff\n return {\n anchor: { path, offset: diff.start },\n focus: { path, offset: diff.end },\n }\n}\n\n/**\n * Normalize a 'pending point' a.k.a a point based on the dom state before applying\n * the pending diffs. Since the pending diffs might have been inserted with different\n * marks we have to 'walk' the offset from the starting position to ensure we still\n * have a valid point inside the document\n */\nexport function normalizePoint(editor: Editor, point: Point): Point | null {\n let { path, offset } = point\n if (!Editor.hasPath(editor, path)) {\n return null\n }\n\n let leaf = Node.get(editor, path)\n if (!Text.isText(leaf)) {\n return null\n }\n\n const parentBlock = Editor.above(editor, {\n match: n => Editor.isBlock(editor, n),\n at: path,\n })\n\n if (!parentBlock) {\n return null\n }\n\n while (offset > leaf.text.length) {\n const entry = Editor.next(editor, { at: path, match: Text.isText })\n if (!entry || !Path.isDescendant(entry[1], parentBlock[1])) {\n return null\n }\n\n offset -= leaf.text.length\n leaf = entry[0]\n path = entry[1]\n }\n\n return { path, offset }\n}\n\n/**\n * Normalize a 'pending selection' to ensure it's valid in the current document state.\n */\nexport function normalizeRange(editor: Editor, range: Range): Range | null {\n const anchor = normalizePoint(editor, range.anchor)\n if (!anchor) {\n return null\n }\n\n if (Range.isCollapsed(range)) {\n return { anchor, focus: anchor }\n }\n\n const focus = normalizePoint(editor, range.focus)\n if (!focus) {\n return null\n }\n\n return { anchor, focus }\n}\n\nexport function transformPendingPoint(\n editor: Editor,\n point: Point,\n op: Operation\n): Point | null {\n const pendingDiffs = EDITOR_TO_PENDING_DIFFS.get(editor)\n const textDiff = pendingDiffs?.find(({ path }) =>\n Path.equals(path, point.path)\n )\n\n if (!textDiff || point.offset <= textDiff.diff.start) {\n return Point.transform(point, op, { affinity: 'backward' })\n }\n\n const { diff } = textDiff\n // Point references location inside the diff => transform the point based on the location\n // the diff will be applied to and add the offset inside the diff.\n if (point.offset <= diff.start + diff.text.length) {\n const anchor = { path: point.path, offset: diff.start }\n const transformed = Point.transform(anchor, op, {\n affinity: 'backward',\n })\n\n if (!transformed) {\n return null\n }\n\n return {\n path: transformed.path,\n offset: transformed.offset + point.offset - diff.start,\n }\n }\n\n // Point references location after the diff\n const anchor = {\n path: point.path,\n offset: point.offset - diff.text.length + diff.end - diff.start,\n }\n const transformed = Point.transform(anchor, op, {\n affinity: 'backward',\n })\n if (!transformed) {\n return null\n }\n\n if (\n op.type === 'split_node' &&\n Path.equals(op.path, point.path) &&\n anchor.offset < op.position &&\n diff.start < op.position\n ) {\n return transformed\n }\n\n return {\n path: transformed.path,\n offset: transformed.offset + diff.text.length - diff.end + diff.start,\n }\n}\n\nexport function transformPendingRange(\n editor: Editor,\n range: Range,\n op: Operation\n): Range | null {\n const anchor = transformPendingPoint(editor, range.anchor, op)\n if (!anchor) {\n return null\n }\n\n if (Range.isCollapsed(range)) {\n return { anchor, focus: anchor }\n }\n\n const focus = transformPendingPoint(editor, range.focus, op)\n if (!focus) {\n return null\n }\n\n return { anchor, focus }\n}\n\nexport function transformTextDiff(\n textDiff: TextDiff,\n op: Operation\n): TextDiff | null {\n const { path, diff, id } = textDiff\n\n switch (op.type) {\n case 'insert_text': {\n if (!Path.equals(op.path, path) || op.offset >= diff.end) {\n return textDiff\n }\n\n if (op.offset <= diff.start) {\n return {\n diff: {\n start: op.text.length + diff.start,\n end: op.text.length + diff.end,\n text: diff.text,\n },\n id,\n path,\n }\n }\n\n return {\n diff: {\n start: diff.start,\n end: diff.end + op.text.length,\n text: diff.text,\n },\n id,\n path,\n }\n }\n case 'remove_text': {\n if (!Path.equals(op.path, path) || op.offset >= diff.end) {\n return textDiff\n }\n\n if (op.offset + op.text.length <= diff.start) {\n return {\n diff: {\n start: diff.start - op.text.length,\n end: diff.end - op.text.length,\n text: diff.text,\n },\n id,\n path,\n }\n }\n\n return {\n diff: {\n start: diff.start,\n end: diff.end - op.text.length,\n text: diff.text,\n },\n id,\n path,\n }\n }\n case 'split_node': {\n if (!Path.equals(op.path, path) || op.position >= diff.end) {\n return {\n diff,\n id,\n path: Path.transform(path, op, { affinity: 'backward' })!,\n }\n }\n\n if (op.position > diff.start) {\n return {\n diff: {\n start: diff.start,\n end: Math.min(op.position, diff.end),\n text: diff.text,\n },\n id,\n path,\n }\n }\n\n return {\n diff: {\n start: diff.start - op.position,\n end: diff.end - op.position,\n text: diff.text,\n },\n id,\n path: Path.transform(path, op, { affinity: 'forward' })!,\n }\n }\n case 'merge_node': {\n if (!Path.equals(op.path, path)) {\n return {\n diff,\n id,\n path: Path.transform(path, op)!,\n }\n }\n\n return {\n diff: {\n start: diff.start + op.position,\n end: diff.end + op.position,\n text: diff.text,\n },\n id,\n path: Path.transform(path, op)!,\n }\n }\n }\n\n const newPath = Path.transform(path, op)\n if (!newPath) {\n return null\n }\n\n return {\n diff,\n path: newPath,\n id,\n }\n}\n","import { DebouncedFunc } from 'lodash'\nimport { Editor, Node, Path, Point, Range, Text, Transforms } from 'slate'\nimport { ReactEditor } from '../../plugin/react-editor'\nimport {\n mergeStringDiffs,\n normalizePoint,\n normalizeRange,\n normalizeStringDiff,\n StringDiff,\n targetRange,\n TextDiff,\n verifyDiffState,\n} from '../../utils/diff-text'\nimport { isDOMSelection, isTrackedMutation } from '../../utils/dom'\nimport {\n EDITOR_TO_FORCE_RENDER,\n EDITOR_TO_PENDING_ACTION,\n EDITOR_TO_PENDING_DIFFS,\n EDITOR_TO_PENDING_INSERTION_MARKS,\n EDITOR_TO_PENDING_SELECTION,\n EDITOR_TO_PLACEHOLDER_ELEMENT,\n EDITOR_TO_USER_MARKS,\n IS_COMPOSING,\n} from '../../utils/weak-maps'\n\nexport type Action = { at?: Point | Range; run: () => void }\n\n// https://github.com/facebook/draft-js/blob/main/src/component/handlers/composition/DraftEditorCompositionHandler.js#L41\n// When using keyboard English association function, conpositionEnd triggered too fast, resulting in after `insertText` still maintain association state.\nconst RESOLVE_DELAY = 25\n\n// Time with no user interaction before the current user action is considered as done.\nconst FLUSH_DELAY = 200\n\n// Replace with `const debug = console.log` to debug\nconst debug = (..._: unknown[]) => {}\n\nexport type CreateAndroidInputManagerOptions = {\n editor: ReactEditor\n\n scheduleOnDOMSelectionChange: DebouncedFunc<() => void>\n onDOMSelectionChange: DebouncedFunc<() => void>\n}\n\nexport type AndroidInputManager = {\n flush: () => void\n scheduleFlush: () => void\n\n hasPendingDiffs: () => boolean\n hasPendingAction: () => boolean\n hasPendingChanges: () => boolean\n isFlushing: () => boolean | 'action'\n\n handleUserSelect: (range: Range | null) => void\n handleCompositionEnd: (event: React.CompositionEvent) => void\n handleCompositionStart: (\n event: React.CompositionEvent\n ) => void\n handleDOMBeforeInput: (event: InputEvent) => void\n handleKeyDown: (event: React.KeyboardEvent) => void\n\n handleDomMutations: (mutations: MutationRecord[]) => void\n handleInput: () => void\n}\n\nexport function createAndroidInputManager({\n editor,\n scheduleOnDOMSelectionChange,\n onDOMSelectionChange,\n}: CreateAndroidInputManagerOptions): AndroidInputManager {\n let flushing: 'action' | boolean = false\n let compositionEndTimeoutId: ReturnType | null = null\n let flushTimeoutId: ReturnType | null = null\n let actionTimeoutId: ReturnType | null = null\n\n let idCounter = 0\n let insertPositionHint: StringDiff | null | false = false\n\n const applyPendingSelection = () => {\n const pendingSelection = EDITOR_TO_PENDING_SELECTION.get(editor)\n EDITOR_TO_PENDING_SELECTION.delete(editor)\n\n if (pendingSelection) {\n const { selection } = editor\n const normalized = normalizeRange(editor, pendingSelection)\n\n debug('apply pending selection', pendingSelection, normalized)\n\n if (normalized && (!selection || !Range.equals(normalized, selection))) {\n Transforms.select(editor, normalized)\n }\n }\n }\n\n const performAction = () => {\n const action = EDITOR_TO_PENDING_ACTION.get(editor)\n EDITOR_TO_PENDING_ACTION.delete(editor)\n if (!action) {\n return\n }\n\n if (action.at) {\n const target = Point.isPoint(action.at)\n ? normalizePoint(editor, action.at)\n : normalizeRange(editor, action.at)\n\n if (!target) {\n return\n }\n\n const targetRange = Editor.range(editor, target)\n if (!editor.selection || !Range.equals(editor.selection, targetRange)) {\n Transforms.select(editor, target)\n }\n }\n\n action.run()\n }\n\n const flush = () => {\n if (flushTimeoutId) {\n clearTimeout(flushTimeoutId)\n flushTimeoutId = null\n }\n\n if (actionTimeoutId) {\n clearTimeout(actionTimeoutId)\n actionTimeoutId = null\n }\n\n if (!hasPendingDiffs() && !hasPendingAction()) {\n applyPendingSelection()\n return\n }\n\n if (!flushing) {\n flushing = true\n setTimeout(() => (flushing = false))\n }\n\n if (hasPendingAction()) {\n flushing = 'action'\n }\n\n const selectionRef =\n editor.selection &&\n Editor.rangeRef(editor, editor.selection, { affinity: 'forward' })\n EDITOR_TO_USER_MARKS.set(editor, editor.marks)\n\n debug(\n 'flush',\n EDITOR_TO_PENDING_ACTION.get(editor),\n EDITOR_TO_PENDING_DIFFS.get(editor)\n )\n\n let scheduleSelectionChange = !!EDITOR_TO_PENDING_DIFFS.get(editor)?.length\n\n let diff: TextDiff | undefined\n while ((diff = EDITOR_TO_PENDING_DIFFS.get(editor)?.[0])) {\n const pendingMarks = EDITOR_TO_PENDING_INSERTION_MARKS.get(editor)\n\n if (pendingMarks !== undefined) {\n EDITOR_TO_PENDING_INSERTION_MARKS.delete(editor)\n editor.marks = pendingMarks\n }\n\n if (pendingMarks && insertPositionHint === false) {\n insertPositionHint = null\n debug('insert after mark placeholder')\n }\n\n const range = targetRange(diff)\n if (!editor.selection || !Range.equals(editor.selection, range)) {\n Transforms.select(editor, range)\n }\n\n if (diff.diff.text) {\n Editor.insertText(editor, diff.diff.text)\n } else {\n Editor.deleteFragment(editor)\n }\n\n // Remove diff only after we have applied it to account for it when transforming\n // pending ranges.\n EDITOR_TO_PENDING_DIFFS.set(\n editor,\n EDITOR_TO_PENDING_DIFFS.get(editor)?.filter(\n ({ id }) => id !== diff!.id\n )!\n )\n\n if (!verifyDiffState(editor, diff)) {\n debug('invalid diff state')\n scheduleSelectionChange = false\n EDITOR_TO_PENDING_ACTION.delete(editor)\n EDITOR_TO_USER_MARKS.delete(editor)\n flushing = 'action'\n\n // Ensure we don't restore the pending user (dom) selection\n // since the document and dom state do not match.\n EDITOR_TO_PENDING_SELECTION.delete(editor)\n scheduleOnDOMSelectionChange.cancel()\n onDOMSelectionChange.cancel()\n selectionRef?.unref()\n }\n }\n\n const selection = selectionRef?.unref()\n if (\n selection &&\n !EDITOR_TO_PENDING_SELECTION.get(editor) &&\n (!editor.selection || !Range.equals(selection, editor.selection))\n ) {\n Transforms.select(editor, selection)\n }\n\n if (hasPendingAction()) {\n performAction()\n return\n }\n\n // COMPAT: The selectionChange event is fired after the action is performed,\n // so we have to manually schedule it to ensure we don't 'throw away' the selection\n // while rendering if we have pending changes.\n if (scheduleSelectionChange) {\n debug('scheduleOnDOMSelectionChange pending changes')\n scheduleOnDOMSelectionChange()\n }\n\n scheduleOnDOMSelectionChange.flush()\n onDOMSelectionChange.flush()\n\n applyPendingSelection()\n\n const userMarks = EDITOR_TO_USER_MARKS.get(editor)\n EDITOR_TO_USER_MARKS.delete(editor)\n if (userMarks !== undefined) {\n editor.marks = userMarks\n editor.onChange()\n }\n }\n\n const handleCompositionEnd = (\n _event: React.CompositionEvent\n ) => {\n if (compositionEndTimeoutId) {\n clearTimeout(compositionEndTimeoutId)\n }\n\n compositionEndTimeoutId = setTimeout(() => {\n IS_COMPOSING.set(editor, false)\n flush()\n }, RESOLVE_DELAY)\n }\n\n const handleCompositionStart = (\n _event: React.CompositionEvent\n ) => {\n debug('composition start')\n\n IS_COMPOSING.set(editor, true)\n\n if (compositionEndTimeoutId) {\n clearTimeout(compositionEndTimeoutId)\n compositionEndTimeoutId = null\n }\n }\n\n const updatePlaceholderVisibility = (forceHide = false) => {\n const placeholderElement = EDITOR_TO_PLACEHOLDER_ELEMENT.get(editor)\n if (!placeholderElement) {\n return\n }\n\n if (hasPendingDiffs() || forceHide) {\n placeholderElement.style.display = 'none'\n return\n }\n\n placeholderElement.style.removeProperty('display')\n }\n\n const storeDiff = (path: Path, diff: StringDiff) => {\n debug('storeDiff', path, diff)\n\n const pendingDiffs = EDITOR_TO_PENDING_DIFFS.get(editor) ?? []\n EDITOR_TO_PENDING_DIFFS.set(editor, pendingDiffs)\n\n const target = Node.leaf(editor, path)\n const idx = pendingDiffs.findIndex(change => Path.equals(change.path, path))\n if (idx < 0) {\n const normalized = normalizeStringDiff(target.text, diff)\n if (normalized) {\n pendingDiffs.push({ path, diff, id: idCounter++ })\n }\n\n updatePlaceholderVisibility()\n return\n }\n\n const merged = mergeStringDiffs(target.text, pendingDiffs[idx].diff, diff)\n if (!merged) {\n pendingDiffs.splice(idx, 1)\n updatePlaceholderVisibility()\n return\n }\n\n pendingDiffs[idx] = {\n ...pendingDiffs[idx],\n diff: merged,\n }\n }\n\n const scheduleAction = (\n run: () => void,\n { at }: { at?: Point | Range } = {}\n ): void => {\n insertPositionHint = false\n debug('scheduleAction', { at, run })\n\n EDITOR_TO_PENDING_SELECTION.delete(editor)\n scheduleOnDOMSelectionChange.cancel()\n onDOMSelectionChange.cancel()\n\n if (hasPendingAction()) {\n flush()\n }\n\n EDITOR_TO_PENDING_ACTION.set(editor, { at, run })\n\n // COMPAT: When deleting before a non-contenteditable element chrome only fires a beforeinput,\n // (no input) and doesn't perform any dom mutations. Without a flush timeout we would never flush\n // in this case and thus never actually perform the action.\n actionTimeoutId = setTimeout(flush)\n }\n\n const handleDOMBeforeInput = (event: InputEvent): void => {\n if (flushTimeoutId) {\n clearTimeout(flushTimeoutId)\n flushTimeoutId = null\n }\n\n const { inputType: type } = event\n let targetRange: Range | null = null\n const data = (event as any).dataTransfer || event.data || undefined\n\n if (\n insertPositionHint !== false &&\n type !== 'insertText' &&\n type !== 'insertCompositionText'\n ) {\n insertPositionHint = false\n }\n\n let [nativeTargetRange] = (event as any).getTargetRanges()\n if (nativeTargetRange) {\n targetRange = ReactEditor.toSlateRange(editor, nativeTargetRange, {\n exactMatch: false,\n suppressThrow: true,\n })\n }\n\n // COMPAT: SelectionChange event is fired after the action is performed, so we\n // have to manually get the selection here to ensure it's up-to-date.\n const window = ReactEditor.getWindow(editor)\n const domSelection = window.getSelection()\n if (!targetRange && domSelection) {\n nativeTargetRange = domSelection\n targetRange = ReactEditor.toSlateRange(editor, domSelection, {\n exactMatch: false,\n suppressThrow: true,\n })\n }\n\n targetRange = targetRange ?? editor.selection\n if (!targetRange) {\n return\n }\n\n if (Range.isExpanded(targetRange) && type.startsWith('delete')) {\n const [start, end] = Range.edges(targetRange)\n const leaf = Node.leaf(editor, start.path)\n\n if (leaf.text.length === start.offset && end.offset === 0) {\n const next = Editor.next(editor, { at: start.path, match: Text.isText })\n if (next && Path.equals(next[1], end.path)) {\n targetRange = { anchor: end, focus: end }\n }\n }\n }\n\n if (Range.isExpanded(targetRange) && type.startsWith('delete')) {\n if (Path.equals(targetRange.anchor.path, targetRange.focus.path)) {\n const [start, end] = Range.edges(targetRange)\n return storeDiff(targetRange.anchor.path, {\n text: '',\n end: end.offset,\n start: start.offset,\n })\n }\n\n const direction = type.endsWith('Backward') ? 'backward' : 'forward'\n return scheduleAction(\n () => Editor.deleteFragment(editor, { direction }),\n { at: targetRange }\n )\n }\n\n switch (type) {\n case 'deleteByComposition':\n case 'deleteByCut':\n case 'deleteByDrag': {\n return scheduleAction(() => Editor.deleteFragment(editor), {\n at: targetRange,\n })\n }\n\n case 'deleteContent':\n case 'deleteContentForward': {\n const { anchor } = targetRange\n if (Range.isCollapsed(targetRange)) {\n const targetNode = Node.leaf(editor, anchor.path)\n\n if (anchor.offset < targetNode.text.length) {\n return storeDiff(anchor.path, {\n text: '',\n start: anchor.offset,\n end: anchor.offset + 1,\n })\n }\n }\n\n return scheduleAction(() => Editor.deleteForward(editor), {\n at: targetRange,\n })\n }\n\n case 'deleteContentBackward': {\n const { anchor } = targetRange\n\n // If we have a mismatch between the native and slate selection being collapsed\n // we are most likely deleting a zero-width placeholder and thus should perform it\n // as an action to ensure correct behavior (mostly happens with mark placeholders)\n const nativeCollapsed = isDOMSelection(nativeTargetRange)\n ? nativeTargetRange.isCollapsed\n : !!nativeTargetRange?.collapsed\n\n if (\n nativeCollapsed &&\n Range.isCollapsed(targetRange) &&\n anchor.offset > 0\n ) {\n return storeDiff(anchor.path, {\n text: '',\n start: anchor.offset - 1,\n end: anchor.offset,\n })\n }\n\n return scheduleAction(() => Editor.deleteBackward(editor), {\n at: targetRange,\n })\n }\n\n case 'deleteEntireSoftLine': {\n return scheduleAction(\n () => {\n Editor.deleteBackward(editor, { unit: 'line' })\n Editor.deleteForward(editor, { unit: 'line' })\n },\n { at: targetRange }\n )\n }\n\n case 'deleteHardLineBackward': {\n return scheduleAction(\n () => Editor.deleteBackward(editor, { unit: 'block' }),\n { at: targetRange }\n )\n }\n\n case 'deleteSoftLineBackward': {\n return scheduleAction(\n () => Editor.deleteBackward(editor, { unit: 'line' }),\n { at: targetRange }\n )\n }\n\n case 'deleteHardLineForward': {\n return scheduleAction(\n () => Editor.deleteForward(editor, { unit: 'block' }),\n { at: targetRange }\n )\n }\n\n case 'deleteSoftLineForward': {\n return scheduleAction(\n () => Editor.deleteForward(editor, { unit: 'line' }),\n { at: targetRange }\n )\n }\n\n case 'deleteWordBackward': {\n return scheduleAction(\n () => Editor.deleteBackward(editor, { unit: 'word' }),\n { at: targetRange }\n )\n }\n\n case 'deleteWordForward': {\n return scheduleAction(\n () => Editor.deleteForward(editor, { unit: 'word' }),\n { at: targetRange }\n )\n }\n\n case 'insertLineBreak': {\n return scheduleAction(() => Editor.insertSoftBreak(editor), {\n at: targetRange,\n })\n }\n\n case 'insertParagraph': {\n return scheduleAction(() => Editor.insertBreak(editor), {\n at: targetRange,\n })\n }\n case 'insertCompositionText':\n case 'deleteCompositionText':\n case 'insertFromComposition':\n case 'insertFromDrop':\n case 'insertFromPaste':\n case 'insertFromYank':\n case 'insertReplacementText':\n case 'insertText': {\n if (data?.constructor.name === 'DataTransfer') {\n return scheduleAction(() => ReactEditor.insertData(editor, data), {\n at: targetRange,\n })\n }\n\n if (typeof data === 'string' && data.includes('\\n')) {\n return scheduleAction(() => Editor.insertSoftBreak(editor), {\n at: Range.end(targetRange),\n })\n }\n\n let text = data ?? ''\n\n // COMPAT: If we are writing inside a placeholder, the ime inserts the text inside\n // the placeholder itself and thus includes the zero-width space inside edit events.\n if (EDITOR_TO_PENDING_INSERTION_MARKS.get(editor)) {\n text = text.replace('\\uFEFF', '')\n }\n\n if (Path.equals(targetRange.anchor.path, targetRange.focus.path)) {\n const [start, end] = Range.edges(targetRange)\n\n const diff = {\n start: start.offset,\n end: end.offset,\n text,\n }\n\n // COMPAT: Swiftkey has a weird bug where the target range of the 2nd word\n // inserted after a mark placeholder is inserted with an anchor offset off by 1.\n // So writing 'some text' will result in 'some ttext'. Luckily all 'normal' insert\n // text events are fired with the correct target ranges, only the final 'insertComposition'\n // isn't, so we can adjust the target range start offset if we are confident this is the\n // swiftkey insert causing the issue.\n if (text && insertPositionHint && type === 'insertCompositionText') {\n const hintPosition =\n insertPositionHint.start + insertPositionHint.text.search(/\\S|$/)\n const diffPosition = diff.start + diff.text.search(/\\S|$/)\n\n if (\n diffPosition === hintPosition + 1 &&\n diff.end ===\n insertPositionHint.start + insertPositionHint.text.length\n ) {\n debug('adjusting swiftKey insert position using hint')\n diff.start -= 1\n insertPositionHint = null\n scheduleFlush()\n } else {\n insertPositionHint = false\n }\n } else if (type === 'insertText') {\n if (insertPositionHint === null) {\n insertPositionHint = diff\n } else if (\n insertPositionHint &&\n Range.isCollapsed(targetRange) &&\n insertPositionHint.end + insertPositionHint.text.length ===\n start.offset\n ) {\n insertPositionHint = {\n ...insertPositionHint,\n text: insertPositionHint.text + text,\n }\n } else {\n insertPositionHint = false\n }\n } else {\n insertPositionHint = false\n }\n\n storeDiff(start.path, diff)\n return\n }\n\n return scheduleAction(() => Editor.insertText(editor, text), {\n at: targetRange,\n })\n }\n }\n }\n\n const hasPendingAction = () => {\n return !!EDITOR_TO_PENDING_ACTION.get(editor)\n }\n\n const hasPendingDiffs = () => {\n return !!EDITOR_TO_PENDING_DIFFS.get(editor)?.length\n }\n\n const hasPendingChanges = () => {\n return hasPendingAction() || hasPendingDiffs()\n }\n\n const isFlushing = () => {\n return flushing\n }\n\n const handleUserSelect = (range: Range | null) => {\n EDITOR_TO_PENDING_SELECTION.set(editor, range)\n\n if (flushTimeoutId) {\n clearTimeout(flushTimeoutId)\n flushTimeoutId = null\n }\n\n const { selection } = editor\n if (!range) {\n return\n }\n\n const pathChanged =\n !selection || !Path.equals(selection.anchor.path, range.anchor.path)\n const parentPathChanged =\n !selection ||\n !Path.equals(\n selection.anchor.path.slice(0, -1),\n range.anchor.path.slice(0, -1)\n )\n\n if ((pathChanged && insertPositionHint) || parentPathChanged) {\n insertPositionHint = false\n }\n\n if (pathChanged || !hasPendingDiffs()) {\n flushTimeoutId = setTimeout(flush, FLUSH_DELAY)\n }\n }\n\n const handleInput = () => {\n if (hasPendingAction() || !hasPendingDiffs()) {\n debug('flush input')\n flush()\n }\n }\n\n const handleKeyDown = (_: React.KeyboardEvent) => {\n // COMPAT: Swiftkey closes the keyboard when typing inside a empty node\n // directly next to a non-contenteditable element (= the placeholder).\n // The only event fired soon enough for us to allow hiding the placeholder\n // without swiftkey picking it up is the keydown event, so we have to hide it\n // here. See https://github.com/ianstormtaylor/slate/pull/4988#issuecomment-1201050535\n if (!hasPendingDiffs()) {\n updatePlaceholderVisibility(true)\n setTimeout(updatePlaceholderVisibility)\n }\n }\n\n const scheduleFlush = () => {\n if (!hasPendingAction()) {\n actionTimeoutId = setTimeout(flush)\n }\n }\n\n const handleDomMutations = (mutations: MutationRecord[]) => {\n if (hasPendingDiffs() || hasPendingAction()) {\n return\n }\n\n if (\n mutations.some(mutation => isTrackedMutation(editor, mutation, mutations))\n ) {\n // Cause a re-render to restore the dom state if we encounter tracked mutations without\n // a corresponding pending action.\n EDITOR_TO_FORCE_RENDER.get(editor)?.()\n }\n }\n\n return {\n flush,\n scheduleFlush,\n\n hasPendingDiffs,\n hasPendingAction,\n hasPendingChanges,\n\n isFlushing,\n\n handleUserSelect,\n handleCompositionEnd,\n handleCompositionStart,\n handleDOMBeforeInput,\n handleKeyDown,\n\n handleDomMutations,\n handleInput,\n }\n}\n","import { RefObject, useState } from 'react'\nimport { useSlateStatic } from '../use-slate-static'\nimport { IS_ANDROID } from '../../utils/environment'\nimport { EDITOR_TO_SCHEDULE_FLUSH } from '../../utils/weak-maps'\nimport {\n createAndroidInputManager,\n CreateAndroidInputManagerOptions,\n} from './android-input-manager'\nimport { useIsMounted } from '../use-is-mounted'\nimport { useMutationObserver } from '../use-mutation-observer'\n\ntype UseAndroidInputManagerOptions = {\n node: RefObject\n} & Omit<\n CreateAndroidInputManagerOptions,\n 'editor' | 'onUserInput' | 'receivedUserInput'\n>\n\nconst MUTATION_OBSERVER_CONFIG: MutationObserverInit = {\n subtree: true,\n childList: true,\n characterData: true,\n}\n\nexport function useAndroidInputManager({\n node,\n ...options\n}: UseAndroidInputManagerOptions) {\n if (!IS_ANDROID) {\n return null\n }\n\n const editor = useSlateStatic()\n const isMounted = useIsMounted()\n\n const [inputManager] = useState(() =>\n createAndroidInputManager({\n editor,\n ...options,\n })\n )\n\n useMutationObserver(\n node,\n inputManager.handleDomMutations,\n MUTATION_OBSERVER_CONFIG\n )\n\n EDITOR_TO_SCHEDULE_FLUSH.set(editor, inputManager.scheduleFlush)\n if (isMounted) {\n inputManager.flush()\n }\n\n return inputManager\n}\n","import { useEffect, useRef } from 'react'\n\nexport function useIsMounted() {\n const isMountedRef = useRef(false)\n\n useEffect(() => {\n isMountedRef.current = true\n return () => {\n isMountedRef.current = false\n }\n }, [])\n\n return isMountedRef.current\n}\n","import { RefObject, useEffect, useState } from 'react'\nimport { useIsomorphicLayoutEffect } from './use-isomorphic-layout-effect'\nimport { isDOMElement } from '../utils/dom'\nimport { ReactEditor } from '../plugin/react-editor'\n\nexport function useMutationObserver(\n node: RefObject,\n callback: MutationCallback,\n options: MutationObserverInit\n) {\n const [mutationObserver] = useState(() => new MutationObserver(callback))\n\n useIsomorphicLayoutEffect(() => {\n // Discard mutations caused during render phase. This works due to react calling\n // useLayoutEffect synchronously after the render phase before the next tick.\n mutationObserver.takeRecords()\n })\n\n useEffect(() => {\n if (!node.current) {\n throw new Error('Failed to attach MutationObserver, `node` is undefined')\n }\n\n mutationObserver.observe(node.current, options)\n return () => mutationObserver.disconnect()\n }, [])\n}\n","import getDirection from 'direction'\nimport debounce from 'lodash/debounce'\nimport throttle from 'lodash/throttle'\nimport React, {\n useCallback,\n useEffect,\n useMemo,\n useReducer,\n useRef,\n useState,\n} from 'react'\nimport scrollIntoView from 'scroll-into-view-if-needed'\nimport {\n Editor,\n Element,\n Node,\n NodeEntry,\n Path,\n Range,\n Text,\n Transforms,\n} from 'slate'\nimport { ReactEditor } from '../plugin/react-editor'\nimport useChildren from '../hooks/use-children'\nimport { DecorateContext } from '../hooks/use-decorate'\nimport { useIsomorphicLayoutEffect } from '../hooks/use-isomorphic-layout-effect'\nimport { ReadOnlyContext } from '../hooks/use-read-only'\nimport { useSlate } from '../hooks/use-slate'\nimport { TRIPLE_CLICK } from '../utils/constants'\nimport {\n DOMElement,\n DOMNode,\n DOMRange,\n DOMText,\n getDefaultView,\n isDOMElement,\n isDOMNode,\n isPlainTextOnlyPaste,\n} from '../utils/dom'\nimport {\n CAN_USE_DOM,\n HAS_BEFORE_INPUT_SUPPORT,\n IS_ANDROID,\n IS_CHROME,\n IS_FIREFOX,\n IS_FIREFOX_LEGACY,\n IS_IOS,\n IS_QQBROWSER,\n IS_SAFARI,\n IS_UC_MOBILE,\n IS_WECHATBROWSER,\n} from '../utils/environment'\nimport Hotkeys from '../utils/hotkeys'\nimport {\n EDITOR_TO_ELEMENT,\n EDITOR_TO_FORCE_RENDER,\n EDITOR_TO_PENDING_INSERTION_MARKS,\n EDITOR_TO_USER_MARKS,\n EDITOR_TO_USER_SELECTION,\n EDITOR_TO_WINDOW,\n ELEMENT_TO_NODE,\n IS_COMPOSING,\n IS_FOCUSED,\n IS_READ_ONLY,\n MARK_PLACEHOLDER_SYMBOL,\n NODE_TO_ELEMENT,\n PLACEHOLDER_SYMBOL,\n} from '../utils/weak-maps'\nimport { RestoreDOM } from './restore-dom/restore-dom'\nimport { useAndroidInputManager } from '../hooks/android-input-manager/use-android-input-manager'\nimport { useTrackUserInput } from '../hooks/use-track-user-input'\n\ntype DeferredOperation = () => void\n\nconst Children = (props: Parameters[0]) => (\n {useChildren(props)}\n)\n\n/**\n * `RenderElementProps` are passed to the `renderElement` handler.\n */\n\nexport interface RenderElementProps {\n children: any\n element: Element\n attributes: {\n 'data-slate-node': 'element'\n 'data-slate-inline'?: true\n 'data-slate-void'?: true\n dir?: 'rtl'\n ref: any\n }\n}\n\n/**\n * `RenderLeafProps` are passed to the `renderLeaf` handler.\n */\n\nexport interface RenderLeafProps {\n children: any\n leaf: Text\n text: Text\n attributes: {\n 'data-slate-leaf': true\n }\n}\n\n/**\n * `EditableProps` are passed to the `` component.\n */\n\nexport type EditableProps = {\n decorate?: (entry: NodeEntry) => Range[]\n onDOMBeforeInput?: (event: InputEvent) => void\n placeholder?: string\n readOnly?: boolean\n role?: string\n style?: React.CSSProperties\n renderElement?: (props: RenderElementProps) => JSX.Element\n renderLeaf?: (props: RenderLeafProps) => JSX.Element\n renderPlaceholder?: (props: RenderPlaceholderProps) => JSX.Element\n scrollSelectionIntoView?: (editor: ReactEditor, domRange: DOMRange) => void\n as?: React.ElementType\n} & React.TextareaHTMLAttributes\n\n/**\n * Editable.\n */\n\nexport const Editable = (props: EditableProps) => {\n const {\n autoFocus,\n decorate = defaultDecorate,\n onDOMBeforeInput: propsOnDOMBeforeInput,\n placeholder,\n readOnly = false,\n renderElement,\n renderLeaf,\n renderPlaceholder = props => ,\n scrollSelectionIntoView = defaultScrollSelectionIntoView,\n style = {},\n as: Component = 'div',\n ...attributes\n } = props\n const editor = useSlate()\n // Rerender editor when composition status changed\n const [isComposing, setIsComposing] = useState(false)\n const ref = useRef(null)\n const deferredOperations = useRef([])\n\n const { onUserInput, receivedUserInput } = useTrackUserInput()\n\n const [, forceRender] = useReducer(s => s + 1, 0)\n EDITOR_TO_FORCE_RENDER.set(editor, forceRender)\n\n // Update internal state on each render.\n IS_READ_ONLY.set(editor, readOnly)\n\n // Keep track of some state for the event handler logic.\n const state = useMemo(\n () => ({\n isDraggingInternally: false,\n isUpdatingSelection: false,\n latestElement: null as DOMElement | null,\n hasMarkPlaceholder: false,\n }),\n []\n )\n\n // The autoFocus TextareaHTMLAttribute doesn't do anything on a div, so it\n // needs to be manually focused.\n useEffect(() => {\n if (ref.current && autoFocus) {\n ref.current.focus()\n }\n }, [autoFocus])\n\n // Listen on the native `selectionchange` event to be able to update any time\n // the selection changes. This is required because React's `onSelect` is leaky\n // and non-standard so it doesn't fire until after a selection has been\n // released. This causes issues in situations where another change happens\n // while a selection is being dragged.\n const onDOMSelectionChange = useCallback(\n throttle(() => {\n if (\n (IS_ANDROID || !ReactEditor.isComposing(editor)) &&\n (!state.isUpdatingSelection || androidInputManager?.isFlushing()) &&\n !state.isDraggingInternally\n ) {\n const root = ReactEditor.findDocumentOrShadowRoot(editor)\n const { activeElement } = root\n const el = ReactEditor.toDOMNode(editor, editor)\n const domSelection = root.getSelection()\n\n if (activeElement === el) {\n state.latestElement = activeElement\n IS_FOCUSED.set(editor, true)\n } else {\n IS_FOCUSED.delete(editor)\n }\n\n if (!domSelection) {\n return Transforms.deselect(editor)\n }\n\n const { anchorNode, focusNode } = domSelection\n\n const anchorNodeSelectable =\n hasEditableTarget(editor, anchorNode) ||\n isTargetInsideNonReadonlyVoid(editor, anchorNode)\n\n const focusNodeSelectable =\n hasEditableTarget(editor, focusNode) ||\n isTargetInsideNonReadonlyVoid(editor, focusNode)\n\n if (anchorNodeSelectable && focusNodeSelectable) {\n const range = ReactEditor.toSlateRange(editor, domSelection, {\n exactMatch: false,\n suppressThrow: true,\n })\n\n if (range) {\n if (\n !ReactEditor.isComposing(editor) &&\n !androidInputManager?.hasPendingChanges() &&\n !androidInputManager?.isFlushing()\n ) {\n Transforms.select(editor, range)\n } else {\n androidInputManager?.handleUserSelect(range)\n }\n }\n }\n\n // Deselect the editor if the dom selection is not selectable in readonly mode\n if (readOnly && (!anchorNodeSelectable || !focusNodeSelectable)) {\n Transforms.deselect(editor)\n }\n }\n }, 100),\n [readOnly]\n )\n\n const scheduleOnDOMSelectionChange = useMemo(\n () => debounce(onDOMSelectionChange, 0),\n [onDOMSelectionChange]\n )\n\n const androidInputManager = useAndroidInputManager({\n node: ref,\n onDOMSelectionChange,\n scheduleOnDOMSelectionChange,\n })\n\n useIsomorphicLayoutEffect(() => {\n // Update element-related weak maps with the DOM element ref.\n let window\n if (ref.current && (window = getDefaultView(ref.current))) {\n EDITOR_TO_WINDOW.set(editor, window)\n EDITOR_TO_ELEMENT.set(editor, ref.current)\n NODE_TO_ELEMENT.set(editor, ref.current)\n ELEMENT_TO_NODE.set(ref.current, editor)\n } else {\n NODE_TO_ELEMENT.delete(editor)\n }\n\n // Make sure the DOM selection state is in sync.\n const { selection } = editor\n const root = ReactEditor.findDocumentOrShadowRoot(editor)\n const domSelection = root.getSelection()\n\n if (\n !domSelection ||\n !ReactEditor.isFocused(editor) ||\n androidInputManager?.hasPendingAction()\n ) {\n return\n }\n\n const setDomSelection = (forceChange?: boolean) => {\n const hasDomSelection = domSelection.type !== 'None'\n\n // If the DOM selection is properly unset, we're done.\n if (!selection && !hasDomSelection) {\n return\n }\n\n // verify that the dom selection is in the editor\n const editorElement = EDITOR_TO_ELEMENT.get(editor)!\n let hasDomSelectionInEditor = false\n if (\n editorElement.contains(domSelection.anchorNode) &&\n editorElement.contains(domSelection.focusNode)\n ) {\n hasDomSelectionInEditor = true\n }\n\n // If the DOM selection is in the editor and the editor selection is already correct, we're done.\n if (\n hasDomSelection &&\n hasDomSelectionInEditor &&\n selection &&\n !forceChange\n ) {\n const slateRange = ReactEditor.toSlateRange(editor, domSelection, {\n exactMatch: true,\n\n // domSelection is not necessarily a valid Slate range\n // (e.g. when clicking on contentEditable:false element)\n suppressThrow: true,\n })\n\n if (slateRange && Range.equals(slateRange, selection)) {\n if (!state.hasMarkPlaceholder) {\n return\n }\n\n // Ensure selection is inside the mark placeholder\n const { anchorNode } = domSelection\n if (\n anchorNode?.parentElement?.hasAttribute(\n 'data-slate-mark-placeholder'\n )\n ) {\n return\n }\n }\n }\n\n // when is being controlled through external value\n // then its children might just change - DOM responds to it on its own\n // but Slate's value is not being updated through any operation\n // and thus it doesn't transform selection on its own\n if (selection && !ReactEditor.hasRange(editor, selection)) {\n editor.selection = ReactEditor.toSlateRange(editor, domSelection, {\n exactMatch: false,\n suppressThrow: true,\n })\n return\n }\n\n // Otherwise the DOM selection is out of sync, so update it.\n state.isUpdatingSelection = true\n\n const newDomRange: DOMRange | null =\n selection && ReactEditor.toDOMRange(editor, selection)\n\n if (newDomRange) {\n if (Range.isBackward(selection!)) {\n domSelection.setBaseAndExtent(\n newDomRange.endContainer,\n newDomRange.endOffset,\n newDomRange.startContainer,\n newDomRange.startOffset\n )\n } else {\n domSelection.setBaseAndExtent(\n newDomRange.startContainer,\n newDomRange.startOffset,\n newDomRange.endContainer,\n newDomRange.endOffset\n )\n }\n scrollSelectionIntoView(editor, newDomRange)\n } else {\n domSelection.removeAllRanges()\n }\n\n return newDomRange\n }\n\n const newDomRange = setDomSelection()\n const ensureSelection = androidInputManager?.isFlushing() === 'action'\n\n if (!IS_ANDROID || !ensureSelection) {\n setTimeout(() => {\n // COMPAT: In Firefox, it's not enough to create a range, you also need\n // to focus the contenteditable element too. (2016/11/16)\n if (newDomRange && IS_FIREFOX) {\n const el = ReactEditor.toDOMNode(editor, editor)\n el.focus()\n }\n\n state.isUpdatingSelection = false\n })\n return\n }\n\n let timeoutId: ReturnType | null = null\n const animationFrameId = requestAnimationFrame(() => {\n if (ensureSelection) {\n const ensureDomSelection = (forceChange?: boolean) => {\n try {\n const el = ReactEditor.toDOMNode(editor, editor)\n el.focus()\n\n setDomSelection(forceChange)\n } catch (e) {\n // Ignore, dom and state might be out of sync\n }\n }\n\n // Compat: Android IMEs try to force their selection by manually re-applying it even after we set it.\n // This essentially would make setting the slate selection during an update meaningless, so we force it\n // again here. We can't only do it in the setTimeout after the animation frame since that would cause a\n // visible flicker.\n ensureDomSelection()\n\n timeoutId = setTimeout(() => {\n // COMPAT: While setting the selection in an animation frame visually correctly sets the selection,\n // it doesn't update GBoards spellchecker state. We have to manually trigger a selection change after\n // the animation frame to ensure it displays the correct state.\n ensureDomSelection(true)\n state.isUpdatingSelection = false\n })\n }\n })\n\n return () => {\n cancelAnimationFrame(animationFrameId)\n if (timeoutId) {\n clearTimeout(timeoutId)\n }\n }\n })\n\n // Listen on the native `beforeinput` event to get real \"Level 2\" events. This\n // is required because React's `beforeinput` is fake and never really attaches\n // to the real event sadly. (2019/11/01)\n // https://github.com/facebook/react/issues/11211\n const onDOMBeforeInput = useCallback(\n (event: InputEvent) => {\n onUserInput()\n\n if (\n !readOnly &&\n hasEditableTarget(editor, event.target) &&\n !isDOMEventHandled(event, propsOnDOMBeforeInput)\n ) {\n // COMPAT: BeforeInput events aren't cancelable on android, so we have to handle them differently using the android input manager.\n if (androidInputManager) {\n return androidInputManager.handleDOMBeforeInput(event)\n }\n\n // Some IMEs/Chrome extensions like e.g. Grammarly set the selection immediately before\n // triggering a `beforeinput` expecting the change to be applied to the immediately before\n // set selection.\n scheduleOnDOMSelectionChange.flush()\n onDOMSelectionChange.flush()\n\n const { selection } = editor\n const { inputType: type } = event\n const data = (event as any).dataTransfer || event.data || undefined\n\n const isCompositionChange =\n type === 'insertCompositionText' || type === 'deleteCompositionText'\n\n // COMPAT: use composition change events as a hint to where we should insert\n // composition text if we aren't composing to work around https://github.com/ianstormtaylor/slate/issues/5038\n if (isCompositionChange && ReactEditor.isComposing(editor)) {\n return\n }\n\n let native = false\n if (\n type === 'insertText' &&\n selection &&\n Range.isCollapsed(selection) &&\n // Only use native character insertion for single characters a-z or space for now.\n // Long-press events (hold a + press 4 = ä) to choose a special character otherwise\n // causes duplicate inserts.\n event.data &&\n event.data.length === 1 &&\n /[a-z ]/i.test(event.data) &&\n // Chrome has issues correctly editing the start of nodes: https://bugs.chromium.org/p/chromium/issues/detail?id=1249405\n // When there is an inline element, e.g. a link, and you select\n // right after it (the start of the next node).\n selection.anchor.offset !== 0\n ) {\n native = true\n\n // Skip native if there are marks, as\n // `insertText` will insert a node, not just text.\n if (editor.marks) {\n native = false\n }\n\n // Chrome also has issues correctly editing the end of anchor elements: https://bugs.chromium.org/p/chromium/issues/detail?id=1259100\n // Therefore we don't allow native events to insert text at the end of anchor nodes.\n const { anchor } = selection\n\n const [node, offset] = ReactEditor.toDOMPoint(editor, anchor)\n const anchorNode = node.parentElement?.closest('a')\n\n const window = ReactEditor.getWindow(editor)\n\n if (\n native &&\n anchorNode &&\n ReactEditor.hasDOMNode(editor, anchorNode)\n ) {\n // Find the last text node inside the anchor.\n const lastText = window?.document\n .createTreeWalker(anchorNode, NodeFilter.SHOW_TEXT)\n .lastChild() as DOMText | null\n\n if (lastText === node && lastText.textContent?.length === offset) {\n native = false\n }\n }\n\n // Chrome has issues with the presence of tab characters inside elements with whiteSpace = 'pre'\n // causing abnormal insert behavior: https://bugs.chromium.org/p/chromium/issues/detail?id=1219139\n if (\n native &&\n node.parentElement &&\n window?.getComputedStyle(node.parentElement)?.whiteSpace === 'pre'\n ) {\n const block = Editor.above(editor, {\n at: anchor.path,\n match: n => Editor.isBlock(editor, n),\n })\n\n if (block && Node.string(block[0]).includes('\\t')) {\n native = false\n }\n }\n }\n\n // COMPAT: For the deleting forward/backward input types we don't want\n // to change the selection because it is the range that will be deleted,\n // and those commands determine that for themselves.\n if (!type.startsWith('delete') || type.startsWith('deleteBy')) {\n const [targetRange] = (event as any).getTargetRanges()\n\n if (targetRange) {\n const range = ReactEditor.toSlateRange(editor, targetRange, {\n exactMatch: false,\n suppressThrow: false,\n })\n\n if (!selection || !Range.equals(selection, range)) {\n native = false\n\n const selectionRef =\n !isCompositionChange &&\n editor.selection &&\n Editor.rangeRef(editor, editor.selection)\n\n Transforms.select(editor, range)\n\n if (selectionRef) {\n EDITOR_TO_USER_SELECTION.set(editor, selectionRef)\n }\n }\n }\n }\n\n // Composition change types occur while a user is composing text and can't be\n // cancelled. Let them through and wait for the composition to end.\n if (isCompositionChange) {\n return\n }\n\n if (!native) {\n event.preventDefault()\n }\n\n // COMPAT: If the selection is expanded, even if the command seems like\n // a delete forward/backward command it should delete the selection.\n if (\n selection &&\n Range.isExpanded(selection) &&\n type.startsWith('delete')\n ) {\n const direction = type.endsWith('Backward') ? 'backward' : 'forward'\n Editor.deleteFragment(editor, { direction })\n return\n }\n\n switch (type) {\n case 'deleteByComposition':\n case 'deleteByCut':\n case 'deleteByDrag': {\n Editor.deleteFragment(editor)\n break\n }\n\n case 'deleteContent':\n case 'deleteContentForward': {\n Editor.deleteForward(editor)\n break\n }\n\n case 'deleteContentBackward': {\n Editor.deleteBackward(editor)\n break\n }\n\n case 'deleteEntireSoftLine': {\n Editor.deleteBackward(editor, { unit: 'line' })\n Editor.deleteForward(editor, { unit: 'line' })\n break\n }\n\n case 'deleteHardLineBackward': {\n Editor.deleteBackward(editor, { unit: 'block' })\n break\n }\n\n case 'deleteSoftLineBackward': {\n Editor.deleteBackward(editor, { unit: 'line' })\n break\n }\n\n case 'deleteHardLineForward': {\n Editor.deleteForward(editor, { unit: 'block' })\n break\n }\n\n case 'deleteSoftLineForward': {\n Editor.deleteForward(editor, { unit: 'line' })\n break\n }\n\n case 'deleteWordBackward': {\n Editor.deleteBackward(editor, { unit: 'word' })\n break\n }\n\n case 'deleteWordForward': {\n Editor.deleteForward(editor, { unit: 'word' })\n break\n }\n\n case 'insertLineBreak':\n Editor.insertSoftBreak(editor)\n break\n\n case 'insertParagraph': {\n Editor.insertBreak(editor)\n break\n }\n\n case 'insertFromComposition':\n case 'insertFromDrop':\n case 'insertFromPaste':\n case 'insertFromYank':\n case 'insertReplacementText':\n case 'insertText': {\n if (type === 'insertFromComposition') {\n // COMPAT: in Safari, `compositionend` is dispatched after the\n // `beforeinput` for \"insertFromComposition\". But if we wait for it\n // then we will abort because we're still composing and the selection\n // won't be updated properly.\n // https://www.w3.org/TR/input-events-2/\n if (ReactEditor.isComposing(editor)) {\n setIsComposing(false)\n IS_COMPOSING.set(editor, false)\n }\n }\n\n // use a weak comparison instead of 'instanceof' to allow\n // programmatic access of paste events coming from external windows\n // like cypress where cy.window does not work realibly\n if (data?.constructor.name === 'DataTransfer') {\n ReactEditor.insertData(editor, data)\n } else if (typeof data === 'string') {\n // Only insertText operations use the native functionality, for now.\n // Potentially expand to single character deletes, as well.\n if (native) {\n deferredOperations.current.push(() =>\n Editor.insertText(editor, data)\n )\n } else {\n Editor.insertText(editor, data)\n }\n }\n\n break\n }\n }\n\n // Restore the actual user section if nothing manually set it.\n const toRestore = EDITOR_TO_USER_SELECTION.get(editor)?.unref()\n EDITOR_TO_USER_SELECTION.delete(editor)\n\n if (\n toRestore &&\n (!editor.selection || !Range.equals(editor.selection, toRestore))\n ) {\n Transforms.select(editor, toRestore)\n }\n }\n },\n [readOnly, propsOnDOMBeforeInput]\n )\n\n // Attach a native DOM event handler for `beforeinput` events, because React's\n // built-in `onBeforeInput` is actually a leaky polyfill that doesn't expose\n // real `beforeinput` events sadly... (2019/11/04)\n // https://github.com/facebook/react/issues/11211\n useIsomorphicLayoutEffect(() => {\n if (ref.current && HAS_BEFORE_INPUT_SUPPORT) {\n // @ts-ignore The `beforeinput` event isn't recognized.\n ref.current.addEventListener('beforeinput', onDOMBeforeInput)\n }\n\n return () => {\n if (ref.current && HAS_BEFORE_INPUT_SUPPORT) {\n // @ts-ignore The `beforeinput` event isn't recognized.\n ref.current.removeEventListener('beforeinput', onDOMBeforeInput)\n }\n }\n }, [onDOMBeforeInput])\n\n // Attach a native DOM event handler for `selectionchange`, because React's\n // built-in `onSelect` handler doesn't fire for all selection changes. It's a\n // leaky polyfill that only fires on keypresses or clicks. Instead, we want to\n // fire for any change to the selection inside the editor. (2019/11/04)\n // https://github.com/facebook/react/issues/5785\n useIsomorphicLayoutEffect(() => {\n const window = ReactEditor.getWindow(editor)\n\n window.document.addEventListener(\n 'selectionchange',\n scheduleOnDOMSelectionChange\n )\n\n return () => {\n window.document.removeEventListener(\n 'selectionchange',\n scheduleOnDOMSelectionChange\n )\n }\n }, [scheduleOnDOMSelectionChange])\n\n const decorations = decorate([editor, []])\n\n if (\n placeholder &&\n editor.children.length === 1 &&\n Array.from(Node.texts(editor)).length === 1 &&\n Node.string(editor) === '' &&\n !isComposing\n ) {\n const start = Editor.start(editor, [])\n decorations.push({\n [PLACEHOLDER_SYMBOL]: true,\n placeholder,\n anchor: start,\n focus: start,\n })\n }\n\n const { marks } = editor\n state.hasMarkPlaceholder = false\n\n if (editor.selection && Range.isCollapsed(editor.selection) && marks) {\n const { anchor } = editor.selection\n const leaf = Node.leaf(editor, anchor.path)\n const { text, ...rest } = leaf\n\n // While marks isn't a 'complete' text, we can still use loose Text.equals\n // here which only compares marks anyway.\n if (!Text.equals(leaf, marks as Text, { loose: true })) {\n state.hasMarkPlaceholder = true\n\n const unset = Object.fromEntries(\n Object.keys(rest).map(mark => [mark, null])\n )\n\n decorations.push({\n [MARK_PLACEHOLDER_SYMBOL]: true,\n ...unset,\n ...marks,\n\n anchor,\n focus: anchor,\n })\n }\n }\n\n // Update EDITOR_TO_MARK_PLACEHOLDER_MARKS in setTimeout useEffect to ensure we don't set it\n // before we receive the composition end event.\n useEffect(() => {\n setTimeout(() => {\n const { selection } = editor\n if (selection) {\n const { anchor } = selection\n const text = Node.leaf(editor, anchor.path)\n\n // While marks isn't a 'complete' text, we can still use loose Text.equals\n // here which only compares marks anyway.\n if (marks && !Text.equals(text, marks as Text, { loose: true })) {\n EDITOR_TO_PENDING_INSERTION_MARKS.set(editor, marks)\n return\n }\n }\n\n EDITOR_TO_PENDING_INSERTION_MARKS.delete(editor)\n })\n })\n\n return (\n \n \n \n ) => {\n // COMPAT: Certain browsers don't support the `beforeinput` event, so we\n // fall back to React's leaky polyfill instead just for it. It\n // only works for the `insertText` input type.\n if (\n !HAS_BEFORE_INPUT_SUPPORT &&\n !readOnly &&\n !isEventHandled(event, attributes.onBeforeInput) &&\n hasEditableTarget(editor, event.target)\n ) {\n event.preventDefault()\n if (!ReactEditor.isComposing(editor)) {\n const text = (event as any).data as string\n Editor.insertText(editor, text)\n }\n }\n },\n [readOnly]\n )}\n onInput={useCallback((event: React.SyntheticEvent) => {\n if (androidInputManager) {\n androidInputManager.handleInput()\n return\n }\n\n // Flush native operations, as native events will have propogated\n // and we can correctly compare DOM text values in components\n // to stop rendering, so that browser functions like autocorrect\n // and spellcheck work as expected.\n for (const op of deferredOperations.current) {\n op()\n }\n deferredOperations.current = []\n }, [])}\n onBlur={useCallback(\n (event: React.FocusEvent) => {\n if (\n readOnly ||\n state.isUpdatingSelection ||\n !hasEditableTarget(editor, event.target) ||\n isEventHandled(event, attributes.onBlur)\n ) {\n return\n }\n\n // COMPAT: If the current `activeElement` is still the previous\n // one, this is due to the window being blurred when the tab\n // itself becomes unfocused, so we want to abort early to allow to\n // editor to stay focused when the tab becomes focused again.\n const root = ReactEditor.findDocumentOrShadowRoot(editor)\n if (state.latestElement === root.activeElement) {\n return\n }\n\n const { relatedTarget } = event\n const el = ReactEditor.toDOMNode(editor, editor)\n\n // COMPAT: The event should be ignored if the focus is returning\n // to the editor from an embedded editable element (eg. an \n // element inside a void node).\n if (relatedTarget === el) {\n return\n }\n\n // COMPAT: The event should be ignored if the focus is moving from\n // the editor to inside a void node's spacer element.\n if (\n isDOMElement(relatedTarget) &&\n relatedTarget.hasAttribute('data-slate-spacer')\n ) {\n return\n }\n\n // COMPAT: The event should be ignored if the focus is moving to a\n // non- editable section of an element that isn't a void node (eg.\n // a list item of the check list example).\n if (\n relatedTarget != null &&\n isDOMNode(relatedTarget) &&\n ReactEditor.hasDOMNode(editor, relatedTarget)\n ) {\n const node = ReactEditor.toSlateNode(editor, relatedTarget)\n\n if (Element.isElement(node) && !editor.isVoid(node)) {\n return\n }\n }\n\n // COMPAT: Safari doesn't always remove the selection even if the content-\n // editable element no longer has focus. Refer to:\n // https://stackoverflow.com/questions/12353247/force-contenteditable-div-to-stop-accepting-input-after-it-loses-focus-under-web\n if (IS_SAFARI) {\n const domSelection = root.getSelection()\n domSelection?.removeAllRanges()\n }\n\n IS_FOCUSED.delete(editor)\n },\n [readOnly, attributes.onBlur]\n )}\n onClick={useCallback(\n (event: React.MouseEvent) => {\n if (\n hasTarget(editor, event.target) &&\n !isEventHandled(event, attributes.onClick) &&\n isDOMNode(event.target)\n ) {\n const node = ReactEditor.toSlateNode(editor, event.target)\n const path = ReactEditor.findPath(editor, node)\n\n // At this time, the Slate document may be arbitrarily different,\n // because onClick handlers can change the document before we get here.\n // Therefore we must check that this path actually exists,\n // and that it still refers to the same node.\n if (\n !Editor.hasPath(editor, path) ||\n Node.get(editor, path) !== node\n ) {\n return\n }\n\n if (event.detail === TRIPLE_CLICK && path.length >= 1) {\n let blockPath = path\n if (!Editor.isBlock(editor, node)) {\n const block = Editor.above(editor, {\n match: n => Editor.isBlock(editor, n),\n at: path,\n })\n\n blockPath = block?.[1] ?? path.slice(0, 1)\n }\n\n const range = Editor.range(editor, blockPath)\n Transforms.select(editor, range)\n return\n }\n\n if (readOnly) {\n return\n }\n\n const start = Editor.start(editor, path)\n const end = Editor.end(editor, path)\n const startVoid = Editor.void(editor, { at: start })\n const endVoid = Editor.void(editor, { at: end })\n\n if (\n startVoid &&\n endVoid &&\n Path.equals(startVoid[1], endVoid[1])\n ) {\n const range = Editor.range(editor, start)\n Transforms.select(editor, range)\n }\n }\n },\n [readOnly, attributes.onClick]\n )}\n onCompositionEnd={useCallback(\n (event: React.CompositionEvent) => {\n if (hasEditableTarget(editor, event.target)) {\n if (ReactEditor.isComposing(editor)) {\n setIsComposing(false)\n IS_COMPOSING.set(editor, false)\n }\n\n androidInputManager?.handleCompositionEnd(event)\n\n if (\n isEventHandled(event, attributes.onCompositionEnd) ||\n IS_ANDROID\n ) {\n return\n }\n\n // COMPAT: In Chrome, `beforeinput` events for compositions\n // aren't correct and never fire the \"insertFromComposition\"\n // type that we need. So instead, insert whenever a composition\n // ends since it will already have been committed to the DOM.\n if (\n !IS_SAFARI &&\n !IS_FIREFOX_LEGACY &&\n !IS_IOS &&\n !IS_QQBROWSER &&\n !IS_WECHATBROWSER &&\n !IS_UC_MOBILE &&\n event.data\n ) {\n const placeholderMarks = EDITOR_TO_PENDING_INSERTION_MARKS.get(\n editor\n )\n EDITOR_TO_PENDING_INSERTION_MARKS.delete(editor)\n\n // Ensure we insert text with the marks the user was actually seeing\n if (placeholderMarks !== undefined) {\n EDITOR_TO_USER_MARKS.set(editor, editor.marks)\n editor.marks = placeholderMarks\n }\n\n Editor.insertText(editor, event.data)\n\n const userMarks = EDITOR_TO_USER_MARKS.get(editor)\n EDITOR_TO_USER_MARKS.delete(editor)\n if (userMarks !== undefined) {\n editor.marks = userMarks\n }\n }\n }\n },\n [attributes.onCompositionEnd]\n )}\n onCompositionUpdate={useCallback(\n (event: React.CompositionEvent) => {\n if (\n hasEditableTarget(editor, event.target) &&\n !isEventHandled(event, attributes.onCompositionUpdate)\n ) {\n if (!ReactEditor.isComposing(editor)) {\n setIsComposing(true)\n IS_COMPOSING.set(editor, true)\n }\n }\n },\n [attributes.onCompositionUpdate]\n )}\n onCompositionStart={useCallback(\n (event: React.CompositionEvent) => {\n if (hasEditableTarget(editor, event.target)) {\n androidInputManager?.handleCompositionStart(event)\n\n if (\n isEventHandled(event, attributes.onCompositionStart) ||\n IS_ANDROID\n ) {\n return\n }\n\n setIsComposing(true)\n\n const { selection } = editor\n if (selection) {\n if (Range.isExpanded(selection)) {\n Editor.deleteFragment(editor)\n return\n }\n const inline = Editor.above(editor, {\n match: n => Editor.isInline(editor, n),\n mode: 'highest',\n })\n if (inline) {\n const [, inlinePath] = inline\n if (Editor.isEnd(editor, selection.anchor, inlinePath)) {\n const point = Editor.after(editor, inlinePath)!\n Transforms.setSelection(editor, {\n anchor: point,\n focus: point,\n })\n }\n }\n }\n }\n },\n [attributes.onCompositionStart]\n )}\n onCopy={useCallback(\n (event: React.ClipboardEvent) => {\n if (\n hasEditableTarget(editor, event.target) &&\n !isEventHandled(event, attributes.onCopy)\n ) {\n event.preventDefault()\n ReactEditor.setFragmentData(\n editor,\n event.clipboardData,\n 'copy'\n )\n }\n },\n [attributes.onCopy]\n )}\n onCut={useCallback(\n (event: React.ClipboardEvent) => {\n if (\n !readOnly &&\n hasEditableTarget(editor, event.target) &&\n !isEventHandled(event, attributes.onCut)\n ) {\n event.preventDefault()\n ReactEditor.setFragmentData(\n editor,\n event.clipboardData,\n 'cut'\n )\n const { selection } = editor\n\n if (selection) {\n if (Range.isExpanded(selection)) {\n Editor.deleteFragment(editor)\n } else {\n const node = Node.parent(editor, selection.anchor.path)\n if (Editor.isVoid(editor, node)) {\n Transforms.delete(editor)\n }\n }\n }\n }\n },\n [readOnly, attributes.onCut]\n )}\n onDragOver={useCallback(\n (event: React.DragEvent) => {\n if (\n hasTarget(editor, event.target) &&\n !isEventHandled(event, attributes.onDragOver)\n ) {\n // Only when the target is void, call `preventDefault` to signal\n // that drops are allowed. Editable content is droppable by\n // default, and calling `preventDefault` hides the cursor.\n const node = ReactEditor.toSlateNode(editor, event.target)\n\n if (Editor.isVoid(editor, node)) {\n event.preventDefault()\n }\n }\n },\n [attributes.onDragOver]\n )}\n onDragStart={useCallback(\n (event: React.DragEvent) => {\n if (\n !readOnly &&\n hasTarget(editor, event.target) &&\n !isEventHandled(event, attributes.onDragStart)\n ) {\n const node = ReactEditor.toSlateNode(editor, event.target)\n const path = ReactEditor.findPath(editor, node)\n const voidMatch =\n Editor.isVoid(editor, node) ||\n Editor.void(editor, { at: path, voids: true })\n\n // If starting a drag on a void node, make sure it is selected\n // so that it shows up in the selection's fragment.\n if (voidMatch) {\n const range = Editor.range(editor, path)\n Transforms.select(editor, range)\n }\n\n state.isDraggingInternally = true\n\n ReactEditor.setFragmentData(\n editor,\n event.dataTransfer,\n 'drag'\n )\n }\n },\n [readOnly, attributes.onDragStart]\n )}\n onDrop={useCallback(\n (event: React.DragEvent) => {\n if (\n !readOnly &&\n hasTarget(editor, event.target) &&\n !isEventHandled(event, attributes.onDrop)\n ) {\n event.preventDefault()\n\n // Keep a reference to the dragged range before updating selection\n const draggedRange = editor.selection\n\n // Find the range where the drop happened\n const range = ReactEditor.findEventRange(editor, event)\n const data = event.dataTransfer\n\n Transforms.select(editor, range)\n\n if (state.isDraggingInternally) {\n if (\n draggedRange &&\n !Range.equals(draggedRange, range) &&\n !Editor.void(editor, { at: range, voids: true })\n ) {\n Transforms.delete(editor, {\n at: draggedRange,\n })\n }\n }\n\n ReactEditor.insertData(editor, data)\n\n // When dragging from another source into the editor, it's possible\n // that the current editor does not have focus.\n if (!ReactEditor.isFocused(editor)) {\n ReactEditor.focus(editor)\n }\n }\n\n state.isDraggingInternally = false\n },\n [readOnly, attributes.onDrop]\n )}\n onDragEnd={useCallback(\n (event: React.DragEvent) => {\n if (\n !readOnly &&\n state.isDraggingInternally &&\n attributes.onDragEnd &&\n hasTarget(editor, event.target)\n ) {\n attributes.onDragEnd(event)\n }\n\n // When dropping on a different droppable element than the current editor,\n // `onDrop` is not called. So we need to clean up in `onDragEnd` instead.\n // Note: `onDragEnd` is only called when `onDrop` is not called\n state.isDraggingInternally = false\n },\n [readOnly, attributes.onDragEnd]\n )}\n onFocus={useCallback(\n (event: React.FocusEvent) => {\n if (\n !readOnly &&\n !state.isUpdatingSelection &&\n hasEditableTarget(editor, event.target) &&\n !isEventHandled(event, attributes.onFocus)\n ) {\n const el = ReactEditor.toDOMNode(editor, editor)\n const root = ReactEditor.findDocumentOrShadowRoot(editor)\n state.latestElement = root.activeElement\n\n // COMPAT: If the editor has nested editable elements, the focus\n // can go to them. In Firefox, this must be prevented because it\n // results in issues with keyboard navigation. (2017/03/30)\n if (IS_FIREFOX && event.target !== el) {\n el.focus()\n return\n }\n\n IS_FOCUSED.set(editor, true)\n }\n },\n [readOnly, attributes.onFocus]\n )}\n onKeyDown={useCallback(\n (event: React.KeyboardEvent) => {\n if (!readOnly && hasEditableTarget(editor, event.target)) {\n androidInputManager?.handleKeyDown(event)\n\n const { nativeEvent } = event\n\n // COMPAT: The composition end event isn't fired reliably in all browsers,\n // so we sometimes might end up stuck in a composition state even though we\n // aren't composing any more.\n if (\n ReactEditor.isComposing(editor) &&\n nativeEvent.isComposing === false\n ) {\n IS_COMPOSING.set(editor, false)\n setIsComposing(false)\n }\n\n if (\n isEventHandled(event, attributes.onKeyDown) ||\n ReactEditor.isComposing(editor)\n ) {\n return\n }\n\n const { selection } = editor\n const element =\n editor.children[\n selection !== null ? selection.focus.path[0] : 0\n ]\n const isRTL = getDirection(Node.string(element)) === 'rtl'\n\n // COMPAT: Since we prevent the default behavior on\n // `beforeinput` events, the browser doesn't think there's ever\n // any history stack to undo or redo, so we have to manage these\n // hotkeys ourselves. (2019/11/06)\n if (Hotkeys.isRedo(nativeEvent)) {\n event.preventDefault()\n const maybeHistoryEditor: any = editor\n\n if (typeof maybeHistoryEditor.redo === 'function') {\n maybeHistoryEditor.redo()\n }\n\n return\n }\n\n if (Hotkeys.isUndo(nativeEvent)) {\n event.preventDefault()\n const maybeHistoryEditor: any = editor\n\n if (typeof maybeHistoryEditor.undo === 'function') {\n maybeHistoryEditor.undo()\n }\n\n return\n }\n\n // COMPAT: Certain browsers don't handle the selection updates\n // properly. In Chrome, the selection isn't properly extended.\n // And in Firefox, the selection isn't properly collapsed.\n // (2017/10/17)\n if (Hotkeys.isMoveLineBackward(nativeEvent)) {\n event.preventDefault()\n Transforms.move(editor, { unit: 'line', reverse: true })\n return\n }\n\n if (Hotkeys.isMoveLineForward(nativeEvent)) {\n event.preventDefault()\n Transforms.move(editor, { unit: 'line' })\n return\n }\n\n if (Hotkeys.isExtendLineBackward(nativeEvent)) {\n event.preventDefault()\n Transforms.move(editor, {\n unit: 'line',\n edge: 'focus',\n reverse: true,\n })\n return\n }\n\n if (Hotkeys.isExtendLineForward(nativeEvent)) {\n event.preventDefault()\n Transforms.move(editor, { unit: 'line', edge: 'focus' })\n return\n }\n\n // COMPAT: If a void node is selected, or a zero-width text node\n // adjacent to an inline is selected, we need to handle these\n // hotkeys manually because browsers won't be able to skip over\n // the void node with the zero-width space not being an empty\n // string.\n if (Hotkeys.isMoveBackward(nativeEvent)) {\n event.preventDefault()\n\n if (selection && Range.isCollapsed(selection)) {\n Transforms.move(editor, { reverse: !isRTL })\n } else {\n Transforms.collapse(editor, { edge: 'start' })\n }\n\n return\n }\n\n if (Hotkeys.isMoveForward(nativeEvent)) {\n event.preventDefault()\n\n if (selection && Range.isCollapsed(selection)) {\n Transforms.move(editor, { reverse: isRTL })\n } else {\n Transforms.collapse(editor, { edge: 'end' })\n }\n\n return\n }\n\n if (Hotkeys.isMoveWordBackward(nativeEvent)) {\n event.preventDefault()\n\n if (selection && Range.isExpanded(selection)) {\n Transforms.collapse(editor, { edge: 'focus' })\n }\n\n Transforms.move(editor, { unit: 'word', reverse: !isRTL })\n return\n }\n\n if (Hotkeys.isMoveWordForward(nativeEvent)) {\n event.preventDefault()\n\n if (selection && Range.isExpanded(selection)) {\n Transforms.collapse(editor, { edge: 'focus' })\n }\n\n Transforms.move(editor, { unit: 'word', reverse: isRTL })\n return\n }\n\n // COMPAT: Certain browsers don't support the `beforeinput` event, so we\n // fall back to guessing at the input intention for hotkeys.\n // COMPAT: In iOS, some of these hotkeys are handled in the\n if (!HAS_BEFORE_INPUT_SUPPORT) {\n // We don't have a core behavior for these, but they change the\n // DOM if we don't prevent them, so we have to.\n if (\n Hotkeys.isBold(nativeEvent) ||\n Hotkeys.isItalic(nativeEvent) ||\n Hotkeys.isTransposeCharacter(nativeEvent)\n ) {\n event.preventDefault()\n return\n }\n\n if (Hotkeys.isSoftBreak(nativeEvent)) {\n event.preventDefault()\n Editor.insertSoftBreak(editor)\n return\n }\n\n if (Hotkeys.isSplitBlock(nativeEvent)) {\n event.preventDefault()\n Editor.insertBreak(editor)\n return\n }\n\n if (Hotkeys.isDeleteBackward(nativeEvent)) {\n event.preventDefault()\n\n if (selection && Range.isExpanded(selection)) {\n Editor.deleteFragment(editor, { direction: 'backward' })\n } else {\n Editor.deleteBackward(editor)\n }\n\n return\n }\n\n if (Hotkeys.isDeleteForward(nativeEvent)) {\n event.preventDefault()\n\n if (selection && Range.isExpanded(selection)) {\n Editor.deleteFragment(editor, { direction: 'forward' })\n } else {\n Editor.deleteForward(editor)\n }\n\n return\n }\n\n if (Hotkeys.isDeleteLineBackward(nativeEvent)) {\n event.preventDefault()\n\n if (selection && Range.isExpanded(selection)) {\n Editor.deleteFragment(editor, { direction: 'backward' })\n } else {\n Editor.deleteBackward(editor, { unit: 'line' })\n }\n\n return\n }\n\n if (Hotkeys.isDeleteLineForward(nativeEvent)) {\n event.preventDefault()\n\n if (selection && Range.isExpanded(selection)) {\n Editor.deleteFragment(editor, { direction: 'forward' })\n } else {\n Editor.deleteForward(editor, { unit: 'line' })\n }\n\n return\n }\n\n if (Hotkeys.isDeleteWordBackward(nativeEvent)) {\n event.preventDefault()\n\n if (selection && Range.isExpanded(selection)) {\n Editor.deleteFragment(editor, { direction: 'backward' })\n } else {\n Editor.deleteBackward(editor, { unit: 'word' })\n }\n\n return\n }\n\n if (Hotkeys.isDeleteWordForward(nativeEvent)) {\n event.preventDefault()\n\n if (selection && Range.isExpanded(selection)) {\n Editor.deleteFragment(editor, { direction: 'forward' })\n } else {\n Editor.deleteForward(editor, { unit: 'word' })\n }\n\n return\n }\n } else {\n if (IS_CHROME || IS_SAFARI) {\n // COMPAT: Chrome and Safari support `beforeinput` event but do not fire\n // an event when deleting backwards in a selected void inline node\n if (\n selection &&\n (Hotkeys.isDeleteBackward(nativeEvent) ||\n Hotkeys.isDeleteForward(nativeEvent)) &&\n Range.isCollapsed(selection)\n ) {\n const currentNode = Node.parent(\n editor,\n selection.anchor.path\n )\n\n if (\n Element.isElement(currentNode) &&\n Editor.isVoid(editor, currentNode) &&\n (Editor.isInline(editor, currentNode) ||\n Editor.isBlock(editor, currentNode))\n ) {\n event.preventDefault()\n Editor.deleteBackward(editor, { unit: 'block' })\n\n return\n }\n }\n }\n }\n }\n },\n [readOnly, attributes.onKeyDown]\n )}\n onPaste={useCallback(\n (event: React.ClipboardEvent) => {\n if (\n !readOnly &&\n hasEditableTarget(editor, event.target) &&\n !isEventHandled(event, attributes.onPaste)\n ) {\n // COMPAT: Certain browsers don't support the `beforeinput` event, so we\n // fall back to React's `onPaste` here instead.\n // COMPAT: Firefox, Chrome and Safari don't emit `beforeinput` events\n // when \"paste without formatting\" is used, so fallback. (2020/02/20)\n if (\n !HAS_BEFORE_INPUT_SUPPORT ||\n isPlainTextOnlyPaste(event.nativeEvent)\n ) {\n event.preventDefault()\n ReactEditor.insertData(editor, event.clipboardData)\n }\n }\n },\n [readOnly, attributes.onPaste]\n )}\n >\n \n \n \n \n \n )\n}\n\n/**\n * The props that get passed to renderPlaceholder\n */\nexport type RenderPlaceholderProps = {\n children: any\n attributes: {\n 'data-slate-placeholder': boolean\n dir?: 'rtl'\n contentEditable: boolean\n ref: React.RefObject\n style: React.CSSProperties\n }\n}\n\n/**\n * The default placeholder element\n */\n\nexport const DefaultPlaceholder = ({\n attributes,\n children,\n}: RenderPlaceholderProps) => (\n // COMPAT: Artificially add a line-break to the end on the placeholder element\n // to prevent Android IMEs to pick up its content in autocorrect and to auto-capitalize the first letter\n \n {children}\n {IS_ANDROID &&
}\n
\n)\n\n/**\n * A default memoized decorate function.\n */\n\nexport const defaultDecorate: (entry: NodeEntry) => Range[] = () => []\n\n/**\n * A default implement to scroll dom range into view.\n */\n\nconst defaultScrollSelectionIntoView = (\n editor: ReactEditor,\n domRange: DOMRange\n) => {\n // This was affecting the selection of multiple blocks and dragging behavior,\n // so enabled only if the selection has been collapsed.\n if (\n !editor.selection ||\n (editor.selection && Range.isCollapsed(editor.selection))\n ) {\n const leafEl = domRange.startContainer.parentElement!\n leafEl.getBoundingClientRect = domRange.getBoundingClientRect.bind(domRange)\n scrollIntoView(leafEl, {\n scrollMode: 'if-needed',\n })\n\n // @ts-expect-error an unorthodox delete D:\n delete leafEl.getBoundingClientRect\n }\n}\n\n/**\n * Check if the target is in the editor.\n */\n\nexport const hasTarget = (\n editor: ReactEditor,\n target: EventTarget | null\n): target is DOMNode => {\n return isDOMNode(target) && ReactEditor.hasDOMNode(editor, target)\n}\n\n/**\n * Check if the target is editable and in the editor.\n */\n\nexport const hasEditableTarget = (\n editor: ReactEditor,\n target: EventTarget | null\n): target is DOMNode => {\n return (\n isDOMNode(target) &&\n ReactEditor.hasDOMNode(editor, target, { editable: true })\n )\n}\n\n/**\n * Check if the target is inside void and in an non-readonly editor.\n */\n\nexport const isTargetInsideNonReadonlyVoid = (\n editor: ReactEditor,\n target: EventTarget | null\n): boolean => {\n if (IS_READ_ONLY.get(editor)) return false\n\n const slateNode =\n hasTarget(editor, target) && ReactEditor.toSlateNode(editor, target)\n return Editor.isVoid(editor, slateNode)\n}\n\n/**\n * Check if an event is overrided by a handler.\n */\n\nexport const isEventHandled = <\n EventType extends React.SyntheticEvent\n>(\n event: EventType,\n handler?: (event: EventType) => void | boolean\n) => {\n if (!handler) {\n return false\n }\n // The custom event handler may return a boolean to specify whether the event\n // shall be treated as being handled or not.\n const shouldTreatEventAsHandled = handler(event)\n\n if (shouldTreatEventAsHandled != null) {\n return shouldTreatEventAsHandled\n }\n\n return event.isDefaultPrevented() || event.isPropagationStopped()\n}\n\n/**\n * Check if a DOM event is overrided by a handler.\n */\n\nexport const isDOMEventHandled = (\n event: E,\n handler?: (event: E) => void | boolean\n) => {\n if (!handler) {\n return false\n }\n\n // The custom event handler may return a boolean to specify whether the event\n // shall be treated as being handled or not.\n const shouldTreatEventAsHandled = handler(event)\n\n if (shouldTreatEventAsHandled != null) {\n return shouldTreatEventAsHandled\n }\n\n return event.defaultPrevented\n}\n","import { useCallback, useRef, useEffect } from 'react'\nimport { ReactEditor } from '../plugin/react-editor'\nimport { useSlateStatic } from './use-slate-static'\n\nexport function useTrackUserInput() {\n const editor = useSlateStatic()\n\n const receivedUserInput = useRef(false)\n const animationFrameIdRef = useRef(0)\n\n const onUserInput = useCallback(() => {\n if (receivedUserInput.current) {\n return\n }\n\n receivedUserInput.current = true\n\n const window = ReactEditor.getWindow(editor)\n window.cancelAnimationFrame(animationFrameIdRef.current)\n\n animationFrameIdRef.current = window.requestAnimationFrame(() => {\n receivedUserInput.current = false\n })\n }, [])\n\n useEffect(() => () => cancelAnimationFrame(animationFrameIdRef.current), [])\n\n return {\n receivedUserInput,\n onUserInput,\n }\n}\n","export const TRIPLE_CLICK = 3\n","import { createContext, useContext } from 'react'\n\n/**\n * A React context for sharing the `focused` state of the editor.\n */\n\nexport const FocusedContext = createContext(false)\n\n/**\n * Get the current `focused` state of the editor.\n */\n\nexport const useFocused = (): boolean => {\n return useContext(FocusedContext)\n}\n","import {\n createContext,\n useCallback,\n useContext,\n useMemo,\n useReducer,\n useRef,\n} from 'react'\nimport { Editor } from 'slate'\nimport { useIsomorphicLayoutEffect } from './use-isomorphic-layout-effect'\n\nfunction isError(error: any): error is Error {\n return error instanceof Error\n}\n\ntype EditorChangeHandler = (editor: Editor) => void\n/**\n * A React context for sharing the editor selector context in a way to control rerenders\n */\n\nexport const SlateSelectorContext = createContext<{\n getSlate: () => Editor\n addEventListener: (callback: EditorChangeHandler) => () => void\n}>({} as any)\n\nconst refEquality = (a: any, b: any) => a === b\n\n/**\n * use redux style selectors to prevent rerendering on every keystroke.\n * Bear in mind rerendering can only prevented if the returned value is a value type or for reference types (e.g. objects and arrays) add a custom equality function.\n *\n * Example:\n * ```\n * const isSelectionActive = useSlateSelector(editor => Boolean(editor.selection));\n * ```\n */\nexport function useSlateSelector(\n selector: (editor: Editor) => T,\n equalityFn: (a: T, b: T) => boolean = refEquality\n) {\n const [, forceRender] = useReducer(s => s + 1, 0)\n const context = useContext(SlateSelectorContext)\n if (!context) {\n throw new Error(\n `The \\`useSlateSelector\\` hook must be used inside the component's context.`\n )\n }\n const { getSlate, addEventListener } = context\n\n const latestSubscriptionCallbackError = useRef()\n const latestSelector = useRef<(editor: Editor) => T>(() => null as any)\n const latestSelectedState = useRef((null as any) as T)\n let selectedState: T\n\n try {\n if (\n selector !== latestSelector.current ||\n latestSubscriptionCallbackError.current\n ) {\n selectedState = selector(getSlate())\n } else {\n selectedState = latestSelectedState.current\n }\n } catch (err) {\n if (latestSubscriptionCallbackError.current && isError(err)) {\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 useIsomorphicLayoutEffect(() => {\n latestSelector.current = selector\n latestSelectedState.current = selectedState\n latestSubscriptionCallbackError.current = undefined\n })\n\n useIsomorphicLayoutEffect(\n () => {\n function checkForUpdates() {\n try {\n const newSelectedState = latestSelector.current(getSlate())\n\n if (equalityFn(newSelectedState, latestSelectedState.current)) {\n return\n }\n\n latestSelectedState.current = newSelectedState\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 const unsubscribe = addEventListener(checkForUpdates)\n\n checkForUpdates()\n\n return () => unsubscribe()\n },\n // don't rerender on equalityFn change since we want to be able to define it inline\n [addEventListener, getSlate]\n )\n\n return selectedState\n}\n\n/**\n * Create selector context with editor updating on every editor change\n */\nexport function getSelectorContext(editor: Editor) {\n const eventListeners = useRef([]).current\n const slateRef = useRef<{\n editor: Editor\n }>({\n editor,\n }).current\n const onChange = useCallback((editor: Editor) => {\n slateRef.editor = editor\n eventListeners.forEach((listener: EditorChangeHandler) => listener(editor))\n }, [])\n\n const selectorContext = useMemo(() => {\n return {\n getSlate: () => slateRef.editor,\n addEventListener: (callback: EditorChangeHandler) => {\n eventListeners.push(callback)\n return () => {\n eventListeners.splice(eventListeners.indexOf(callback), 1)\n }\n },\n }\n }, [eventListeners, slateRef])\n return { selectorContext, onChange }\n}\n","import React, { useState, useCallback, useEffect, useRef } from 'react'\nimport { Editor, Node, Descendant, Scrubber } from 'slate'\nimport { ReactEditor } from '../plugin/react-editor'\nimport { FocusedContext } from '../hooks/use-focused'\nimport { EditorContext } from '../hooks/use-slate-static'\nimport { SlateContext, SlateContextValue } from '../hooks/use-slate'\nimport {\n getSelectorContext,\n SlateSelectorContext,\n} from '../hooks/use-slate-selector'\nimport { EDITOR_TO_ON_CHANGE } from '../utils/weak-maps'\nimport { IS_REACT_VERSION_17_OR_ABOVE } from '../utils/environment'\nimport { useIsomorphicLayoutEffect } from '../hooks/use-isomorphic-layout-effect'\n\n/**\n * A wrapper around the provider to handle `onChange` events, because the editor\n * is a mutable singleton so it won't ever register as \"changed\" otherwise.\n */\n\nexport const Slate = (props: {\n editor: ReactEditor\n value: Descendant[]\n children: React.ReactNode\n onChange?: (value: Descendant[]) => void\n}) => {\n const { editor, children, onChange, value, ...rest } = props\n const unmountRef = useRef(false)\n\n const [context, setContext] = React.useState(() => {\n if (!Node.isNodeList(value)) {\n throw new Error(\n `[Slate] value is invalid! Expected a list of elements` +\n `but got: ${Scrubber.stringify(value)}`\n )\n }\n if (!Editor.isEditor(editor)) {\n throw new Error(\n `[Slate] editor is invalid! you passed:` +\n `${Scrubber.stringify(editor)}`\n )\n }\n editor.children = value\n Object.assign(editor, rest)\n return { v: 0, editor }\n })\n\n const {\n selectorContext,\n onChange: handleSelectorChange,\n } = getSelectorContext(editor)\n\n const onContextChange = useCallback(() => {\n if (onChange) {\n onChange(editor.children)\n }\n\n setContext(prevContext => ({\n v: prevContext.v + 1,\n editor,\n }))\n handleSelectorChange(editor)\n }, [onChange])\n\n EDITOR_TO_ON_CHANGE.set(editor, onContextChange)\n\n useEffect(() => {\n return () => {\n EDITOR_TO_ON_CHANGE.set(editor, () => {})\n unmountRef.current = true\n }\n }, [])\n\n const [isFocused, setIsFocused] = useState(ReactEditor.isFocused(editor))\n\n useEffect(() => {\n setIsFocused(ReactEditor.isFocused(editor))\n })\n\n useIsomorphicLayoutEffect(() => {\n const fn = () => setIsFocused(ReactEditor.isFocused(editor))\n if (IS_REACT_VERSION_17_OR_ABOVE) {\n // In React >= 17 onFocus and onBlur listen to the focusin and focusout events during the bubbling phase.\n // Therefore in order for 's handlers to run first, which is necessary for ReactEditor.isFocused(editor)\n // to return the correct value, we have to listen to the focusin and focusout events without useCapture here.\n document.addEventListener('focusin', fn)\n document.addEventListener('focusout', fn)\n return () => {\n document.removeEventListener('focusin', fn)\n document.removeEventListener('focusout', fn)\n }\n } else {\n document.addEventListener('focus', fn, true)\n document.addEventListener('blur', fn, true)\n return () => {\n document.removeEventListener('focus', fn, true)\n document.removeEventListener('blur', fn, true)\n }\n }\n }, [])\n\n return (\n \n \n \n \n {children}\n \n \n \n \n )\n}\n","/**\n * Utilities for single-line deletion\n */\n\nimport { Range, Editor } from 'slate'\nimport { ReactEditor } from '../plugin/react-editor'\n\nconst doRectsIntersect = (rect: DOMRect, compareRect: DOMRect) => {\n const middle = (compareRect.top + compareRect.bottom) / 2\n\n return rect.top <= middle && rect.bottom >= middle\n}\n\nconst areRangesSameLine = (\n editor: ReactEditor,\n range1: Range,\n range2: Range\n) => {\n const rect1 = ReactEditor.toDOMRange(editor, range1).getBoundingClientRect()\n const rect2 = ReactEditor.toDOMRange(editor, range2).getBoundingClientRect()\n\n return doRectsIntersect(rect1, rect2) && doRectsIntersect(rect2, rect1)\n}\n\n/**\n * A helper utility that returns the end portion of a `Range`\n * which is located on a single line.\n *\n * @param {Editor} editor The editor object to compare against\n * @param {Range} parentRange The parent range to compare against\n * @returns {Range} A valid portion of the parentRange which is one a single line\n */\nexport const findCurrentLineRange = (\n editor: ReactEditor,\n parentRange: Range\n): Range => {\n const parentRangeBoundary = Editor.range(editor, Range.end(parentRange))\n const positions = Array.from(Editor.positions(editor, { at: parentRange }))\n\n let left = 0\n let right = positions.length\n let middle = Math.floor(right / 2)\n\n if (\n areRangesSameLine(\n editor,\n Editor.range(editor, positions[left]),\n parentRangeBoundary\n )\n ) {\n return Editor.range(editor, positions[left], parentRangeBoundary)\n }\n\n if (positions.length < 2) {\n return Editor.range(\n editor,\n positions[positions.length - 1],\n parentRangeBoundary\n )\n }\n\n while (middle !== positions.length && middle !== left) {\n if (\n areRangesSameLine(\n editor,\n Editor.range(editor, positions[middle]),\n parentRangeBoundary\n )\n ) {\n right = middle\n } else {\n left = middle\n }\n\n middle = Math.floor((left + right) / 2)\n }\n\n return Editor.range(editor, positions[right], parentRangeBoundary)\n}\n","var _g;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _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 _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 * as React from \"react\";\n\nfunction SvgBold(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 512,\n height: 512,\n x: 0,\n y: 0,\n viewBox: \"0 0 512.047 512.047\",\n style: {\n enableBackground: \"new 0 0 512 512\"\n },\n xmlSpace: \"preserve\",\n className: \"\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"g\", {\n id: \"B\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n fill: \"var(--current_svg_color)\",\n d: \"m334.568 507.618c83.832-9.523 131.455-77.588 131.455-150.791 0-52.632-25.84-95.229-70.518-118.681 29.941-24.111 47.651-61.656 47.651-102.174 0-64.556-46.699-119.575-111.05-130.854-45.293-7.877-113.853-4.022-286.083-5.071v511.941c40.109.208 248.486.099 288.545-4.37zm-164.531-397.573c14.517.109 100.222-.508 117.466 1.523 22.998 2.886 34.189 15.366 34.189 38.159 0 28.989-20.977 37.632-38.628 39.785-16.663 2.083-86.313 1.393-113.027 1.523zm0 191.719c26.149.741 115.186-2.538 139.204 5.991 19.644 7.046 29.604 22.002 29.604 44.487 0 24.902-12.466 40.942-35.083 45.176l-.41.088c-18.359 3.934-99.933 2.182-133.315 2.607z\"\n })))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgBold);\nexport default __webpack_public_path__ + \"static/media/bold.1686464d100a6ab0e3fac68dbb31c0c3.svg\";\nexport { ForwardRef as ReactComponent };","import ReactDOM from 'react-dom'\nimport {\n BaseEditor,\n Editor,\n Node,\n Operation,\n Path,\n Point,\n Range,\n Transforms,\n} from 'slate'\nimport {\n TextDiff,\n transformPendingPoint,\n transformPendingRange,\n transformTextDiff,\n} from '../utils/diff-text'\nimport {\n getPlainText,\n getSlateFragmentAttribute,\n isDOMText,\n} from '../utils/dom'\nimport { Key } from '../utils/key'\nimport { findCurrentLineRange } from '../utils/lines'\nimport {\n EDITOR_TO_KEY_TO_ELEMENT,\n EDITOR_TO_ON_CHANGE,\n EDITOR_TO_PENDING_ACTION,\n EDITOR_TO_PENDING_DIFFS,\n EDITOR_TO_PENDING_SELECTION,\n EDITOR_TO_USER_MARKS,\n EDITOR_TO_USER_SELECTION,\n NODE_TO_KEY,\n EDITOR_TO_SCHEDULE_FLUSH,\n EDITOR_TO_PENDING_INSERTION_MARKS,\n} from '../utils/weak-maps'\nimport { ReactEditor } from './react-editor'\n/**\n * `withReact` adds React and DOM specific behaviors to the editor.\n *\n * If you are using TypeScript, you must extend Slate's CustomTypes to use\n * this plugin.\n *\n * See https://docs.slatejs.org/concepts/11-typescript to learn how.\n */\n\nexport const withReact = (editor: T): T & ReactEditor => {\n const e = editor as T & ReactEditor\n const { apply, onChange, deleteBackward, addMark, removeMark } = e\n\n // The WeakMap which maps a key to a specific HTMLElement must be scoped to the editor instance to\n // avoid collisions between editors in the DOM that share the same value.\n EDITOR_TO_KEY_TO_ELEMENT.set(e, new WeakMap())\n\n e.addMark = (key, value) => {\n EDITOR_TO_SCHEDULE_FLUSH.get(e)?.()\n\n if (\n !EDITOR_TO_PENDING_INSERTION_MARKS.get(e) &&\n EDITOR_TO_PENDING_DIFFS.get(e)?.length\n ) {\n // Ensure the current pending diffs originating from changes before the addMark\n // are applied with the current formatting\n EDITOR_TO_PENDING_INSERTION_MARKS.set(e, null)\n }\n\n EDITOR_TO_USER_MARKS.delete(e)\n\n addMark(key, value)\n }\n\n e.removeMark = key => {\n if (\n !EDITOR_TO_PENDING_INSERTION_MARKS.get(e) &&\n EDITOR_TO_PENDING_DIFFS.get(e)?.length\n ) {\n // Ensure the current pending diffs originating from changes before the addMark\n // are applied with the current formatting\n EDITOR_TO_PENDING_INSERTION_MARKS.set(e, null)\n }\n\n EDITOR_TO_USER_MARKS.delete(e)\n\n removeMark(key)\n }\n\n e.deleteBackward = unit => {\n if (unit !== 'line') {\n return deleteBackward(unit)\n }\n\n if (e.selection && Range.isCollapsed(e.selection)) {\n const parentBlockEntry = Editor.above(e, {\n match: n => Editor.isBlock(e, n),\n at: e.selection,\n })\n\n if (parentBlockEntry) {\n const [, parentBlockPath] = parentBlockEntry\n const parentElementRange = Editor.range(\n e,\n parentBlockPath,\n e.selection.anchor\n )\n\n const currentLineRange = findCurrentLineRange(e, parentElementRange)\n\n if (!Range.isCollapsed(currentLineRange)) {\n Transforms.delete(e, { at: currentLineRange })\n }\n }\n }\n }\n\n // This attempts to reset the NODE_TO_KEY entry to the correct value\n // as apply() changes the object reference and hence invalidates the NODE_TO_KEY entry\n e.apply = (op: Operation) => {\n const matches: [Path, Key][] = []\n\n const pendingDiffs = EDITOR_TO_PENDING_DIFFS.get(e)\n if (pendingDiffs?.length) {\n const transformed = pendingDiffs\n .map(textDiff => transformTextDiff(textDiff, op))\n .filter(Boolean) as TextDiff[]\n\n EDITOR_TO_PENDING_DIFFS.set(e, transformed)\n }\n\n const pendingSelection = EDITOR_TO_PENDING_SELECTION.get(e)\n if (pendingSelection) {\n EDITOR_TO_PENDING_SELECTION.set(\n e,\n transformPendingRange(e, pendingSelection, op)\n )\n }\n\n const pendingAction = EDITOR_TO_PENDING_ACTION.get(e)\n if (pendingAction?.at) {\n const at = Point.isPoint(pendingAction?.at)\n ? transformPendingPoint(e, pendingAction.at, op)\n : transformPendingRange(e, pendingAction.at, op)\n\n EDITOR_TO_PENDING_ACTION.set(e, at ? { ...pendingAction, at } : null)\n }\n\n switch (op.type) {\n case 'insert_text':\n case 'remove_text':\n case 'set_node':\n case 'split_node': {\n matches.push(...getMatches(e, op.path))\n break\n }\n\n case 'set_selection': {\n // Selection was manually set, don't restore the user selection after the change.\n EDITOR_TO_USER_SELECTION.get(e)?.unref()\n EDITOR_TO_USER_SELECTION.delete(e)\n break\n }\n\n case 'insert_node':\n case 'remove_node': {\n matches.push(...getMatches(e, Path.parent(op.path)))\n break\n }\n\n case 'merge_node': {\n const prevPath = Path.previous(op.path)\n matches.push(...getMatches(e, prevPath))\n break\n }\n\n case 'move_node': {\n const commonPath = Path.common(\n Path.parent(op.path),\n Path.parent(op.newPath)\n )\n matches.push(...getMatches(e, commonPath))\n break\n }\n }\n\n apply(op)\n\n for (const [path, key] of matches) {\n const [node] = Editor.node(e, path)\n NODE_TO_KEY.set(node, key)\n }\n }\n\n e.setFragmentData = (data: Pick) => {\n const { selection } = e\n\n if (!selection) {\n return\n }\n\n const [start, end] = Range.edges(selection)\n const startVoid = Editor.void(e, { at: start.path })\n const endVoid = Editor.void(e, { at: end.path })\n\n if (Range.isCollapsed(selection) && !startVoid) {\n return\n }\n\n // Create a fake selection so that we can add a Base64-encoded copy of the\n // fragment to the HTML, to decode on future pastes.\n const domRange = ReactEditor.toDOMRange(e, selection)\n let contents = domRange.cloneContents()\n let attach = contents.childNodes[0] as HTMLElement\n\n // Make sure attach is non-empty, since empty nodes will not get copied.\n contents.childNodes.forEach(node => {\n if (node.textContent && node.textContent.trim() !== '') {\n attach = node as HTMLElement\n }\n })\n\n // COMPAT: If the end node is a void node, we need to move the end of the\n // range from the void node's spacer span, to the end of the void node's\n // content, since the spacer is before void's content in the DOM.\n if (endVoid) {\n const [voidNode] = endVoid\n const r = domRange.cloneRange()\n const domNode = ReactEditor.toDOMNode(e, voidNode)\n r.setEndAfter(domNode)\n contents = r.cloneContents()\n }\n\n // COMPAT: If the start node is a void node, we need to attach the encoded\n // fragment to the void node's content node instead of the spacer, because\n // attaching it to empty `
/` nodes will end up having it erased by\n // most browsers. (2018/04/27)\n if (startVoid) {\n attach = contents.querySelector('[data-slate-spacer]')! as HTMLElement\n }\n\n // Remove any zero-width space spans from the cloned DOM so that they don't\n // show up elsewhere when pasted.\n Array.from(contents.querySelectorAll('[data-slate-zero-width]')).forEach(\n zw => {\n const isNewline = zw.getAttribute('data-slate-zero-width') === 'n'\n zw.textContent = isNewline ? '\\n' : ''\n }\n )\n\n // Set a `data-slate-fragment` attribute on a non-empty node, so it shows up\n // in the HTML, and can be used for intra-Slate pasting. If it's a text\n // node, wrap it in a `` so we have something to set an attribute on.\n if (isDOMText(attach)) {\n const span = attach.ownerDocument.createElement('span')\n // COMPAT: In Chrome and Safari, if we don't add the `white-space` style\n // then leading and trailing spaces will be ignored. (2017/09/21)\n span.style.whiteSpace = 'pre'\n span.appendChild(attach)\n contents.appendChild(span)\n attach = span\n }\n\n const fragment = e.getFragment()\n const string = JSON.stringify(fragment)\n const encoded = window.btoa(encodeURIComponent(string))\n attach.setAttribute('data-slate-fragment', encoded)\n data.setData('application/x-slate-fragment', encoded)\n\n // Add the content to a
so that we can get its inner HTML.\n const div = contents.ownerDocument.createElement('div')\n div.appendChild(contents)\n div.setAttribute('hidden', 'true')\n contents.ownerDocument.body.appendChild(div)\n data.setData('text/html', div.innerHTML)\n data.setData('text/plain', getPlainText(div))\n contents.ownerDocument.body.removeChild(div)\n return data\n }\n\n e.insertData = (data: DataTransfer) => {\n if (!e.insertFragmentData(data)) {\n e.insertTextData(data)\n }\n }\n\n e.insertFragmentData = (data: DataTransfer): boolean => {\n /**\n * Checking copied fragment from application/x-slate-fragment or data-slate-fragment\n */\n const fragment =\n data.getData('application/x-slate-fragment') ||\n getSlateFragmentAttribute(data)\n\n if (fragment) {\n const decoded = decodeURIComponent(window.atob(fragment))\n const parsed = JSON.parse(decoded) as Node[]\n e.insertFragment(parsed)\n return true\n }\n return false\n }\n\n e.insertTextData = (data: DataTransfer): boolean => {\n const text = data.getData('text/plain')\n\n if (text) {\n const lines = text.split(/\\r\\n|\\r|\\n/)\n let split = false\n\n for (const line of lines) {\n if (split) {\n Transforms.splitNodes(e, { always: true })\n }\n\n e.insertText(line)\n split = true\n }\n return true\n }\n return false\n }\n\n e.onChange = () => {\n // COMPAT: React doesn't batch `setState` hook calls, which means that the\n // children and selection can get out of sync for one render pass. So we\n // have to use this unstable API to ensure it batches them. (2019/12/03)\n // https://github.com/facebook/react/issues/14259#issuecomment-439702367\n ReactDOM.unstable_batchedUpdates(() => {\n const onContextChange = EDITOR_TO_ON_CHANGE.get(e)\n\n if (onContextChange) {\n onContextChange()\n }\n\n onChange()\n })\n }\n\n return e\n}\n\nconst getMatches = (e: Editor, path: Path) => {\n const matches: [Path, Key][] = []\n for (const [n, p] of Editor.levels(e, { at: path })) {\n const key = ReactEditor.findKey(e, n)\n matches.push([p, key])\n }\n return matches\n}\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _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 _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 * as React from \"react\";\n\nfunction SvgItalic(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 512,\n height: 512,\n x: 0,\n y: 0,\n viewBox: \"0 0 512 512\",\n style: {\n enableBackground: \"new 0 0 512 512\"\n },\n xmlSpace: \"preserve\",\n className: \"\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"var(--current_svg_color)\",\n d: \"m301 512h-240v-90h75.306l141.5-332h-66.806v-90h240v90h-75.307l-141.499 332h66.806z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgItalic);\nexport default __webpack_public_path__ + \"static/media/italic.cebe98f7ea494697ef7787bf7233584c.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _rect;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _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 _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 * as React from \"react\";\n\nfunction SvgUnderline(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 512,\n height: 512,\n x: 0,\n y: 0,\n viewBox: \"0 0 384 384\",\n style: {\n enableBackground: \"new 0 0 512 512\"\n },\n xmlSpace: \"preserve\",\n className: \"\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"var(--current_svg_color)\",\n d: \"M192,298.667c70.72,0,128-57.28,128-128V0h-53.333v170.667c0,41.28-33.387,74.667-74.667,74.667 s-74.667-33.387-74.667-74.667V0H64v170.667C64,241.387,121.28,298.667,192,298.667z\",\n className: \"\"\n })), _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n x: 42.667,\n y: 341.333,\n width: 298.667,\n height: 42.667,\n className: \"\",\n fill: \"var(--current_svg_color)\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgUnderline);\nexport default __webpack_public_path__ + \"static/media/underline.1599504c78f2d68618e5471ca770a5b0.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _path3;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _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 _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 * as React from \"react\";\n\nfunction SvgCode(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 512,\n height: 512,\n x: 0,\n y: 0,\n viewBox: \"0 0 511.997 511.997\",\n style: {\n enableBackground: \"new 0 0 512 512\"\n },\n xmlSpace: \"preserve\",\n className: \"\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M506.76,242.828l-118.4-125.44c-7.277-7.718-19.424-8.07-27.142-0.787c-7.706,7.277-8.064,19.43-0.781,27.142 l105.965,112.256L360.437,368.268c-7.283,7.712-6.925,19.859,0.781,27.142c3.712,3.501,8.454,5.235,13.178,5.235 c5.101,0,10.195-2.022,13.965-6.01l118.4-125.446C513.742,261.785,513.742,250.226,506.76,242.828z\",\n fill: \"var(--current_svg_color)\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M151.566,368.262L45.608,255.999l105.958-112.262c7.277-7.712,6.925-19.866-0.787-27.142 c-7.706-7.277-19.866-6.925-27.142,0.787l-118.4,125.44c-6.982,7.398-6.982,18.963,0,26.362L123.643,394.63 c3.776,4,8.864,6.016,13.965,6.016c4.723,0,9.466-1.741,13.171-5.242C158.498,388.127,158.843,375.974,151.566,368.262z\",\n fill: \"var(--current_svg_color)\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M287.061,52.697c-10.477-1.587-20.282,5.606-21.882,16.083l-56.32,368.64c-1.6,10.483,5.6,20.282,16.083,21.882 c0.986,0.147,1.958,0.218,2.925,0.218c9.325,0,17.504-6.803,18.957-16.301l56.32-368.64 C304.744,64.095,297.544,54.297,287.061,52.697z\",\n fill: \"var(--current_svg_color)\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgCode);\nexport default __webpack_public_path__ + \"static/media/code.55a9775f8c8cbaf2e4babf6264266dc2.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _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 _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 * as React from \"react\";\n\nfunction SvgH1(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 512,\n height: 512,\n x: 0,\n y: 0,\n viewBox: \"0 0 24 24\",\n style: {\n enableBackground: \"new 0 0 512 512\"\n },\n xmlSpace: \"preserve\",\n className: \"\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"m13.5 20h-2v-7h-7v7h-2v-16h2v7h7v-7h2zm8-12v12h-2v-9.8l-2 .5v-2l2.5-.7z\",\n fill: \"var(--current_svg_color)\",\n className: \"\"\n }))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgH1);\nexport default __webpack_public_path__ + \"static/media/h1.4875432e57ad2fb6d9268aa02f84a22f.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _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 _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 * as React from \"react\";\n\nfunction SvgH2(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 512,\n height: 512,\n x: 0,\n y: 0,\n viewBox: \"0 0 24 24\",\n style: {\n enableBackground: \"new 0 0 512 512\"\n },\n xmlSpace: \"preserve\",\n className: \"\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"m3.9 4v7h7v-7h2v16h-2v-7h-7v7h-2v-16zm14.5 4c2.1 0 3.8 1.7 3.8 3.8 0 .9-.3 1.6-.8 2.3l-.1.2-3.4 3.7h4v2h-7v-1.6l4.8-5.5c.3-.3.4-.7.4-1.1 0-1-.8-1.8-1.8-1.8-.9 0-1.7.7-1.7 1.6v.1h-2c0-2 1.7-3.7 3.8-3.7z\",\n fill: \"var(--current_svg_color)\"\n }))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgH2);\nexport default __webpack_public_path__ + \"static/media/h2.579d3d1122e444ace87826107bc19f37.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _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 _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 * as React from \"react\";\n\nfunction SvgH3(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 512,\n height: 512,\n x: 0,\n y: 0,\n viewBox: \"0 0 24 24\",\n style: {\n enableBackground: \"new 0 0 512 512\"\n },\n xmlSpace: \"preserve\",\n className: \"\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"m21.9 7.9v2l-2.5 2.9c1.6.4 2.8 1.9 2.8 3.6 0 2.1-1.7 3.8-3.8 3.8-1.8 0-3.3-1.3-3.7-3l2-.4c.2.8.9 1.4 1.7 1.4 1 0 1.8-.8 1.8-1.8s-.8-1.8-1.8-1.8c-.3 0-.6.1-.8.2l-1.3-1.5 3-3.4h-4.4v-2zm-18-4v7h7v-7h2v16h-2v-7h-7v7h-2v-16z\",\n fill: \"var(--current_svg_color)\",\n className: \"\"\n }))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgH3);\nexport default __webpack_public_path__ + \"static/media/h3.867918ccf7abc04752b49c244f4e1576.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _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 _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 * as React from \"react\";\n\nfunction SvgH4(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 512,\n height: 512,\n x: 0,\n y: 0,\n viewBox: \"0 0 24 24\",\n style: {\n enableBackground: \"new 0 0 512 512\"\n },\n xmlSpace: \"preserve\",\n className: \"\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"m12.2 20h-2v-7h-7v7h-2v-16h2v7h7v-7h2zm9-12v8h1.5v2h-1.5v2h-2v-2h-5.5v-1.3l5-8.7zm-2 3.1-2.8 4.9h2.8z\",\n fill: \"var(--current_svg_color)\"\n }))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgH4);\nexport default __webpack_public_path__ + \"static/media/h4.92095390789fd19e5159db010e164663.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _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 _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 * as React from \"react\";\n\nfunction SvgH5(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 512,\n height: 512,\n x: 0,\n y: 0,\n viewBox: \"0 0 24 24\",\n style: {\n enableBackground: \"new 0 0 512 512\"\n },\n xmlSpace: \"preserve\",\n className: \"\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"m21.9 7.8v2h-4.3l-.5 2.6c.3-.1.7-.1 1-.1 2.2 0 4 1.8 4 4s-1.8 4-4 4c-1.8 0-3.4-1.2-3.8-2.9l1.9-.6c.2.8 1 1.4 1.9 1.4 1.1 0 2-.9 2-2s-.9-2-2-2c-.6 0-1.2.3-1.6.7l-1.8-.9 1.1-6.3h6.1zm-18-4v7h7v-7h2v16h-2v-7h-7v7h-2v-16z\",\n fill: \"var(--current_svg_color)\"\n }))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgH5);\nexport default __webpack_public_path__ + \"static/media/h5.a0eed25846cd99eb26b2f1f596990b02.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _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 _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 * as React from \"react\";\n\nfunction SvgH6(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 512,\n height: 512,\n x: 0,\n y: 0,\n viewBox: \"0 0 24 24\",\n style: {\n enableBackground: \"new 0 0 512 512\"\n },\n xmlSpace: \"preserve\",\n className: \"\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"m20.8 7.8-2.6 4.5c2.2 0 4 1.8 4 4s-1.8 4-4 4-4-1.8-4-4c0-.7.2-1.4.5-2l3.7-6.5zm-17-4v7h7v-7h2v16h-2v-7h-7v7h-2v-16zm14.4 10.4c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.8-2-2-2z\",\n fill: \"var(--current_svg_color)\",\n className: \"\"\n }))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgH6);\nexport default __webpack_public_path__ + \"static/media/h6.bc67e85213fff50bdeeb2a847aceb506.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _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 _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 * as React from \"react\";\n\nfunction SvgLeft(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 512,\n height: 512,\n x: 0,\n y: 0,\n viewBox: \"0 0 24 24\",\n style: {\n enableBackground: \"new 0 0 512 512\"\n },\n xmlSpace: \"preserve\",\n className: \"\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"m21 3h-18a1 1 0 0 0 0 2h18a1 1 0 0 0 0-2z\",\n fill: \"var(--current_svg_color)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"m22 12a1 1 0 0 0 -1-1h-18a1 1 0 0 0 0 2h18a1 1 0 0 0 1-1z\",\n fill: \"var(--current_svg_color)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"m12 19h-9a1 1 0 0 0 0 2h9a1 1 0 0 0 0-2z\",\n fill: \"var(--current_svg_color)\"\n }))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgLeft);\nexport default __webpack_public_path__ + \"static/media/left.8bcff21ae6bc5e3ba0041a90a895ee7c.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _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 _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 * as React from \"react\";\n\nfunction SvgCenter(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 512,\n height: 512,\n x: 0,\n y: 0,\n viewBox: \"0 0 24 24\",\n style: {\n enableBackground: \"new 0 0 512 512\"\n },\n xmlSpace: \"preserve\",\n className: \"\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n clipRule: \"evenodd\",\n d: \"m3 7c0-.55228.44772-1 1-1h16c.5523 0 1 .44772 1 1s-.4477 1-1 1h-16c-.55228 0-1-.44772-1-1zm3 5c0-.5523.44772-1 1-1h10c.5523 0 1 .4477 1 1s-.4477 1-1 1h-10c-.55228 0-1-.4477-1-1zm4 4c-.55228 0-1 .4477-1 1s.44772 1 1 1h4c.5523 0 1-.4477 1-1s-.4477-1-1-1z\",\n fill: \"var(--current_svg_color)\",\n fillRule: \"evenodd\"\n }))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgCenter);\nexport default __webpack_public_path__ + \"static/media/center.c30f91529b251bfd3ab9d3a58c43ca01.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _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 _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 * as React from \"react\";\n\nfunction SvgRight(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 512,\n height: 512,\n x: 0,\n y: 0,\n viewBox: \"0 0 24 24\",\n style: {\n enableBackground: \"new 0 0 512 512\"\n },\n xmlSpace: \"preserve\",\n className: \"\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"m3 5h18a1 1 0 0 0 0-2h-18a1 1 0 0 0 0 2z\",\n fill: \"var(--current_svg_color)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"m3 13h18a1 1 0 0 0 0-2h-18a1 1 0 0 0 0 2z\",\n fill: \"var(--current_svg_color)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"m21 19h-9a1 1 0 0 0 0 2h9a1 1 0 0 0 0-2z\",\n fill: \"var(--current_svg_color)\"\n }))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgRight);\nexport default __webpack_public_path__ + \"static/media/right.6ad62d5ef2494564bdc2f3e7e6c1867f.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _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 _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 * as React from \"react\";\n\nfunction SvgJustify(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 512,\n height: 512,\n x: 0,\n y: 0,\n viewBox: \"0 0 64 64\",\n style: {\n enableBackground: \"new 0 0 512 512\"\n },\n xmlSpace: \"preserve\",\n className: \"\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"m59.5 18h-55c-1.1 0-2-.9-2-2s.9-2 2-2h55c1.1 0 2 .9 2 2s-.9 2-2 2z\",\n fill: \"var(--current_svg_color)\"\n })))), /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"m59.5 34h-55c-1.1 0-2-.9-2-2s.9-2 2-2h55c1.1 0 2 .9 2 2s-.9 2-2 2z\",\n fill: \"var(--current_svg_color)\"\n })))), /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"m59.5 50h-55c-1.1 0-2-.9-2-2s.9-2 2-2h55c1.1 0 2 .9 2 2s-.9 2-2 2z\",\n fill: \"var(--current_svg_color)\"\n })))))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgJustify);\nexport default __webpack_public_path__ + \"static/media/justify.aff8a034042170330d5be5b90ce88e04.svg\";\nexport { ForwardRef as ReactComponent };","var _g;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _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 _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 * as React from \"react\";\n\nfunction SvgQuote(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 512,\n height: 512,\n x: 0,\n y: 0,\n viewBox: \"0 0 32 32\",\n style: {\n enableBackground: \"new 0 0 512 512\"\n },\n xmlSpace: \"preserve\",\n className: \"\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"m6.59998 19.23999c-.65998 1.65997-1.69996 3.29999-3.08997 4.88001-.44.5-.5 1.21997-.14001 1.77997.28003.44.73999.67999 1.23999.67999.14001 0 .28003-.00995.42004-.06 2.93994-.85999 9.81-3.90997 10-13.69.06995-3.76996-2.69-7.00995-6.28003-7.37995-1.98999-.20001-3.96997.44995-5.44 1.76996-1.46997 1.33002-2.31 3.23004-2.31 5.21002 0 3.29999 2.34003 6.19001 5.59998 6.81z\",\n fill: \"var(--current_svg_color)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"m24.71002 5.45001c-1.98004-.20001-3.96002.44995-5.42999 1.76996-1.47003 1.33002-2.31006 3.23004-2.31006 5.21002 0 3.29999 2.34003 6.19 5.60004 6.81-.66003 1.65997-1.70001 3.29999-3.09003 4.88-.44.5-.5 1.21997-.13995 1.77997.27997.44.73999.67999 1.23999.67999.13995 0 .27997-.00995.41998-.06 2.94-.85999 9.81-3.90997 10-13.69v-.13995c0-3.71002-2.72998-6.86999-6.28998-7.23999z\",\n fill: \"var(--current_svg_color)\"\n })))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgQuote);\nexport default __webpack_public_path__ + \"static/media/quote.7baa3d8e531b38c6e0e813921d20e51c.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _path3, _circle, _circle2, _circle3;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _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 _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 * as React from \"react\";\n\nfunction SvgUlList(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 512,\n height: 512,\n x: 0,\n y: 0,\n viewBox: \"0 0 60.123 60.123\",\n style: {\n enableBackground: \"new 0 0 512 512\"\n },\n xmlSpace: \"preserve\",\n className: \"\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M57.124,51.893H16.92c-1.657,0-3-1.343-3-3s1.343-3,3-3h40.203c1.657,0,3,1.343,3,3S58.781,51.893,57.124,51.893z\",\n fill: \"var(--current_svg_color)\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M57.124,33.062H16.92c-1.657,0-3-1.343-3-3s1.343-3,3-3h40.203c1.657,0,3,1.343,3,3 C60.124,31.719,58.781,33.062,57.124,33.062z\",\n fill: \"var(--current_svg_color)\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M57.124,14.231H16.92c-1.657,0-3-1.343-3-3s1.343-3,3-3h40.203c1.657,0,3,1.343,3,3S58.781,14.231,57.124,14.231z\",\n fill: \"var(--current_svg_color)\"\n })), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 4.029,\n cy: 11.463,\n r: 4.029,\n fill: \"var(--current_svg_color)\"\n })), _circle2 || (_circle2 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 4.029,\n cy: 30.062,\n r: 4.029,\n fill: \"var(--current_svg_color)\"\n })), _circle3 || (_circle3 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 4.029,\n cy: 48.661,\n r: 4.029,\n fill: \"var(--current_svg_color)\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgUlList);\nexport default __webpack_public_path__ + \"static/media/ulList.d1be30e07ce9df053067c534c2deb7e1.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _path3, _path4, _path5;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _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 _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 * as React from \"react\";\n\nfunction SvgOlList(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 284,\n height: 250,\n viewBox: \"0 0 284 250\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M193.745 54.1915C170.214 54.1915 146.575 54.3004 123.045 54.1915C110.408 54.0826 102.783 45.0409 104.635 33.0579C105.942 24.6698 112.805 18.5694 122.174 18.5694C169.997 18.4604 217.928 18.4604 265.86 18.5694C276.863 18.5694 283.835 26.1949 283.726 36.6528C283.617 47.1106 276.427 54.0826 265.207 54.1915C241.35 54.3004 217.493 54.1915 193.745 54.1915V54.1915Z\",\n fill: \"var(--current_svg_color)\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M193.963 107.897H263.137C275.991 107.897 283.617 114.542 283.617 125.763C283.617 136.983 276.1 143.628 263.246 143.628C217.166 143.628 170.977 143.628 124.897 143.628C112.043 143.628 104.417 136.983 104.417 125.763C104.417 114.542 111.934 107.897 124.788 107.897H193.963Z\",\n fill: \"var(--current_svg_color)\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M193.963 231.431C170.868 231.431 147.883 231.431 124.788 231.431C111.934 231.431 104.308 224.785 104.308 213.565C104.308 202.345 111.825 195.7 124.679 195.7H263.028C275.883 195.7 283.508 202.345 283.508 213.565C283.508 224.785 275.991 231.431 263.137 231.431C240.151 231.431 217.057 231.431 193.963 231.431Z\",\n fill: \"var(--current_svg_color)\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M43.6306 222.825C51.0383 222.825 56.3761 222.607 61.6051 222.825C70.4289 223.26 75.8757 228.38 75.8757 236.115C75.8757 243.849 70.4289 249.187 61.6051 249.405C46.0272 249.732 30.5583 249.623 14.9804 249.405C9.09785 249.405 4.08679 247.008 1.58126 241.344C-1.03321 235.352 0.92764 230.232 5.28509 225.657C18.1396 211.931 31.103 198.314 43.3038 184.043C45.5915 181.429 47.8791 177.071 45.1557 172.714C43.9574 170.644 39.1642 168.792 35.8962 168.683C33.6085 168.683 30.994 171.625 29.0332 173.694C26.3098 176.527 24.3489 180.231 21.5166 182.954C16.9413 187.203 11.4944 187.529 6.37445 183.934C1.25445 180.34 -0.706402 175.546 0.92764 169.446C7.46381 144.717 38.4017 133.715 58.6638 148.966C75.331 161.494 77.7276 184.697 63.7838 200.82C57.6834 207.791 51.3651 214.437 43.6306 222.825V222.825Z\",\n fill: \"var(--current_svg_color)\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M26.6366 81.7523V27.9379C13.3464 25.7591 8.33533 21.1838 9.20682 12.36C9.96937 4.08085 15.8519 0.377014 28.4885 0.377014C51.1472 0.377014 52.9992 2.22893 52.9992 24.5608V81.3166C56.4851 81.4255 59.2085 81.5345 61.823 81.7523C70.4289 82.5149 75.3311 87.3081 75.44 94.8247C75.5489 102.341 70.6468 107.897 62.1498 108.115C47.1166 108.551 32.0834 108.551 17.0502 108.115C9.53363 107.897 4.52257 101.906 4.6315 94.7157C4.74044 87.5259 9.86043 82.297 17.486 81.6434C20.4272 81.5345 23.3685 81.7523 26.6366 81.7523V81.7523Z\",\n fill: \"var(--current_svg_color)\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgOlList);\nexport default __webpack_public_path__ + \"static/media/olList.e099e2af1dce371e2063185b814f4a13.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _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 _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 * as React from \"react\";\n\nfunction SvgStrike(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 512,\n height: 512,\n x: 0,\n y: 0,\n viewBox: \"0 0 384 384\",\n style: {\n enableBackground: \"new 0 0 512 512\"\n },\n xmlSpace: \"preserve\",\n className: \"\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M90.347,154.667c1.067,1.92,2.24,3.627,3.307,5.44H192c-13.653-4.693-21.973-9.707-29.973-14.933 c-10.453-6.933-15.68-15.573-15.68-25.813c0-4.907,1.067-9.707,3.093-14.08s5.12-8.213,9.173-11.52 c4.053-3.307,9.173-5.867,15.36-7.68c6.293-1.813,13.547-2.773,21.973-2.773c8.747,0,16.32,1.067,22.72,3.307 c6.4,2.133,11.733,5.333,16,9.28s7.467,8.747,9.493,14.4c2.027,5.547,3.093,11.627,3.093,18.133h64.213 c0-13.973-2.667-26.88-8.107-38.613c-5.44-11.84-13.12-21.973-23.147-30.507c-10.027-8.64-22.08-15.253-36.16-20.053 c-14.08-4.8-29.76-7.147-47.04-7.147c-16.853,0-32.213,2.133-46.293,6.293c-14.08,4.16-26.133,10.027-36.373,17.6 c-10.24,7.573-18.133,16.747-23.787,27.52s-8.427,22.613-8.427,35.627C82.133,132.693,84.907,144.533,90.347,154.667 L90.347,154.667z\",\n fill: \"var(--current_svg_color)\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0,181.44v42.667h205.333c3.84,1.493,8.533,2.987,11.733,4.373c7.893,3.52,14.08,7.253,18.56,10.88 c4.48,3.733,7.467,7.787,9.067,12.053c1.6,4.373,2.347,9.28,2.347,14.613c0,5.013-0.96,9.707-2.88,13.973 c-1.92,4.373-4.907,8.107-8.853,11.2c-3.947,3.093-9.067,5.547-15.147,7.36c-6.187,1.813-13.333,2.667-21.653,2.667 c-9.28,0-17.707-0.96-25.28-2.773c-7.573-1.813-13.973-4.8-19.307-8.853c-5.333-4.053-9.493-9.387-12.48-15.893 C138.453,267.2,136,257.387,136,248H72.533c0,11.733,1.707,24.107,5.013,33.707c3.307,9.6,8,18.24,13.867,25.813 c5.867,7.573,12.907,14.08,20.907,19.627c8,5.547,16.64,10.24,26.027,13.867c9.387,3.733,19.093,6.507,29.44,8.213 c10.24,1.813,20.587,2.667,30.827,2.667c17.067,0,32.64-1.92,46.507-5.867c13.867-3.947,25.813-9.6,35.627-16.853 c9.813-7.36,17.387-16.32,22.827-27.093c5.44-10.773,8-22.933,8-36.587c0-12.8-2.24-24.32-6.613-34.453 c-1.067-2.453-2.24-4.8-3.627-7.147H384V181.44H0z\",\n fill: \"var(--current_svg_color)\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgStrike);\nexport default __webpack_public_path__ + \"static/media/strike.be31bf3e505bb59c64d24d769ba1ae03.svg\";\nexport { ForwardRef as ReactComponent };","import React from \"react\";\nimport { ReactComponent as BoldIcon } from \"./RTE_icons/bold.svg\";\nimport { ReactComponent as ItalicIcon } from \"./RTE_icons/italic.svg\";\nimport { ReactComponent as UnderlineIcon } from \"./RTE_icons/underline.svg\";\nimport { ReactComponent as CodeIcon } from \"./RTE_icons/code.svg\";\nimport { ReactComponent as H1Icon } from \"./RTE_icons/heading/h1.svg\";\nimport { ReactComponent as H2Icon } from \"./RTE_icons/heading/h2.svg\";\nimport { ReactComponent as H3Icon } from \"./RTE_icons/heading/h3.svg\";\nimport { ReactComponent as H4Icon } from \"./RTE_icons/heading/h4.svg\";\nimport { ReactComponent as H5Icon } from \"./RTE_icons/heading/h5.svg\";\nimport { ReactComponent as H6Icon } from \"./RTE_icons/heading/h6.svg\";\nimport { ReactComponent as AlignLeft } from \"./RTE_icons/align/left.svg\";\nimport { ReactComponent as AlignCenter } from \"./RTE_icons/align/center.svg\";\nimport { ReactComponent as AlignRight } from \"./RTE_icons/align/right.svg\";\nimport { ReactComponent as AlignJustify } from \"./RTE_icons/align/justify.svg\";\nimport { ReactComponent as QuoteIcon } from \"./RTE_icons/quote.svg\";\nimport { ReactComponent as OlListIcon } from \"./RTE_icons/ulList.svg\";\nimport { ReactComponent as UlListIcon } from \"./RTE_icons/olList.svg\";\nimport { ReactComponent as StrikeIcon } from \"./RTE_icons/strike.svg\";\n\nexport const RTE_Icons = ({ icon, active }) => {\n switch (icon) {\n case \"bold\":\n return (\n \n );\n case \"italic\":\n return (\n \n );\n case \"underline\":\n return (\n \n );\n case \"code\":\n return (\n \n );\n case \"h1\":\n return (\n \n );\n case \"h2\":\n return (\n \n );\n case \"h3\":\n return (\n \n );\n case \"h4\":\n return (\n \n );\n case \"h5\":\n return (\n \n );\n case \"h6\":\n return (\n \n );\n case \"left\":\n return (\n \n );\n case \"center\":\n return (\n \n );\n case \"right\":\n return (\n \n );\n case \"justify\":\n return (\n \n );\n case \"quote\":\n return (\n \n );\n case \"list_numbered\":\n return (\n \n );\n case \"list_bulleted\":\n return (\n \n );\n case \"strike\":\n return (\n \n );\n\n default:\n return
{icon}
;\n break;\n }\n return
RTE_Icons
;\n};\n","// import { faExternalLinkAlt, faUnlink } from \"@fortawesome/free-solid-svg-icons\";\n// import { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\n// Import the Slate editor factory.\nimport {\n createEditor,\n Editor,\n Text,\n Transforms,\n Element as SlateElement,\n Path,\n} from \"slate\";\nimport { withHistory } from \"slate-history\";\n\n// Import the Slate components and React plugin.\nimport {\n Slate,\n Editable,\n withReact,\n useSlate,\n ReactEditor,\n useSlateStatic,\n useSelected,\n useFocused,\n} from \"slate-react\";\n// import { RenderElement } from \"./components/RenderElement\";\n// import { } from \"./components/ui components/Toolbar\";\n// import { Button, Icon } from \"./components/ui components/Toolbar.tsx\";\nimport \"./RTEStyle.scss\";\nimport { RTE_Icons } from \"./RTE_Icons\";\n\nconst initialValue = [\n // {\n // type: \"paragraph\",\n // children: [\n // { text: \"This is editable \" },\n // { text: \"rich\", bold: true },\n // { text: \" text, \" },\n // { text: \"much\", italic: true },\n // { text: \" better than a \" },\n // { text: \"