sevago-sso-fe 1.0.4 → 1.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/App.d.ts +1 -0
- package/dist/apis/auth/auth.api.d.ts +9 -0
- package/dist/apis/auth/auth.enum.d.ts +16 -0
- package/dist/apis/auth/auth.interface.d.ts +50 -0
- package/dist/apis/auth/index.d.ts +5 -0
- package/dist/apis/index.d.ts +4 -0
- package/dist/apis/notification/index.d.ts +6 -0
- package/dist/apis/notification/notification.api.d.ts +12 -0
- package/dist/apis/notification/notification.entities.d.ts +17 -0
- package/dist/apis/notification/notification.enum.d.ts +26 -0
- package/dist/apis/notification/notification.interface.d.ts +33 -0
- package/dist/apis/org-unit/index.d.ts +2 -0
- package/dist/apis/org-unit/org-unit.entities.d.ts +41 -0
- package/dist/apis/org-unit/org-unit.enum.d.ts +11 -0
- package/dist/apis/user/index.d.ts +6 -0
- package/dist/apis/user/user.api.d.ts +17 -0
- package/dist/apis/user/user.entities.d.ts +161 -0
- package/dist/apis/user/user.enum.d.ts +304 -0
- package/dist/apis/user/user.interface.d.ts +81 -0
- package/dist/assets/icon/icon-left.d.ts +3 -0
- package/dist/assets/icon/icon-right.d.ts +3 -0
- package/dist/common/config/axios.config.d.ts +1 -0
- package/dist/common/config/firebase.config.d.ts +3 -0
- package/dist/common/config/index.d.ts +3 -0
- package/dist/common/config/socket.config.d.ts +19 -0
- package/dist/common/constant/apps.constant.d.ts +2 -0
- package/dist/common/constant/index.d.ts +7 -0
- package/dist/common/constant/mode.constant.d.ts +266 -0
- package/dist/common/constant/opacity.constant.d.ts +103 -0
- package/dist/common/constant/reg-exp.constant.d.ts +1 -0
- package/dist/common/constant/style.constant.d.ts +113 -0
- package/dist/common/constant/tree.constant.d.ts +12 -0
- package/dist/common/constant/typography.constant.d.ts +457 -0
- package/dist/common/enums/app-category.enum.d.ts +22 -0
- package/dist/common/enums/country.enum.d.ts +7 -0
- package/dist/common/enums/file-type.enum.d.ts +4 -0
- package/dist/common/enums/index.d.ts +6 -0
- package/dist/common/enums/mode.enum.d.ts +4 -0
- package/dist/common/enums/order-type.enum.d.ts +4 -0
- package/dist/common/enums/payment-method.enum.d.ts +7 -0
- package/dist/common/index.d.ts +5 -0
- package/dist/common/interfaces/base-item.interface.d.ts +8 -0
- package/dist/common/interfaces/change-event-custom.interface.d.ts +6 -0
- package/dist/common/interfaces/error.interface.d.ts +5 -0
- package/dist/common/interfaces/index.d.ts +6 -0
- package/dist/common/interfaces/page-options.interface.d.ts +15 -0
- package/dist/common/interfaces/res-list.interface.d.ts +7 -0
- package/dist/common/interfaces/route.interface.d.ts +12 -0
- package/dist/common/utils/find-current-access.helper.d.ts +1 -0
- package/dist/common/utils/index.d.ts +6 -0
- package/dist/common/utils/other/app.utils.d.ts +2 -0
- package/dist/common/utils/other/get-limit-line-css.utils.d.ts +2 -0
- package/dist/common/utils/other/index.d.ts +2 -0
- package/dist/common/utils/string.utils.d.ts +10 -0
- package/dist/common/utils/time.utils.d.ts +13 -0
- package/dist/components/app-grid/app-grid.component.d.ts +19 -0
- package/dist/components/app-grid/index.d.ts +1 -0
- package/dist/components/avatar/avatar-enum.enum.d.ts +10 -0
- package/dist/components/avatar/avatar-user-info.element.d.ts +15 -0
- package/dist/components/avatar/avatar.element.d.ts +9 -0
- package/dist/components/avatar/index.d.ts +3 -0
- package/dist/components/avatar-user/avatar-user.component.d.ts +4 -0
- package/dist/components/avatar-user/index.d.ts +1 -0
- package/dist/components/bell/bell.component.d.ts +4 -0
- package/dist/components/bell/index.d.ts +1 -0
- package/dist/components/elements/button/button.element.d.ts +10 -0
- package/dist/components/elements/button/index.d.ts +1 -0
- package/dist/components/elements/icon/icon-button.element.d.ts +10 -0
- package/dist/components/elements/icon/icon-content.element.d.ts +15 -0
- package/dist/components/elements/icon/icon.element.d.ts +11 -0
- package/dist/components/elements/icon/index.d.ts +3 -0
- package/dist/components/elements/image/image-content-caption.component.d.ts +14 -0
- package/dist/components/elements/image/image-name-time.component.d.ts +9 -0
- package/dist/components/elements/image/image.element.d.ts +12 -0
- package/dist/components/elements/image/image.enum.d.ts +5 -0
- package/dist/components/elements/image/index.d.ts +4 -0
- package/dist/components/elements/radio/index.d.ts +2 -0
- package/dist/components/elements/radio/radio-group.element.d.ts +16 -0
- package/dist/components/elements/radio/radio.element.d.ts +7 -0
- package/dist/components/elements/text-field/index.d.ts +2 -0
- package/dist/components/elements/text-field/text-field-label.element.d.ts +9 -0
- package/dist/components/elements/text-field/text-field.element.d.ts +13 -0
- package/dist/components/elements/tooltip/index.d.ts +1 -0
- package/dist/components/elements/tooltip/tooltip-on-click.element.d.ts +7 -0
- package/dist/components/elements/typography/index.d.ts +1 -0
- package/dist/components/elements/typography/typography-content-caption.component.d.ts +10 -0
- package/dist/components/empty/empty.component.d.ts +4 -0
- package/dist/components/empty/index.d.ts +1 -0
- package/dist/components/index.d.ts +16 -0
- package/dist/components/loading/index.d.ts +1 -0
- package/dist/components/loading/loading.component.d.ts +8 -0
- package/dist/components/logo/index.d.ts +1 -0
- package/dist/components/logo/logo.component.d.ts +10 -0
- package/dist/components/motion/index.d.ts +1 -0
- package/dist/components/motion/motion-box.component.d.ts +14 -0
- package/dist/components/styles/index.d.ts +2 -0
- package/dist/components/styles/stack.style.d.ts +19 -0
- package/dist/components/styles/typography.style.d.ts +1 -0
- package/dist/components/time-ago/index.d.ts +2 -0
- package/dist/components/time-ago/time-ago-content.component.d.ts +7 -0
- package/dist/components/time-ago/time-ago.component.d.ts +6 -0
- package/dist/hooks/index.d.ts +5 -0
- package/dist/hooks/use-apps.hook.d.ts +11 -0
- package/dist/hooks/use-snackbar.hook.d.ts +19 -0
- package/dist/hooks/use-tag-selector.hook.d.ts +25 -0
- package/dist/hooks/use-update-current-access.hook.d.ts +1 -0
- package/dist/hooks/use-version-check.hook.d.ts +3 -0
- package/dist/index.cjs.js +19561 -0
- package/dist/index.cjs.js.map +1 -0
- package/dist/index.d.ts +21 -0
- package/dist/index.esm.js +19545 -0
- package/dist/index.esm.js.map +1 -0
- package/dist/layouts/auth.layout.d.ts +5 -0
- package/dist/layouts/dashboard.layout.d.ts +5 -0
- package/dist/layouts/default.layout.d.ts +5 -0
- package/dist/layouts/index.d.ts +3 -0
- package/dist/main.d.ts +0 -0
- package/dist/pages/auth/auth.constant.d.ts +35 -0
- package/dist/pages/auth/auth.enum.d.ts +6 -0
- package/dist/pages/auth/auth.interface.d.ts +7 -0
- package/dist/pages/auth/auth.page.d.ts +4 -0
- package/dist/pages/auth/index.d.ts +5 -0
- package/dist/pages/auth/parts/index.d.ts +1 -0
- package/dist/pages/auth/parts/otp/index.d.ts +1 -0
- package/dist/pages/auth/parts/otp/otp.part.d.ts +6 -0
- package/dist/pages/dashboard/dashboard.page.d.ts +5 -0
- package/dist/pages/dashboard/index.d.ts +3 -0
- package/dist/pages/dashboard/parts/index.d.ts +1 -0
- package/dist/pages/dashboard/parts/monitor.part.d.ts +2 -0
- package/dist/pages/dashboard/screen/index.d.ts +1 -0
- package/dist/pages/dashboard/screen/system-monitor/index.d.ts +1 -0
- package/dist/pages/dashboard/screen/system-monitor/system-monitor.screen.d.ts +2 -0
- package/dist/pages/error/error.page.d.ts +4 -0
- package/dist/pages/index.d.ts +6 -0
- package/dist/pages/not-found/not-found.page.d.ts +4 -0
- package/dist/redux/account/account.action.d.ts +22 -0
- package/dist/redux/account/account.interface.d.ts +13 -0
- package/dist/redux/account/account.slice.d.ts +4 -0
- package/dist/redux/account/index.d.ts +5 -0
- package/dist/redux/index.d.ts +5 -0
- package/dist/redux/slices/index.d.ts +1 -0
- package/dist/redux/slices/remaining-weight.slice.d.ts +7 -0
- package/dist/redux/store.interface.d.ts +11 -0
- package/dist/redux/store.redux.d.ts +15 -0
- package/dist/redux/system/index.d.ts +2 -0
- package/dist/redux/system/system.action.d.ts +2 -0
- package/dist/redux/system/system.interface.d.ts +4 -0
- package/dist/redux/system/system.slice.d.ts +4 -0
- package/dist/router/index.d.ts +4 -0
- package/dist/router/render.route.d.ts +3 -0
- package/dist/router/route.constant.d.ts +278 -0
- package/dist/router/route.enum.d.ts +4 -0
- package/dist/router/route.routes.d.ts +2 -0
- package/dist/scripts/generate.script.d.ts +0 -0
- package/package.json +2 -2
- package/dist/assets/index-Ck8Rqlmw.css +0 -1
- package/dist/assets/index-RCni0Nq0.js +0 -1183
- package/dist/index.html +0 -21
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../node_modules/redux-persist/lib/storage/getStorage.js","../node_modules/redux-persist/lib/storage/createWebStorage.js","../node_modules/redux-persist/lib/storage/index.js","../src/common/enums/mode.enum.ts","../src/redux/system/system.action.ts","../src/redux/system/system.slice.ts","../node_modules/axios/lib/helpers/bind.js","../node_modules/axios/lib/utils.js","../node_modules/axios/lib/core/AxiosError.js","../node_modules/axios/lib/helpers/null.js","../node_modules/axios/lib/helpers/toFormData.js","../node_modules/axios/lib/helpers/AxiosURLSearchParams.js","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/axios/lib/defaults/transitional.js","../node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","../node_modules/axios/lib/platform/browser/classes/FormData.js","../node_modules/axios/lib/platform/browser/classes/Blob.js","../node_modules/axios/lib/platform/browser/index.js","../node_modules/axios/lib/platform/common/utils.js","../node_modules/axios/lib/platform/index.js","../node_modules/axios/lib/helpers/toURLEncodedForm.js","../node_modules/axios/lib/helpers/formDataToJSON.js","../node_modules/axios/lib/defaults/index.js","../node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/axios/lib/core/AxiosHeaders.js","../node_modules/axios/lib/core/transformData.js","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/axios/lib/cancel/CanceledError.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/helpers/parseProtocol.js","../node_modules/axios/lib/helpers/speedometer.js","../node_modules/axios/lib/helpers/throttle.js","../node_modules/axios/lib/helpers/progressEventReducer.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/axios/lib/helpers/cookies.js","../node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/axios/lib/helpers/combineURLs.js","../node_modules/axios/lib/core/buildFullPath.js","../node_modules/axios/lib/core/mergeConfig.js","../node_modules/axios/lib/helpers/resolveConfig.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/helpers/composeSignals.js","../node_modules/axios/lib/helpers/trackStream.js","../node_modules/axios/lib/adapters/fetch.js","../node_modules/axios/lib/adapters/adapters.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/axios/lib/env/data.js","../node_modules/axios/lib/helpers/validator.js","../node_modules/axios/lib/core/Axios.js","../node_modules/axios/lib/cancel/CancelToken.js","../node_modules/axios/lib/helpers/spread.js","../node_modules/axios/lib/helpers/isAxiosError.js","../node_modules/axios/lib/helpers/HttpStatusCode.js","../node_modules/axios/lib/axios.js","../node_modules/axios/index.js","../src/redux/slices/remaining-weight.slice.ts","../src/redux/account/index.ts","../src/apis/user/user.enum.ts","../src/router/route.enum.ts","../src/router/route.constant.ts","../src/common/config/axios.config.ts","../node_modules/@firebase/util/dist/postinstall.mjs","../node_modules/@firebase/util/dist/index.esm.js","../node_modules/@firebase/component/dist/esm/index.esm.js","../node_modules/@firebase/logger/dist/esm/index.esm.js","../node_modules/idb/build/wrap-idb-value.js","../node_modules/idb/build/index.js","../node_modules/@firebase/app/dist/esm/index.esm.js","../node_modules/firebase/app/dist/esm/index.esm.js","../node_modules/@firebase/installations/dist/esm/index.esm.js","../node_modules/@firebase/messaging/dist/esm/index.esm.js","../src/common/config/firebase.config.ts","../node_modules/engine.io-parser/build/esm/commons.js","../node_modules/engine.io-parser/build/esm/encodePacket.browser.js","../node_modules/engine.io-parser/build/esm/contrib/base64-arraybuffer.js","../node_modules/engine.io-parser/build/esm/decodePacket.browser.js","../node_modules/engine.io-parser/build/esm/index.js","../node_modules/@socket.io/component-emitter/lib/esm/index.js","../node_modules/engine.io-client/build/esm/globals.js","../node_modules/engine.io-client/build/esm/util.js","../node_modules/engine.io-client/build/esm/contrib/parseqs.js","../node_modules/engine.io-client/build/esm/transport.js","../node_modules/engine.io-client/build/esm/transports/polling.js","../node_modules/engine.io-client/build/esm/contrib/has-cors.js","../node_modules/engine.io-client/build/esm/transports/polling-xhr.js","../node_modules/engine.io-client/build/esm/transports/websocket.js","../node_modules/engine.io-client/build/esm/transports/webtransport.js","../node_modules/engine.io-client/build/esm/transports/index.js","../node_modules/engine.io-client/build/esm/contrib/parseuri.js","../node_modules/engine.io-client/build/esm/socket.js","../node_modules/socket.io-client/build/esm/url.js","../node_modules/socket.io-parser/build/esm/is-binary.js","../node_modules/socket.io-parser/build/esm/binary.js","../node_modules/socket.io-parser/build/esm/index.js","../node_modules/socket.io-client/build/esm/on.js","../node_modules/socket.io-client/build/esm/socket.js","../node_modules/socket.io-client/build/esm/contrib/backo2.js","../node_modules/socket.io-client/build/esm/manager.js","../node_modules/socket.io-client/build/esm/index.js","../src/common/config/socket.config.ts","../src/apis/auth/auth.api.ts","../src/apis/auth/auth.enum.ts","../src/apis/auth/index.ts","../src/apis/user/user.api.ts","../src/apis/user/index.ts","../src/apis/notification/notification.api.ts","../src/apis/notification/notification.enum.ts","../src/apis/notification/index.ts","../src/apis/org-unit/org-unit.enum.ts","../src/redux/account/account.action.ts","../src/redux/account/account.slice.ts","../src/redux/store.redux.ts","../src/common/enums/app-category.enum.ts","../src/common/constant/apps.constant.ts","../src/common/constant/mode.constant.ts","../src/common/constant/opacity.constant.ts","../src/common/constant/reg-exp.constant.ts","../src/common/constant/style.constant.ts","../src/common/constant/tree.constant.ts","../src/common/constant/typography.constant.ts","../src/common/enums/country.enum.ts","../src/common/enums/file-type.enum.ts","../src/common/enums/order-type.enum.ts","../src/common/enums/payment-method.enum.ts","../src/common/utils/find-current-access.helper.ts","../src/common/utils/string.utils.ts","../node_modules/dayjs/dayjs.min.js","../node_modules/dayjs/plugin/utc.js","../node_modules/dayjs/plugin/timezone.js","../node_modules/dayjs/plugin/localizedFormat.js","../node_modules/dayjs/plugin/relativeTime.js","../src/assets/other/vi.js","../src/common/utils/time.utils.ts","../src/common/utils/other/app.utils.ts","../src/common/utils/other/get-limit-line-css.utils.ts","../src/common/utils/index.ts","../node_modules/react/cjs/react-jsx-runtime.production.js","../node_modules/react/cjs/react-jsx-runtime.development.js","../node_modules/react/jsx-runtime.js","../src/layouts/auth.layout.tsx","../src/hooks/use-update-current-access.hook.ts","../src/components/styles/stack.style.tsx","../src/components/elements/image/image.enum.tsx","../src/components/avatar/avatar-enum.enum.ts","../src/components/elements/image/image.element.tsx","../src/components/logo/logo.component.tsx","../node_modules/prop-types/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js","../node_modules/prop-types/node_modules/react-is/index.js","../node_modules/object-assign/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/prop-types/lib/has.js","../node_modules/prop-types/checkPropTypes.js","../node_modules/prop-types/factoryWithTypeCheckers.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/@mui/utils/esm/composeClasses/composeClasses.js","../node_modules/@mui/utils/esm/chainPropTypes/chainPropTypes.js","../node_modules/@mui/utils/esm/formatMuiErrorMessage/formatMuiErrorMessage.js","../node_modules/@mui/utils/esm/capitalize/capitalize.js","../node_modules/react-is/cjs/react-is.production.js","../node_modules/react-is/cjs/react-is.development.js","../node_modules/react-is/index.js","../node_modules/@mui/utils/esm/deepmerge/deepmerge.js","../node_modules/@mui/system/esm/merge/merge.js","../node_modules/@mui/system/esm/responsivePropType/responsivePropType.js","../node_modules/@mui/system/esm/cssContainerQueries/cssContainerQueries.js","../node_modules/@mui/system/esm/breakpoints/breakpoints.js","../node_modules/@mui/system/esm/style/style.js","../node_modules/@mui/system/esm/memoize/memoize.js","../node_modules/@mui/system/esm/spacing/spacing.js","../node_modules/@mui/system/esm/compose/compose.js","../node_modules/@mui/system/esm/borders/borders.js","../node_modules/@mui/system/esm/cssGrid/cssGrid.js","../node_modules/@mui/system/esm/palette/palette.js","../node_modules/@mui/system/esm/sizing/sizing.js","../node_modules/@mui/system/esm/styleFunctionSx/defaultSxConfig.js","../node_modules/@mui/system/esm/styleFunctionSx/styleFunctionSx.js","../node_modules/@mui/utils/esm/clamp/clamp.js","../node_modules/@mui/system/esm/colorManipulator/colorManipulator.js","../node_modules/@mui/material/esm/colors/common.js","../node_modules/@mui/material/esm/colors/grey.js","../node_modules/@mui/material/esm/colors/purple.js","../node_modules/@mui/material/esm/colors/red.js","../node_modules/@mui/material/esm/colors/orange.js","../node_modules/@mui/material/esm/colors/blue.js","../node_modules/@mui/material/esm/colors/lightBlue.js","../node_modules/@mui/material/esm/colors/green.js","../node_modules/@mui/material/esm/styles/createPalette.js","../node_modules/@emotion/hash/dist/emotion-hash.esm.js","../node_modules/@emotion/unitless/dist/emotion-unitless.esm.js","../node_modules/@emotion/memoize/dist/emotion-memoize.esm.js","../node_modules/@emotion/serialize/dist/emotion-serialize.esm.js","../node_modules/@mui/styled-engine/esm/index.js","../node_modules/clsx/dist/clsx.mjs","../node_modules/@mui/utils/esm/resolveProps/resolveProps.js","../node_modules/@mui/system/esm/DefaultPropsProvider/DefaultPropsProvider.js","../node_modules/@mui/system/esm/createBreakpoints/createBreakpoints.js","../node_modules/@mui/system/esm/createTheme/shape.js","../node_modules/@mui/system/esm/createTheme/createSpacing.js","../node_modules/@mui/system/esm/createTheme/applyStyles.js","../node_modules/@mui/system/esm/createTheme/createTheme.js","../node_modules/@mui/system/esm/cssVars/cssVarsParser.js","../node_modules/@mui/system/esm/cssVars/prepareCssVars.js","../node_modules/@mui/system/esm/cssVars/prepareTypographyVars.js","../node_modules/@mui/system/esm/cssVars/getColorSchemeSelector.js","../node_modules/@mui/utils/esm/ClassNameGenerator/ClassNameGenerator.js","../node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js","../node_modules/@mui/material/esm/styles/createMixins.js","../node_modules/@mui/material/esm/styles/createTypography.js","../node_modules/@mui/material/esm/styles/shadows.js","../node_modules/@mui/material/esm/styles/createTransitions.js","../node_modules/@mui/material/esm/styles/zIndex.js","../node_modules/@mui/material/esm/styles/stringifyTheme.js","../node_modules/@mui/material/esm/styles/createThemeNoVars.js","../node_modules/@mui/material/esm/styles/getOverlayAlpha.js","../node_modules/@mui/material/esm/styles/createColorScheme.js","../node_modules/@mui/material/esm/styles/shouldSkipGeneratingVar.js","../node_modules/@mui/material/esm/styles/excludeVariablesFromRoot.js","../node_modules/@mui/material/esm/styles/createGetSelector.js","../node_modules/@mui/material/esm/styles/createThemeWithVars.js","../node_modules/@mui/material/esm/styles/createTheme.js","../node_modules/@mui/material/esm/styles/defaultTheme.js","../node_modules/@mui/material/esm/styles/identifier.js","../node_modules/@mui/utils/esm/getDisplayName/getDisplayName.js","../node_modules/@mui/system/esm/preprocessStyles.js","../node_modules/@mui/system/esm/createStyled/createStyled.js","../node_modules/@mui/material/esm/styles/slotShouldForwardProp.js","../node_modules/@mui/material/esm/styles/rootShouldForwardProp.js","../node_modules/@mui/material/esm/styles/styled.js","../node_modules/@mui/material/esm/utils/memoTheme.js","../node_modules/@mui/material/esm/DefaultPropsProvider/DefaultPropsProvider.js","../node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js","../src/hooks/use-snackbar.hook.tsx","../src/components/elements/icon/icon.element.tsx","../src/components/avatar/avatar.element.tsx","../src/components/time-ago/time-ago.component.tsx","../src/components/time-ago/time-ago-content.component.tsx","../src/components/elements/image/image-name-time.component.tsx","../src/components/elements/tooltip/tooltip-on-click.element.tsx","../src/components/empty/empty.component.tsx","../node_modules/@mui/material/esm/utils/createSimplePaletteValueFilter.js","../node_modules/@mui/material/esm/CircularProgress/circularProgressClasses.js","../node_modules/@mui/material/esm/CircularProgress/CircularProgress.js","../src/components/loading/loading.component.tsx","../src/hooks/use-apps.hook.ts","../src/components/bell/bell.component.tsx","../src/components/avatar/avatar-user-info.element.tsx","../src/components/elements/icon/icon-content.element.tsx","../src/components/elements/radio/radio-group.element.tsx","../src/components/elements/radio/radio.element.tsx","../src/components/avatar-user/avatar-user.component.tsx","../src/pages/dashboard/parts/monitor.part.tsx","../src/layouts/dashboard.layout.tsx","../src/layouts/default.layout.tsx","../src/hooks/use-tag-selector.hook.ts","../src/hooks/use-version-check.hook.tsx","../src/router/render.route.tsx"],"sourcesContent":["\"use strict\";\n\nexports.__esModule = true;\nexports.default = getStorage;\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction noop() {}\n\nvar noopStorage = {\n getItem: noop,\n setItem: noop,\n removeItem: noop\n};\n\nfunction hasStorage(storageType) {\n if ((typeof self === \"undefined\" ? \"undefined\" : _typeof(self)) !== 'object' || !(storageType in self)) {\n return false;\n }\n\n try {\n var storage = self[storageType];\n var testKey = \"redux-persist \".concat(storageType, \" test\");\n storage.setItem(testKey, 'test');\n storage.getItem(testKey);\n storage.removeItem(testKey);\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') console.warn(\"redux-persist \".concat(storageType, \" test failed, persistence will be disabled.\"));\n return false;\n }\n\n return true;\n}\n\nfunction getStorage(type) {\n var storageType = \"\".concat(type, \"Storage\");\n if (hasStorage(storageType)) return self[storageType];else {\n if (process.env.NODE_ENV !== 'production') {\n console.error(\"redux-persist failed to create sync storage. falling back to noop storage.\");\n }\n\n return noopStorage;\n }\n}","\"use strict\";\n\nexports.__esModule = true;\nexports.default = createWebStorage;\n\nvar _getStorage = _interopRequireDefault(require(\"./getStorage\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction createWebStorage(type) {\n var storage = (0, _getStorage.default)(type);\n return {\n getItem: function getItem(key) {\n return new Promise(function (resolve, reject) {\n resolve(storage.getItem(key));\n });\n },\n setItem: function setItem(key, item) {\n return new Promise(function (resolve, reject) {\n resolve(storage.setItem(key, item));\n });\n },\n removeItem: function removeItem(key) {\n return new Promise(function (resolve, reject) {\n resolve(storage.removeItem(key));\n });\n }\n };\n}","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _createWebStorage = _interopRequireDefault(require(\"./createWebStorage\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _default = (0, _createWebStorage.default)('local');\n\nexports.default = _default;","export enum Mode {\r\n DARK = 'dark',\r\n LIGHT = 'light',\r\n}\r\n","import { createAsyncThunk } from '@reduxjs/toolkit';\r\nimport { Mode } from '../../common/enums/mode.enum';\r\n\r\nexport const changeMode = createAsyncThunk('CHANGE_MODE', (currentMode: Mode) => {\r\n return currentMode === Mode.LIGHT ? Mode.DARK : Mode.LIGHT;\r\n});\r\n","import { createSlice } from \"@reduxjs/toolkit\";\r\nimport type { GlobalSystemState } from \"./system.interface\";\r\nimport { Mode } from \"../../common/enums/mode.enum\";\r\nimport { changeMode } from \"./system.action\";\r\n\r\nexport const initialStateSystem: GlobalSystemState = {\r\n mode: Mode.LIGHT,\r\n};\r\n\r\nexport const slice = createSlice({\r\n // Name Slice\r\n name: \"system\",\r\n initialState: initialStateSystem,\r\n reducers: {},\r\n\r\n extraReducers: (builder) => {\r\n // ChangeMode\r\n builder.addCase(changeMode.fulfilled, (state, action) => {\r\n state.mode = action.payload;\r\n });\r\n },\r\n});\r\n\r\nexport const reducerSystem = slice.reducer;\r\n","'use strict';\n\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\nconst {iterator, toStringTag} = Symbol;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\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 && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let 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 {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(toStringTag in val) && !(iterator in val);\n}\n\n/**\n * Determine if a value is an empty object (safely handles Buffers)\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an empty object, otherwise false\n */\nconst isEmptyObject = (val) => {\n // Early return for non-objects or Buffers to prevent RangeError\n if (!isObject(val) || isBuffer(val)) {\n return false;\n }\n\n try {\n return Object.keys(val).length === 0 && Object.getPrototypeOf(val) === Object.prototype;\n } catch (e) {\n // Fallback for any other objects that might cause RangeError with Object.keys()\n return false;\n }\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\nconst [isReadableStream, isRequest, isResponse, isHeaders] = ['ReadableStream', 'Request', 'Response', 'Headers'].map(kindOfTest);\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\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 *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\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 (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Buffer check\n if (isBuffer(obj)) {\n return;\n }\n\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n if (isBuffer(obj)){\n return null;\n }\n\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\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 *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless, skipUndefined} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else if (!skipUndefined || !isUndefined(val)) {\n result[targetKey] = val;\n }\n }\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && 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 *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\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 *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object<any, any>} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[iterator];\n\n const _iterator = generator.call(obj);\n\n let result;\n\n while ((result = _iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array<boolean>}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n }\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n return value != null && Number.isFinite(value = +value) ? value : defaultValue;\n}\n\n\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[toStringTag] === 'FormData' && thing[iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n //Buffer check\n if (isBuffer(source)) {\n return source;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n }\n\n return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\n// original code\n// https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34\n\nconst _setImmediate = ((setImmediateSupported, postMessageSupported) => {\n if (setImmediateSupported) {\n return setImmediate;\n }\n\n return postMessageSupported ? ((token, callbacks) => {\n _global.addEventListener(\"message\", ({source, data}) => {\n if (source === _global && data === token) {\n callbacks.length && callbacks.shift()();\n }\n }, false);\n\n return (cb) => {\n callbacks.push(cb);\n _global.postMessage(token, \"*\");\n }\n })(`axios@${Math.random()}`, []) : (cb) => setTimeout(cb);\n})(\n typeof setImmediate === 'function',\n isFunction(_global.postMessage)\n);\n\nconst asap = typeof queueMicrotask !== 'undefined' ?\n queueMicrotask.bind(_global) : ( typeof process !== 'undefined' && process.nextTick || _setImmediate);\n\n// *********************\n\n\nconst isIterable = (thing) => thing != null && isFunction(thing[iterator]);\n\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isEmptyObject,\n isReadableStream,\n isRequest,\n isResponse,\n isHeaders,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable,\n setImmediate: _setImmediate,\n asap,\n isIterable\n};\n","'use strict';\n\nimport utils from '../utils.js';\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 {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n if (response) {\n this.response = response;\n this.status = response.status ? response.status : null;\n }\n}\n\nutils.inherits(AxiosError, Error, {\n 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: utils.toJSONObject(this.config),\n code: this.code,\n status: this.status\n };\n }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n const msg = error && error.message ? error.message : 'Error';\n\n // Prefer explicit code; otherwise copy the low-level error's code (e.g. ECONNREFUSED)\n const errCode = code == null && error ? error.code : code;\n AxiosError.call(axiosError, msg, errCode, config, request, response);\n\n // Chain the original error on the standard field; non-enumerable to avoid JSON noise\n if (error && axiosError.cause == null) {\n Object.defineProperty(axiosError, 'cause', { value: error, configurable: true });\n }\n\n axiosError.name = (error && error.name) || 'Error';\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nexport default AxiosError;\n","// eslint-disable-next-line strict\nexport default null;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array<any>} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object<any, any>} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object<string, any>} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (utils.isBoolean(value)) {\n return value.toString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array<String|Number>} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object<string, any>} params - The parameters to be converted to a FormData object.\n * @param {Object<string, any>} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\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}\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 * @param {?(object|Function)} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n if (utils.isFunction(options)) {\n options = {\n serialize: options\n };\n } \n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n constructor() {\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 */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n 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 *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\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 *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n","'use strict'\n\nexport default typeof Blob !== 'undefined' ? Blob : null\n","import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\nimport Blob from './classes/Blob.js'\n\nexport default {\n isBrowser: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nconst _navigator = typeof navigator === 'object' && navigator || undefined;\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 *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = hasBrowserEnv &&\n (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nconst origin = hasBrowserEnv && window.location.href || 'http://localhost';\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv,\n _navigator as navigator,\n origin\n}\n","import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n ...utils,\n ...platform\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), {\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n },\n ...options\n });\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array<any>} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object<string, any> | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\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\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http', 'fetch'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data) ||\n utils.isReadableStream(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (utils.isResponse(data) || utils.isReadableStream(data)) {\n return data;\n }\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data, this.parseReviver);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\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 env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\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 'Content-Type': undefined\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\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} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite)\n } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else if (utils.isObject(header) && utils.isIterable(header)) {\n let obj = {}, dest, key;\n for (const entry of header) {\n if (!utils.isArray(entry)) {\n throw TypeError('Object iterator must return a key-value pair');\n }\n\n obj[key = entry[0]] = (dest = obj[key]) ?\n (utils.isArray(dest) ? [...dest, entry[1]] : [dest, entry[1]]) : entry[1];\n }\n\n setHeaders(obj, valueOrRewrite)\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n getSetCookie() {\n return this.get(\"set-cookie\") || [];\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n }\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nexport default CanceledError;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\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 *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Function}\n */\nfunction throttle(fn, freq) {\n let timestamp = 0;\n let threshold = 1000 / freq;\n let lastArgs;\n let timer;\n\n const invoke = (args, now = Date.now()) => {\n timestamp = now;\n lastArgs = null;\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n fn(...args);\n }\n\n const throttled = (...args) => {\n const now = Date.now();\n const passed = now - timestamp;\n if ( passed >= threshold) {\n invoke(args, now);\n } else {\n lastArgs = args;\n if (!timer) {\n timer = setTimeout(() => {\n timer = null;\n invoke(lastArgs)\n }, threshold - passed);\n }\n }\n }\n\n const flush = () => lastArgs && invoke(lastArgs);\n\n return [throttled, flush];\n}\n\nexport default throttle;\n","import speedometer from \"./speedometer.js\";\nimport throttle from \"./throttle.js\";\nimport utils from \"../utils.js\";\n\nexport const progressEventReducer = (listener, isDownloadStream, freq = 3) => {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return throttle(e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e,\n lengthComputable: total != null,\n [isDownloadStream ? 'download' : 'upload']: true\n };\n\n listener(data);\n }, freq);\n}\n\nexport const progressEventDecorator = (total, throttled) => {\n const lengthComputable = total != null;\n\n return [(loaded) => throttled[0]({\n lengthComputable,\n total,\n loaded\n }), throttled[1]];\n}\n\nexport const asyncDecorator = (fn) => (...args) => utils.asap(() => fn(...args));\n","import platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ? ((origin, isMSIE) => (url) => {\n url = new URL(url, platform.origin);\n\n return (\n origin.protocol === url.protocol &&\n origin.host === url.host &&\n (isMSIE || origin.port === url.port)\n );\n})(\n new URL(platform.origin),\n platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent)\n) : () => true;\n","import utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure) {\n const cookie = [name + '=' + encodeURIComponent(value)];\n\n utils.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());\n\n utils.isString(path) && cookie.push('path=' + path);\n\n utils.isString(domain) && cookie.push('domain=' + domain);\n\n secure === true && cookie.push('secure');\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n }\n\n :\n\n // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {}\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 *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"<scheme>://\" 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\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 *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\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 *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL, allowAbsoluteUrls) {\n let isRelativeUrl = !isAbsoluteURL(requestedURL);\n if (baseURL && (isRelativeUrl || allowAbsoluteUrls == false)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? { ...thing } : thing;\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 *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, prop, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({caseless}, 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(a, b, prop , caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, prop , caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, prop , caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const 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 withXSRFToken: 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 beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b , prop) => mergeDeepProperties(headersToObject(a), headersToObject(b),prop, true)\n };\n\n utils.forEach(Object.keys({...config1, ...config2}), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport isURLSameOrigin from \"./isURLSameOrigin.js\";\nimport cookies from \"./cookies.js\";\nimport buildFullPath from \"../core/buildFullPath.js\";\nimport mergeConfig from \"../core/mergeConfig.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport buildURL from \"./buildURL.js\";\n\nexport default (config) => {\n const newConfig = mergeConfig({}, config);\n\n let { data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth } = newConfig;\n\n newConfig.headers = headers = AxiosHeaders.from(headers);\n\n newConfig.url = buildURL(buildFullPath(newConfig.baseURL, newConfig.url, newConfig.allowAbsoluteUrls), config.params, config.paramsSerializer);\n\n // HTTP basic authentication\n if (auth) {\n headers.set('Authorization', 'Basic ' +\n btoa((auth.username || '') + ':' + (auth.password ? unescape(encodeURIComponent(auth.password)) : ''))\n );\n }\n\n if (utils.isFormData(data)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n headers.setContentType(undefined); // browser handles it\n } else if (utils.isFunction(data.getHeaders)) {\n // Node.js FormData (like form-data package)\n const formHeaders = data.getHeaders();\n // Only set safe headers to avoid overwriting security headers\n const allowedHeaders = ['content-type', 'content-length'];\n Object.entries(formHeaders).forEach(([key, val]) => {\n if (allowedHeaders.includes(key.toLowerCase())) {\n headers.set(key, val);\n }\n });\n }\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\n if (platform.hasStandardBrowserEnv) {\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(newConfig.url))) {\n // Add xsrf header\n const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);\n\n if (xsrfValue) {\n headers.set(xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n return newConfig;\n}\n\n","import utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport {progressEventReducer} from '../helpers/progressEventReducer.js';\nimport resolveConfig from \"../helpers/resolveConfig.js\";\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n const _config = resolveConfig(config);\n let requestData = _config.data;\n const requestHeaders = AxiosHeaders.from(_config.headers).normalize();\n let {responseType, onUploadProgress, onDownloadProgress} = _config;\n let onCanceled;\n let uploadThrottled, downloadThrottled;\n let flushUpload, flushDownload;\n\n function done() {\n flushUpload && flushUpload(); // flush events\n flushDownload && flushDownload(); // flush events\n\n _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled);\n\n _config.signal && _config.signal.removeEventListener('abort', onCanceled);\n }\n\n let request = new XMLHttpRequest();\n\n request.open(_config.method.toUpperCase(), _config.url, 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 const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n 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(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError(event) {\n // Browsers deliver a ProgressEvent in XHR onerror\n // (message may be empty; when present, surface it)\n // See https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/error_event\n const msg = event && event.message ? event.message : 'Network Error';\n const err = new AxiosError(msg, AxiosError.ERR_NETWORK, config, request);\n // attach the underlying event for consumers who want details\n err.event = event || null;\n reject(err);\n request = null;\n };\n \n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = _config.timeout ? 'timeout of ' + _config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = _config.transitional || transitionalDefaults;\n if (_config.timeoutErrorMessage) {\n timeoutErrorMessage = _config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\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 (onDownloadProgress) {\n ([downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true));\n request.addEventListener('progress', downloadThrottled);\n }\n\n // Not all browsers support upload events\n if (onUploadProgress && request.upload) {\n ([uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress));\n\n request.upload.addEventListener('progress', uploadThrottled);\n\n request.upload.addEventListener('loadend', flushUpload);\n }\n\n if (_config.cancelToken || _config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : 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 const protocol = parseProtocol(_config.url);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n}\n","import CanceledError from \"../cancel/CanceledError.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport utils from '../utils.js';\n\nconst composeSignals = (signals, timeout) => {\n const {length} = (signals = signals ? signals.filter(Boolean) : []);\n\n if (timeout || length) {\n let controller = new AbortController();\n\n let aborted;\n\n const onabort = function (reason) {\n if (!aborted) {\n aborted = true;\n unsubscribe();\n const err = reason instanceof Error ? reason : this.reason;\n controller.abort(err instanceof AxiosError ? err : new CanceledError(err instanceof Error ? err.message : err));\n }\n }\n\n let timer = timeout && setTimeout(() => {\n timer = null;\n onabort(new AxiosError(`timeout ${timeout} of ms exceeded`, AxiosError.ETIMEDOUT))\n }, timeout)\n\n const unsubscribe = () => {\n if (signals) {\n timer && clearTimeout(timer);\n timer = null;\n signals.forEach(signal => {\n signal.unsubscribe ? signal.unsubscribe(onabort) : signal.removeEventListener('abort', onabort);\n });\n signals = null;\n }\n }\n\n signals.forEach((signal) => signal.addEventListener('abort', onabort));\n\n const {signal} = controller;\n\n signal.unsubscribe = () => utils.asap(unsubscribe);\n\n return signal;\n }\n}\n\nexport default composeSignals;\n","\nexport const streamChunk = function* (chunk, chunkSize) {\n let len = chunk.byteLength;\n\n if (!chunkSize || len < chunkSize) {\n yield chunk;\n return;\n }\n\n let pos = 0;\n let end;\n\n while (pos < len) {\n end = pos + chunkSize;\n yield chunk.slice(pos, end);\n pos = end;\n }\n}\n\nexport const readBytes = async function* (iterable, chunkSize) {\n for await (const chunk of readStream(iterable)) {\n yield* streamChunk(chunk, chunkSize);\n }\n}\n\nconst readStream = async function* (stream) {\n if (stream[Symbol.asyncIterator]) {\n yield* stream;\n return;\n }\n\n const reader = stream.getReader();\n try {\n for (;;) {\n const {done, value} = await reader.read();\n if (done) {\n break;\n }\n yield value;\n }\n } finally {\n await reader.cancel();\n }\n}\n\nexport const trackStream = (stream, chunkSize, onProgress, onFinish) => {\n const iterator = readBytes(stream, chunkSize);\n\n let bytes = 0;\n let done;\n let _onFinish = (e) => {\n if (!done) {\n done = true;\n onFinish && onFinish(e);\n }\n }\n\n return new ReadableStream({\n async pull(controller) {\n try {\n const {done, value} = await iterator.next();\n\n if (done) {\n _onFinish();\n controller.close();\n return;\n }\n\n let len = value.byteLength;\n if (onProgress) {\n let loadedBytes = bytes += len;\n onProgress(loadedBytes);\n }\n controller.enqueue(new Uint8Array(value));\n } catch (err) {\n _onFinish(err);\n throw err;\n }\n },\n cancel(reason) {\n _onFinish(reason);\n return iterator.return();\n }\n }, {\n highWaterMark: 2\n })\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport composeSignals from \"../helpers/composeSignals.js\";\nimport {trackStream} from \"../helpers/trackStream.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport {progressEventReducer, progressEventDecorator, asyncDecorator} from \"../helpers/progressEventReducer.js\";\nimport resolveConfig from \"../helpers/resolveConfig.js\";\nimport settle from \"../core/settle.js\";\n\nconst DEFAULT_CHUNK_SIZE = 64 * 1024;\n\nconst {isFunction} = utils;\n\nconst globalFetchAPI = (({Request, Response}) => ({\n Request, Response\n}))(utils.global);\n\nconst {\n ReadableStream, TextEncoder\n} = utils.global;\n\n\nconst test = (fn, ...args) => {\n try {\n return !!fn(...args);\n } catch (e) {\n return false\n }\n}\n\nconst factory = (env) => {\n env = utils.merge.call({\n skipUndefined: true\n }, globalFetchAPI, env);\n\n const {fetch: envFetch, Request, Response} = env;\n const isFetchSupported = envFetch ? isFunction(envFetch) : typeof fetch === 'function';\n const isRequestSupported = isFunction(Request);\n const isResponseSupported = isFunction(Response);\n\n if (!isFetchSupported) {\n return false;\n }\n\n const isReadableStreamSupported = isFetchSupported && isFunction(ReadableStream);\n\n const encodeText = isFetchSupported && (typeof TextEncoder === 'function' ?\n ((encoder) => (str) => encoder.encode(str))(new TextEncoder()) :\n async (str) => new Uint8Array(await new Request(str).arrayBuffer())\n );\n\n const supportsRequestStream = isRequestSupported && isReadableStreamSupported && test(() => {\n let duplexAccessed = false;\n\n const hasContentType = new Request(platform.origin, {\n body: new ReadableStream(),\n method: 'POST',\n get duplex() {\n duplexAccessed = true;\n return 'half';\n },\n }).headers.has('Content-Type');\n\n return duplexAccessed && !hasContentType;\n });\n\n const supportsResponseStream = isResponseSupported && isReadableStreamSupported &&\n test(() => utils.isReadableStream(new Response('').body));\n\n const resolvers = {\n stream: supportsResponseStream && ((res) => res.body)\n };\n\n isFetchSupported && ((() => {\n ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach(type => {\n !resolvers[type] && (resolvers[type] = (res, config) => {\n let method = res && res[type];\n\n if (method) {\n return method.call(res);\n }\n\n throw new AxiosError(`Response type '${type}' is not supported`, AxiosError.ERR_NOT_SUPPORT, config);\n })\n });\n })());\n\n const getBodyLength = async (body) => {\n if (body == null) {\n return 0;\n }\n\n if (utils.isBlob(body)) {\n return body.size;\n }\n\n if (utils.isSpecCompliantForm(body)) {\n const _request = new Request(platform.origin, {\n method: 'POST',\n body,\n });\n return (await _request.arrayBuffer()).byteLength;\n }\n\n if (utils.isArrayBufferView(body) || utils.isArrayBuffer(body)) {\n return body.byteLength;\n }\n\n if (utils.isURLSearchParams(body)) {\n body = body + '';\n }\n\n if (utils.isString(body)) {\n return (await encodeText(body)).byteLength;\n }\n }\n\n const resolveBodyLength = async (headers, body) => {\n const length = utils.toFiniteNumber(headers.getContentLength());\n\n return length == null ? getBodyLength(body) : length;\n }\n\n return async (config) => {\n let {\n url,\n method,\n data,\n signal,\n cancelToken,\n timeout,\n onDownloadProgress,\n onUploadProgress,\n responseType,\n headers,\n withCredentials = 'same-origin',\n fetchOptions\n } = resolveConfig(config);\n\n let _fetch = envFetch || fetch;\n\n responseType = responseType ? (responseType + '').toLowerCase() : 'text';\n\n let composedSignal = composeSignals([signal, cancelToken && cancelToken.toAbortSignal()], timeout);\n\n let request = null;\n\n const unsubscribe = composedSignal && composedSignal.unsubscribe && (() => {\n composedSignal.unsubscribe();\n });\n\n let requestContentLength;\n\n try {\n if (\n onUploadProgress && supportsRequestStream && method !== 'get' && method !== 'head' &&\n (requestContentLength = await resolveBodyLength(headers, data)) !== 0\n ) {\n let _request = new Request(url, {\n method: 'POST',\n body: data,\n duplex: \"half\"\n });\n\n let contentTypeHeader;\n\n if (utils.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {\n headers.setContentType(contentTypeHeader)\n }\n\n if (_request.body) {\n const [onProgress, flush] = progressEventDecorator(\n requestContentLength,\n progressEventReducer(asyncDecorator(onUploadProgress))\n );\n\n data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush);\n }\n }\n\n if (!utils.isString(withCredentials)) {\n withCredentials = withCredentials ? 'include' : 'omit';\n }\n\n // Cloudflare Workers throws when credentials are defined\n // see https://github.com/cloudflare/workerd/issues/902\n const isCredentialsSupported = isRequestSupported && \"credentials\" in Request.prototype;\n\n const resolvedOptions = {\n ...fetchOptions,\n signal: composedSignal,\n method: method.toUpperCase(),\n headers: headers.normalize().toJSON(),\n body: data,\n duplex: \"half\",\n credentials: isCredentialsSupported ? withCredentials : undefined\n };\n\n request = isRequestSupported && new Request(url, resolvedOptions);\n\n let response = await (isRequestSupported ? _fetch(request, fetchOptions) : _fetch(url, resolvedOptions));\n\n const isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response');\n\n if (supportsResponseStream && (onDownloadProgress || (isStreamResponse && unsubscribe))) {\n const options = {};\n\n ['status', 'statusText', 'headers'].forEach(prop => {\n options[prop] = response[prop];\n });\n\n const responseContentLength = utils.toFiniteNumber(response.headers.get('content-length'));\n\n const [onProgress, flush] = onDownloadProgress && progressEventDecorator(\n responseContentLength,\n progressEventReducer(asyncDecorator(onDownloadProgress), true)\n ) || [];\n\n response = new Response(\n trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => {\n flush && flush();\n unsubscribe && unsubscribe();\n }),\n options\n );\n }\n\n responseType = responseType || 'text';\n\n let responseData = await resolvers[utils.findKey(resolvers, responseType) || 'text'](response, config);\n\n !isStreamResponse && unsubscribe && unsubscribe();\n\n return await new Promise((resolve, reject) => {\n settle(resolve, reject, {\n data: responseData,\n headers: AxiosHeaders.from(response.headers),\n status: response.status,\n statusText: response.statusText,\n config,\n request\n })\n })\n } catch (err) {\n unsubscribe && unsubscribe();\n\n if (err && err.name === 'TypeError' && /Load failed|fetch/i.test(err.message)) {\n throw Object.assign(\n new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request),\n {\n cause: err.cause || err\n }\n )\n }\n\n throw AxiosError.from(err, err && err.code, config, request);\n }\n }\n}\n\nconst seedCache = new Map();\n\nexport const getFetch = (config) => {\n let env = config ? config.env : {};\n const {fetch, Request, Response} = env;\n const seeds = [\n Request, Response, fetch\n ];\n\n let len = seeds.length, i = len,\n seed, target, map = seedCache;\n\n while (i--) {\n seed = seeds[i];\n target = map.get(seed);\n\n target === undefined && map.set(seed, target = (i ? new Map() : factory(env)))\n\n map = target;\n }\n\n return target;\n};\n\nconst adapter = getFetch();\n\nexport default adapter;\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport * as fetchAdapter from './fetch.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter,\n fetch: {\n get: fetchAdapter.getFetch,\n }\n}\n\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', {value});\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', {value});\n }\n});\n\nconst renderReason = (reason) => `- ${reason}`;\n\nconst isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false;\n\nexport default {\n getAdapter: (adapters, config) => {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const {length} = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter && (utils.isFunction(adapter) || (adapter = adapter.get(config)))) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n\n const reasons = Object.entries(rejectedReasons)\n .map(([id, state]) => `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length ?\n (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n },\n adapters: knownAdapters\n}\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\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 *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter, config);\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 config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders.from(response.headers);\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 config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n","export const VERSION = \"1.12.2\";","'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\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 *\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 (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\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\nvalidators.spelling = function spelling(correctSpelling) {\n return (value, opt) => {\n // eslint-disable-next-line no-console\n console.warn(`${opt} is likely a misspelling of ${correctSpelling}`);\n return true;\n }\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators\n};\n","'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(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 {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy = {};\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n try {\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack\n }\n } catch (e) {\n // ignore the case where \"stack\" is an un-writable property\n }\n }\n\n throw err;\n }\n }\n\n _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 const {transitional, paramsSerializer, headers} = config;\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 if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n }\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.allowAbsoluteUrls\n if (config.allowAbsoluteUrls !== undefined) {\n // do nothing\n } else if (this.defaults.allowAbsoluteUrls !== undefined) {\n config.allowAbsoluteUrls = this.defaults.allowAbsoluteUrls;\n } else {\n config.allowAbsoluteUrls = true;\n }\n\n validator.assertOptions(config, {\n baseUrl: validators.spelling('baseURL'),\n withXsrfToken: validators.spelling('withXSRFToken')\n }, true);\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(\n headers.common,\n headers[config.method]\n );\n\n headers && utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let 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 const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift(...requestInterceptorChain);\n chain.push(...responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url, config.allowAbsoluteUrls);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\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,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(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, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n 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\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n toAbortSignal() {\n const controller = new AbortController();\n\n const abort = (err) => {\n controller.abort(err);\n };\n\n this.subscribe(abort);\n\n controller.signal.unsubscribe = () => this.unsubscribe(abort);\n\n return controller.signal;\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nexport default CancelToken;\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 *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\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\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n","import axios from './lib/axios.js';\n\n// This module is intended to unwrap Axios default export as named.\n// Keep top-level export same with static properties\n// so that it can keep same with es module or cjs\nconst {\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig\n} = axios;\n\nexport {\n axios as default,\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig\n}\n","import { createSlice, type PayloadAction } from \"@reduxjs/toolkit\";\r\n\r\nexport interface RemainingWeightState {\r\n weight: number;\r\n}\r\n\r\nexport const initialStateRemainingWeight: RemainingWeightState = {\r\n weight: 0,\r\n};\r\n\r\nconst remainingWeightSlice = createSlice({\r\n name: \"remainingWeight\",\r\n initialState: initialStateRemainingWeight,\r\n reducers: {\r\n setRemainingWeight: (state, action: PayloadAction<number>) => {\r\n state.weight = action.payload;\r\n },\r\n updateRemainingWeight: (state, action: PayloadAction<number>) => {\r\n const usedWeight = action.payload;\r\n state.weight = Math.max(0, state.weight - usedWeight);\r\n },\r\n resetRemainingWeight: (state) => {\r\n state.weight = 0;\r\n },\r\n },\r\n});\r\n\r\nexport const {\r\n setRemainingWeight,\r\n updateRemainingWeight,\r\n resetRemainingWeight,\r\n} = remainingWeightSlice.actions;\r\n\r\nexport default remainingWeightSlice.reducer;\r\n","// Export account redux\r\nexport * from \"./account.action\";\r\nexport * from \"./account.interface\";\r\nexport * from \"./account.slice\";\r\n\r\n// Export all actions as ACTION_ACCOUNT object\r\nimport * as accountActions from \"./account.action\";\r\nexport const ACTION_ACCOUNT = accountActions;\r\n","export enum UserType {\r\n ROOT = 'Root',\r\n ADMIN = 'Admin',\r\n HR = 'HR',\r\n User = 'User',\r\n CANDIDATE = 'Candidate',\r\n EMPLOYEE = 'Employee', // ứng viên chấp nhận vào làm việc thì sẽ chuyển từ Candidate sang Employee\r\n C_B = 'C&B',\r\n}\r\nexport enum UserStatus {\r\n ACTIVE = 'Đang làm việc',\r\n INACTIVE = 'Không hoạt động',\r\n}\r\n\r\nexport enum Gender {\r\n MALE = 'Nam',\r\n FEMALE = 'Nữ',\r\n OTHER = 'Khác',\r\n}\r\n\r\nexport enum UserMovementType {\r\n APPOINTMENT = 'Bổ nhiệm', // Bổ nhiệm\r\n TRANSFER = 'Điều chuyển', // Điều chuyển\r\n DEMOTION = 'Miễn nhiệm', // Miễn nhiệm\r\n}\r\n\r\nexport enum UserMovementStatus {\r\n PENDING = 'Đang chờ',\r\n APPROVED = 'Đã phê duyệt',\r\n REJECTED = 'Đã từ chối',\r\n EFFECTIVE = 'Có hiệu lực',\r\n CANCELLED = 'Hủy ban hành',\r\n VIEW = 'Xem',\r\n}\r\n\r\nexport interface FlatArray {\r\n id: string;\r\n name: string;\r\n status: string;\r\n}\r\n\r\nexport enum UserMovementSearchType {\r\n MY_PROPOSAL = 'Đề xuất của tôi',\r\n NEED_APPROVE = 'Đề xuất cần phê duyệt',\r\n ALL = 'Tất cả',\r\n}\r\n\r\nexport enum UserMovementHistoryField {\r\n REASON = 'reason',\r\n DATE_APPOINTMENT = 'dateAppointment',\r\n FILE = 'file',\r\n}\r\n\r\nexport enum UserOfficialStatus {\r\n OFFICIAL = 'Chính thức',\r\n TRIAL = 'Thử việc',\r\n}\r\n\r\nexport enum UserExportExcelColumn {\r\n INDEX = 'index',\r\n CODE = 'code',\r\n NAME = 'name',\r\n CCCD = 'cccd',\r\n EMAIL = 'email',\r\n PHONE = 'phone',\r\n BIRTHDAY = 'birthday',\r\n DATE_ONBOARD = 'dateOnboard',\r\n ADDRESS = 'address',\r\n TEMP_ADDRESS = 'tempAddress',\r\n GENDER = 'gender',\r\n OFFICIAL_STATUS = 'officialStatus',\r\n DIRECTOR = 'director',\r\n DIVISION = 'division',\r\n DEPARTMENT = 'department',\r\n PART = 'part',\r\n TEAM = 'team',\r\n ORG_UNIT = 'orgUnit',\r\n POSITION = 'position',\r\n TITLE = 'title',\r\n MANAGERS = 'managers',\r\n LEVEL = 'level',\r\n CITIZEN_IDENTIFICATION_DATE = 'citizenIdentificationDate',\r\n CITIZEN_IDENTIFICATION_PLACE = 'citizenIdentificationPlace',\r\n ETHNICITY = 'ethnicity',\r\n RELIGION = 'religion',\r\n MARITAL_STATUS = 'maritalStatus',\r\n TAX_CODE = 'taxCode',\r\n SOCIAL_INSURANCE_NUMBER = 'socialInsuranceNumber',\r\n BANK_ACCOUNT_NUMBER = 'bankAccountNumber',\r\n BANK_BRANCH = 'bankBranch',\r\n BANK_NAME = 'bankName',\r\n TENURE = 'tenure',\r\n RELATIVE_NAME = 'relativeName',\r\n RELATIVE_PHONE = 'relativePhone',\r\n DATE_WORK_END = 'dateWorkEnd',\r\n RESIGN_TYPE = 'resignType',\r\n RESIGN_REASON = 'resignReason',\r\n PASSPORT_NUMBER = 'passportNumber',\r\n PASSPORT_DATE = 'passportDate',\r\n PASSPORT_PLACE = 'passportPlace',\r\n PASSPORT_VALIDITY_DATE = 'passportValidityDate',\r\n INTERNAL_PHONE_1 = 'internalPhone1',\r\n INTERNAL_PHONE_2 = 'internalPhone2',\r\n}\r\n\r\nexport enum UserDepartmentStatus {\r\n ACTIVE = 'Hoạt động',\r\n INACTIVE = 'Không hoạt động',\r\n}\r\n\r\nexport enum UserDivisionStatus {\r\n ACTIVE = 'Hoạt động',\r\n INACTIVE = 'Không hoạt động',\r\n}\r\n\r\nexport enum UserPositionStatus {\r\n ACTIVE = 'Hoạt động',\r\n INACTIVE = 'Không hoạt động',\r\n}\r\n\r\nexport enum UserTeamStatus {\r\n ACTIVE = 'Hoạt động',\r\n INACTIVE = 'Không hoạt động',\r\n}\r\n\r\nexport enum UserApproveTransferType {\r\n OLD = 'old',\r\n NEW = 'new',\r\n}\r\n\r\nexport enum UserMovementApproveType {\r\n APPROVE = 'Người phê duyệt',\r\n FOLLOWERS = 'Người theo dõi',\r\n CREATOR = 'Người tạo đề xuất',\r\n}\r\n\r\nexport enum RejectionReason {\r\n INSUFFICIENT_QUALIFICATIONS = 'Nhân sự không đáp ứng tiêu chuẩn vị trí',\r\n\r\n POOR_PERFORMANCE = 'Hiệu suất làm việc của nhân sự không đạt yêu cầu',\r\n\r\n LACK_OF_SKILLS = 'Nhân sự thiếu kỹ năng chuyên môn',\r\n\r\n PROCESS_VIOLATION = 'Đề xuất trên vi phạm quy trình nội bộ',\r\n\r\n NOT_FIT_PLANNING = 'Không phù hợp với quy hoạch nhân sự',\r\n\r\n LEGAL_VIOLATION = 'Không tuân thủ quy định pháp luật',\r\n\r\n IMPACT_CURRENT_OPERATIONS = 'Đề xuất gây ảnh hưởng đến hoạt động hiện tại của tổ chức',\r\n\r\n NOT_FIT_CURRENT_NEEDS = 'Không phù hợp với nhu cầu hiện tại',\r\n\r\n NEGATIVE_TEAM_MORALE = 'Tác động tiêu cực đến tinh thần đội ngũ',\r\n\r\n LACK_OF_TRANSPARENCY = 'Đề xuất trên thiếu minh bạch',\r\n\r\n LACK_OF_FAIRNESS = 'Đề xuất trên không đảm bảo công bằng',\r\n\r\n INAPPROPRIATE_TIMING = 'Thời điểm không phù hợp',\r\n\r\n INSUFFICIENT_EVALUATION_TIME = 'Nhân sự chưa đủ thời gian đánh giá',\r\n\r\n INAPPROPRIATE_BEHAVIOR = 'Nhân sự có hành vi không phù hợp',\r\n\r\n CONFLICT_OF_INTEREST = 'Đề xuất trên gây xung đột lợi ích trong tổ chức',\r\n\r\n OTHER = 'Khác',\r\n}\r\n\r\nexport enum SubManagerStatus {\r\n ACTIVE = 'Hoạt động',\r\n INACTIVE = 'Không hoạt động',\r\n}\r\n\r\nexport enum UserTrackingType {\r\n USER_CREATE = 'user_create',\r\n USER_UPDATE = 'user_update',\r\n USER_MOVEMENT_UPDATE = 'user_movement_update',\r\n}\r\n\r\nexport enum UserPositionType {\r\n MAIN = 'Chức vụ chính',\r\n SUB = 'Chức vụ kiêm nhiệm',\r\n}\r\n\r\nexport enum UserLevel {\r\n OPERATION_MANAGER = 'Điều hành',\r\n OPERATION_MANAGER_HIGH = 'Quản lý cấp cao',\r\n OPERATION_MANAGER_MEDIUM = 'Quản lý cấp trung',\r\n OPERATION_MANAGER_LOW = 'Quản lý cấp cơ sở',\r\n SPECIALIST = 'Chuyên viên',\r\n EMPLOYEE = 'Nhân viên',\r\n LABOR = 'Công nhân',\r\n STUDENT = 'Học việc',\r\n INTERNSHIP = 'Thực tập sinh',\r\n}\r\n\r\nexport enum UserEducationLevel {\r\n DOCTOR = 'Tiến sĩ',\r\n MASTER = 'Thạc sĩ',\r\n UNDERGRADUATE = 'Đại học',\r\n ASSOCIATE = 'Cao đẳng',\r\n TECHNICAL = 'Trung cấp/ Nghề',\r\n NONE = 'Không',\r\n}\r\n\r\nexport enum UserCultureLevel {\r\n NONE = 'Không',\r\n ONE = '1/12',\r\n TWO = '2/12',\r\n THREE = '3/12',\r\n FOUR = '4/12',\r\n FIVE = '5/12',\r\n SIX = '6/12',\r\n SEVEN = '7/12',\r\n EIGHT = '8/12',\r\n NINE = '9/12',\r\n TEN = '10/12',\r\n ELEVEN = '11/12',\r\n TWELVE = '12/12',\r\n}\r\n\r\nexport enum UserResignType {\r\n RESIGN_BY_REQUEST = 'Nghỉ việc theo đơn',\r\n RESIGN_BY_AGREEMENT = 'Thỏa thuận thanh lý hợp đồng',\r\n RESIGN_BY_FIRE = 'Sa thải',\r\n RESIGN_BY_THREE_MONTH_TRIAL = 'Chấm dứt thử việc',\r\n RESIGN_BY_ANGULAR = 'Nghỉ ngang (Bỏ việc)',\r\n RESIGN_BY_OTHER = 'Khác',\r\n}\r\n\r\nexport enum UserCitizenIdentificationPlace {\r\n CUS = 'Cục cảnh sát QLHC về TTXH',\r\n}\r\n\r\nexport enum UserEthnic {\r\n KINH = 'Kinh',\r\n TAY = 'Tày',\r\n THAI = 'Thái',\r\n MUONG = 'Mường',\r\n KHOME = 'Khơ-me',\r\n HOA = 'Hoa',\r\n NUNG = 'Nùng',\r\n HMONG = 'H’Mông',\r\n DAO = 'Dao',\r\n GIA_RAI = 'Gia-rai',\r\n NGAI = 'Ngái',\r\n E_DE = 'Ê-đê',\r\n BA_NA = 'Ba-na',\r\n XO_DANG = 'Xơ-Đăng',\r\n SAN_CHAY = 'Sán Chay',\r\n CO_HO = 'Cơ-ho',\r\n CHAM = 'Chăm',\r\n SAN_DIU = 'Sán Dìu',\r\n HRE = 'Hrê',\r\n MNONG = 'Mnông',\r\n RAGLAI = 'Ra-glai',\r\n XTIENG = 'Xtiêng',\r\n BRU_VAN_KIEU = 'Bru-Vân Kiều',\r\n THO = 'Thổ',\r\n GIAY = 'Giấy',\r\n CO_TU = 'Cơ-tu',\r\n GIE_TRIENG = 'Gié-Triêng',\r\n MA = 'Mạ',\r\n KHO_MU = 'Khơ-mú',\r\n CO = 'Co',\r\n TA_OI = 'Tà-ôi',\r\n CHO_RO = 'Chơ-ro',\r\n KHANG = 'Kháng',\r\n XINH_MUN = 'Xinh-mun',\r\n HA_NHI = 'Hà Nhì',\r\n CHU_RU = 'Chu-ru',\r\n LAO = 'Lào',\r\n LA_CHI = 'La Chi',\r\n LA_HA = 'La Ha',\r\n PHU_LA = 'Phù Lá',\r\n LA_HU = 'La Hủ',\r\n LU = 'Lự',\r\n LO_LO = 'Lô Lô',\r\n CHUT = 'Chứt',\r\n MANG = 'Mảng',\r\n PA_THEN = 'Pà Thẻn',\r\n CO_LAO = 'Cơ Lao',\r\n CONG = 'Cống',\r\n BO_Y = 'Bố Y',\r\n SI_LA = 'Si La',\r\n PU_PEO = 'Pu Péo',\r\n BRAU = 'Brâu',\r\n O_DU = 'Ơ Đu',\r\n RO_MAM = 'Rơ Măm',\r\n}\r\n\r\nexport enum UserReligion {\r\n PHAT_GIAO = 'Phật giáo',\r\n CONG_GIAO = 'Công giáo',\r\n TIN_LANH = 'Tin Lành',\r\n HOI_GIAO = 'Hồi giáo',\r\n CAO_DAI = 'Cao Đài',\r\n HOA_HAO = 'Phật giáo Hòa Hảo',\r\n TINH_DO_CU_SI = 'Tịnh độ Cư sĩ Phật hội Việt Nam',\r\n TU_AN_HIEU_NGHIA = 'Tứ Ân Hiếu Nghĩa',\r\n BUU_SON_KY_HUONG = 'Bửu Sơn Kỳ Hương',\r\n BAHAI = 'Bahá’í',\r\n MINH_SU_DAO = 'Minh Sư Đạo',\r\n MINH_LY_DAO = 'Minh Lý Đạo',\r\n MORMON = 'Giáo hội các Thánh hữu Ngày sau',\r\n KHONG_TON_GIAO = 'Không tôn giáo',\r\n KHAC = 'Khác',\r\n}\r\n\r\nexport enum UserMaritalStatus {\r\n MARRIED = 'Đã kết hôn',\r\n SINGLE = 'Độc thân',\r\n}\r\n\r\nexport enum UserBankName {\r\n AGRIBANK = 'Agribank (Ngân hàng Nông nghiệp và PTNT Việt Nam)',\r\n VIETCOMBANK = 'Vietcombank (Ngân hàng Ngoại thương Việt Nam)',\r\n VIETINBANK = 'VietinBank (Ngân hàng Công Thương Việt Nam)',\r\n BIDV = 'BIDV (Ngân hàng Đầu tư và PT Việt Nam)',\r\n VPBANK = 'VPBank (Ngân hàng Việt Nam Thịnh Vượng)',\r\n TECHCOMBANK = 'Techcombank (Ngân hàng Kỹ Thương Việt Nam)',\r\n MBBANK = 'MBBank (Ngân hàng Quân đội)',\r\n ACB = 'ACB (Ngân hàng Á Châu)',\r\n SHB = 'SHB (Ngân hàng Sài Gòn – Hà Nội)',\r\n HDBANK = 'HDBank (Ngân hàng Phát triển TP HCM)',\r\n LIENVietPostBank = 'LienVietPostBank (Ngân hàng Bưu điện Liên Việt / LPBank)',\r\n VIB = 'VIB (Ngân hàng TMCP Quốc tế Việt Nam)',\r\n SEABANK = 'SeABank (Ngân hàng Đông Nam Á)',\r\n TPBANK = 'TPBank (Ngân hàng Tiên Phong)',\r\n OCB = 'OCB (Ngân hàng Phương Đông)',\r\n MSB = 'MSB (Ngân hàng Hàng Hải Việt Nam)',\r\n SACOMBANK = 'Sacombank (Ngân hàng Sài Gòn Thương Tín)',\r\n EXIMBANK = 'Eximbank (Ngân hàng Xuất Nhập khẩu Việt Nam)',\r\n SCB = 'SCB (Ngân hàng Sài Gòn)',\r\n PVCOMBANK = 'PVcomBank (Ngân hàng Đại chúng Việt Nam)',\r\n NAM_A_BANK = 'Nam A Bank',\r\n AB_BANK = 'ABBank',\r\n BAC_A_BANK = 'Bac A Bank',\r\n DONG_A_BANK = 'DongA Bank',\r\n OCEAN_BANK = 'Ocean Bank',\r\n BAO_VIET_BANK = 'BaoViet Bank',\r\n PETROLIMEX_BANK = 'Petrolimex Bank',\r\n VIET_A_BANK = 'VietABank',\r\n}\r\n","export enum RouteType {\r\n PUBLIC = 'PUBLIC',\r\n PROTECTED = 'PROTECTED',\r\n}\r\n","import { UserType } from \"../apis/user/user.enum\";\r\nimport type { RouteConstant } from \"../common/interfaces/route.interface\";\r\nimport { RouteType } from \"./route.enum\";\r\n\r\nexport const DASHBOARD_BASE = \"/dashboard\";\r\nconst PREFIX_SETTING_JOB = \"job-settings/\";\r\nexport const PREFIX_WORKFLOW_ENGINE = \"/workflow\";\r\nexport const ALLOW_USER_TYPES = [\r\n UserType.ADMIN,\r\n UserType.HR,\r\n UserType.User,\r\n UserType.C_B,\r\n UserType.ROOT,\r\n];\r\nexport const PAGE: Record<string, RouteConstant> = {\r\n // Public\r\n AUTH: { path: \"/\", type: RouteType.PUBLIC, allowUserTypes: [] },\r\n ERROR: { path: \"/error\", type: RouteType.PUBLIC, allowUserTypes: [] },\r\n NOT_FOUND: { path: \"/*\", type: RouteType.PUBLIC, allowUserTypes: [] },\r\n TEST_COMPONENT: {\r\n path: \"/test-component\",\r\n type: RouteType.PUBLIC,\r\n allowUserTypes: [],\r\n },\r\n\r\n // Private\r\n DASHBOARD: {\r\n path: \"/dashboard/\",\r\n type: RouteType.PROTECTED,\r\n allowUserTypes: ALLOW_USER_TYPES,\r\n },\r\n};\r\n\r\nexport const DASHBOARD_SCREEN = {\r\n DASHBOARD: {\r\n path: \"\",\r\n type: RouteType.PROTECTED,\r\n allowUserTypes: ALLOW_USER_TYPES,\r\n },\r\n // dashboard\r\n PROJECT_DASHBOARD: {\r\n path: \"project-dashboard\",\r\n type: RouteType.PROTECTED,\r\n allowUserTypes: ALLOW_USER_TYPES,\r\n },\r\n JOB_DASHBOARD: {\r\n path: \"job-dashboard\",\r\n type: RouteType.PROTECTED,\r\n allowUserTypes: [UserType.ADMIN, UserType.HR, UserType.ROOT],\r\n },\r\n PROJECT_TASK_PROCESS: {\r\n path: \"process-dashboard\",\r\n type: RouteType.PROTECTED,\r\n allowUserTypes: ALLOW_USER_TYPES,\r\n },\r\n\r\n // job\r\n JOB: {\r\n path: \"job-hr\",\r\n type: RouteType.PROTECTED,\r\n allowUserTypes: [UserType.ADMIN, UserType.HR, UserType.ROOT],\r\n },\r\n JOB_RECRUITMENT: {\r\n path: \"job-recruitment\",\r\n type: RouteType.PROTECTED,\r\n allowUserTypes: [\r\n UserType.ADMIN,\r\n UserType.User,\r\n UserType.C_B,\r\n UserType.ROOT,\r\n ],\r\n },\r\n JOB_RECRUITMENT_DETAIL: {\r\n path: \"job-recruitment/:id\",\r\n type: RouteType.PROTECTED,\r\n allowUserTypes: [\r\n UserType.ADMIN,\r\n UserType.User,\r\n UserType.C_B,\r\n UserType.ROOT,\r\n ],\r\n },\r\n JOB_DETAIL: {\r\n path: \"job-hr/:id\",\r\n type: RouteType.PROTECTED,\r\n allowUserTypes: [UserType.ADMIN, UserType.C_B, UserType.HR, UserType.ROOT],\r\n },\r\n //setting job parent\r\n JOB_TITLE: {\r\n path: PREFIX_SETTING_JOB + \"job-title\",\r\n type: RouteType.PROTECTED,\r\n allowUserTypes: ALLOW_USER_TYPES,\r\n },\r\n JOB_BANNER: {\r\n path: PREFIX_SETTING_JOB + \"banner\",\r\n type: RouteType.PROTECTED,\r\n allowUserTypes: [UserType.ADMIN, UserType.HR, UserType.ROOT],\r\n },\r\n JOB_SOCIAL: {\r\n path: PREFIX_SETTING_JOB + \"job-social\",\r\n type: RouteType.PROTECTED,\r\n allowUserTypes: [UserType.ADMIN, UserType.HR, UserType.ROOT],\r\n },\r\n JOB_RECRUITMENT_HISTORY: {\r\n path: PREFIX_SETTING_JOB + \"history-recruitment\",\r\n type: RouteType.PROTECTED,\r\n allowUserTypes: [\r\n UserType.ADMIN,\r\n UserType.User,\r\n UserType.C_B,\r\n UserType.ROOT,\r\n ],\r\n },\r\n INDUSTRY: {\r\n path: PREFIX_SETTING_JOB + \"industry\",\r\n type: RouteType.PROTECTED,\r\n allowUserTypes: ALLOW_USER_TYPES,\r\n },\r\n EMAIL_TEMPLATE: {\r\n path: PREFIX_SETTING_JOB + \"email-template\",\r\n type: RouteType.PROTECTED,\r\n allowUserTypes: [UserType.ADMIN, UserType.HR, UserType.ROOT],\r\n },\r\n FAQ: {\r\n path: PREFIX_SETTING_JOB + \"faq\",\r\n type: RouteType.PROTECTED,\r\n allowUserTypes: [UserType.ADMIN, UserType.HR, UserType.ROOT],\r\n },\r\n SALARY: {\r\n path: PREFIX_SETTING_JOB + \"salary-range\",\r\n type: RouteType.PROTECTED,\r\n allowUserTypes: ALLOW_USER_TYPES,\r\n },\r\n\r\n // application\r\n APPLICATION: {\r\n path: \"application-office\",\r\n type: RouteType.PROTECTED,\r\n allowUserTypes: ALLOW_USER_TYPES,\r\n },\r\n APPLICATION_OPERATOR: {\r\n path: \"application-operator\",\r\n type: RouteType.PROTECTED,\r\n allowUserTypes: [UserType.ADMIN, UserType.HR, UserType.ROOT],\r\n },\r\n\r\n // project - Phần này để tạm sẽ fix thêm 1 lần nữa\r\n PROJECT_TASK: {\r\n path: \"project-task\",\r\n type: RouteType.PROTECTED,\r\n allowUserTypes: ALLOW_USER_TYPES,\r\n },\r\n CREATE_PROJECT: {\r\n path: \"create-project\",\r\n type: RouteType.PROTECTED,\r\n allowUserTypes: ALLOW_USER_TYPES,\r\n },\r\n DETAIL_PROJECT: {\r\n path: \"detail-project\",\r\n type: RouteType.PROTECTED,\r\n allowUserTypes: ALLOW_USER_TYPES,\r\n },\r\n CREATE_TASK: {\r\n path: \"create-task\",\r\n type: RouteType.PROTECTED,\r\n allowUserTypes: ALLOW_USER_TYPES,\r\n },\r\n ALL_PROJECT_OF_DIVISION: {\r\n path: \"all-project-of-division\",\r\n type: RouteType.PROTECTED,\r\n allowUserTypes: ALLOW_USER_TYPES,\r\n },\r\n\r\n // org\r\n ORG_UNIT_TREE: {\r\n path: \"org-unit-tree\",\r\n type: RouteType.PROTECTED,\r\n allowUserTypes: ALLOW_USER_TYPES,\r\n },\r\n ORG_UNIT_RESTORE: {\r\n path: \"org-unit-restore\",\r\n type: RouteType.PROTECTED,\r\n allowUserTypes: ALLOW_USER_TYPES,\r\n },\r\n ORG_STRUCTURE: {\r\n path: \"org-structure\",\r\n type: RouteType.PROTECTED,\r\n allowUserTypes: ALLOW_USER_TYPES,\r\n },\r\n\r\n POSITION_TREE: {\r\n path: \"position-tree\",\r\n type: RouteType.PROTECTED,\r\n allowUserTypes: ALLOW_USER_TYPES,\r\n },\r\n POSITION_RESTORE: {\r\n path: \"position-restore\",\r\n type: RouteType.PROTECTED,\r\n allowUserTypes: ALLOW_USER_TYPES,\r\n },\r\n\r\n //user\r\n USER: {\r\n path: \"user-list\",\r\n type: RouteType.PROTECTED,\r\n allowUserTypes: ALLOW_USER_TYPES,\r\n },\r\n USER_RESTORE: {\r\n path: \"user-restore\",\r\n type: RouteType.PROTECTED,\r\n allowUserTypes: ALLOW_USER_TYPES,\r\n },\r\n\r\n // other\r\n ACCOUNT: {\r\n path: \"account\",\r\n type: RouteType.PROTECTED,\r\n allowUserTypes: ALLOW_USER_TYPES,\r\n },\r\n NOTIFICATION: {\r\n path: \"notification\",\r\n type: RouteType.PROTECTED,\r\n allowUserTypes: ALLOW_USER_TYPES,\r\n },\r\n\r\n // check in\r\n CHECK_IN: {\r\n path: \"check-in\",\r\n type: RouteType.PROTECTED,\r\n allowUserTypes: ALLOW_USER_TYPES,\r\n },\r\n // payroll\r\n PAYROLL: {\r\n path: \"payroll\",\r\n type: RouteType.PROTECTED,\r\n allowUserTypes: ALLOW_USER_TYPES,\r\n },\r\n\r\n // training\r\n TRAINING: {\r\n path: \"training\",\r\n type: RouteType.PROTECTED,\r\n allowUserTypes: ALLOW_USER_TYPES,\r\n },\r\n\r\n // truyền thông\r\n INSIDE: {\r\n path: \"inside\",\r\n type: RouteType.PROTECTED,\r\n allowUserTypes: ALLOW_USER_TYPES,\r\n },\r\n\r\n //list proposal\r\n PROPOSAL_SELECTOR: {\r\n path: \"proposal-selector\",\r\n type: RouteType.PROTECTED,\r\n allowUserTypes: ALLOW_USER_TYPES,\r\n },\r\n\r\n // Các loại proposal workflow cụ thể\r\n PROPOSAL_WORKFLOW_PROJECT: {\r\n path: \"proposal-workflow/project-proposal\",\r\n type: RouteType.PROTECTED,\r\n allowUserTypes: ALLOW_USER_TYPES,\r\n },\r\n PROPOSAL_WORKFLOW_JOB: {\r\n path: \"proposal-workflow/job-recruitment\",\r\n type: RouteType.PROTECTED,\r\n allowUserTypes: ALLOW_USER_TYPES,\r\n },\r\n PROPOSAL_WORKFLOW_USER: {\r\n path: \"proposal-workflow/user-movement\",\r\n type: RouteType.PROTECTED,\r\n allowUserTypes: ALLOW_USER_TYPES,\r\n },\r\n // Chat\r\n CHAT: {\r\n path: \"chat\",\r\n type: RouteType.PROTECTED,\r\n allowUserTypes: ALLOW_USER_TYPES,\r\n },\r\n};\r\n\r\nexport const BOOKING_SCREEN = {\r\n MEETING_SETTING: {\r\n path: \"meeting-setting\",\r\n },\r\n};\r\n\r\nexport const WORKFLOW_ENGINE_SCREEN = {\r\n //job\r\n PROPOSAL_JOB_RECRUITMENT: {\r\n path: \"request-job\",\r\n type: RouteType.PROTECTED,\r\n allowUserTypes: ALLOW_USER_TYPES,\r\n },\r\n PROPOSAL_WORKFLOW: {\r\n path: \":type/:id\",\r\n type: RouteType.PROTECTED,\r\n allowUserTypes: ALLOW_USER_TYPES,\r\n },\r\n // project\r\n PROPOSAL_PROJECT_TASK: {\r\n path: \"request-project\",\r\n type: RouteType.PROTECTED,\r\n allowUserTypes: ALLOW_USER_TYPES,\r\n },\r\n //user\r\n PROPOSAL_USER_TRANSFER: {\r\n path: \"user-transfer\",\r\n type: RouteType.PROTECTED,\r\n allowUserTypes: ALLOW_USER_TYPES,\r\n },\r\n PROPOSAL_USER_APPOINTMENT: {\r\n path: \"user-appointment\",\r\n type: RouteType.PROTECTED,\r\n allowUserTypes: ALLOW_USER_TYPES,\r\n },\r\n PROPOSAL_USER_EXEMPTION: {\r\n path: \"user-exemption\",\r\n type: RouteType.PROTECTED,\r\n allowUserTypes: ALLOW_USER_TYPES,\r\n },\r\n PROPOSAL_USER_WORKFLOW_APPOINTMENT: {\r\n path: \"user-appointment/:type\",\r\n type: RouteType.PROTECTED,\r\n allowUserTypes: ALLOW_USER_TYPES,\r\n },\r\n PROPOSAL_USER_WORKFLOW_TRANSFER: {\r\n path: \"user-transfer/:type\",\r\n type: RouteType.PROTECTED,\r\n allowUserTypes: ALLOW_USER_TYPES,\r\n },\r\n PROPOSAL_USER_WORKFLOW_DEMOTION: {\r\n path: \"user-exemption/:type\",\r\n type: RouteType.PROTECTED,\r\n allowUserTypes: ALLOW_USER_TYPES,\r\n },\r\n};\r\n\r\nexport const WORKFLOW_TRACKING_SCREEN = {\r\n MY_TASK: {\r\n path: \"my-task\",\r\n type: RouteType.PROTECTED,\r\n allowUserTypes: ALLOW_USER_TYPES,\r\n },\r\n MY_WORK: {\r\n path: \"my-work\",\r\n type: RouteType.PROTECTED,\r\n allowUserTypes: ALLOW_USER_TYPES,\r\n },\r\n};\r\n","import axios from \"axios\";\r\nimport { ACTION_ACCOUNT } from \"../../redux\";\r\nimport { initialStateAccount } from \"../../redux/account/account.slice\";\r\nimport { store } from \"../../redux/store.redux\";\r\nimport { PAGE } from \"../../router/route.constant\";\r\nimport type { Error } from \"../interfaces/error.interface\";\r\n\r\nexport const axiosRequest = axios.create({\r\n baseURL: process.env.REACT_APP_BE_URL,\r\n timeout: 20000,\r\n headers: { \"Content-Type\": \"application/json\", \"X-CSRF-TOKEN\": \"CSRF-Token\" },\r\n withCredentials: true,\r\n});\r\n\r\n// Chặn request để add access token\r\naxiosRequest.interceptors.request.use(async (config) => {\r\n const { userUnitPositionId, accessToken } = store.getState().account;\r\n\r\n if (accessToken) config.headers.Authorization = `Bearer ${accessToken}`;\r\n if (userUnitPositionId)\r\n config.headers[\"userUnitPositionId\"] = userUnitPositionId;\r\n\r\n return config;\r\n});\r\n\r\nlet refreshingToken: any = null;\r\n\r\n// Chặn response để refresh token\r\naxiosRequest.interceptors.response.use(\r\n (response) => response.data,\r\n\r\n async (error) => {\r\n const originalConfig = error.config;\r\n\r\n const errorData = error.response?.data as Error;\r\n\r\n // Refreshing token\r\n if (errorData.statusCode === 777) {\r\n const refreshToken = store.getState().account.refreshToken;\r\n\r\n refreshingToken =\r\n refreshingToken ||\r\n store.dispatch(ACTION_ACCOUNT.refreshToken({ refreshToken })).unwrap();\r\n\r\n const data = await refreshingToken;\r\n\r\n refreshingToken = null;\r\n\r\n if (data.accessToken)\r\n originalConfig.headers.Authorization = `Bearer ${data.accessToken}`;\r\n\r\n // Thực hiện lại request với config ban đầu\r\n const response = await axios.request(originalConfig);\r\n\r\n return response.data;\r\n }\r\n\r\n if (errorData.statusCode === 888) {\r\n localStorage.setItem(\"account\", JSON.stringify(initialStateAccount));\r\n\r\n window.location.href = process.env.REACT_APP_URL + PAGE.AUTH.path;\r\n }\r\n return Promise.reject(errorData);\r\n }\r\n);\r\n","const getDefaultsFromPostinstall = () => (undefined);\nexport { getDefaultsFromPostinstall };","import { getDefaultsFromPostinstall } from './postinstall.mjs';\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 Firebase constants. Some of these (@defines) can be overridden at compile-time.\n */\nconst CONSTANTS = {\n /**\n * @define {boolean} Whether this is the client Node.js SDK.\n */\n NODE_CLIENT: false,\n /**\n * @define {boolean} Whether this is the Admin Node.js SDK.\n */\n NODE_ADMIN: false,\n /**\n * Firebase SDK Version\n */\n SDK_VERSION: '${JSCORE_VERSION}'\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/**\n * Throws an error if the provided assertion is falsy\n */\nconst assert = function (assertion, message) {\n if (!assertion) {\n throw assertionError(message);\n }\n};\n/**\n * Returns an Error object suitable for throwing.\n */\nconst assertionError = function (message) {\n return new Error('Firebase Database (' +\n CONSTANTS.SDK_VERSION +\n ') INTERNAL ASSERT FAILED: ' +\n message);\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 */\nconst stringToByteArray$1 = function (str) {\n // TODO(user): Use native implementations if/when available\n const out = [];\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 }\n else if (c < 2048) {\n out[p++] = (c >> 6) | 192;\n out[p++] = (c & 63) | 128;\n }\n else if ((c & 0xfc00) === 0xd800 &&\n i + 1 < str.length &&\n (str.charCodeAt(i + 1) & 0xfc00) === 0xdc00) {\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 }\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 * 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) {\n // TODO(user): Use native implementations if/when available\n const out = [];\n let pos = 0, c = 0;\n while (pos < bytes.length) {\n const c1 = bytes[pos++];\n if (c1 < 128) {\n out[c++] = String.fromCharCode(c1);\n }\n else if (c1 > 191 && c1 < 224) {\n const c2 = bytes[pos++];\n out[c++] = String.fromCharCode(((c1 & 31) << 6) | (c2 & 63));\n }\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 = (((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 }\n else {\n const c2 = bytes[pos++];\n const c3 = bytes[pos++];\n out[c++] = String.fromCharCode(((c1 & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));\n }\n }\n return out.join('');\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_()\n// TODO(dlarocque): Define this as a class, since we no longer target ES5.\nconst base64 = {\n /**\n * Maps bytes to characters.\n */\n byteToCharMap_: null,\n /**\n * Maps characters to bytes.\n */\n charToByteMap_: null,\n /**\n * Maps bytes to websafe characters.\n * @private\n */\n byteToCharMapWebSafe_: null,\n /**\n * Maps websafe characters to bytes.\n * @private\n */\n charToByteMapWebSafe_: null,\n /**\n * Our default alphabet, shared between\n * ENCODED_VALS and ENCODED_VALS_WEBSAFE\n */\n ENCODED_VALS_BASE: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' + 'abcdefghijklmnopqrstuvwxyz' + '0123456789',\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 * Our websafe alphabet.\n */\n get ENCODED_VALS_WEBSAFE() {\n return this.ENCODED_VALS_BASE + '-_.';\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 * 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, webSafe) {\n if (!Array.isArray(input)) {\n throw Error('encodeByteArray takes an array as a parameter');\n }\n this.init_();\n const byteToCharMap = webSafe\n ? this.byteToCharMapWebSafe_\n : this.byteToCharMap_;\n const output = [];\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 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 if (!haveByte3) {\n outByte4 = 64;\n if (!haveByte2) {\n outByte3 = 64;\n }\n }\n output.push(byteToCharMap[outByte1], byteToCharMap[outByte2], byteToCharMap[outByte3], byteToCharMap[outByte4]);\n }\n return output.join('');\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, webSafe) {\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$1(input), webSafe);\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, webSafe) {\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 * 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, webSafe) {\n this.init_();\n const charToByteMap = webSafe\n ? this.charToByteMapWebSafe_\n : this.charToByteMap_;\n const output = [];\n for (let i = 0; i < input.length;) {\n const byte1 = charToByteMap[input.charAt(i++)];\n const haveByte2 = i < input.length;\n const byte2 = haveByte2 ? charToByteMap[input.charAt(i)] : 0;\n ++i;\n const haveByte3 = i < input.length;\n const byte3 = haveByte3 ? charToByteMap[input.charAt(i)] : 64;\n ++i;\n const haveByte4 = i < input.length;\n const byte4 = haveByte4 ? charToByteMap[input.charAt(i)] : 64;\n ++i;\n if (byte1 == null || byte2 == null || byte3 == null || byte4 == null) {\n throw new DecodeBase64StringError();\n }\n const outByte1 = (byte1 << 2) | (byte2 >> 4);\n output.push(outByte1);\n if (byte3 !== 64) {\n const outByte2 = ((byte2 << 4) & 0xf0) | (byte3 >> 2);\n output.push(outByte2);\n if (byte4 !== 64) {\n const outByte3 = ((byte3 << 6) & 0xc0) | byte4;\n output.push(outByte3);\n }\n }\n }\n return output;\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 // 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 // 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 * An error encountered while decoding base64 string.\n */\nclass DecodeBase64StringError extends Error {\n constructor() {\n super(...arguments);\n this.name = 'DecodeBase64StringError';\n }\n}\n/**\n * URL-safe base64 encoding\n */\nconst base64Encode = function (str) {\n const utf8Bytes = stringToByteArray$1(str);\n return base64.encodeByteArray(utf8Bytes, true);\n};\n/**\n * URL-safe base64 encoding (without \".\" padding in the end).\n * e.g. Used in JSON Web Token (JWT) parts.\n */\nconst base64urlEncodeWithoutPadding = function (str) {\n // Use base64url encoding and remove padding in the end (dot characters).\n return base64Encode(str).replace(/\\./g, '');\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 */\nconst base64Decode = function (str) {\n try {\n return base64.decodeString(str, true);\n }\n catch (e) {\n console.error('base64Decode failed: ', e);\n }\n return null;\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/**\n * Do a deep-copy of basic JavaScript Objects or Arrays.\n */\nfunction deepCopy(value) {\n return deepExtend(undefined, value);\n}\n/**\n * Copy properties from source to target (recursively allows extension\n * of Objects and Arrays). Scalar values in the target are over-written.\n * If target is undefined, an object of the appropriate type will be created\n * (and returned).\n *\n * We recursively copy all child properties of plain Objects in the source- so\n * that namespace- like dictionaries are merged.\n *\n * Note that the target can be a function, in which case the properties in\n * the source Object are copied onto it as static properties of the Function.\n *\n * Note: we don't merge __proto__ to prevent prototype pollution\n */\nfunction deepExtend(target, source) {\n if (!(source instanceof Object)) {\n return source;\n }\n switch (source.constructor) {\n case Date:\n // Treat Dates like scalars; if the target date object had any child\n // properties - they will be lost!\n const dateValue = source;\n return new Date(dateValue.getTime());\n case Object:\n if (target === undefined) {\n target = {};\n }\n break;\n case Array:\n // Always copy the array source and overwrite the target.\n target = [];\n break;\n default:\n // Not a plain Object - treat it as a scalar.\n return source;\n }\n for (const prop in source) {\n // use isValidKey to guard against prototype pollution. See https://snyk.io/vuln/SNYK-JS-LODASH-450202\n if (!source.hasOwnProperty(prop) || !isValidKey(prop)) {\n continue;\n }\n target[prop] = deepExtend(target[prop], source[prop]);\n }\n return target;\n}\nfunction isValidKey(key) {\n return key !== '__proto__';\n}\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/**\n * Polyfill for `globalThis` object.\n * @returns the `globalThis` object for the given environment.\n * @public\n */\nfunction getGlobal() {\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/**\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 */\nconst getDefaultsFromGlobal = () => getGlobal().__FIREBASE_DEFAULTS__;\n/**\n * Attempt to read defaults from a JSON string provided to\n * process(.)env(.)__FIREBASE_DEFAULTS__ or a JSON file whose path is in\n * process(.)env(.)__FIREBASE_DEFAULTS_PATH__\n * The dots are in parens because certain compilers (Vite?) cannot\n * handle seeing that variable in comments.\n * See https://github.com/firebase/firebase-js-sdk/issues/6838\n */\nconst getDefaultsFromEnvVariable = () => {\n if (typeof process === 'undefined' || typeof process.env === 'undefined') {\n return;\n }\n const defaultsJsonString = process.env.__FIREBASE_DEFAULTS__;\n if (defaultsJsonString) {\n return JSON.parse(defaultsJsonString);\n }\n};\nconst getDefaultsFromCookie = () => {\n if (typeof document === 'undefined') {\n return;\n }\n let match;\n try {\n match = document.cookie.match(/__FIREBASE_DEFAULTS__=([^;]+)/);\n }\n catch (e) {\n // Some environments such as Angular Universal SSR have a\n // `document` object but error on accessing `document.cookie`.\n return;\n }\n const decoded = match && base64Decode(match[1]);\n return decoded && JSON.parse(decoded);\n};\n/**\n * Get the __FIREBASE_DEFAULTS__ object. It checks in order:\n * (1) if such an object exists as a property of `globalThis`\n * (2) if such an object was provided on a shell environment variable\n * (3) if such an object exists in a cookie\n * @public\n */\nconst getDefaults = () => {\n try {\n return (getDefaultsFromPostinstall() ||\n getDefaultsFromGlobal() ||\n getDefaultsFromEnvVariable() ||\n getDefaultsFromCookie());\n }\n catch (e) {\n /**\n * Catch-all for being unable to get __FIREBASE_DEFAULTS__ due\n * to any environment case we have not accounted for. Log to\n * info instead of swallowing so we can find these unknown cases\n * and add paths for them if needed.\n */\n console.info(`Unable to get __FIREBASE_DEFAULTS__ due to: ${e}`);\n return;\n }\n};\n/**\n * Returns emulator host stored in the __FIREBASE_DEFAULTS__ object\n * for the given product.\n * @returns a URL host formatted like `127.0.0.1:9999` or `[::1]:4000` if available\n * @public\n */\nconst getDefaultEmulatorHost = (productName) => getDefaults()?.emulatorHosts?.[productName];\n/**\n * Returns emulator hostname and port stored in the __FIREBASE_DEFAULTS__ object\n * for the given product.\n * @returns a pair of hostname and port like `[\"::1\", 4000]` if available\n * @public\n */\nconst getDefaultEmulatorHostnameAndPort = (productName) => {\n const host = getDefaultEmulatorHost(productName);\n if (!host) {\n return undefined;\n }\n const separatorIndex = host.lastIndexOf(':'); // Finding the last since IPv6 addr also has colons.\n if (separatorIndex <= 0 || separatorIndex + 1 === host.length) {\n throw new Error(`Invalid host ${host} with no separate hostname and port!`);\n }\n // eslint-disable-next-line no-restricted-globals\n const port = parseInt(host.substring(separatorIndex + 1), 10);\n if (host[0] === '[') {\n // Bracket-quoted `[ipv6addr]:port` => return \"ipv6addr\" (without brackets).\n return [host.substring(1, separatorIndex - 1), port];\n }\n else {\n return [host.substring(0, separatorIndex), port];\n }\n};\n/**\n * Returns Firebase app config stored in the __FIREBASE_DEFAULTS__ object.\n * @public\n */\nconst getDefaultAppConfig = () => getDefaults()?.config;\n/**\n * Returns an experimental setting on the __FIREBASE_DEFAULTS__ object (properties\n * prefixed by \"_\")\n * @public\n */\nconst getExperimentalSetting = (name) => getDefaults()?.[`_${name}`];\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 */\nclass Deferred {\n constructor() {\n this.reject = () => { };\n this.resolve = () => { };\n this.promise = new Promise((resolve, reject) => {\n this.resolve = resolve;\n this.reject = reject;\n });\n }\n /**\n * Our API internals are not promisified 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(callback) {\n return (error, value) => {\n if (error) {\n this.reject(error);\n }\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 // 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 }\n else {\n callback(error, value);\n }\n }\n };\n }\n}\n\n/**\n * @license\n * Copyright 2025 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 * Checks whether host is a cloud workstation or not.\n * @public\n */\nfunction isCloudWorkstation(url) {\n // `isCloudWorkstation` is called without protocol in certain connect*Emulator functions\n // In HTTP request builders, it's called with the protocol.\n // If called with protocol prefix, it's a valid URL, so we extract the hostname\n // If called without, we assume the string is the hostname.\n try {\n const host = url.startsWith('http://') || url.startsWith('https://')\n ? new URL(url).hostname\n : url;\n return host.endsWith('.cloudworkstations.dev');\n }\n catch {\n return false;\n }\n}\n/**\n * Makes a fetch request to the given server.\n * Mostly used for forwarding cookies in Firebase Studio.\n * @public\n */\nasync function pingServer(endpoint) {\n const result = await fetch(endpoint, {\n credentials: 'include'\n });\n return result.ok;\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 */\nfunction createMockUserToken(token, projectId) {\n if (token.uid) {\n throw new Error('The \"uid\" field is no longer supported by mockUserToken. Please use \"sub\" instead for Firebase Auth User ID.');\n }\n // Unsecured JWTs use \"none\" as the algorithm.\n const header = {\n alg: 'none',\n type: 'JWT'\n };\n const project = projectId || 'demo-project';\n const iat = token.iat || 0;\n const sub = token.sub || token.user_id;\n if (!sub) {\n throw new Error(\"mockUserToken must contain 'sub' or 'user_id' field!\");\n }\n const payload = {\n // Set all required fields to decent defaults\n iss: `https://securetoken.google.com/${project}`,\n aud: project,\n iat,\n exp: iat + 3600,\n auth_time: iat,\n sub,\n user_id: sub,\n firebase: {\n sign_in_provider: 'custom',\n identities: {}\n },\n // Override with user options\n ...token\n };\n // Unsecured JWTs use the empty string as a signature.\n const signature = '';\n return [\n base64urlEncodeWithoutPadding(JSON.stringify(header)),\n base64urlEncodeWithoutPadding(JSON.stringify(payload)),\n signature\n ].join('.');\n}\nconst emulatorStatus = {};\n// Checks whether any products are running on an emulator\nfunction getEmulatorSummary() {\n const summary = {\n prod: [],\n emulator: []\n };\n for (const key of Object.keys(emulatorStatus)) {\n if (emulatorStatus[key]) {\n summary.emulator.push(key);\n }\n else {\n summary.prod.push(key);\n }\n }\n return summary;\n}\nfunction getOrCreateEl(id) {\n let parentDiv = document.getElementById(id);\n let created = false;\n if (!parentDiv) {\n parentDiv = document.createElement('div');\n parentDiv.setAttribute('id', id);\n created = true;\n }\n return { created, element: parentDiv };\n}\nlet previouslyDismissed = false;\n/**\n * Updates Emulator Banner. Primarily used for Firebase Studio\n * @param name\n * @param isRunningEmulator\n * @public\n */\nfunction updateEmulatorBanner(name, isRunningEmulator) {\n if (typeof window === 'undefined' ||\n typeof document === 'undefined' ||\n !isCloudWorkstation(window.location.host) ||\n emulatorStatus[name] === isRunningEmulator ||\n emulatorStatus[name] || // If already set to use emulator, can't go back to prod.\n previouslyDismissed) {\n return;\n }\n emulatorStatus[name] = isRunningEmulator;\n function prefixedId(id) {\n return `__firebase__banner__${id}`;\n }\n const bannerId = '__firebase__banner';\n const summary = getEmulatorSummary();\n const showError = summary.prod.length > 0;\n function tearDown() {\n const element = document.getElementById(bannerId);\n if (element) {\n element.remove();\n }\n }\n function setupBannerStyles(bannerEl) {\n bannerEl.style.display = 'flex';\n bannerEl.style.background = '#7faaf0';\n bannerEl.style.position = 'fixed';\n bannerEl.style.bottom = '5px';\n bannerEl.style.left = '5px';\n bannerEl.style.padding = '.5em';\n bannerEl.style.borderRadius = '5px';\n bannerEl.style.alignItems = 'center';\n }\n function setupIconStyles(prependIcon, iconId) {\n prependIcon.setAttribute('width', '24');\n prependIcon.setAttribute('id', iconId);\n prependIcon.setAttribute('height', '24');\n prependIcon.setAttribute('viewBox', '0 0 24 24');\n prependIcon.setAttribute('fill', 'none');\n prependIcon.style.marginLeft = '-6px';\n }\n function setupCloseBtn() {\n const closeBtn = document.createElement('span');\n closeBtn.style.cursor = 'pointer';\n closeBtn.style.marginLeft = '16px';\n closeBtn.style.fontSize = '24px';\n closeBtn.innerHTML = ' ×';\n closeBtn.onclick = () => {\n previouslyDismissed = true;\n tearDown();\n };\n return closeBtn;\n }\n function setupLinkStyles(learnMoreLink, learnMoreId) {\n learnMoreLink.setAttribute('id', learnMoreId);\n learnMoreLink.innerText = 'Learn more';\n learnMoreLink.href =\n 'https://firebase.google.com/docs/studio/preview-apps#preview-backend';\n learnMoreLink.setAttribute('target', '__blank');\n learnMoreLink.style.paddingLeft = '5px';\n learnMoreLink.style.textDecoration = 'underline';\n }\n function setupDom() {\n const banner = getOrCreateEl(bannerId);\n const firebaseTextId = prefixedId('text');\n const firebaseText = document.getElementById(firebaseTextId) || document.createElement('span');\n const learnMoreId = prefixedId('learnmore');\n const learnMoreLink = document.getElementById(learnMoreId) ||\n document.createElement('a');\n const prependIconId = prefixedId('preprendIcon');\n const prependIcon = document.getElementById(prependIconId) ||\n document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n if (banner.created) {\n // update styles\n const bannerEl = banner.element;\n setupBannerStyles(bannerEl);\n setupLinkStyles(learnMoreLink, learnMoreId);\n const closeBtn = setupCloseBtn();\n setupIconStyles(prependIcon, prependIconId);\n bannerEl.append(prependIcon, firebaseText, learnMoreLink, closeBtn);\n document.body.appendChild(bannerEl);\n }\n if (showError) {\n firebaseText.innerText = `Preview backend disconnected.`;\n prependIcon.innerHTML = `<g clip-path=\"url(#clip0_6013_33858)\">\n<path d=\"M4.8 17.6L12 5.6L19.2 17.6H4.8ZM6.91667 16.4H17.0833L12 7.93333L6.91667 16.4ZM12 15.6C12.1667 15.6 12.3056 15.5444 12.4167 15.4333C12.5389 15.3111 12.6 15.1667 12.6 15C12.6 14.8333 12.5389 14.6944 12.4167 14.5833C12.3056 14.4611 12.1667 14.4 12 14.4C11.8333 14.4 11.6889 14.4611 11.5667 14.5833C11.4556 14.6944 11.4 14.8333 11.4 15C11.4 15.1667 11.4556 15.3111 11.5667 15.4333C11.6889 15.5444 11.8333 15.6 12 15.6ZM11.4 13.6H12.6V10.4H11.4V13.6Z\" fill=\"#212121\"/>\n</g>\n<defs>\n<clipPath id=\"clip0_6013_33858\">\n<rect width=\"24\" height=\"24\" fill=\"white\"/>\n</clipPath>\n</defs>`;\n }\n else {\n prependIcon.innerHTML = `<g clip-path=\"url(#clip0_6083_34804)\">\n<path d=\"M11.4 15.2H12.6V11.2H11.4V15.2ZM12 10C12.1667 10 12.3056 9.94444 12.4167 9.83333C12.5389 9.71111 12.6 9.56667 12.6 9.4C12.6 9.23333 12.5389 9.09444 12.4167 8.98333C12.3056 8.86111 12.1667 8.8 12 8.8C11.8333 8.8 11.6889 8.86111 11.5667 8.98333C11.4556 9.09444 11.4 9.23333 11.4 9.4C11.4 9.56667 11.4556 9.71111 11.5667 9.83333C11.6889 9.94444 11.8333 10 12 10ZM12 18.4C11.1222 18.4 10.2944 18.2333 9.51667 17.9C8.73889 17.5667 8.05556 17.1111 7.46667 16.5333C6.88889 15.9444 6.43333 15.2611 6.1 14.4833C5.76667 13.7056 5.6 12.8778 5.6 12C5.6 11.1111 5.76667 10.2833 6.1 9.51667C6.43333 8.73889 6.88889 8.06111 7.46667 7.48333C8.05556 6.89444 8.73889 6.43333 9.51667 6.1C10.2944 5.76667 11.1222 5.6 12 5.6C12.8889 5.6 13.7167 5.76667 14.4833 6.1C15.2611 6.43333 15.9389 6.89444 16.5167 7.48333C17.1056 8.06111 17.5667 8.73889 17.9 9.51667C18.2333 10.2833 18.4 11.1111 18.4 12C18.4 12.8778 18.2333 13.7056 17.9 14.4833C17.5667 15.2611 17.1056 15.9444 16.5167 16.5333C15.9389 17.1111 15.2611 17.5667 14.4833 17.9C13.7167 18.2333 12.8889 18.4 12 18.4ZM12 17.2C13.4444 17.2 14.6722 16.6944 15.6833 15.6833C16.6944 14.6722 17.2 13.4444 17.2 12C17.2 10.5556 16.6944 9.32778 15.6833 8.31667C14.6722 7.30555 13.4444 6.8 12 6.8C10.5556 6.8 9.32778 7.30555 8.31667 8.31667C7.30556 9.32778 6.8 10.5556 6.8 12C6.8 13.4444 7.30556 14.6722 8.31667 15.6833C9.32778 16.6944 10.5556 17.2 12 17.2Z\" fill=\"#212121\"/>\n</g>\n<defs>\n<clipPath id=\"clip0_6083_34804\">\n<rect width=\"24\" height=\"24\" fill=\"white\"/>\n</clipPath>\n</defs>`;\n firebaseText.innerText = 'Preview backend running in this workspace.';\n }\n firebaseText.setAttribute('id', firebaseTextId);\n }\n if (document.readyState === 'loading') {\n window.addEventListener('DOMContentLoaded', setupDom);\n }\n else {\n setupDom();\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/**\n * Returns navigator.userAgent string or '' if it's not defined.\n * @return user agent string\n */\nfunction getUA() {\n if (typeof navigator !== 'undefined' &&\n typeof navigator['userAgent'] === 'string') {\n return navigator['userAgent'];\n }\n else {\n return '';\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 */\nfunction isMobileCordova() {\n return (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 * Detect Node.js.\n *\n * @return true if Node.js environment is detected or specified.\n */\n// Node detection logic from: https://github.com/iliakan/detect-node/\nfunction isNode() {\n const forceEnvironment = getDefaults()?.forceEnvironment;\n if (forceEnvironment === 'node') {\n return true;\n }\n else if (forceEnvironment === 'browser') {\n return false;\n }\n try {\n return (Object.prototype.toString.call(global.process) === '[object process]');\n }\n catch (e) {\n return false;\n }\n}\n/**\n * Detect Browser Environment.\n * Note: This will return true for certain test frameworks that are incompletely\n * mimicking a browser, and should not lead to assuming all browser APIs are\n * available.\n */\nfunction isBrowser() {\n return typeof window !== 'undefined' || isWebWorker();\n}\n/**\n * Detect Web Worker context.\n */\nfunction isWebWorker() {\n return (typeof WorkerGlobalScope !== 'undefined' &&\n typeof self !== 'undefined' &&\n self instanceof WorkerGlobalScope);\n}\n/**\n * Detect Cloudflare Worker context.\n */\nfunction isCloudflareWorker() {\n return (typeof navigator !== 'undefined' &&\n navigator.userAgent === 'Cloudflare-Workers');\n}\nfunction isBrowserExtension() {\n const runtime = 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 * Detect React Native.\n *\n * @return true if ReactNative environment is detected.\n */\nfunction isReactNative() {\n return (typeof navigator === 'object' && navigator['product'] === 'ReactNative');\n}\n/** Detects Electron apps. */\nfunction isElectron() {\n return getUA().indexOf('Electron/') >= 0;\n}\n/** Detects Internet Explorer. */\nfunction isIE() {\n const ua = getUA();\n return ua.indexOf('MSIE ') >= 0 || ua.indexOf('Trident/') >= 0;\n}\n/** Detects Universal Windows Platform apps. */\nfunction isUWP() {\n return getUA().indexOf('MSAppHost/') >= 0;\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 */\nfunction isNodeSdk() {\n return CONSTANTS.NODE_CLIENT === true || CONSTANTS.NODE_ADMIN === true;\n}\n/** Returns true if we are running in Safari. */\nfunction isSafari() {\n return (!isNode() &&\n !!navigator.userAgent &&\n navigator.userAgent.includes('Safari') &&\n !navigator.userAgent.includes('Chrome'));\n}\n/** Returns true if we are running in Safari or WebKit */\nfunction isSafariOrWebkit() {\n return (!isNode() &&\n !!navigator.userAgent &&\n (navigator.userAgent.includes('Safari') ||\n navigator.userAgent.includes('WebKit')) &&\n !navigator.userAgent.includes('Chrome'));\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 */\nfunction isIndexedDBAvailable() {\n try {\n return typeof indexedDB === 'object';\n }\n catch (e) {\n return false;\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 */\nfunction validateIndexedDBOpenable() {\n return new Promise((resolve, reject) => {\n try {\n let preExist = true;\n const DB_CHECK_NAME = '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 request.onerror = () => {\n reject(request.error?.message || '');\n };\n }\n catch (error) {\n reject(error);\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 */\nfunction areCookiesEnabled() {\n if (typeof navigator === 'undefined' || !navigator.cookieEnabled) {\n return false;\n }\n return true;\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/**\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<Err, string> = {\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<Err>('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 as FirebaseError)?.code === 'service/file-not-found') {\n * console.log(\"Could not read file: \" + e['file']);\n * }\n * }\n */\nconst ERROR_NAME = 'FirebaseError';\n// Based on code from:\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Custom_Error_Types\nclass FirebaseError extends Error {\n constructor(\n /** The error code for this error. */\n code, message, \n /** Custom data for this error. */\n customData) {\n super(message);\n this.code = code;\n this.customData = customData;\n /** The custom name for all FirebaseErrors. */\n this.name = ERROR_NAME;\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 // TODO(dlarocque): Replace this with `new.target`: https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-2.html#support-for-newtarget\n // which we can now use since we no longer target ES5.\n Object.setPrototypeOf(this, FirebaseError.prototype);\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}\nclass ErrorFactory {\n constructor(service, serviceName, errors) {\n this.service = service;\n this.serviceName = serviceName;\n this.errors = errors;\n }\n create(code, ...data) {\n const customData = data[0] || {};\n const fullCode = `${this.service}/${code}`;\n const template = this.errors[code];\n const message = template ? replaceTemplate(template, customData) : 'Error';\n // Service Name: Error message (service/code).\n const fullMessage = `${this.serviceName}: ${message} (${fullCode}).`;\n const error = new FirebaseError(fullCode, fullMessage, customData);\n return error;\n }\n}\nfunction replaceTemplate(template, data) {\n return template.replace(PATTERN, (_, key) => {\n const value = data[key];\n return value != null ? String(value) : `<${key}?>`;\n });\n}\nconst PATTERN = /\\{\\$([^}]+)}/g;\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 * Evaluates a JSON string into a javascript object.\n *\n * @param {string} str A string containing JSON.\n * @return {*} The javascript object representing the specified JSON.\n */\nfunction jsonEval(str) {\n return JSON.parse(str);\n}\n/**\n * Returns JSON representing a javascript object.\n * @param {*} data JavaScript object to be stringified.\n * @return {string} The JSON contents of the object.\n */\nfunction stringify(data) {\n return JSON.stringify(data);\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/**\n * Decodes a Firebase auth. token into constituent parts.\n *\n * Notes:\n * - May return with invalid / incomplete claims if there's no native base64 decoding support.\n * - Doesn't check if the token is actually valid.\n */\nconst decode = function (token) {\n let header = {}, claims = {}, data = {}, signature = '';\n try {\n const parts = token.split('.');\n header = jsonEval(base64Decode(parts[0]) || '');\n claims = jsonEval(base64Decode(parts[1]) || '');\n signature = parts[2];\n data = claims['d'] || {};\n delete claims['d'];\n }\n catch (e) { }\n return {\n header,\n claims,\n data,\n signature\n };\n};\n/**\n * Decodes a Firebase auth. token and checks the validity of its time-based claims. Will return true if the\n * token is within the time window authorized by the 'nbf' (not-before) and 'iat' (issued-at) claims.\n *\n * Notes:\n * - May return a false negative if there's no native base64 decoding support.\n * - Doesn't check if the token is actually valid.\n */\nconst isValidTimestamp = function (token) {\n const claims = decode(token).claims;\n const now = Math.floor(new Date().getTime() / 1000);\n let validSince = 0, validUntil = 0;\n if (typeof claims === 'object') {\n if (claims.hasOwnProperty('nbf')) {\n validSince = claims['nbf'];\n }\n else if (claims.hasOwnProperty('iat')) {\n validSince = claims['iat'];\n }\n if (claims.hasOwnProperty('exp')) {\n validUntil = claims['exp'];\n }\n else {\n // token will expire after 24h by default\n validUntil = validSince + 86400;\n }\n }\n return (!!now &&\n !!validSince &&\n !!validUntil &&\n now >= validSince &&\n now <= validUntil);\n};\n/**\n * Decodes a Firebase auth. token and returns its issued at time if valid, null otherwise.\n *\n * Notes:\n * - May return null if there's no native base64 decoding support.\n * - Doesn't check if the token is actually valid.\n */\nconst issuedAtTime = function (token) {\n const claims = decode(token).claims;\n if (typeof claims === 'object' && claims.hasOwnProperty('iat')) {\n return claims['iat'];\n }\n return null;\n};\n/**\n * Decodes a Firebase auth. token and checks the validity of its format. Expects a valid issued-at time.\n *\n * Notes:\n * - May return a false negative if there's no native base64 decoding support.\n * - Doesn't check if the token is actually valid.\n */\nconst isValidFormat = function (token) {\n const decoded = decode(token), claims = decoded.claims;\n return !!claims && typeof claims === 'object' && claims.hasOwnProperty('iat');\n};\n/**\n * Attempts to peer into an auth token and determine if it's an admin auth token by looking at the claims portion.\n *\n * Notes:\n * - May return a false negative if there's no native base64 decoding support.\n * - Doesn't check if the token is actually valid.\n */\nconst isAdmin = function (token) {\n const claims = decode(token).claims;\n return typeof claims === 'object' && claims['admin'] === true;\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 */\nfunction contains(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\nfunction safeGet(obj, key) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n return obj[key];\n }\n else {\n return undefined;\n }\n}\nfunction isEmpty(obj) {\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n return false;\n }\n }\n return true;\n}\nfunction map(obj, fn, contextObj) {\n const res = {};\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;\n}\n/**\n * Deep equal two objects. Support Arrays and Objects.\n */\nfunction deepEqual(a, b) {\n if (a === b) {\n return true;\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 const aProp = a[k];\n const bProp = b[k];\n if (isObject(aProp) && isObject(bProp)) {\n if (!deepEqual(aProp, bProp)) {\n return false;\n }\n }\n else if (aProp !== bProp) {\n return false;\n }\n }\n for (const k of bKeys) {\n if (!aKeys.includes(k)) {\n return false;\n }\n }\n return true;\n}\nfunction isObject(thing) {\n return thing !== null && typeof thing === 'object';\n}\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/**\n * Rejects if the given promise doesn't resolve in timeInMS milliseconds.\n * @internal\n */\nfunction promiseWithTimeout(promise, timeInMS = 2000) {\n const deferredPromise = new Deferred();\n setTimeout(() => deferredPromise.reject('timeout!'), timeInMS);\n promise.then(deferredPromise.resolve, deferredPromise.reject);\n return deferredPromise.promise;\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/**\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 */\nfunction querystring(querystringParams) {\n const params = [];\n for (const [key, value] of Object.entries(querystringParams)) {\n if (Array.isArray(value)) {\n value.forEach(arrayVal => {\n params.push(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 * Decodes a querystring (e.g. ?arg=val&arg2=val2) into a params object\n * (e.g. {arg: 'val', arg2: 'val2'})\n */\nfunction querystringDecode(querystring) {\n const obj = {};\n const tokens = querystring.replace(/^\\?/, '').split('&');\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 * Extract the query string part of a URL, including the leading question mark (if present).\n */\nfunction extractQuerystring(url) {\n const queryStart = url.indexOf('?');\n if (!queryStart) {\n return '';\n }\n const fragmentStart = url.indexOf('#', queryStart);\n return url.substring(queryStart, 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 */\n/**\n * @fileoverview SHA-1 cryptographic hash.\n * Variable names follow the notation in FIPS PUB 180-3:\n * http://csrc.nist.gov/publications/fips/fips180-3/fips180-3_final.pdf.\n *\n * Usage:\n * var sha1 = new sha1();\n * sha1.update(bytes);\n * var hash = sha1.digest();\n *\n * Performance:\n * Chrome 23: ~400 Mbit/s\n * Firefox 16: ~250 Mbit/s\n *\n */\n/**\n * SHA-1 cryptographic hash constructor.\n *\n * The properties declared here are discussed in the above algorithm document.\n * @constructor\n * @final\n * @struct\n */\nclass Sha1 {\n constructor() {\n /**\n * Holds the previous values of accumulated variables a-e in the compress_\n * function.\n * @private\n */\n this.chain_ = [];\n /**\n * A buffer holding the partially computed hash result.\n * @private\n */\n this.buf_ = [];\n /**\n * An array of 80 bytes, each a part of the message to be hashed. Referred to\n * as the message schedule in the docs.\n * @private\n */\n this.W_ = [];\n /**\n * Contains data needed to pad messages less than 64 bytes.\n * @private\n */\n this.pad_ = [];\n /**\n * @private {number}\n */\n this.inbuf_ = 0;\n /**\n * @private {number}\n */\n this.total_ = 0;\n this.blockSize = 512 / 8;\n this.pad_[0] = 128;\n for (let i = 1; i < this.blockSize; ++i) {\n this.pad_[i] = 0;\n }\n this.reset();\n }\n reset() {\n this.chain_[0] = 0x67452301;\n this.chain_[1] = 0xefcdab89;\n this.chain_[2] = 0x98badcfe;\n this.chain_[3] = 0x10325476;\n this.chain_[4] = 0xc3d2e1f0;\n this.inbuf_ = 0;\n this.total_ = 0;\n }\n /**\n * Internal compress helper function.\n * @param buf Block to compress.\n * @param offset Offset of the block in the buffer.\n * @private\n */\n compress_(buf, offset) {\n if (!offset) {\n offset = 0;\n }\n const W = this.W_;\n // get 16 big endian words\n if (typeof buf === 'string') {\n for (let i = 0; i < 16; i++) {\n // TODO(user): [bug 8140122] Recent versions of Safari for Mac OS and iOS\n // have a bug that turns the post-increment ++ operator into pre-increment\n // during JIT compilation. We have code that depends heavily on SHA-1 for\n // correctness and which is affected by this bug, so I've removed all uses\n // of post-increment ++ in which the result value is used. We can revert\n // this change once the Safari bug\n // (https://bugs.webkit.org/show_bug.cgi?id=109036) has been fixed and\n // most clients have been updated.\n W[i] =\n (buf.charCodeAt(offset) << 24) |\n (buf.charCodeAt(offset + 1) << 16) |\n (buf.charCodeAt(offset + 2) << 8) |\n buf.charCodeAt(offset + 3);\n offset += 4;\n }\n }\n else {\n for (let i = 0; i < 16; i++) {\n W[i] =\n (buf[offset] << 24) |\n (buf[offset + 1] << 16) |\n (buf[offset + 2] << 8) |\n buf[offset + 3];\n offset += 4;\n }\n }\n // expand to 80 words\n for (let i = 16; i < 80; i++) {\n const t = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16];\n W[i] = ((t << 1) | (t >>> 31)) & 0xffffffff;\n }\n let a = this.chain_[0];\n let b = this.chain_[1];\n let c = this.chain_[2];\n let d = this.chain_[3];\n let e = this.chain_[4];\n let f, k;\n // TODO(user): Try to unroll this loop to speed up the computation.\n for (let i = 0; i < 80; i++) {\n if (i < 40) {\n if (i < 20) {\n f = d ^ (b & (c ^ d));\n k = 0x5a827999;\n }\n else {\n f = b ^ c ^ d;\n k = 0x6ed9eba1;\n }\n }\n else {\n if (i < 60) {\n f = (b & c) | (d & (b | c));\n k = 0x8f1bbcdc;\n }\n else {\n f = b ^ c ^ d;\n k = 0xca62c1d6;\n }\n }\n const t = (((a << 5) | (a >>> 27)) + f + e + k + W[i]) & 0xffffffff;\n e = d;\n d = c;\n c = ((b << 30) | (b >>> 2)) & 0xffffffff;\n b = a;\n a = t;\n }\n this.chain_[0] = (this.chain_[0] + a) & 0xffffffff;\n this.chain_[1] = (this.chain_[1] + b) & 0xffffffff;\n this.chain_[2] = (this.chain_[2] + c) & 0xffffffff;\n this.chain_[3] = (this.chain_[3] + d) & 0xffffffff;\n this.chain_[4] = (this.chain_[4] + e) & 0xffffffff;\n }\n update(bytes, length) {\n // TODO(johnlenz): tighten the function signature and remove this check\n if (bytes == null) {\n return;\n }\n if (length === undefined) {\n length = bytes.length;\n }\n const lengthMinusBlock = length - this.blockSize;\n let n = 0;\n // Using local instead of member variables gives ~5% speedup on Firefox 16.\n const buf = this.buf_;\n let inbuf = this.inbuf_;\n // The outer while loop should execute at most twice.\n while (n < length) {\n // When we have no data in the block to top up, we can directly process the\n // input buffer (assuming it contains sufficient data). This gives ~25%\n // speedup on Chrome 23 and ~15% speedup on Firefox 16, but requires that\n // the data is provided in large chunks (or in multiples of 64 bytes).\n if (inbuf === 0) {\n while (n <= lengthMinusBlock) {\n this.compress_(bytes, n);\n n += this.blockSize;\n }\n }\n if (typeof bytes === 'string') {\n while (n < length) {\n buf[inbuf] = bytes.charCodeAt(n);\n ++inbuf;\n ++n;\n if (inbuf === this.blockSize) {\n this.compress_(buf);\n inbuf = 0;\n // Jump to the outer loop so we use the full-block optimization.\n break;\n }\n }\n }\n else {\n while (n < length) {\n buf[inbuf] = bytes[n];\n ++inbuf;\n ++n;\n if (inbuf === this.blockSize) {\n this.compress_(buf);\n inbuf = 0;\n // Jump to the outer loop so we use the full-block optimization.\n break;\n }\n }\n }\n }\n this.inbuf_ = inbuf;\n this.total_ += length;\n }\n /** @override */\n digest() {\n const digest = [];\n let totalBits = this.total_ * 8;\n // Add pad 0x80 0x00*.\n if (this.inbuf_ < 56) {\n this.update(this.pad_, 56 - this.inbuf_);\n }\n else {\n this.update(this.pad_, this.blockSize - (this.inbuf_ - 56));\n }\n // Add # bits.\n for (let i = this.blockSize - 1; i >= 56; i--) {\n this.buf_[i] = totalBits & 255;\n totalBits /= 256; // Don't use bit-shifting here!\n }\n this.compress_(this.buf_);\n let n = 0;\n for (let i = 0; i < 5; i++) {\n for (let j = 24; j >= 0; j -= 8) {\n digest[n] = (this.chain_[i] >> j) & 255;\n ++n;\n }\n }\n return digest;\n }\n}\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 */\nfunction createSubscribe(executor, onNoObservers) {\n const proxy = new ObserverProxy(executor, onNoObservers);\n return proxy.subscribe.bind(proxy);\n}\n/**\n * Implement fan-out for any number of Observers attached via a subscribe\n * function.\n */\nclass ObserverProxy {\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, onNoObservers) {\n this.observers = [];\n this.unsubscribes = [];\n this.observerCount = 0;\n // Micro-task scheduling by calling task.then().\n this.task = Promise.resolve();\n this.finalized = false;\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 next(value) {\n this.forEachObserver((observer) => {\n observer.next(value);\n });\n }\n error(error) {\n this.forEachObserver((observer) => {\n observer.error(error);\n });\n this.close(error);\n }\n complete() {\n this.forEachObserver((observer) => {\n observer.complete();\n });\n this.close();\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 synchronously to their\n * call to subscribe().\n */\n subscribe(nextOrObserver, error, complete) {\n let observer;\n if (nextOrObserver === undefined &&\n error === undefined &&\n complete === undefined) {\n throw new Error('Missing Observer.');\n }\n // Assemble an Observer object when passed as callback functions.\n if (implementsAnyMethods(nextOrObserver, [\n 'next',\n 'error',\n 'complete'\n ])) {\n observer = nextOrObserver;\n }\n else {\n observer = {\n next: nextOrObserver,\n error,\n complete\n };\n }\n if (observer.next === undefined) {\n observer.next = noop;\n }\n if (observer.error === undefined) {\n observer.error = noop;\n }\n if (observer.complete === undefined) {\n observer.complete = noop;\n }\n const unsub = this.unsubscribeOne.bind(this, this.observers.length);\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 }\n else {\n observer.complete();\n }\n }\n catch (e) {\n // nothing\n }\n return;\n });\n }\n this.observers.push(observer);\n return unsub;\n }\n // Unsubscribe is synchronous - we guarantee that no events are sent to\n // any unsubscribed Observer.\n unsubscribeOne(i) {\n if (this.observers === undefined || this.observers[i] === undefined) {\n return;\n }\n delete this.observers[i];\n this.observerCount -= 1;\n if (this.observerCount === 0 && this.onNoObservers !== undefined) {\n this.onNoObservers(this);\n }\n }\n forEachObserver(fn) {\n if (this.finalized) {\n // Already closed by previous event....just eat the additional values.\n return;\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 // 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 sendOne(i, fn) {\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 }\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 close(err) {\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/** Turn synchronous function into one called asynchronously. */\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction async(fn, onError) {\n return (...args) => {\n Promise.resolve(true)\n .then(() => {\n fn(...args);\n })\n .catch((error) => {\n if (onError) {\n onError(error);\n }\n });\n };\n}\n/**\n * Return true if the object passed in implements any of the named methods.\n */\nfunction implementsAnyMethods(obj, methods) {\n if (typeof obj !== 'object' || obj === null) {\n return false;\n }\n for (const method of methods) {\n if (method in obj && typeof obj[method] === 'function') {\n return true;\n }\n }\n return false;\n}\nfunction noop() {\n // do nothing\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/**\n * Check to make sure the appropriate number of arguments are provided for a public function.\n * Throws an error if it fails.\n *\n * @param fnName The function name\n * @param minCount The minimum number of arguments to allow for the function call\n * @param maxCount The maximum number of argument to allow for the function call\n * @param argCount The actual number of arguments provided.\n */\nconst validateArgCount = function (fnName, minCount, maxCount, argCount) {\n let argError;\n if (argCount < minCount) {\n argError = 'at least ' + minCount;\n }\n else if (argCount > maxCount) {\n argError = maxCount === 0 ? 'none' : 'no more than ' + maxCount;\n }\n if (argError) {\n const error = fnName +\n ' failed: Was called with ' +\n argCount +\n (argCount === 1 ? ' argument.' : ' arguments.') +\n ' Expects ' +\n argError +\n '.';\n throw new Error(error);\n }\n};\n/**\n * Generates a string to prefix an error message about failed argument validation\n *\n * @param fnName The function name\n * @param argName The name of the argument\n * @return The prefix to add to the error thrown for validation.\n */\nfunction errorPrefix(fnName, argName) {\n return `${fnName} failed: ${argName} argument `;\n}\n/**\n * @param fnName\n * @param argumentNumber\n * @param namespace\n * @param optional\n */\nfunction validateNamespace(fnName, namespace, optional) {\n if (optional && !namespace) {\n return;\n }\n if (typeof namespace !== 'string') {\n //TODO: I should do more validation here. We only allow certain chars in namespaces.\n throw new Error(errorPrefix(fnName, 'namespace') + 'must be a valid firebase namespace.');\n }\n}\nfunction validateCallback(fnName, argumentName, \n// eslint-disable-next-line @typescript-eslint/ban-types\ncallback, optional) {\n if (optional && !callback) {\n return;\n }\n if (typeof callback !== 'function') {\n throw new Error(errorPrefix(fnName, argumentName) + 'must be a valid function.');\n }\n}\nfunction validateContextObject(fnName, argumentName, context, optional) {\n if (optional && !context) {\n return;\n }\n if (typeof context !== 'object' || context === null) {\n throw new Error(errorPrefix(fnName, argumentName) + 'must be a valid context object.');\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// Code originally came from goog.crypt.stringToUtf8ByteArray, but for some reason they\n// automatically replaced '\\r\\n' with '\\n', and they didn't handle surrogate pairs,\n// so it's been modified.\n// Note that not all Unicode characters appear as single characters in JavaScript strings.\n// fromCharCode returns the UTF-16 encoding of a character - so some Unicode characters\n// use 2 characters in JavaScript. All 4-byte UTF-8 characters begin with a first\n// character in the range 0xD800 - 0xDBFF (the first character of a so-called surrogate\n// pair).\n// See http://www.ecma-international.org/ecma-262/5.1/#sec-15.1.3\n/**\n * @param {string} str\n * @return {Array}\n */\nconst stringToByteArray = function (str) {\n const out = [];\n let p = 0;\n for (let i = 0; i < str.length; i++) {\n let c = str.charCodeAt(i);\n // Is this the lead surrogate in a surrogate pair?\n if (c >= 0xd800 && c <= 0xdbff) {\n const high = c - 0xd800; // the high 10 bits.\n i++;\n assert(i < str.length, 'Surrogate pair missing trail surrogate.');\n const low = str.charCodeAt(i) - 0xdc00; // the low 10 bits.\n c = 0x10000 + (high << 10) + low;\n }\n if (c < 128) {\n out[p++] = c;\n }\n else if (c < 2048) {\n out[p++] = (c >> 6) | 192;\n out[p++] = (c & 63) | 128;\n }\n else if (c < 65536) {\n out[p++] = (c >> 12) | 224;\n out[p++] = ((c >> 6) & 63) | 128;\n out[p++] = (c & 63) | 128;\n }\n else {\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 }\n }\n return out;\n};\n/**\n * Calculate length without actually converting; useful for doing cheaper validation.\n * @param {string} str\n * @return {number}\n */\nconst stringLength = function (str) {\n let p = 0;\n for (let i = 0; i < str.length; i++) {\n const c = str.charCodeAt(i);\n if (c < 128) {\n p++;\n }\n else if (c < 2048) {\n p += 2;\n }\n else if (c >= 0xd800 && c <= 0xdbff) {\n // Lead surrogate of a surrogate pair. The pair together will take 4 bytes to represent.\n p += 4;\n i++; // skip trail surrogate.\n }\n else {\n p += 3;\n }\n }\n return p;\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 * The amount of milliseconds to exponentially increase.\n */\nconst DEFAULT_INTERVAL_MILLIS = 1000;\n/**\n * The factor to backoff by.\n * Should be a number greater than 1.\n */\nconst DEFAULT_BACKOFF_FACTOR = 2;\n/**\n * The maximum milliseconds to increase to.\n *\n * <p>Visible for testing\n */\nconst MAX_VALUE_MILLIS = 4 * 60 * 60 * 1000; // Four hours, like iOS and Android.\n/**\n * The percentage of backoff time to randomize by.\n * See\n * http://go/safe-client-behavior#step-1-determine-the-appropriate-retry-interval-to-handle-spike-traffic\n * for context.\n *\n * <p>Visible for testing\n */\nconst RANDOM_FACTOR = 0.5;\n/**\n * Based on the backoff method from\n * https://github.com/google/closure-library/blob/master/closure/goog/math/exponentialbackoff.js.\n * Extracted here so we don't need to pass metadata and a stateful ExponentialBackoff object around.\n */\nfunction calculateBackoffMillis(backoffCount, intervalMillis = DEFAULT_INTERVAL_MILLIS, backoffFactor = DEFAULT_BACKOFF_FACTOR) {\n // Calculates an exponentially increasing value.\n // Deviation: calculates value from count and a constant interval, so we only need to save value\n // and count to restore state.\n const currBaseValue = intervalMillis * Math.pow(backoffFactor, backoffCount);\n // A random \"fuzz\" to avoid waves of retries.\n // Deviation: randomFactor is required.\n const randomWait = Math.round(\n // A fraction of the backoff value to add/subtract.\n // Deviation: changes multiplication order to improve readability.\n RANDOM_FACTOR *\n currBaseValue *\n // A random float (rounded to int by Math.round above) in the range [-1, 1]. Determines\n // if we add or subtract.\n (Math.random() - 0.5) *\n 2);\n // Limits backoff to max to avoid effectively permanent backoff.\n return Math.min(MAX_VALUE_MILLIS, currBaseValue + randomWait);\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 * Provide English ordinal letters after a number\n */\nfunction ordinal(i) {\n if (!Number.isFinite(i)) {\n return `${i}`;\n }\n return i + indicator(i);\n}\nfunction indicator(i) {\n i = Math.abs(i);\n const cent = i % 100;\n if (cent >= 10 && cent <= 20) {\n return 'th';\n }\n const dec = i % 10;\n if (dec === 1) {\n return 'st';\n }\n if (dec === 2) {\n return 'nd';\n }\n if (dec === 3) {\n return 'rd';\n }\n return 'th';\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 */\nfunction getModularInstance(service) {\n if (service && service._delegate) {\n return service._delegate;\n }\n else {\n return service;\n }\n}\n\nexport { CONSTANTS, DecodeBase64StringError, Deferred, ErrorFactory, FirebaseError, MAX_VALUE_MILLIS, RANDOM_FACTOR, Sha1, areCookiesEnabled, assert, assertionError, async, base64, base64Decode, base64Encode, base64urlEncodeWithoutPadding, calculateBackoffMillis, contains, createMockUserToken, createSubscribe, decode, deepCopy, deepEqual, deepExtend, errorPrefix, extractQuerystring, getDefaultAppConfig, getDefaultEmulatorHost, getDefaultEmulatorHostnameAndPort, getDefaults, getExperimentalSetting, getGlobal, getModularInstance, getUA, isAdmin, isBrowser, isBrowserExtension, isCloudWorkstation, isCloudflareWorker, isElectron, isEmpty, isIE, isIndexedDBAvailable, isMobileCordova, isNode, isNodeSdk, isReactNative, isSafari, isSafariOrWebkit, isUWP, isValidFormat, isValidTimestamp, isWebWorker, issuedAtTime, jsonEval, map, ordinal, pingServer, promiseWithTimeout, querystring, querystringDecode, safeGet, stringLength, stringToByteArray, stringify, updateEmulatorBanner, validateArgCount, validateCallback, validateContextObject, validateIndexedDBOpenable, validateNamespace };\n//# sourceMappingURL=index.esm.js.map\n","import { Deferred } from '@firebase/util';\n\n/**\n * Component for service name T, e.g. `auth`, `auth-internal`\n */\nclass Component {\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(name, instanceFactory, type) {\n this.name = name;\n this.instanceFactory = instanceFactory;\n this.type = type;\n this.multipleInstances = false;\n /**\n * Properties to be added to the service namespace\n */\n this.serviceProps = {};\n this.instantiationMode = \"LAZY\" /* InstantiationMode.LAZY */;\n this.onInstanceCreated = null;\n }\n setInstantiationMode(mode) {\n this.instantiationMode = mode;\n return this;\n }\n setMultipleInstances(multipleInstances) {\n this.multipleInstances = multipleInstances;\n return this;\n }\n setServiceProps(props) {\n this.serviceProps = props;\n return this;\n }\n setInstanceCreatedCallback(callback) {\n this.onInstanceCreated = callback;\n return this;\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 */\nconst DEFAULT_ENTRY_NAME = '[DEFAULT]';\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 * 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 */\nclass Provider {\n constructor(name, container) {\n this.name = name;\n this.container = container;\n this.component = null;\n this.instances = new Map();\n this.instancesDeferred = new Map();\n this.instancesOptions = new Map();\n this.onInitCallbacks = new Map();\n }\n /**\n * @param identifier A provider can provide multiple instances of a service\n * if this.component.multipleInstances is true.\n */\n get(identifier) {\n // if multipleInstances is not supported, use the default name\n const normalizedIdentifier = this.normalizeInstanceIdentifier(identifier);\n if (!this.instancesDeferred.has(normalizedIdentifier)) {\n const deferred = new Deferred();\n this.instancesDeferred.set(normalizedIdentifier, deferred);\n if (this.isInitialized(normalizedIdentifier) ||\n this.shouldAutoInitialize()) {\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 }\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 return this.instancesDeferred.get(normalizedIdentifier).promise;\n }\n getImmediate(options) {\n // if multipleInstances is not supported, use the default name\n const normalizedIdentifier = this.normalizeInstanceIdentifier(options?.identifier);\n const optional = options?.optional ?? false;\n if (this.isInitialized(normalizedIdentifier) ||\n this.shouldAutoInitialize()) {\n try {\n return this.getOrInitializeService({\n instanceIdentifier: normalizedIdentifier\n });\n }\n catch (e) {\n if (optional) {\n return null;\n }\n else {\n throw e;\n }\n }\n }\n else {\n // In case a component is not initialized and should/cannot be auto-initialized at the moment, return null if the optional flag is set, or throw\n if (optional) {\n return null;\n }\n else {\n throw Error(`Service ${this.name} is not available`);\n }\n }\n }\n getComponent() {\n return this.component;\n }\n setComponent(component) {\n if (component.name !== this.name) {\n throw Error(`Mismatching Component ${component.name} for Provider ${this.name}.`);\n }\n if (this.component) {\n throw Error(`Component for ${this.name} has already been provided`);\n }\n this.component = component;\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 // if the service is eager, initialize the default instance\n if (isComponentEager(component)) {\n try {\n this.getOrInitializeService({ instanceIdentifier: DEFAULT_ENTRY_NAME });\n }\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 // 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 [instanceIdentifier, instanceDeferred] of this.instancesDeferred.entries()) {\n const normalizedIdentifier = this.normalizeInstanceIdentifier(instanceIdentifier);\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 }\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 clearInstance(identifier = DEFAULT_ENTRY_NAME) {\n this.instancesDeferred.delete(identifier);\n this.instancesOptions.delete(identifier);\n this.instances.delete(identifier);\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() {\n const services = Array.from(this.instances.values());\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.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._delete())\n ]);\n }\n isComponentSet() {\n return this.component != null;\n }\n isInitialized(identifier = DEFAULT_ENTRY_NAME) {\n return this.instances.has(identifier);\n }\n getOptions(identifier = DEFAULT_ENTRY_NAME) {\n return this.instancesOptions.get(identifier) || {};\n }\n initialize(opts = {}) {\n const { options = {} } = opts;\n const normalizedIdentifier = this.normalizeInstanceIdentifier(opts.instanceIdentifier);\n if (this.isInitialized(normalizedIdentifier)) {\n throw Error(`${this.name}(${normalizedIdentifier}) has already been initialized`);\n }\n if (!this.isComponentSet()) {\n throw Error(`Component ${this.name} has not been registered yet`);\n }\n const instance = this.getOrInitializeService({\n instanceIdentifier: normalizedIdentifier,\n options\n });\n // resolve any pending promise waiting for the service instance\n for (const [instanceIdentifier, instanceDeferred] of this.instancesDeferred.entries()) {\n const normalizedDeferredIdentifier = this.normalizeInstanceIdentifier(instanceIdentifier);\n if (normalizedIdentifier === normalizedDeferredIdentifier) {\n instanceDeferred.resolve(instance);\n }\n }\n return instance;\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, identifier) {\n const normalizedIdentifier = this.normalizeInstanceIdentifier(identifier);\n const existingCallbacks = this.onInitCallbacks.get(normalizedIdentifier) ??\n new Set();\n existingCallbacks.add(callback);\n this.onInitCallbacks.set(normalizedIdentifier, existingCallbacks);\n const existingInstance = this.instances.get(normalizedIdentifier);\n if (existingInstance) {\n callback(existingInstance, normalizedIdentifier);\n }\n return () => {\n existingCallbacks.delete(callback);\n };\n }\n /**\n * Invoke onInit callbacks synchronously\n * @param instance the service instance`\n */\n invokeOnInitCallbacks(instance, identifier) {\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 }\n catch {\n // ignore errors in the onInit callback\n }\n }\n }\n getOrInitializeService({ instanceIdentifier, options = {} }) {\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 * 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 * 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(this.container, instanceIdentifier, instance);\n }\n catch {\n // ignore errors in the onInstanceCreatedCallback\n }\n }\n }\n return instance || null;\n }\n normalizeInstanceIdentifier(identifier = DEFAULT_ENTRY_NAME) {\n if (this.component) {\n return this.component.multipleInstances ? identifier : DEFAULT_ENTRY_NAME;\n }\n else {\n return identifier; // assume multiple instances are supported before the component is provided.\n }\n }\n shouldAutoInitialize() {\n return (!!this.component &&\n this.component.instantiationMode !== \"EXPLICIT\" /* InstantiationMode.EXPLICIT */);\n }\n}\n// undefined should be passed to the service factory for the default instance\nfunction normalizeIdentifierForFactory(identifier) {\n return identifier === DEFAULT_ENTRY_NAME ? undefined : identifier;\n}\nfunction isComponentEager(component) {\n return component.instantiationMode === \"EAGER\" /* InstantiationMode.EAGER */;\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 * ComponentContainer that provides Providers for service name T, e.g. `auth`, `auth-internal`\n */\nclass ComponentContainer {\n constructor(name) {\n this.name = name;\n this.providers = new Map();\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) {\n const provider = this.getProvider(component.name);\n if (provider.isComponentSet()) {\n throw new Error(`Component ${component.name} has already been registered with ${this.name}`);\n }\n provider.setComponent(component);\n }\n addOrOverwriteComponent(component) {\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 this.addComponent(component);\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) {\n if (this.providers.has(name)) {\n return this.providers.get(name);\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);\n return provider;\n }\n getProviders() {\n return Array.from(this.providers.values());\n }\n}\n\nexport { Component, ComponentContainer, Provider };\n//# sourceMappingURL=index.esm.js.map\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 * A container for all of the Logger instances\n */\nconst instances = [];\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 */\nvar LogLevel;\n(function (LogLevel) {\n LogLevel[LogLevel[\"DEBUG\"] = 0] = \"DEBUG\";\n LogLevel[LogLevel[\"VERBOSE\"] = 1] = \"VERBOSE\";\n LogLevel[LogLevel[\"INFO\"] = 2] = \"INFO\";\n LogLevel[LogLevel[\"WARN\"] = 3] = \"WARN\";\n LogLevel[LogLevel[\"ERROR\"] = 4] = \"ERROR\";\n LogLevel[LogLevel[\"SILENT\"] = 5] = \"SILENT\";\n})(LogLevel || (LogLevel = {}));\nconst levelStringToEnum = {\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 * The default log level\n */\nconst defaultLogLevel = LogLevel.INFO;\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 * 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 = (instance, logType, ...args) => {\n if (logType < instance.logLevel) {\n return;\n }\n const now = new Date().toISOString();\n const method = ConsoleMethod[logType];\n if (method) {\n console[method](`[${now}] ${instance.name}:`, ...args);\n }\n else {\n throw new Error(`Attempted to log a message with an invalid logType (value: ${logType})`);\n }\n};\nclass 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(name) {\n this.name = name;\n /**\n * The log level of the given Logger instance.\n */\n this._logLevel = defaultLogLevel;\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 this._logHandler = defaultLogHandler;\n /**\n * The optional, additional, user-defined log handler for the Logger instance.\n */\n this._userLogHandler = null;\n /**\n * Capture the current instance for later use\n */\n instances.push(this);\n }\n get logLevel() {\n return this._logLevel;\n }\n set logLevel(val) {\n if (!(val in LogLevel)) {\n throw new TypeError(`Invalid value \"${val}\" assigned to \\`logLevel\\``);\n }\n this._logLevel = val;\n }\n // Workaround for setter/getter having to be the same type.\n setLogLevel(val) {\n this._logLevel = typeof val === 'string' ? levelStringToEnum[val] : val;\n }\n get logHandler() {\n return this._logHandler;\n }\n set logHandler(val) {\n if (typeof val !== 'function') {\n throw new TypeError('Value assigned to `logHandler` must be a function');\n }\n this._logHandler = val;\n }\n get userLogHandler() {\n return this._userLogHandler;\n }\n set userLogHandler(val) {\n this._userLogHandler = val;\n }\n /**\n * The functions below are all based on the `console` interface\n */\n debug(...args) {\n this._userLogHandler && this._userLogHandler(this, LogLevel.DEBUG, ...args);\n this._logHandler(this, LogLevel.DEBUG, ...args);\n }\n log(...args) {\n this._userLogHandler &&\n this._userLogHandler(this, LogLevel.VERBOSE, ...args);\n this._logHandler(this, LogLevel.VERBOSE, ...args);\n }\n info(...args) {\n this._userLogHandler && this._userLogHandler(this, LogLevel.INFO, ...args);\n this._logHandler(this, LogLevel.INFO, ...args);\n }\n warn(...args) {\n this._userLogHandler && this._userLogHandler(this, LogLevel.WARN, ...args);\n this._logHandler(this, LogLevel.WARN, ...args);\n }\n error(...args) {\n this._userLogHandler && this._userLogHandler(this, LogLevel.ERROR, ...args);\n this._logHandler(this, LogLevel.ERROR, ...args);\n }\n}\nfunction setLogLevel(level) {\n instances.forEach(inst => {\n inst.setLogLevel(level);\n });\n}\nfunction setUserLogHandler(logCallback, options) {\n for (const instance of instances) {\n let customLogLevel = null;\n if (options && options.level) {\n customLogLevel = levelStringToEnum[options.level];\n }\n if (logCallback === null) {\n instance.userLogHandler = null;\n }\n else {\n instance.userLogHandler = (instance, level, ...args) => {\n const message = args\n .map(arg => {\n if (arg == null) {\n return null;\n }\n else if (typeof arg === 'string') {\n return arg;\n }\n else if (typeof arg === 'number' || typeof arg === 'boolean') {\n return arg.toString();\n }\n else if (arg instanceof Error) {\n return arg.message;\n }\n else {\n try {\n return JSON.stringify(arg);\n }\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(),\n message,\n args,\n type: instance.name\n });\n }\n };\n }\n }\n}\n\nexport { LogLevel, Logger, setLogLevel, setUserLogHandler };\n//# sourceMappingURL=index.esm.js.map\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), event);\n });\n }\n if (blocked) {\n request.addEventListener('blocked', (event) => blocked(\n // Casting due to https://github.com/microsoft/TypeScript-DOM-lib-generator/pull/1405\n event.oldVersion, event.newVersion, event));\n }\n openPromise\n .then((db) => {\n if (terminated)\n db.addEventListener('close', () => terminated());\n if (blocking) {\n db.addEventListener('versionchange', (event) => blocking(event.oldVersion, event.newVersion, event));\n }\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', (event) => blocked(\n // Casting due to https://github.com/microsoft/TypeScript-DOM-lib-generator/pull/1405\n event.oldVersion, event));\n }\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","import { Component, ComponentContainer } from '@firebase/component';\nimport { Logger, setUserLogHandler, setLogLevel as setLogLevel$1 } from '@firebase/logger';\nimport { ErrorFactory, base64Decode, getDefaultAppConfig, deepEqual, isBrowser, isWebWorker, FirebaseError, base64urlEncodeWithoutPadding, isIndexedDBAvailable, validateIndexedDBOpenable } from '@firebase/util';\nexport { FirebaseError } from '@firebase/util';\nimport { openDB } from 'idb';\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 */\nclass PlatformLoggerServiceImpl {\n constructor(container) {\n this.container = container;\n }\n // In initial implementation, this will be called by installations on\n // auth token refresh, and installations will send this string.\n getPlatformInfoString() {\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();\n return `${service.library}/${service.version}`;\n }\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) {\n const component = provider.getComponent();\n return component?.type === \"VERSION\" /* ComponentType.VERSION */;\n}\n\nconst name$q = \"@firebase/app\";\nconst version$1 = \"0.14.3\";\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 */\nconst logger = new Logger('@firebase/app');\n\nconst name$p = \"@firebase/app-compat\";\n\nconst name$o = \"@firebase/analytics-compat\";\n\nconst name$n = \"@firebase/analytics\";\n\nconst name$m = \"@firebase/app-check-compat\";\n\nconst name$l = \"@firebase/app-check\";\n\nconst name$k = \"@firebase/auth\";\n\nconst name$j = \"@firebase/auth-compat\";\n\nconst name$i = \"@firebase/database\";\n\nconst name$h = \"@firebase/data-connect\";\n\nconst name$g = \"@firebase/database-compat\";\n\nconst name$f = \"@firebase/functions\";\n\nconst name$e = \"@firebase/functions-compat\";\n\nconst name$d = \"@firebase/installations\";\n\nconst name$c = \"@firebase/installations-compat\";\n\nconst name$b = \"@firebase/messaging\";\n\nconst name$a = \"@firebase/messaging-compat\";\n\nconst name$9 = \"@firebase/performance\";\n\nconst name$8 = \"@firebase/performance-compat\";\n\nconst name$7 = \"@firebase/remote-config\";\n\nconst name$6 = \"@firebase/remote-config-compat\";\n\nconst name$5 = \"@firebase/storage\";\n\nconst name$4 = \"@firebase/storage-compat\";\n\nconst name$3 = \"@firebase/firestore\";\n\nconst name$2 = \"@firebase/ai\";\n\nconst name$1 = \"@firebase/firestore-compat\";\n\nconst name = \"firebase\";\nconst version = \"12.3.0\";\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 * The default app name\n *\n * @internal\n */\nconst DEFAULT_ENTRY_NAME = '[DEFAULT]';\nconst PLATFORM_LOG_STRING = {\n [name$q]: 'fire-core',\n [name$p]: 'fire-core-compat',\n [name$n]: 'fire-analytics',\n [name$o]: 'fire-analytics-compat',\n [name$l]: 'fire-app-check',\n [name$m]: 'fire-app-check-compat',\n [name$k]: 'fire-auth',\n [name$j]: 'fire-auth-compat',\n [name$i]: 'fire-rtdb',\n [name$h]: 'fire-data-connect',\n [name$g]: 'fire-rtdb-compat',\n [name$f]: 'fire-fn',\n [name$e]: 'fire-fn-compat',\n [name$d]: 'fire-iid',\n [name$c]: 'fire-iid-compat',\n [name$b]: 'fire-fcm',\n [name$a]: 'fire-fcm-compat',\n [name$9]: 'fire-perf',\n [name$8]: 'fire-perf-compat',\n [name$7]: 'fire-rc',\n [name$6]: 'fire-rc-compat',\n [name$5]: 'fire-gcs',\n [name$4]: 'fire-gcs-compat',\n [name$3]: 'fire-fst',\n [name$1]: 'fire-fst-compat',\n [name$2]: 'fire-vertex',\n 'fire-js': 'fire-js', // Platform identifier for JS SDK.\n [name]: 'fire-js-all'\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 * @internal\n */\nconst _apps = new Map();\n/**\n * @internal\n */\nconst _serverApps = new Map();\n/**\n * Registered components.\n *\n * @internal\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst _components = new Map();\n/**\n * @param component - the component being added to this app's container\n *\n * @internal\n */\nfunction _addComponent(app, component) {\n try {\n app.container.addComponent(component);\n }\n catch (e) {\n logger.debug(`Component ${component.name} failed to register with FirebaseApp ${app.name}`, e);\n }\n}\n/**\n *\n * @internal\n */\nfunction _addOrOverwriteComponent(app, component) {\n app.container.addOrOverwriteComponent(component);\n}\n/**\n *\n * @param component - the component to register\n * @returns whether or not the component is registered successfully\n *\n * @internal\n */\nfunction _registerComponent(component) {\n const componentName = component.name;\n if (_components.has(componentName)) {\n logger.debug(`There were multiple attempts to register component ${componentName}.`);\n return false;\n }\n _components.set(componentName, component);\n // add the component to existing app instances\n for (const app of _apps.values()) {\n _addComponent(app, component);\n }\n for (const serverApp of _serverApps.values()) {\n _addComponent(serverApp, component);\n }\n return true;\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 */\nfunction _getProvider(app, name) {\n const heartbeatController = app.container\n .getProvider('heartbeat')\n .getImmediate({ optional: true });\n if (heartbeatController) {\n void heartbeatController.triggerHeartbeat();\n }\n return app.container.getProvider(name);\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 */\nfunction _removeServiceInstance(app, name, instanceIdentifier = DEFAULT_ENTRY_NAME) {\n _getProvider(app, name).clearInstance(instanceIdentifier);\n}\n/**\n *\n * @param obj - an object of type FirebaseApp, FirebaseOptions or FirebaseAppSettings.\n *\n * @returns true if the provide object is of type FirebaseApp.\n *\n * @internal\n */\nfunction _isFirebaseApp(obj) {\n return obj.options !== undefined;\n}\n/**\n *\n * @param obj - an object of type FirebaseApp, FirebaseOptions or FirebaseAppSettings.\n *\n * @returns true if the provided object is of type FirebaseServerAppImpl.\n *\n * @internal\n */\nfunction _isFirebaseServerAppSettings(obj) {\n if (_isFirebaseApp(obj)) {\n return false;\n }\n return ('authIdToken' in obj ||\n 'appCheckToken' in obj ||\n 'releaseOnDeref' in obj ||\n 'automaticDataCollectionEnabled' in obj);\n}\n/**\n *\n * @param obj - an object of type FirebaseApp.\n *\n * @returns true if the provided object is of type FirebaseServerAppImpl.\n *\n * @internal\n */\nfunction _isFirebaseServerApp(obj) {\n if (obj === null || obj === undefined) {\n return false;\n }\n return obj.settings !== undefined;\n}\n/**\n * Test only\n *\n * @internal\n */\nfunction _clearComponents() {\n _components.clear();\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 */\nconst ERRORS = {\n [\"no-app\" /* AppError.NO_APP */]: \"No Firebase App '{$appName}' has been created - \" +\n 'call initializeApp() first',\n [\"bad-app-name\" /* AppError.BAD_APP_NAME */]: \"Illegal App name: '{$appName}'\",\n [\"duplicate-app\" /* AppError.DUPLICATE_APP */]: \"Firebase App named '{$appName}' already exists with different options or config\",\n [\"app-deleted\" /* AppError.APP_DELETED */]: \"Firebase App named '{$appName}' already deleted\",\n [\"server-app-deleted\" /* AppError.SERVER_APP_DELETED */]: 'Firebase Server App has been deleted',\n [\"no-options\" /* AppError.NO_OPTIONS */]: 'Need to provide options, when not being deployed to hosting via source.',\n [\"invalid-app-argument\" /* AppError.INVALID_APP_ARGUMENT */]: 'firebase.{$appName}() takes either no argument or a ' +\n 'Firebase App instance.',\n [\"invalid-log-argument\" /* AppError.INVALID_LOG_ARGUMENT */]: 'First argument to `onLog` must be null or a function.',\n [\"idb-open\" /* AppError.IDB_OPEN */]: 'Error thrown when opening IndexedDB. Original error: {$originalErrorMessage}.',\n [\"idb-get\" /* AppError.IDB_GET */]: 'Error thrown when reading from IndexedDB. Original error: {$originalErrorMessage}.',\n [\"idb-set\" /* AppError.IDB_WRITE */]: 'Error thrown when writing to IndexedDB. Original error: {$originalErrorMessage}.',\n [\"idb-delete\" /* AppError.IDB_DELETE */]: 'Error thrown when deleting from IndexedDB. Original error: {$originalErrorMessage}.',\n [\"finalization-registry-not-supported\" /* AppError.FINALIZATION_REGISTRY_NOT_SUPPORTED */]: 'FirebaseServerApp deleteOnDeref field defined but the JS runtime does not support FinalizationRegistry.',\n [\"invalid-server-app-environment\" /* AppError.INVALID_SERVER_APP_ENVIRONMENT */]: 'FirebaseServerApp is not for use in browser environments.'\n};\nconst ERROR_FACTORY = new ErrorFactory('app', 'Firebase', 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 */\nclass FirebaseAppImpl {\n constructor(options, config, container) {\n this._isDeleted = false;\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(new Component('app', () => this, \"PUBLIC\" /* ComponentType.PUBLIC */));\n }\n get automaticDataCollectionEnabled() {\n this.checkDestroyed();\n return this._automaticDataCollectionEnabled;\n }\n set automaticDataCollectionEnabled(val) {\n this.checkDestroyed();\n this._automaticDataCollectionEnabled = val;\n }\n get name() {\n this.checkDestroyed();\n return this._name;\n }\n get options() {\n this.checkDestroyed();\n return this._options;\n }\n get config() {\n this.checkDestroyed();\n return this._config;\n }\n get container() {\n return this._container;\n }\n get isDeleted() {\n return this._isDeleted;\n }\n set isDeleted(val) {\n this._isDeleted = val;\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 checkDestroyed() {\n if (this.isDeleted) {\n throw ERROR_FACTORY.create(\"app-deleted\" /* AppError.APP_DELETED */, { appName: this._name });\n }\n }\n}\n\n/**\n * @license\n * Copyright 2023 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// Parse the token and check to see if the `exp` claim is in the future.\n// Reports an error to the console if the token or claim could not be parsed, or if `exp` is in\n// the past.\nfunction validateTokenTTL(base64Token, tokenName) {\n const secondPart = base64Decode(base64Token.split('.')[1]);\n if (secondPart === null) {\n console.error(`FirebaseServerApp ${tokenName} is invalid: second part could not be parsed.`);\n return;\n }\n const expClaim = JSON.parse(secondPart).exp;\n if (expClaim === undefined) {\n console.error(`FirebaseServerApp ${tokenName} is invalid: expiration claim could not be parsed`);\n return;\n }\n const exp = JSON.parse(secondPart).exp * 1000;\n const now = new Date().getTime();\n const diff = exp - now;\n if (diff <= 0) {\n console.error(`FirebaseServerApp ${tokenName} is invalid: the token has expired.`);\n }\n}\nclass FirebaseServerAppImpl extends FirebaseAppImpl {\n constructor(options, serverConfig, name, container) {\n // Build configuration parameters for the FirebaseAppImpl base class.\n const automaticDataCollectionEnabled = serverConfig.automaticDataCollectionEnabled !== undefined\n ? serverConfig.automaticDataCollectionEnabled\n : true;\n // Create the FirebaseAppSettings object for the FirebaseAppImp constructor.\n const config = {\n name,\n automaticDataCollectionEnabled\n };\n if (options.apiKey !== undefined) {\n // Construct the parent FirebaseAppImp object.\n super(options, config, container);\n }\n else {\n const appImpl = options;\n super(appImpl.options, config, container);\n }\n // Now construct the data for the FirebaseServerAppImpl.\n this._serverConfig = {\n automaticDataCollectionEnabled,\n ...serverConfig\n };\n // Ensure that the current time is within the `authIdtoken` window of validity.\n if (this._serverConfig.authIdToken) {\n validateTokenTTL(this._serverConfig.authIdToken, 'authIdToken');\n }\n // Ensure that the current time is within the `appCheckToken` window of validity.\n if (this._serverConfig.appCheckToken) {\n validateTokenTTL(this._serverConfig.appCheckToken, 'appCheckToken');\n }\n this._finalizationRegistry = null;\n if (typeof FinalizationRegistry !== 'undefined') {\n this._finalizationRegistry = new FinalizationRegistry(() => {\n this.automaticCleanup();\n });\n }\n this._refCount = 0;\n this.incRefCount(this._serverConfig.releaseOnDeref);\n // Do not retain a hard reference to the dref object, otherwise the FinalizationRegistry\n // will never trigger.\n this._serverConfig.releaseOnDeref = undefined;\n serverConfig.releaseOnDeref = undefined;\n registerVersion(name$q, version$1, 'serverapp');\n }\n toJSON() {\n return undefined;\n }\n get refCount() {\n return this._refCount;\n }\n // Increment the reference count of this server app. If an object is provided, register it\n // with the finalization registry.\n incRefCount(obj) {\n if (this.isDeleted) {\n return;\n }\n this._refCount++;\n if (obj !== undefined && this._finalizationRegistry !== null) {\n this._finalizationRegistry.register(obj, this);\n }\n }\n // Decrement the reference count.\n decRefCount() {\n if (this.isDeleted) {\n return 0;\n }\n return --this._refCount;\n }\n // Invoked by the FinalizationRegistry callback to note that this app should go through its\n // reference counts and delete itself if no reference count remain. The coordinating logic that\n // handles this is in deleteApp(...).\n automaticCleanup() {\n void deleteApp(this);\n }\n get settings() {\n this.checkDestroyed();\n return this._serverConfig;\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 checkDestroyed() {\n if (this.isDeleted) {\n throw ERROR_FACTORY.create(\"server-app-deleted\" /* AppError.SERVER_APP_DELETED */);\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/**\n * The current SDK version.\n *\n * @public\n */\nconst SDK_VERSION = version;\nfunction initializeApp(_options, rawConfig = {}) {\n let options = _options;\n if (typeof rawConfig !== 'object') {\n const name = rawConfig;\n rawConfig = { name };\n }\n const config = {\n name: DEFAULT_ENTRY_NAME,\n automaticDataCollectionEnabled: true,\n ...rawConfig\n };\n const name = config.name;\n if (typeof name !== 'string' || !name) {\n throw ERROR_FACTORY.create(\"bad-app-name\" /* AppError.BAD_APP_NAME */, {\n appName: String(name)\n });\n }\n options || (options = getDefaultAppConfig());\n if (!options) {\n throw ERROR_FACTORY.create(\"no-options\" /* AppError.NO_OPTIONS */);\n }\n const existingApp = _apps.get(name);\n if (existingApp) {\n // return the existing app if options and config deep equal the ones in the existing app.\n if (deepEqual(options, existingApp.options) &&\n deepEqual(config, existingApp.config)) {\n return existingApp;\n }\n else {\n throw ERROR_FACTORY.create(\"duplicate-app\" /* AppError.DUPLICATE_APP */, { appName: name });\n }\n }\n const container = new ComponentContainer(name);\n for (const component of _components.values()) {\n container.addComponent(component);\n }\n const newApp = new FirebaseAppImpl(options, config, container);\n _apps.set(name, newApp);\n return newApp;\n}\nfunction initializeServerApp(_options, _serverAppConfig = {}) {\n if (isBrowser() && !isWebWorker()) {\n // FirebaseServerApp isn't designed to be run in browsers.\n throw ERROR_FACTORY.create(\"invalid-server-app-environment\" /* AppError.INVALID_SERVER_APP_ENVIRONMENT */);\n }\n let firebaseOptions;\n let serverAppSettings = _serverAppConfig || {};\n if (_options) {\n if (_isFirebaseApp(_options)) {\n firebaseOptions = _options.options;\n }\n else if (_isFirebaseServerAppSettings(_options)) {\n serverAppSettings = _options;\n }\n else {\n firebaseOptions = _options;\n }\n }\n if (serverAppSettings.automaticDataCollectionEnabled === undefined) {\n serverAppSettings.automaticDataCollectionEnabled = true;\n }\n firebaseOptions || (firebaseOptions = getDefaultAppConfig());\n if (!firebaseOptions) {\n throw ERROR_FACTORY.create(\"no-options\" /* AppError.NO_OPTIONS */);\n }\n // Build an app name based on a hash of the configuration options.\n const nameObj = {\n ...serverAppSettings,\n ...firebaseOptions\n };\n // However, Do not mangle the name based on releaseOnDeref, since it will vary between the\n // construction of FirebaseServerApp instances. For example, if the object is the request headers.\n if (nameObj.releaseOnDeref !== undefined) {\n delete nameObj.releaseOnDeref;\n }\n const hashCode = (s) => {\n return [...s].reduce((hash, c) => (Math.imul(31, hash) + c.charCodeAt(0)) | 0, 0);\n };\n if (serverAppSettings.releaseOnDeref !== undefined) {\n if (typeof FinalizationRegistry === 'undefined') {\n throw ERROR_FACTORY.create(\"finalization-registry-not-supported\" /* AppError.FINALIZATION_REGISTRY_NOT_SUPPORTED */, {});\n }\n }\n const nameString = '' + hashCode(JSON.stringify(nameObj));\n const existingApp = _serverApps.get(nameString);\n if (existingApp) {\n existingApp.incRefCount(serverAppSettings.releaseOnDeref);\n return existingApp;\n }\n const container = new ComponentContainer(nameString);\n for (const component of _components.values()) {\n container.addComponent(component);\n }\n const newApp = new FirebaseServerAppImpl(firebaseOptions, serverAppSettings, nameString, container);\n _serverApps.set(nameString, newApp);\n return newApp;\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 */\nfunction getApp(name = DEFAULT_ENTRY_NAME) {\n const app = _apps.get(name);\n if (!app && name === DEFAULT_ENTRY_NAME && getDefaultAppConfig()) {\n return initializeApp();\n }\n if (!app) {\n throw ERROR_FACTORY.create(\"no-app\" /* AppError.NO_APP */, { appName: name });\n }\n return app;\n}\n/**\n * A (read-only) array of all initialized apps.\n * @public\n */\nfunction getApps() {\n return Array.from(_apps.values());\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 */\nasync function deleteApp(app) {\n let cleanupProviders = false;\n const name = app.name;\n if (_apps.has(name)) {\n cleanupProviders = true;\n _apps.delete(name);\n }\n else if (_serverApps.has(name)) {\n const firebaseServerApp = app;\n if (firebaseServerApp.decRefCount() <= 0) {\n _serverApps.delete(name);\n cleanupProviders = true;\n }\n }\n if (cleanupProviders) {\n await Promise.all(app.container\n .getProviders()\n .map(provider => provider.delete()));\n app.isDeleted = true;\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 */\nfunction registerVersion(libraryKeyOrName, version, variant) {\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(`library name \"${library}\" contains illegal characters (whitespace or \"/\")`);\n }\n if (libraryMismatch && versionMismatch) {\n warning.push('and');\n }\n if (versionMismatch) {\n warning.push(`version name \"${version}\" contains illegal characters (whitespace or \"/\")`);\n }\n logger.warn(warning.join(' '));\n return;\n }\n _registerComponent(new Component(`${library}-version`, () => ({ library, version }), \"VERSION\" /* ComponentType.VERSION */));\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 */\nfunction onLog(logCallback, options) {\n if (logCallback !== null && typeof logCallback !== 'function') {\n throw ERROR_FACTORY.create(\"invalid-log-argument\" /* AppError.INVALID_LOG_ARGUMENT */);\n }\n setUserLogHandler(logCallback, options);\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 */\nfunction setLogLevel(logLevel) {\n setLogLevel$1(logLevel);\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 */\nconst DB_NAME = 'firebase-heartbeat-database';\nconst DB_VERSION = 1;\nconst STORE_NAME = 'firebase-heartbeat-store';\nlet dbPromise = null;\nfunction getDbPromise() {\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 try {\n db.createObjectStore(STORE_NAME);\n }\n catch (e) {\n // Safari/iOS browsers throw occasional exceptions on\n // db.createObjectStore() that may be a bug. Avoid blocking\n // the rest of the app functionality.\n console.warn(e);\n }\n }\n }\n }).catch(e => {\n throw ERROR_FACTORY.create(\"idb-open\" /* AppError.IDB_OPEN */, {\n originalErrorMessage: e.message\n });\n });\n }\n return dbPromise;\n}\nasync function readHeartbeatsFromIndexedDB(app) {\n try {\n const db = await getDbPromise();\n const tx = db.transaction(STORE_NAME);\n const result = await tx.objectStore(STORE_NAME).get(computeKey(app));\n // We already have the value but tx.done can throw,\n // so we need to await it here to catch errors\n await tx.done;\n return result;\n }\n catch (e) {\n if (e instanceof FirebaseError) {\n logger.warn(e.message);\n }\n else {\n const idbGetError = ERROR_FACTORY.create(\"idb-get\" /* AppError.IDB_GET */, {\n originalErrorMessage: e?.message\n });\n logger.warn(idbGetError.message);\n }\n }\n}\nasync function writeHeartbeatsToIndexedDB(app, heartbeatObject) {\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 await tx.done;\n }\n catch (e) {\n if (e instanceof FirebaseError) {\n logger.warn(e.message);\n }\n else {\n const idbGetError = ERROR_FACTORY.create(\"idb-set\" /* AppError.IDB_WRITE */, {\n originalErrorMessage: e?.message\n });\n logger.warn(idbGetError.message);\n }\n }\n}\nfunction computeKey(app) {\n return `${app.name}!${app.options.appId}`;\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 */\nconst MAX_HEADER_BYTES = 1024;\nconst MAX_NUM_STORED_HEARTBEATS = 30;\nclass HeartbeatServiceImpl {\n constructor(container) {\n this.container = container;\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 this._heartbeatsCache = null;\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 * 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() {\n try {\n const platformLogger = this.container\n .getProvider('platform-logger')\n .getImmediate();\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?.heartbeats == null) {\n this._heartbeatsCache = await this._heartbeatsCachePromise;\n // If we failed to construct a heartbeats cache, then return immediately.\n if (this._heartbeatsCache?.heartbeats == null) {\n return;\n }\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 (this._heartbeatsCache.lastSentHeartbeatDate === date ||\n this._heartbeatsCache.heartbeats.some(singleDateHeartbeat => singleDateHeartbeat.date === date)) {\n return;\n }\n else {\n // There is no entry for this date. Create one.\n this._heartbeatsCache.heartbeats.push({ date, agent });\n // If the number of stored heartbeats exceeds the maximum number of stored heartbeats, remove the heartbeat with the earliest date.\n // Since this is executed each time a heartbeat is pushed, the limit can only be exceeded by one, so only one needs to be removed.\n if (this._heartbeatsCache.heartbeats.length > MAX_NUM_STORED_HEARTBEATS) {\n const earliestHeartbeatIdx = getEarliestHeartbeatIdx(this._heartbeatsCache.heartbeats);\n this._heartbeatsCache.heartbeats.splice(earliestHeartbeatIdx, 1);\n }\n }\n return this._storage.overwrite(this._heartbeatsCache);\n }\n catch (e) {\n logger.warn(e);\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() {\n try {\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 (this._heartbeatsCache?.heartbeats == null ||\n this._heartbeatsCache.heartbeats.length === 0) {\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(this._heartbeatsCache.heartbeats);\n const headerString = base64urlEncodeWithoutPadding(JSON.stringify({ version: 2, heartbeats: heartbeatsToSend }));\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 }\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 catch (e) {\n logger.warn(e);\n return '';\n }\n }\n}\nfunction getUTCDateString() {\n const today = new Date();\n // Returns date format 'YYYY-MM-DD'\n return today.toISOString().substring(0, 10);\n}\nfunction extractHeartbeatsForHeader(heartbeatsCache, maxSize = MAX_HEADER_BYTES) {\n // Heartbeats grouped by user agent in the standard format to be sent in\n // the header.\n const heartbeatsToSend = [];\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(hb => hb.agent === singleDateHeartbeat.agent);\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 }\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}\nclass HeartbeatStorageImpl {\n constructor(app) {\n this.app = app;\n this._canUseIndexedDBPromise = this.runIndexedDBEnvironmentCheck();\n }\n async runIndexedDBEnvironmentCheck() {\n if (!isIndexedDBAvailable()) {\n return false;\n }\n else {\n return validateIndexedDBOpenable()\n .then(() => true)\n .catch(() => false);\n }\n }\n /**\n * Read all heartbeats.\n */\n async read() {\n const canUseIndexedDB = await this._canUseIndexedDBPromise;\n if (!canUseIndexedDB) {\n return { heartbeats: [] };\n }\n else {\n const idbHeartbeatObject = await readHeartbeatsFromIndexedDB(this.app);\n if (idbHeartbeatObject?.heartbeats) {\n return idbHeartbeatObject;\n }\n else {\n return { heartbeats: [] };\n }\n }\n }\n // overwrite the storage with the provided heartbeats\n async overwrite(heartbeatsObject) {\n const canUseIndexedDB = await this._canUseIndexedDBPromise;\n if (!canUseIndexedDB) {\n return;\n }\n else {\n const existingHeartbeatsObject = await this.read();\n return writeHeartbeatsToIndexedDB(this.app, {\n lastSentHeartbeatDate: heartbeatsObject.lastSentHeartbeatDate ??\n existingHeartbeatsObject.lastSentHeartbeatDate,\n heartbeats: heartbeatsObject.heartbeats\n });\n }\n }\n // add heartbeats\n async add(heartbeatsObject) {\n const canUseIndexedDB = await this._canUseIndexedDBPromise;\n if (!canUseIndexedDB) {\n return;\n }\n else {\n const existingHeartbeatsObject = await this.read();\n return writeHeartbeatsToIndexedDB(this.app, {\n lastSentHeartbeatDate: heartbeatsObject.lastSentHeartbeatDate ??\n existingHeartbeatsObject.lastSentHeartbeatDate,\n heartbeats: [\n ...existingHeartbeatsObject.heartbeats,\n ...heartbeatsObject.heartbeats\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 */\nfunction countBytes(heartbeatsCache) {\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 })).length;\n}\n/**\n * Returns the index of the heartbeat with the earliest date.\n * If the heartbeats array is empty, -1 is returned.\n */\nfunction getEarliestHeartbeatIdx(heartbeats) {\n if (heartbeats.length === 0) {\n return -1;\n }\n let earliestHeartbeatIdx = 0;\n let earliestHeartbeatDate = heartbeats[0].date;\n for (let i = 1; i < heartbeats.length; i++) {\n if (heartbeats[i].date < earliestHeartbeatDate) {\n earliestHeartbeatDate = heartbeats[i].date;\n earliestHeartbeatIdx = i;\n }\n }\n return earliestHeartbeatIdx;\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 */\nfunction registerCoreComponents(variant) {\n _registerComponent(new Component('platform-logger', container => new PlatformLoggerServiceImpl(container), \"PRIVATE\" /* ComponentType.PRIVATE */));\n _registerComponent(new Component('heartbeat', container => new HeartbeatServiceImpl(container), \"PRIVATE\" /* ComponentType.PRIVATE */));\n // Register `app` package.\n registerVersion(name$q, version$1, variant);\n // BUILD_TARGET will be replaced by values like esm, cjs, etc during the compilation\n registerVersion(name$q, version$1, 'esm2020');\n // Register platform SDK identifier (no version).\n registerVersion('fire-js', '');\n}\n\n/**\n * Firebase App\n *\n * @remarks This package coordinates the communication between the different Firebase components\n * @packageDocumentation\n */\nregisterCoreComponents('');\n\nexport { SDK_VERSION, DEFAULT_ENTRY_NAME as _DEFAULT_ENTRY_NAME, _addComponent, _addOrOverwriteComponent, _apps, _clearComponents, _components, _getProvider, _isFirebaseApp, _isFirebaseServerApp, _isFirebaseServerAppSettings, _registerComponent, _removeServiceInstance, _serverApps, deleteApp, getApp, getApps, initializeApp, initializeServerApp, onLog, registerVersion, setLogLevel };\n//# sourceMappingURL=index.esm.js.map\n","import { registerVersion } from '@firebase/app';\nexport * from '@firebase/app';\n\nvar name = \"firebase\";\nvar version = \"12.3.0\";\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 */\nregisterVersion(name, version, 'app');\n//# sourceMappingURL=index.esm.js.map\n","import { _getProvider, getApp, _registerComponent, registerVersion } from '@firebase/app';\nimport { Component } from '@firebase/component';\nimport { ErrorFactory, FirebaseError } from '@firebase/util';\nimport { openDB } from 'idb';\n\nconst name = \"@firebase/installations\";\nconst version = \"0.6.19\";\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 */\nconst PENDING_TIMEOUT_MS = 10000;\nconst PACKAGE_VERSION = `w:${version}`;\nconst INTERNAL_AUTH_VERSION = 'FIS_v2';\nconst INSTALLATIONS_API_URL = 'https://firebaseinstallations.googleapis.com/v1';\nconst TOKEN_EXPIRATION_BUFFER = 60 * 60 * 1000; // One hour\nconst SERVICE = 'installations';\nconst SERVICE_NAME = 'Installations';\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 */\nconst ERROR_DESCRIPTION_MAP = {\n [\"missing-app-config-values\" /* ErrorCode.MISSING_APP_CONFIG_VALUES */]: 'Missing App configuration value: \"{$valueName}\"',\n [\"not-registered\" /* ErrorCode.NOT_REGISTERED */]: 'Firebase Installation is not registered.',\n [\"installation-not-found\" /* ErrorCode.INSTALLATION_NOT_FOUND */]: 'Firebase Installation not found.',\n [\"request-failed\" /* ErrorCode.REQUEST_FAILED */]: '{$requestName} request failed with error \"{$serverCode} {$serverStatus}: {$serverMessage}\"',\n [\"app-offline\" /* ErrorCode.APP_OFFLINE */]: 'Could not process request. Application offline.',\n [\"delete-pending-registration\" /* ErrorCode.DELETE_PENDING_REGISTRATION */]: \"Can't delete installation while there is a pending registration request.\"\n};\nconst ERROR_FACTORY = new ErrorFactory(SERVICE, SERVICE_NAME, ERROR_DESCRIPTION_MAP);\n/** Returns true if error is a FirebaseError that is based on an error from the server. */\nfunction isServerError(error) {\n return (error instanceof FirebaseError &&\n error.code.includes(\"request-failed\" /* 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 */\nfunction getInstallationsEndpoint({ projectId }) {\n return `${INSTALLATIONS_API_URL}/projects/${projectId}/installations`;\n}\nfunction extractAuthTokenInfoFromResponse(response) {\n return {\n token: response.token,\n requestStatus: 2 /* RequestStatus.COMPLETED */,\n expiresIn: getExpiresInFromResponseExpiresIn(response.expiresIn),\n creationTime: Date.now()\n };\n}\nasync function getErrorFromResponse(requestName, response) {\n const responseJson = await response.json();\n const errorData = responseJson.error;\n return ERROR_FACTORY.create(\"request-failed\" /* ErrorCode.REQUEST_FAILED */, {\n requestName,\n serverCode: errorData.code,\n serverMessage: errorData.message,\n serverStatus: errorData.status\n });\n}\nfunction getHeaders({ apiKey }) {\n return new Headers({\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n 'x-goog-api-key': apiKey\n });\n}\nfunction getHeadersWithAuth(appConfig, { refreshToken }) {\n const headers = getHeaders(appConfig);\n headers.append('Authorization', getAuthorizationHeader(refreshToken));\n return headers;\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 */\nasync function retryIfServerError(fn) {\n const result = await fn();\n if (result.status >= 500 && result.status < 600) {\n // Internal Server Error. Retry request.\n return fn();\n }\n return result;\n}\nfunction getExpiresInFromResponseExpiresIn(responseExpiresIn) {\n // This works because the server will never respond with fractions of a second.\n return Number(responseExpiresIn.replace('s', '000'));\n}\nfunction getAuthorizationHeader(refreshToken) {\n return `${INTERNAL_AUTH_VERSION} ${refreshToken}`;\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 */\nasync function createInstallationRequest({ appConfig, heartbeatServiceProvider }, { fid }) {\n const endpoint = getInstallationsEndpoint(appConfig);\n const headers = getHeaders(appConfig);\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 const body = {\n fid,\n authVersion: INTERNAL_AUTH_VERSION,\n appId: appConfig.appId,\n sdkVersion: PACKAGE_VERSION\n };\n const request = {\n method: 'POST',\n headers,\n body: JSON.stringify(body)\n };\n const response = await retryIfServerError(() => fetch(endpoint, request));\n if (response.ok) {\n const responseValue = await response.json();\n const registeredInstallationEntry = {\n fid: responseValue.fid || fid,\n registrationStatus: 2 /* RequestStatus.COMPLETED */,\n refreshToken: responseValue.refreshToken,\n authToken: extractAuthTokenInfoFromResponse(responseValue.authToken)\n };\n return registeredInstallationEntry;\n }\n else {\n throw await getErrorFromResponse('Create Installation', response);\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/** Returns a promise that resolves after given time passes. */\nfunction sleep(ms) {\n return new Promise(resolve => {\n setTimeout(resolve, ms);\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 */\nfunction bufferToBase64UrlSafe(array) {\n const b64 = btoa(String.fromCharCode(...array));\n return b64.replace(/\\+/g, '-').replace(/\\//g, '_');\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 */\nconst VALID_FID_PATTERN = /^[cdef][\\w-]{21}$/;\nconst INVALID_FID = '';\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 */\nfunction generateFid() {\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 = self.crypto || self.msCrypto;\n crypto.getRandomValues(fidByteArray);\n // Replace the first 4 random bits with the constant FID header of 0b0111.\n fidByteArray[0] = 0b01110000 + (fidByteArray[0] % 0b00010000);\n const fid = encode(fidByteArray);\n return VALID_FID_PATTERN.test(fid) ? fid : INVALID_FID;\n }\n catch {\n // FID generation errored\n return INVALID_FID;\n }\n}\n/** Converts a FID Uint8Array to a base64 string representation. */\nfunction encode(fidByteArray) {\n const b64String = bufferToBase64UrlSafe(fidByteArray);\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/**\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/** Returns a string key that can be used to identify the app. */\nfunction getKey(appConfig) {\n return `${appConfig.appName}!${appConfig.appId}`;\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 */\nconst fidChangeCallbacks = new Map();\n/**\n * Calls the onIdChange callbacks with the new FID value, and broadcasts the\n * change to other tabs.\n */\nfunction fidChanged(appConfig, fid) {\n const key = getKey(appConfig);\n callFidChangeCallbacks(key, fid);\n broadcastFidChange(key, fid);\n}\nfunction addCallback(appConfig, callback) {\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 const key = getKey(appConfig);\n let callbackSet = fidChangeCallbacks.get(key);\n if (!callbackSet) {\n callbackSet = new Set();\n fidChangeCallbacks.set(key, callbackSet);\n }\n callbackSet.add(callback);\n}\nfunction removeCallback(appConfig, callback) {\n const key = getKey(appConfig);\n const callbackSet = fidChangeCallbacks.get(key);\n if (!callbackSet) {\n return;\n }\n callbackSet.delete(callback);\n if (callbackSet.size === 0) {\n fidChangeCallbacks.delete(key);\n }\n // Close broadcast channel if there are no more callbacks.\n closeBroadcastChannel();\n}\nfunction callFidChangeCallbacks(key, fid) {\n const callbacks = fidChangeCallbacks.get(key);\n if (!callbacks) {\n return;\n }\n for (const callback of callbacks) {\n callback(fid);\n }\n}\nfunction broadcastFidChange(key, fid) {\n const channel = getBroadcastChannel();\n if (channel) {\n channel.postMessage({ key, fid });\n }\n closeBroadcastChannel();\n}\nlet broadcastChannel = null;\n/** Opens and returns a BroadcastChannel if it is supported by the browser. */\nfunction getBroadcastChannel() {\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}\nfunction closeBroadcastChannel() {\n if (fidChangeCallbacks.size === 0 && broadcastChannel) {\n broadcastChannel.close();\n broadcastChannel = null;\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 */\nconst DATABASE_NAME = 'firebase-installations-database';\nconst DATABASE_VERSION = 1;\nconst OBJECT_STORE_NAME = 'firebase-installations-store';\nlet dbPromise = null;\nfunction getDbPromise() {\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/** Assigns or overwrites the record for the given key with the given value. */\nasync function set(appConfig, value) {\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));\n await objectStore.put(value, key);\n await tx.done;\n if (!oldValue || oldValue.fid !== value.fid) {\n fidChanged(appConfig, value.fid);\n }\n return value;\n}\n/** Removes record(s) from the objectStore that match the given key. */\nasync function remove(appConfig) {\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 * 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 */\nasync function update(appConfig, updateFn) {\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 = (await store.get(key));\n const newValue = updateFn(oldValue);\n if (newValue === undefined) {\n await store.delete(key);\n }\n else {\n await store.put(newValue, key);\n }\n await tx.done;\n if (newValue && (!oldValue || oldValue.fid !== newValue.fid)) {\n fidChanged(appConfig, newValue.fid);\n }\n return newValue;\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 * Updates and returns the InstallationEntry from the database.\n * Also triggers a registration request if it is necessary and possible.\n */\nasync function getInstallationEntry(installations) {\n let registrationPromise;\n const installationEntry = await update(installations.appConfig, oldEntry => {\n const installationEntry = updateOrCreateInstallationEntry(oldEntry);\n const entryWithPromise = triggerRegistrationIfNecessary(installations, installationEntry);\n registrationPromise = entryWithPromise.registrationPromise;\n return entryWithPromise.installationEntry;\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 return {\n installationEntry,\n registrationPromise\n };\n}\n/**\n * Creates a new Installation Entry if one does not exist.\n * Also clears timed out pending requests.\n */\nfunction updateOrCreateInstallationEntry(oldEntry) {\n const entry = oldEntry || {\n fid: generateFid(),\n registrationStatus: 0 /* RequestStatus.NOT_STARTED */\n };\n return clearTimedOutRequest(entry);\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(installations, installationEntry) {\n if (installationEntry.registrationStatus === 0 /* RequestStatus.NOT_STARTED */) {\n if (!navigator.onLine) {\n // Registration required but app is offline.\n const registrationPromiseWithError = Promise.reject(ERROR_FACTORY.create(\"app-offline\" /* ErrorCode.APP_OFFLINE */));\n return {\n installationEntry,\n registrationPromise: registrationPromiseWithError\n };\n }\n // Try registering. Change status to IN_PROGRESS.\n const inProgressEntry = {\n fid: installationEntry.fid,\n registrationStatus: 1 /* RequestStatus.IN_PROGRESS */,\n registrationTime: Date.now()\n };\n const registrationPromise = registerInstallation(installations, inProgressEntry);\n return { installationEntry: inProgressEntry, registrationPromise };\n }\n else if (installationEntry.registrationStatus === 1 /* RequestStatus.IN_PROGRESS */) {\n return {\n installationEntry,\n registrationPromise: waitUntilFidRegistration(installations)\n };\n }\n else {\n return { installationEntry };\n }\n}\n/** This will be executed only once for each new Firebase Installation. */\nasync function registerInstallation(installations, installationEntry) {\n try {\n const registeredInstallationEntry = await createInstallationRequest(installations, installationEntry);\n return set(installations.appConfig, registeredInstallationEntry);\n }\n catch (e) {\n if (isServerError(e) && e.customData.serverCode === 409) {\n // Server returned a \"FID cannot be used\" error.\n // Generate a new ID next time.\n await remove(installations.appConfig);\n }\n else {\n // Registration failed. Set FID as not registered.\n await set(installations.appConfig, {\n fid: installationEntry.fid,\n registrationStatus: 0 /* RequestStatus.NOT_STARTED */\n });\n }\n throw e;\n }\n}\n/** Call if FID registration is pending in another request. */\nasync function waitUntilFidRegistration(installations) {\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 let entry = await updateInstallationRequest(installations.appConfig);\n while (entry.registrationStatus === 1 /* RequestStatus.IN_PROGRESS */) {\n // createInstallation request still in progress.\n await sleep(100);\n entry = await updateInstallationRequest(installations.appConfig);\n }\n if (entry.registrationStatus === 0 /* RequestStatus.NOT_STARTED */) {\n // The request timed out or failed in a different call. Try again.\n const { installationEntry, registrationPromise } = await getInstallationEntry(installations);\n if (registrationPromise) {\n return registrationPromise;\n }\n else {\n // if there is no registrationPromise, entry is registered.\n return installationEntry;\n }\n }\n return entry;\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(appConfig) {\n return update(appConfig, oldEntry => {\n if (!oldEntry) {\n throw ERROR_FACTORY.create(\"installation-not-found\" /* ErrorCode.INSTALLATION_NOT_FOUND */);\n }\n return clearTimedOutRequest(oldEntry);\n });\n}\nfunction clearTimedOutRequest(entry) {\n if (hasInstallationRequestTimedOut(entry)) {\n return {\n fid: entry.fid,\n registrationStatus: 0 /* RequestStatus.NOT_STARTED */\n };\n }\n return entry;\n}\nfunction hasInstallationRequestTimedOut(installationEntry) {\n return (installationEntry.registrationStatus === 1 /* 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 */\nasync function generateAuthTokenRequest({ appConfig, heartbeatServiceProvider }, installationEntry) {\n const endpoint = getGenerateAuthTokenEndpoint(appConfig, installationEntry);\n const headers = getHeadersWithAuth(appConfig, installationEntry);\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 const body = {\n installation: {\n sdkVersion: PACKAGE_VERSION,\n appId: appConfig.appId\n }\n };\n const request = {\n method: 'POST',\n headers,\n body: JSON.stringify(body)\n };\n const response = await retryIfServerError(() => fetch(endpoint, request));\n if (response.ok) {\n const responseValue = await response.json();\n const completedAuthToken = extractAuthTokenInfoFromResponse(responseValue);\n return completedAuthToken;\n }\n else {\n throw await getErrorFromResponse('Generate Auth Token', response);\n }\n}\nfunction getGenerateAuthTokenEndpoint(appConfig, { fid }) {\n return `${getInstallationsEndpoint(appConfig)}/${fid}/authTokens:generate`;\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 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 */\nasync function refreshAuthToken(installations, forceRefresh = false) {\n let tokenPromise;\n const entry = await update(installations.appConfig, oldEntry => {\n if (!isEntryRegistered(oldEntry)) {\n throw ERROR_FACTORY.create(\"not-registered\" /* ErrorCode.NOT_REGISTERED */);\n }\n const oldAuthToken = oldEntry.authToken;\n if (!forceRefresh && isAuthTokenValid(oldAuthToken)) {\n // There is a valid token in the DB.\n return oldEntry;\n }\n else if (oldAuthToken.requestStatus === 1 /* RequestStatus.IN_PROGRESS */) {\n // There already is a token request in progress.\n tokenPromise = waitUntilAuthTokenRequest(installations, forceRefresh);\n return oldEntry;\n }\n else {\n // No token or token expired.\n if (!navigator.onLine) {\n throw ERROR_FACTORY.create(\"app-offline\" /* ErrorCode.APP_OFFLINE */);\n }\n const inProgressEntry = makeAuthTokenRequestInProgressEntry(oldEntry);\n tokenPromise = fetchAuthTokenFromServer(installations, inProgressEntry);\n return inProgressEntry;\n }\n });\n const authToken = tokenPromise\n ? await tokenPromise\n : entry.authToken;\n return authToken;\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(installations, forceRefresh) {\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 let entry = await updateAuthTokenRequest(installations.appConfig);\n while (entry.authToken.requestStatus === 1 /* RequestStatus.IN_PROGRESS */) {\n // generateAuthToken still in progress.\n await sleep(100);\n entry = await updateAuthTokenRequest(installations.appConfig);\n }\n const authToken = entry.authToken;\n if (authToken.requestStatus === 0 /* RequestStatus.NOT_STARTED */) {\n // The request timed out or failed in a different call. Try again.\n return refreshAuthToken(installations, forceRefresh);\n }\n else {\n return authToken;\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(appConfig) {\n return update(appConfig, oldEntry => {\n if (!isEntryRegistered(oldEntry)) {\n throw ERROR_FACTORY.create(\"not-registered\" /* ErrorCode.NOT_REGISTERED */);\n }\n const oldAuthToken = oldEntry.authToken;\n if (hasAuthTokenRequestTimedOut(oldAuthToken)) {\n return {\n ...oldEntry,\n authToken: { requestStatus: 0 /* RequestStatus.NOT_STARTED */ }\n };\n }\n return oldEntry;\n });\n}\nasync function fetchAuthTokenFromServer(installations, installationEntry) {\n try {\n const authToken = await generateAuthTokenRequest(installations, installationEntry);\n const updatedInstallationEntry = {\n ...installationEntry,\n authToken\n };\n await set(installations.appConfig, updatedInstallationEntry);\n return authToken;\n }\n catch (e) {\n if (isServerError(e) &&\n (e.customData.serverCode === 401 || e.customData.serverCode === 404)) {\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 }\n else {\n const updatedInstallationEntry = {\n ...installationEntry,\n authToken: { requestStatus: 0 /* RequestStatus.NOT_STARTED */ }\n };\n await set(installations.appConfig, updatedInstallationEntry);\n }\n throw e;\n }\n}\nfunction isEntryRegistered(installationEntry) {\n return (installationEntry !== undefined &&\n installationEntry.registrationStatus === 2 /* RequestStatus.COMPLETED */);\n}\nfunction isAuthTokenValid(authToken) {\n return (authToken.requestStatus === 2 /* RequestStatus.COMPLETED */ &&\n !isAuthTokenExpired(authToken));\n}\nfunction isAuthTokenExpired(authToken) {\n const now = Date.now();\n return (now < authToken.creationTime ||\n authToken.creationTime + authToken.expiresIn < now + TOKEN_EXPIRATION_BUFFER);\n}\n/** Returns an updated InstallationEntry with an InProgressAuthToken. */\nfunction makeAuthTokenRequestInProgressEntry(oldEntry) {\n const inProgressAuthToken = {\n requestStatus: 1 /* RequestStatus.IN_PROGRESS */,\n requestTime: Date.now()\n };\n return {\n ...oldEntry,\n authToken: inProgressAuthToken\n };\n}\nfunction hasAuthTokenRequestTimedOut(authToken) {\n return (authToken.requestStatus === 1 /* 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/**\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 */\nasync function getId(installations) {\n const installationsImpl = installations;\n const { installationEntry, registrationPromise } = await getInstallationEntry(installationsImpl);\n if (registrationPromise) {\n registrationPromise.catch(console.error);\n }\n else {\n // If the installation is already registered, update the authentication\n // token if needed.\n refreshAuthToken(installationsImpl).catch(console.error);\n }\n return installationEntry.fid;\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 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 */\nasync function getToken(installations, forceRefresh = false) {\n const installationsImpl = installations;\n await completeInstallationRegistration(installationsImpl);\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}\nasync function completeInstallationRegistration(installations) {\n const { registrationPromise } = await getInstallationEntry(installations);\n if (registrationPromise) {\n // A createInstallation request is in progress. Wait until it finishes.\n await registrationPromise;\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 */\nasync function deleteInstallationRequest(appConfig, installationEntry) {\n const endpoint = getDeleteEndpoint(appConfig, installationEntry);\n const headers = getHeadersWithAuth(appConfig, installationEntry);\n const request = {\n method: 'DELETE',\n headers\n };\n const response = await retryIfServerError(() => fetch(endpoint, request));\n if (!response.ok) {\n throw await getErrorFromResponse('Delete Installation', response);\n }\n}\nfunction getDeleteEndpoint(appConfig, { fid }) {\n return `${getInstallationsEndpoint(appConfig)}/${fid}`;\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 * Deletes the Firebase Installation and all associated data.\n * @param installations - The `Installations` instance.\n *\n * @public\n */\nasync function deleteInstallations(installations) {\n const { appConfig } = installations;\n const entry = await update(appConfig, oldEntry => {\n if (oldEntry && oldEntry.registrationStatus === 0 /* RequestStatus.NOT_STARTED */) {\n // Delete the unregistered entry without sending a deleteInstallation request.\n return undefined;\n }\n return oldEntry;\n });\n if (entry) {\n if (entry.registrationStatus === 1 /* RequestStatus.IN_PROGRESS */) {\n // Can't delete while trying to register.\n throw ERROR_FACTORY.create(\"delete-pending-registration\" /* ErrorCode.DELETE_PENDING_REGISTRATION */);\n }\n else if (entry.registrationStatus === 2 /* RequestStatus.COMPLETED */) {\n if (!navigator.onLine) {\n throw ERROR_FACTORY.create(\"app-offline\" /* ErrorCode.APP_OFFLINE */);\n }\n else {\n await deleteInstallationRequest(appConfig, entry);\n await remove(appConfig);\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/**\n * Sets a new callback that will get called when Installation ID changes.\n * Returns an unsubscribe function that will remove the callback when called.\n * @param installations - The `Installations` instance.\n * @param callback - The callback function that is invoked when FID changes.\n * @returns A function that can be called to unsubscribe.\n *\n * @public\n */\nfunction onIdChange(installations, callback) {\n const { appConfig } = installations;\n addCallback(appConfig, callback);\n return () => {\n removeCallback(appConfig, callback);\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 * Returns an instance of {@link Installations} associated with the given\n * {@link @firebase/app#FirebaseApp} instance.\n * @param app - The {@link @firebase/app#FirebaseApp} instance.\n *\n * @public\n */\nfunction getInstallations(app = getApp()) {\n const installationsImpl = _getProvider(app, 'installations').getImmediate();\n return installationsImpl;\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 */\nfunction extractAppConfig(app) {\n if (!app || !app.options) {\n throw getMissingValueError('App Configuration');\n }\n if (!app.name) {\n throw getMissingValueError('App Name');\n }\n // Required app config keys\n const configKeys = [\n 'projectId',\n 'apiKey',\n 'appId'\n ];\n for (const keyName of configKeys) {\n if (!app.options[keyName]) {\n throw getMissingValueError(keyName);\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}\nfunction getMissingValueError(valueName) {\n return ERROR_FACTORY.create(\"missing-app-config-values\" /* ErrorCode.MISSING_APP_CONFIG_VALUES */, {\n valueName\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 */\nconst INSTALLATIONS_NAME = 'installations';\nconst INSTALLATIONS_NAME_INTERNAL = 'installations-internal';\nconst publicFactory = (container) => {\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 const installationsImpl = {\n app,\n appConfig,\n heartbeatServiceProvider,\n _delete: () => Promise.resolve()\n };\n return installationsImpl;\n};\nconst internalFactory = (container) => {\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 const installationsInternal = {\n getId: () => getId(installations),\n getToken: (forceRefresh) => getToken(installations, forceRefresh)\n };\n return installationsInternal;\n};\nfunction registerInstallations() {\n _registerComponent(new Component(INSTALLATIONS_NAME, publicFactory, \"PUBLIC\" /* ComponentType.PUBLIC */));\n _registerComponent(new Component(INSTALLATIONS_NAME_INTERNAL, internalFactory, \"PRIVATE\" /* ComponentType.PRIVATE */));\n}\n\n/**\n * The Firebase Installations Web SDK.\n * This SDK does not work in a Node.js environment.\n *\n * @packageDocumentation\n */\nregisterInstallations();\nregisterVersion(name, version);\n// BUILD_TARGET will be replaced by values like esm, cjs, etc during the compilation\nregisterVersion(name, version, 'esm2020');\n\nexport { deleteInstallations, getId, getInstallations, getToken, onIdChange };\n//# sourceMappingURL=index.esm.js.map\n","import '@firebase/installations';\nimport { Component } from '@firebase/component';\nimport { openDB, deleteDB } from 'idb';\nimport { ErrorFactory, validateIndexedDBOpenable, isIndexedDBAvailable, areCookiesEnabled, getModularInstance } from '@firebase/util';\nimport { _registerComponent, registerVersion, _getProvider, getApp } from '@firebase/app';\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 */\nconst DEFAULT_SW_PATH = '/firebase-messaging-sw.js';\nconst DEFAULT_SW_SCOPE = '/firebase-cloud-messaging-push-scope';\nconst DEFAULT_VAPID_KEY = 'BDOU99-h67HcA6JeFXHbSNMu7e2yNNu3RzoMj8TM4W88jITfq7ZmPvIM1Iv-4_l2LxQcYwhqby2xGpWwzjfAnG4';\nconst ENDPOINT = 'https://fcmregistrations.googleapis.com/v1';\nconst CONSOLE_CAMPAIGN_ID = 'google.c.a.c_id';\nconst CONSOLE_CAMPAIGN_NAME = 'google.c.a.c_l';\nconst CONSOLE_CAMPAIGN_TIME = 'google.c.a.ts';\n/** Set to '1' if Analytics is enabled for the campaign */\nconst CONSOLE_CAMPAIGN_ANALYTICS_ENABLED = 'google.c.a.e';\nconst DEFAULT_REGISTRATION_TIMEOUT = 10000;\nvar MessageType$1;\n(function (MessageType) {\n MessageType[MessageType[\"DATA_MESSAGE\"] = 1] = \"DATA_MESSAGE\";\n MessageType[MessageType[\"DISPLAY_NOTIFICATION\"] = 3] = \"DISPLAY_NOTIFICATION\";\n})(MessageType$1 || (MessageType$1 = {}));\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 */\nvar MessageType;\n(function (MessageType) {\n MessageType[\"PUSH_RECEIVED\"] = \"push-received\";\n MessageType[\"NOTIFICATION_CLICKED\"] = \"notification-clicked\";\n})(MessageType || (MessageType = {}));\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 */\nfunction arrayToBase64(array) {\n const uint8Array = new Uint8Array(array);\n const base64String = btoa(String.fromCharCode(...uint8Array));\n return base64String.replace(/=/g, '').replace(/\\+/g, '-').replace(/\\//g, '_');\n}\nfunction base64ToArray(base64String) {\n const padding = '='.repeat((4 - (base64String.length % 4)) % 4);\n const base64 = (base64String + padding)\n .replace(/\\-/g, '+')\n .replace(/_/g, '/');\n const rawData = atob(base64);\n const outputArray = new Uint8Array(rawData.length);\n for (let i = 0; i < rawData.length; ++i) {\n outputArray[i] = rawData.charCodeAt(i);\n }\n return outputArray;\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 */\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';\nasync function migrateOldDatabase(senderId) {\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 indexedDB.databases();\n const dbNames = databases.map(db => db.name);\n if (!dbNames.includes(OLD_DB_NAME)) {\n // old DB didn't exist, no need to open.\n return null;\n }\n }\n let tokenDetails = null;\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 if (!db.objectStoreNames.contains(OLD_OBJECT_STORE_NAME)) {\n // Database did not exist. Nothing to do.\n return;\n }\n const objectStore = upgradeTransaction.objectStore(OLD_OBJECT_STORE_NAME);\n const value = await objectStore.index('fcmSenderId').get(senderId);\n await objectStore.clear();\n if (!value) {\n // No entry in the database, nothing to migrate.\n return;\n }\n if (oldVersion === 2) {\n const oldDetails = value;\n if (!oldDetails.auth || !oldDetails.p256dh || !oldDetails.endpoint) {\n return;\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: typeof oldDetails.vapidKey === 'string'\n ? oldDetails.vapidKey\n : arrayToBase64(oldDetails.vapidKey)\n }\n };\n }\n else if (oldVersion === 3) {\n const oldDetails = value;\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 else if (oldVersion === 4) {\n const oldDetails = value;\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 // Delete all old databases.\n await deleteDB(OLD_DB_NAME);\n await deleteDB('fcm_vapid_details_db');\n await deleteDB('undefined');\n return checkTokenDetails(tokenDetails) ? tokenDetails : null;\n}\nfunction checkTokenDetails(tokenDetails) {\n if (!tokenDetails || !tokenDetails.subscriptionOptions) {\n return false;\n }\n const { subscriptionOptions } = tokenDetails;\n return (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// Exported for tests.\nconst DATABASE_NAME = 'firebase-messaging-database';\nconst DATABASE_VERSION = 1;\nconst OBJECT_STORE_NAME = 'firebase-messaging-store';\nlet dbPromise = null;\nfunction getDbPromise() {\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/** Gets record(s) from the objectStore that match the given key. */\nasync function dbGet(firebaseDependencies) {\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));\n if (tokenDetails) {\n return tokenDetails;\n }\n else {\n // Check if there is a tokenDetails object in the old DB.\n const oldTokenDetails = await migrateOldDatabase(firebaseDependencies.appConfig.senderId);\n if (oldTokenDetails) {\n await dbSet(firebaseDependencies, oldTokenDetails);\n return oldTokenDetails;\n }\n }\n}\n/** Assigns or overwrites the record for the given key with the given value. */\nasync function dbSet(firebaseDependencies, tokenDetails) {\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/** Removes record(s) from the objectStore that match the given key. */\nasync function dbRemove(firebaseDependencies) {\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}\nfunction getKey({ appConfig }) {\n return appConfig.appId;\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 */\nconst ERROR_MAP = {\n [\"missing-app-config-values\" /* ErrorCode.MISSING_APP_CONFIG_VALUES */]: 'Missing App configuration value: \"{$valueName}\"',\n [\"only-available-in-window\" /* ErrorCode.AVAILABLE_IN_WINDOW */]: 'This method is available in a Window context.',\n [\"only-available-in-sw\" /* ErrorCode.AVAILABLE_IN_SW */]: 'This method is available in a service worker context.',\n [\"permission-default\" /* ErrorCode.PERMISSION_DEFAULT */]: 'The notification permission was not granted and dismissed instead.',\n [\"permission-blocked\" /* ErrorCode.PERMISSION_BLOCKED */]: 'The notification permission was not granted and blocked instead.',\n [\"unsupported-browser\" /* ErrorCode.UNSUPPORTED_BROWSER */]: \"This browser doesn't support the API's required to use the Firebase SDK.\",\n [\"indexed-db-unsupported\" /* ErrorCode.INDEXED_DB_UNSUPPORTED */]: \"This browser doesn't support indexedDb.open() (ex. Safari iFrame, Firefox Private Browsing, etc)\",\n [\"failed-service-worker-registration\" /* ErrorCode.FAILED_DEFAULT_REGISTRATION */]: 'We are unable to register the default service worker. {$browserErrorMessage}',\n [\"token-subscribe-failed\" /* ErrorCode.TOKEN_SUBSCRIBE_FAILED */]: 'A problem occurred while subscribing the user to FCM: {$errorInfo}',\n [\"token-subscribe-no-token\" /* ErrorCode.TOKEN_SUBSCRIBE_NO_TOKEN */]: 'FCM returned no token when subscribing the user to push.',\n [\"token-unsubscribe-failed\" /* ErrorCode.TOKEN_UNSUBSCRIBE_FAILED */]: 'A problem occurred while unsubscribing the ' +\n 'user from FCM: {$errorInfo}',\n [\"token-update-failed\" /* ErrorCode.TOKEN_UPDATE_FAILED */]: 'A problem occurred while updating the user from FCM: {$errorInfo}',\n [\"token-update-no-token\" /* ErrorCode.TOKEN_UPDATE_NO_TOKEN */]: 'FCM returned no token when updating the user to push.',\n [\"use-sw-after-get-token\" /* ErrorCode.USE_SW_AFTER_GET_TOKEN */]: 'The useServiceWorker() method may only be called once and must be ' +\n 'called before calling getToken() to ensure your service worker is used.',\n [\"invalid-sw-registration\" /* ErrorCode.INVALID_SW_REGISTRATION */]: 'The input to useServiceWorker() must be a ServiceWorkerRegistration.',\n [\"invalid-bg-handler\" /* ErrorCode.INVALID_BG_HANDLER */]: 'The input to setBackgroundMessageHandler() must be a function.',\n [\"invalid-vapid-key\" /* ErrorCode.INVALID_VAPID_KEY */]: 'The public VAPID key must be a string.',\n [\"use-vapid-key-after-get-token\" /* ErrorCode.USE_VAPID_KEY_AFTER_GET_TOKEN */]: 'The usePublicVapidKey() method may only be called once and must be ' +\n 'called before calling getToken() to ensure your VAPID key is used.'\n};\nconst ERROR_FACTORY = new ErrorFactory('messaging', 'Messaging', 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 */\nasync function requestGetToken(firebaseDependencies, subscriptionOptions) {\n const headers = await getHeaders(firebaseDependencies);\n const body = getBody(subscriptionOptions);\n const subscribeOptions = {\n method: 'POST',\n headers,\n body: JSON.stringify(body)\n };\n let responseData;\n try {\n const response = await fetch(getEndpoint(firebaseDependencies.appConfig), subscribeOptions);\n responseData = await response.json();\n }\n catch (err) {\n throw ERROR_FACTORY.create(\"token-subscribe-failed\" /* ErrorCode.TOKEN_SUBSCRIBE_FAILED */, {\n errorInfo: err?.toString()\n });\n }\n if (responseData.error) {\n const message = responseData.error.message;\n throw ERROR_FACTORY.create(\"token-subscribe-failed\" /* ErrorCode.TOKEN_SUBSCRIBE_FAILED */, {\n errorInfo: message\n });\n }\n if (!responseData.token) {\n throw ERROR_FACTORY.create(\"token-subscribe-no-token\" /* ErrorCode.TOKEN_SUBSCRIBE_NO_TOKEN */);\n }\n return responseData.token;\n}\nasync function requestUpdateToken(firebaseDependencies, tokenDetails) {\n const headers = await getHeaders(firebaseDependencies);\n const body = getBody(tokenDetails.subscriptionOptions);\n const updateOptions = {\n method: 'PATCH',\n headers,\n body: JSON.stringify(body)\n };\n let responseData;\n try {\n const response = await fetch(`${getEndpoint(firebaseDependencies.appConfig)}/${tokenDetails.token}`, updateOptions);\n responseData = await response.json();\n }\n catch (err) {\n throw ERROR_FACTORY.create(\"token-update-failed\" /* ErrorCode.TOKEN_UPDATE_FAILED */, {\n errorInfo: err?.toString()\n });\n }\n if (responseData.error) {\n const message = responseData.error.message;\n throw ERROR_FACTORY.create(\"token-update-failed\" /* ErrorCode.TOKEN_UPDATE_FAILED */, {\n errorInfo: message\n });\n }\n if (!responseData.token) {\n throw ERROR_FACTORY.create(\"token-update-no-token\" /* ErrorCode.TOKEN_UPDATE_NO_TOKEN */);\n }\n return responseData.token;\n}\nasync function requestDeleteToken(firebaseDependencies, token) {\n const headers = await getHeaders(firebaseDependencies);\n const unsubscribeOptions = {\n method: 'DELETE',\n headers\n };\n try {\n const response = await fetch(`${getEndpoint(firebaseDependencies.appConfig)}/${token}`, unsubscribeOptions);\n const responseData = await response.json();\n if (responseData.error) {\n const message = responseData.error.message;\n throw ERROR_FACTORY.create(\"token-unsubscribe-failed\" /* ErrorCode.TOKEN_UNSUBSCRIBE_FAILED */, {\n errorInfo: message\n });\n }\n }\n catch (err) {\n throw ERROR_FACTORY.create(\"token-unsubscribe-failed\" /* ErrorCode.TOKEN_UNSUBSCRIBE_FAILED */, {\n errorInfo: err?.toString()\n });\n }\n}\nfunction getEndpoint({ projectId }) {\n return `${ENDPOINT}/projects/${projectId}/registrations`;\n}\nasync function getHeaders({ appConfig, installations }) {\n const authToken = await installations.getToken();\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}\nfunction getBody({ p256dh, auth, endpoint, vapidKey }) {\n const body = {\n web: {\n endpoint,\n auth,\n p256dh\n }\n };\n if (vapidKey !== DEFAULT_VAPID_KEY) {\n body.web.applicationPubKey = vapidKey;\n }\n return body;\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// UpdateRegistration will be called once every week.\nconst TOKEN_EXPIRATION_MS = 7 * 24 * 60 * 60 * 1000; // 7 days\nasync function getTokenInternal(messaging) {\n const pushSubscription = await getPushSubscription(messaging.swRegistration, messaging.vapidKey);\n const 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 const tokenDetails = await dbGet(messaging.firebaseDependencies);\n if (!tokenDetails) {\n // No token, get a new one.\n return getNewToken(messaging.firebaseDependencies, subscriptionOptions);\n }\n else if (!isTokenValid(tokenDetails.subscriptionOptions, subscriptionOptions)) {\n // Invalid token, get a new one.\n try {\n await requestDeleteToken(messaging.firebaseDependencies, tokenDetails.token);\n }\n catch (e) {\n // Suppress errors because of #2364\n console.warn(e);\n }\n return getNewToken(messaging.firebaseDependencies, subscriptionOptions);\n }\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 }\n else {\n // Valid token, nothing to do.\n return tokenDetails.token;\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 */\nasync function deleteTokenInternal(messaging) {\n const tokenDetails = await dbGet(messaging.firebaseDependencies);\n if (tokenDetails) {\n await requestDeleteToken(messaging.firebaseDependencies, tokenDetails.token);\n await dbRemove(messaging.firebaseDependencies);\n }\n // Unsubscribe from the push subscription.\n const pushSubscription = await messaging.swRegistration.pushManager.getSubscription();\n if (pushSubscription) {\n return pushSubscription.unsubscribe();\n }\n // If there's no SW, consider it a success.\n return true;\n}\nasync function updateToken(messaging, tokenDetails) {\n try {\n const updatedToken = await requestUpdateToken(messaging.firebaseDependencies, tokenDetails);\n const updatedTokenDetails = {\n ...tokenDetails,\n token: updatedToken,\n createTime: Date.now()\n };\n await dbSet(messaging.firebaseDependencies, updatedTokenDetails);\n return updatedToken;\n }\n catch (e) {\n throw e;\n }\n}\nasync function getNewToken(firebaseDependencies, subscriptionOptions) {\n const token = await requestGetToken(firebaseDependencies, subscriptionOptions);\n const tokenDetails = {\n token,\n createTime: Date.now(),\n subscriptionOptions\n };\n await dbSet(firebaseDependencies, tokenDetails);\n return tokenDetails.token;\n}\n/**\n * Gets a PushSubscription for the current user.\n */\nasync function getPushSubscription(swRegistration, vapidKey) {\n const subscription = await swRegistration.pushManager.getSubscription();\n if (subscription) {\n return subscription;\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 * Checks if the saved tokenDetails object matches the configuration provided.\n */\nfunction isTokenValid(dbOptions, currentOptions) {\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 return isVapidKeyEqual && isEndpointEqual && isAuthEqual && isP256dhEqual;\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 */\nfunction externalizePayload(internalPayload) {\n const payload = {\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 };\n propagateNotificationPayload(payload, internalPayload);\n propagateDataPayload(payload, internalPayload);\n propagateFcmOptions(payload, internalPayload);\n return payload;\n}\nfunction propagateNotificationPayload(payload, messagePayloadInternal) {\n if (!messagePayloadInternal.notification) {\n return;\n }\n payload.notification = {};\n const title = messagePayloadInternal.notification.title;\n if (!!title) {\n payload.notification.title = title;\n }\n const body = messagePayloadInternal.notification.body;\n if (!!body) {\n payload.notification.body = body;\n }\n const image = messagePayloadInternal.notification.image;\n if (!!image) {\n payload.notification.image = image;\n }\n const icon = messagePayloadInternal.notification.icon;\n if (!!icon) {\n payload.notification.icon = icon;\n }\n}\nfunction propagateDataPayload(payload, messagePayloadInternal) {\n if (!messagePayloadInternal.data) {\n return;\n }\n payload.data = messagePayloadInternal.data;\n}\nfunction propagateFcmOptions(payload, messagePayloadInternal) {\n // fcmOptions.link value is written into notification.click_action. see more in b/232072111\n if (!messagePayloadInternal.fcmOptions &&\n !messagePayloadInternal.notification?.click_action) {\n return;\n }\n payload.fcmOptions = {};\n const link = messagePayloadInternal.fcmOptions?.link ??\n messagePayloadInternal.notification?.click_action;\n if (!!link) {\n payload.fcmOptions.link = link;\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/**\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 */\nfunction isConsoleMessage(data) {\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/**\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_mergeStrings('AzSCbw63g1R0nCw85jG8', 'Iaya3yLKwmgvh7cF0q4');\nfunction _mergeStrings(s1, s2) {\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 return resultArray.join('');\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 */\nfunction extractAppConfig(app) {\n if (!app || !app.options) {\n throw getMissingValueError('App Configuration Object');\n }\n if (!app.name) {\n throw getMissingValueError('App Name');\n }\n // Required app config keys\n const configKeys = [\n 'projectId',\n 'apiKey',\n 'appId',\n 'messagingSenderId'\n ];\n const { options } = app;\n for (const keyName of configKeys) {\n if (!options[keyName]) {\n throw getMissingValueError(keyName);\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}\nfunction getMissingValueError(valueName) {\n return ERROR_FACTORY.create(\"missing-app-config-values\" /* ErrorCode.MISSING_APP_CONFIG_VALUES */, {\n valueName\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 */\nclass MessagingService {\n constructor(app, installations, analyticsProvider) {\n // logging is only done with end user consent. Default to false.\n this.deliveryMetricsExportedToBigQueryEnabled = false;\n this.onBackgroundMessageHandler = null;\n this.onMessageHandler = null;\n this.logEvents = [];\n this.isLogServiceStarted = false;\n const appConfig = extractAppConfig(app);\n this.firebaseDependencies = {\n app,\n appConfig,\n installations,\n analyticsProvider\n };\n }\n _delete() {\n return Promise.resolve();\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 */\nasync function registerDefaultSw(messaging) {\n try {\n messaging.swRegistration = await navigator.serviceWorker.register(DEFAULT_SW_PATH, {\n scope: DEFAULT_SW_SCOPE\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 await waitForRegistrationActive(messaging.swRegistration);\n }\n catch (e) {\n throw ERROR_FACTORY.create(\"failed-service-worker-registration\" /* ErrorCode.FAILED_DEFAULT_REGISTRATION */, {\n browserErrorMessage: e?.message\n });\n }\n}\n/**\n * Waits for registration to become active. MDN documentation claims that\n * a service worker registration should be ready to use after awaiting\n * navigator.serviceWorker.register() but that doesn't seem to be the case in\n * practice, causing the SDK to throw errors when calling\n * swRegistration.pushManager.subscribe() too soon after register(). The only\n * solution seems to be waiting for the service worker registration `state`\n * to become \"active\".\n */\nasync function waitForRegistrationActive(registration) {\n return new Promise((resolve, reject) => {\n const rejectTimeout = setTimeout(() => reject(new Error(`Service worker not registered after ${DEFAULT_REGISTRATION_TIMEOUT} ms`)), DEFAULT_REGISTRATION_TIMEOUT);\n const incomingSw = registration.installing || registration.waiting;\n if (registration.active) {\n clearTimeout(rejectTimeout);\n resolve();\n }\n else if (incomingSw) {\n incomingSw.onstatechange = ev => {\n if (ev.target?.state === 'activated') {\n incomingSw.onstatechange = null;\n clearTimeout(rejectTimeout);\n resolve();\n }\n };\n }\n else {\n clearTimeout(rejectTimeout);\n reject(new Error('No incoming service worker found.'));\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 */\nasync function updateSwReg(messaging, swRegistration) {\n if (!swRegistration && !messaging.swRegistration) {\n await registerDefaultSw(messaging);\n }\n if (!swRegistration && !!messaging.swRegistration) {\n return;\n }\n if (!(swRegistration instanceof ServiceWorkerRegistration)) {\n throw ERROR_FACTORY.create(\"invalid-sw-registration\" /* ErrorCode.INVALID_SW_REGISTRATION */);\n }\n messaging.swRegistration = swRegistration;\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 */\nasync function updateVapidKey(messaging, vapidKey) {\n if (!!vapidKey) {\n messaging.vapidKey = vapidKey;\n }\n else if (!messaging.vapidKey) {\n messaging.vapidKey = DEFAULT_VAPID_KEY;\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 */\nasync function getToken$1(messaging, options) {\n if (!navigator) {\n throw ERROR_FACTORY.create(\"only-available-in-window\" /* ErrorCode.AVAILABLE_IN_WINDOW */);\n }\n if (Notification.permission === 'default') {\n await Notification.requestPermission();\n }\n if (Notification.permission !== 'granted') {\n throw ERROR_FACTORY.create(\"permission-blocked\" /* ErrorCode.PERMISSION_BLOCKED */);\n }\n await updateVapidKey(messaging, options?.vapidKey);\n await updateSwReg(messaging, options?.serviceWorkerRegistration);\n return getTokenInternal(messaging);\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 */\nasync function logToScion(messaging, messageType, data) {\n const eventType = getEventType(messageType);\n const analytics = 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}\nfunction getEventType(messageType) {\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/**\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 */\nasync function messageEventListener(messaging, event) {\n const internalPayload = event.data;\n if (!internalPayload.isFirebaseMessaging) {\n return;\n }\n if (messaging.onMessageHandler &&\n internalPayload.messageType === MessageType.PUSH_RECEIVED) {\n if (typeof messaging.onMessageHandler === 'function') {\n messaging.onMessageHandler(externalizePayload(internalPayload));\n }\n else {\n messaging.onMessageHandler.next(externalizePayload(internalPayload));\n }\n }\n // Log to Scion if applicable\n const dataPayload = internalPayload.data;\n if (isConsoleMessage(dataPayload) &&\n dataPayload[CONSOLE_CAMPAIGN_ANALYTICS_ENABLED] === '1') {\n await logToScion(messaging, internalPayload.messageType, dataPayload);\n }\n}\n\nconst name = \"@firebase/messaging\";\nconst version = \"0.12.23\";\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 */\nconst WindowMessagingFactory = (container) => {\n const messaging = new MessagingService(container.getProvider('app').getImmediate(), container.getProvider('installations-internal').getImmediate(), container.getProvider('analytics-internal'));\n navigator.serviceWorker.addEventListener('message', e => messageEventListener(messaging, e));\n return messaging;\n};\nconst WindowMessagingInternalFactory = (container) => {\n const messaging = container\n .getProvider('messaging')\n .getImmediate();\n const messagingInternal = {\n getToken: (options) => getToken$1(messaging, options)\n };\n return messagingInternal;\n};\nfunction registerMessagingInWindow() {\n _registerComponent(new Component('messaging', WindowMessagingFactory, \"PUBLIC\" /* ComponentType.PUBLIC */));\n _registerComponent(new Component('messaging-internal', WindowMessagingInternalFactory, \"PRIVATE\" /* ComponentType.PRIVATE */));\n registerVersion(name, version);\n // BUILD_TARGET will be replaced by values like esm, cjs, etc during the compilation\n registerVersion(name, version, 'esm2020');\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 * Checks if all required APIs exist in the browser.\n * @returns a Promise that resolves to a boolean.\n *\n * @public\n */\nasync function isWindowSupported() {\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 }\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 (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 * @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 */\nasync function deleteToken$1(messaging) {\n if (!navigator) {\n throw ERROR_FACTORY.create(\"only-available-in-window\" /* ErrorCode.AVAILABLE_IN_WINDOW */);\n }\n if (!messaging.swRegistration) {\n await registerDefaultSw(messaging);\n }\n return deleteTokenInternal(messaging);\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 */\nfunction onMessage$1(messaging, nextOrObserver) {\n if (!navigator) {\n throw ERROR_FACTORY.create(\"only-available-in-window\" /* ErrorCode.AVAILABLE_IN_WINDOW */);\n }\n messaging.onMessageHandler = nextOrObserver;\n return () => {\n messaging.onMessageHandler = null;\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/**\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 */\nfunction getMessagingInWindow(app = getApp()) {\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(isSupported => {\n // If `isWindowSupported()` resolved, but returned false.\n if (!isSupported) {\n throw ERROR_FACTORY.create(\"unsupported-browser\" /* ErrorCode.UNSUPPORTED_BROWSER */);\n }\n }, _ => {\n // If `isWindowSupported()` rejected.\n throw ERROR_FACTORY.create(\"indexed-db-unsupported\" /* ErrorCode.INDEXED_DB_UNSUPPORTED */);\n });\n return _getProvider(getModularInstance(app), 'messaging').getImmediate();\n}\n/**\n * Subscribes the {@link Messaging} instance to push notifications. Returns a Firebase Cloud\n * Messaging registration token that can be used to send push messages to that {@link Messaging}\n * instance.\n *\n * If 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 optional service worker registration.\n *\n * @returns The promise resolves with an FCM registration token.\n *\n * @public\n */\nasync function getToken(messaging, options) {\n messaging = getModularInstance(messaging);\n return getToken$1(messaging, options);\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 */\nfunction deleteToken(messaging) {\n messaging = getModularInstance(messaging);\n return deleteToken$1(messaging);\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 */\nfunction onMessage(messaging, nextOrObserver) {\n messaging = getModularInstance(messaging);\n return onMessage$1(messaging, nextOrObserver);\n}\n\n/**\n * The Firebase Cloud Messaging Web SDK.\n * This SDK does not work in a Node.js environment.\n *\n * @packageDocumentation\n */\nregisterMessagingInWindow();\n\nexport { deleteToken, getMessagingInWindow as getMessaging, getToken, isWindowSupported as isSupported, onMessage };\n//# sourceMappingURL=index.esm.js.map\n","import { initializeApp } from \"firebase/app\";\r\nimport { getMessaging, Messaging } from \"firebase/messaging\";\r\n\r\n// Your web app's Firebase configuration\r\nconst firebaseConfig = {\r\n apiKey: process.env.REACT_APP_FIREBASE_API_KEY,\r\n authDomain: process.env.REACT_APP_FIREBASE_AUTH_DOMAIN,\r\n projectId: process.env.REACT_APP_FIREBASE_PROJECT_ID,\r\n storageBucket: process.env.REACT_APP_FIREBASE_STORAGE_BUCKET,\r\n messagingSenderId: process.env.REACT_APP_FIREBASE_MESSAGING_SENDER_ID,\r\n appId: process.env.REACT_APP_FIREBASE_APP_ID,\r\n};\r\n\r\n// Initialize Firebase\r\nconst app = initializeApp(firebaseConfig);\r\n\r\nconst messaging: Messaging = getMessaging(app);\r\n\r\nexport { messaging };\r\n","const PACKET_TYPES = Object.create(null); // no Map = no polyfill\nPACKET_TYPES[\"open\"] = \"0\";\nPACKET_TYPES[\"close\"] = \"1\";\nPACKET_TYPES[\"ping\"] = \"2\";\nPACKET_TYPES[\"pong\"] = \"3\";\nPACKET_TYPES[\"message\"] = \"4\";\nPACKET_TYPES[\"upgrade\"] = \"5\";\nPACKET_TYPES[\"noop\"] = \"6\";\nconst PACKET_TYPES_REVERSE = Object.create(null);\nObject.keys(PACKET_TYPES).forEach((key) => {\n PACKET_TYPES_REVERSE[PACKET_TYPES[key]] = key;\n});\nconst ERROR_PACKET = { type: \"error\", data: \"parser error\" };\nexport { PACKET_TYPES, PACKET_TYPES_REVERSE, ERROR_PACKET };\n","import { PACKET_TYPES } from \"./commons.js\";\nconst withNativeBlob = typeof Blob === \"function\" ||\n (typeof Blob !== \"undefined\" &&\n Object.prototype.toString.call(Blob) === \"[object BlobConstructor]\");\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\n// ArrayBuffer.isView method is not defined in IE10\nconst isView = (obj) => {\n return typeof ArrayBuffer.isView === \"function\"\n ? ArrayBuffer.isView(obj)\n : obj && obj.buffer instanceof ArrayBuffer;\n};\nconst encodePacket = ({ type, data }, supportsBinary, callback) => {\n if (withNativeBlob && data instanceof Blob) {\n if (supportsBinary) {\n return callback(data);\n }\n else {\n return encodeBlobAsBase64(data, callback);\n }\n }\n else if (withNativeArrayBuffer &&\n (data instanceof ArrayBuffer || isView(data))) {\n if (supportsBinary) {\n return callback(data);\n }\n else {\n return encodeBlobAsBase64(new Blob([data]), callback);\n }\n }\n // plain string\n return callback(PACKET_TYPES[type] + (data || \"\"));\n};\nconst encodeBlobAsBase64 = (data, callback) => {\n const fileReader = new FileReader();\n fileReader.onload = function () {\n const content = fileReader.result.split(\",\")[1];\n callback(\"b\" + (content || \"\"));\n };\n return fileReader.readAsDataURL(data);\n};\nfunction toArray(data) {\n if (data instanceof Uint8Array) {\n return data;\n }\n else if (data instanceof ArrayBuffer) {\n return new Uint8Array(data);\n }\n else {\n return new Uint8Array(data.buffer, data.byteOffset, data.byteLength);\n }\n}\nlet TEXT_ENCODER;\nexport function encodePacketToBinary(packet, callback) {\n if (withNativeBlob && packet.data instanceof Blob) {\n return packet.data.arrayBuffer().then(toArray).then(callback);\n }\n else if (withNativeArrayBuffer &&\n (packet.data instanceof ArrayBuffer || isView(packet.data))) {\n return callback(toArray(packet.data));\n }\n encodePacket(packet, false, (encoded) => {\n if (!TEXT_ENCODER) {\n TEXT_ENCODER = new TextEncoder();\n }\n callback(TEXT_ENCODER.encode(encoded));\n });\n}\nexport { encodePacket };\n","// imported from https://github.com/socketio/base64-arraybuffer\nconst chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\nexport const encode = (arraybuffer) => {\n let bytes = new Uint8Array(arraybuffer), i, len = bytes.length, base64 = '';\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n }\n else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n return base64;\n};\nexport const decode = (base64) => {\n let bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n const arraybuffer = new ArrayBuffer(bufferLength), bytes = new Uint8Array(arraybuffer);\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n return arraybuffer;\n};\n","import { ERROR_PACKET, PACKET_TYPES_REVERSE, } from \"./commons.js\";\nimport { decode } from \"./contrib/base64-arraybuffer.js\";\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\nexport const decodePacket = (encodedPacket, binaryType) => {\n if (typeof encodedPacket !== \"string\") {\n return {\n type: \"message\",\n data: mapBinary(encodedPacket, binaryType),\n };\n }\n const type = encodedPacket.charAt(0);\n if (type === \"b\") {\n return {\n type: \"message\",\n data: decodeBase64Packet(encodedPacket.substring(1), binaryType),\n };\n }\n const packetType = PACKET_TYPES_REVERSE[type];\n if (!packetType) {\n return ERROR_PACKET;\n }\n return encodedPacket.length > 1\n ? {\n type: PACKET_TYPES_REVERSE[type],\n data: encodedPacket.substring(1),\n }\n : {\n type: PACKET_TYPES_REVERSE[type],\n };\n};\nconst decodeBase64Packet = (data, binaryType) => {\n if (withNativeArrayBuffer) {\n const decoded = decode(data);\n return mapBinary(decoded, binaryType);\n }\n else {\n return { base64: true, data }; // fallback for old browsers\n }\n};\nconst mapBinary = (data, binaryType) => {\n switch (binaryType) {\n case \"blob\":\n if (data instanceof Blob) {\n // from WebSocket + binaryType \"blob\"\n return data;\n }\n else {\n // from HTTP long-polling or WebTransport\n return new Blob([data]);\n }\n case \"arraybuffer\":\n default:\n if (data instanceof ArrayBuffer) {\n // from HTTP long-polling (base64) or WebSocket + binaryType \"arraybuffer\"\n return data;\n }\n else {\n // from WebTransport (Uint8Array)\n return data.buffer;\n }\n }\n};\n","import { encodePacket, encodePacketToBinary } from \"./encodePacket.js\";\nimport { decodePacket } from \"./decodePacket.js\";\nimport { ERROR_PACKET, } from \"./commons.js\";\nconst SEPARATOR = String.fromCharCode(30); // see https://en.wikipedia.org/wiki/Delimiter#ASCII_delimited_text\nconst encodePayload = (packets, callback) => {\n // some packets may be added to the array while encoding, so the initial length must be saved\n const length = packets.length;\n const encodedPackets = new Array(length);\n let count = 0;\n packets.forEach((packet, i) => {\n // force base64 encoding for binary packets\n encodePacket(packet, false, (encodedPacket) => {\n encodedPackets[i] = encodedPacket;\n if (++count === length) {\n callback(encodedPackets.join(SEPARATOR));\n }\n });\n });\n};\nconst decodePayload = (encodedPayload, binaryType) => {\n const encodedPackets = encodedPayload.split(SEPARATOR);\n const packets = [];\n for (let i = 0; i < encodedPackets.length; i++) {\n const decodedPacket = decodePacket(encodedPackets[i], binaryType);\n packets.push(decodedPacket);\n if (decodedPacket.type === \"error\") {\n break;\n }\n }\n return packets;\n};\nexport function createPacketEncoderStream() {\n return new TransformStream({\n transform(packet, controller) {\n encodePacketToBinary(packet, (encodedPacket) => {\n const payloadLength = encodedPacket.length;\n let header;\n // inspired by the WebSocket format: https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API/Writing_WebSocket_servers#decoding_payload_length\n if (payloadLength < 126) {\n header = new Uint8Array(1);\n new DataView(header.buffer).setUint8(0, payloadLength);\n }\n else if (payloadLength < 65536) {\n header = new Uint8Array(3);\n const view = new DataView(header.buffer);\n view.setUint8(0, 126);\n view.setUint16(1, payloadLength);\n }\n else {\n header = new Uint8Array(9);\n const view = new DataView(header.buffer);\n view.setUint8(0, 127);\n view.setBigUint64(1, BigInt(payloadLength));\n }\n // first bit indicates whether the payload is plain text (0) or binary (1)\n if (packet.data && typeof packet.data !== \"string\") {\n header[0] |= 0x80;\n }\n controller.enqueue(header);\n controller.enqueue(encodedPacket);\n });\n },\n });\n}\nlet TEXT_DECODER;\nfunction totalLength(chunks) {\n return chunks.reduce((acc, chunk) => acc + chunk.length, 0);\n}\nfunction concatChunks(chunks, size) {\n if (chunks[0].length === size) {\n return chunks.shift();\n }\n const buffer = new Uint8Array(size);\n let j = 0;\n for (let i = 0; i < size; i++) {\n buffer[i] = chunks[0][j++];\n if (j === chunks[0].length) {\n chunks.shift();\n j = 0;\n }\n }\n if (chunks.length && j < chunks[0].length) {\n chunks[0] = chunks[0].slice(j);\n }\n return buffer;\n}\nexport function createPacketDecoderStream(maxPayload, binaryType) {\n if (!TEXT_DECODER) {\n TEXT_DECODER = new TextDecoder();\n }\n const chunks = [];\n let state = 0 /* State.READ_HEADER */;\n let expectedLength = -1;\n let isBinary = false;\n return new TransformStream({\n transform(chunk, controller) {\n chunks.push(chunk);\n while (true) {\n if (state === 0 /* State.READ_HEADER */) {\n if (totalLength(chunks) < 1) {\n break;\n }\n const header = concatChunks(chunks, 1);\n isBinary = (header[0] & 0x80) === 0x80;\n expectedLength = header[0] & 0x7f;\n if (expectedLength < 126) {\n state = 3 /* State.READ_PAYLOAD */;\n }\n else if (expectedLength === 126) {\n state = 1 /* State.READ_EXTENDED_LENGTH_16 */;\n }\n else {\n state = 2 /* State.READ_EXTENDED_LENGTH_64 */;\n }\n }\n else if (state === 1 /* State.READ_EXTENDED_LENGTH_16 */) {\n if (totalLength(chunks) < 2) {\n break;\n }\n const headerArray = concatChunks(chunks, 2);\n expectedLength = new DataView(headerArray.buffer, headerArray.byteOffset, headerArray.length).getUint16(0);\n state = 3 /* State.READ_PAYLOAD */;\n }\n else if (state === 2 /* State.READ_EXTENDED_LENGTH_64 */) {\n if (totalLength(chunks) < 8) {\n break;\n }\n const headerArray = concatChunks(chunks, 8);\n const view = new DataView(headerArray.buffer, headerArray.byteOffset, headerArray.length);\n const n = view.getUint32(0);\n if (n > Math.pow(2, 53 - 32) - 1) {\n // the maximum safe integer in JavaScript is 2^53 - 1\n controller.enqueue(ERROR_PACKET);\n break;\n }\n expectedLength = n * Math.pow(2, 32) + view.getUint32(4);\n state = 3 /* State.READ_PAYLOAD */;\n }\n else {\n if (totalLength(chunks) < expectedLength) {\n break;\n }\n const data = concatChunks(chunks, expectedLength);\n controller.enqueue(decodePacket(isBinary ? data : TEXT_DECODER.decode(data), binaryType));\n state = 0 /* State.READ_HEADER */;\n }\n if (expectedLength === 0 || expectedLength > maxPayload) {\n controller.enqueue(ERROR_PACKET);\n break;\n }\n }\n },\n });\n}\nexport const protocol = 4;\nexport { encodePacket, encodePayload, decodePacket, decodePayload, };\n","/**\n * Initialize a new `Emitter`.\n *\n * @api public\n */\n\nexport function Emitter(obj) {\n if (obj) return mixin(obj);\n}\n\n/**\n * Mixin the emitter properties.\n *\n * @param {Object} obj\n * @return {Object}\n * @api private\n */\n\nfunction mixin(obj) {\n for (var key in Emitter.prototype) {\n obj[key] = Emitter.prototype[key];\n }\n return obj;\n}\n\n/**\n * Listen on the given `event` with `fn`.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.on =\nEmitter.prototype.addEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\n .push(fn);\n return this;\n};\n\n/**\n * Adds an `event` listener that will be invoked a single\n * time then automatically removed.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.once = function(event, fn){\n function on() {\n this.off(event, on);\n fn.apply(this, arguments);\n }\n\n on.fn = fn;\n this.on(event, on);\n return this;\n};\n\n/**\n * Remove the given callback for `event` or all\n * registered callbacks.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.off =\nEmitter.prototype.removeListener =\nEmitter.prototype.removeAllListeners =\nEmitter.prototype.removeEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n\n // all\n if (0 == arguments.length) {\n this._callbacks = {};\n return this;\n }\n\n // specific event\n var callbacks = this._callbacks['$' + event];\n if (!callbacks) return this;\n\n // remove all handlers\n if (1 == arguments.length) {\n delete this._callbacks['$' + event];\n return this;\n }\n\n // remove specific handler\n var cb;\n for (var i = 0; i < callbacks.length; i++) {\n cb = callbacks[i];\n if (cb === fn || cb.fn === fn) {\n callbacks.splice(i, 1);\n break;\n }\n }\n\n // Remove event specific arrays for event types that no\n // one is subscribed for to avoid memory leak.\n if (callbacks.length === 0) {\n delete this._callbacks['$' + event];\n }\n\n return this;\n};\n\n/**\n * Emit `event` with the given args.\n *\n * @param {String} event\n * @param {Mixed} ...\n * @return {Emitter}\n */\n\nEmitter.prototype.emit = function(event){\n this._callbacks = this._callbacks || {};\n\n var args = new Array(arguments.length - 1)\n , callbacks = this._callbacks['$' + event];\n\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n\n if (callbacks) {\n callbacks = callbacks.slice(0);\n for (var i = 0, len = callbacks.length; i < len; ++i) {\n callbacks[i].apply(this, args);\n }\n }\n\n return this;\n};\n\n// alias used for reserved events (protected method)\nEmitter.prototype.emitReserved = Emitter.prototype.emit;\n\n/**\n * Return array of callbacks for `event`.\n *\n * @param {String} event\n * @return {Array}\n * @api public\n */\n\nEmitter.prototype.listeners = function(event){\n this._callbacks = this._callbacks || {};\n return this._callbacks['$' + event] || [];\n};\n\n/**\n * Check if this emitter has `event` handlers.\n *\n * @param {String} event\n * @return {Boolean}\n * @api public\n */\n\nEmitter.prototype.hasListeners = function(event){\n return !! this.listeners(event).length;\n};\n","export const nextTick = (() => {\n const isPromiseAvailable = typeof Promise === \"function\" && typeof Promise.resolve === \"function\";\n if (isPromiseAvailable) {\n return (cb) => Promise.resolve().then(cb);\n }\n else {\n return (cb, setTimeoutFn) => setTimeoutFn(cb, 0);\n }\n})();\nexport const globalThisShim = (() => {\n if (typeof self !== \"undefined\") {\n return self;\n }\n else if (typeof window !== \"undefined\") {\n return window;\n }\n else {\n return Function(\"return this\")();\n }\n})();\nexport const defaultBinaryType = \"arraybuffer\";\nexport function createCookieJar() { }\n","import { globalThisShim as globalThis } from \"./globals.node.js\";\nexport function pick(obj, ...attr) {\n return attr.reduce((acc, k) => {\n if (obj.hasOwnProperty(k)) {\n acc[k] = obj[k];\n }\n return acc;\n }, {});\n}\n// Keep a reference to the real timeout functions so they can be used when overridden\nconst NATIVE_SET_TIMEOUT = globalThis.setTimeout;\nconst NATIVE_CLEAR_TIMEOUT = globalThis.clearTimeout;\nexport function installTimerFunctions(obj, opts) {\n if (opts.useNativeTimers) {\n obj.setTimeoutFn = NATIVE_SET_TIMEOUT.bind(globalThis);\n obj.clearTimeoutFn = NATIVE_CLEAR_TIMEOUT.bind(globalThis);\n }\n else {\n obj.setTimeoutFn = globalThis.setTimeout.bind(globalThis);\n obj.clearTimeoutFn = globalThis.clearTimeout.bind(globalThis);\n }\n}\n// base64 encoded buffers are about 33% bigger (https://en.wikipedia.org/wiki/Base64)\nconst BASE64_OVERHEAD = 1.33;\n// we could also have used `new Blob([obj]).size`, but it isn't supported in IE9\nexport function byteLength(obj) {\n if (typeof obj === \"string\") {\n return utf8Length(obj);\n }\n // arraybuffer or blob\n return Math.ceil((obj.byteLength || obj.size) * BASE64_OVERHEAD);\n}\nfunction utf8Length(str) {\n let c = 0, length = 0;\n for (let i = 0, l = str.length; i < l; i++) {\n c = str.charCodeAt(i);\n if (c < 0x80) {\n length += 1;\n }\n else if (c < 0x800) {\n length += 2;\n }\n else if (c < 0xd800 || c >= 0xe000) {\n length += 3;\n }\n else {\n i++;\n length += 4;\n }\n }\n return length;\n}\n/**\n * Generates a random 8-characters string.\n */\nexport function randomString() {\n return (Date.now().toString(36).substring(3) +\n Math.random().toString(36).substring(2, 5));\n}\n","// imported from https://github.com/galkn/querystring\n/**\n * Compiles a querystring\n * Returns string representation of the object\n *\n * @param {Object}\n * @api private\n */\nexport function encode(obj) {\n let str = '';\n for (let i in obj) {\n if (obj.hasOwnProperty(i)) {\n if (str.length)\n str += '&';\n str += encodeURIComponent(i) + '=' + encodeURIComponent(obj[i]);\n }\n }\n return str;\n}\n/**\n * Parses a simple querystring into an object\n *\n * @param {String} qs\n * @api private\n */\nexport function decode(qs) {\n let qry = {};\n let pairs = qs.split('&');\n for (let i = 0, l = pairs.length; i < l; i++) {\n let pair = pairs[i].split('=');\n qry[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\n }\n return qry;\n}\n","import { decodePacket } from \"engine.io-parser\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { installTimerFunctions } from \"./util.js\";\nimport { encode } from \"./contrib/parseqs.js\";\nexport class TransportError extends Error {\n constructor(reason, description, context) {\n super(reason);\n this.description = description;\n this.context = context;\n this.type = \"TransportError\";\n }\n}\nexport class Transport extends Emitter {\n /**\n * Transport abstract constructor.\n *\n * @param {Object} opts - options\n * @protected\n */\n constructor(opts) {\n super();\n this.writable = false;\n installTimerFunctions(this, opts);\n this.opts = opts;\n this.query = opts.query;\n this.socket = opts.socket;\n this.supportsBinary = !opts.forceBase64;\n }\n /**\n * Emits an error.\n *\n * @param {String} reason\n * @param description\n * @param context - the error context\n * @return {Transport} for chaining\n * @protected\n */\n onError(reason, description, context) {\n super.emitReserved(\"error\", new TransportError(reason, description, context));\n return this;\n }\n /**\n * Opens the transport.\n */\n open() {\n this.readyState = \"opening\";\n this.doOpen();\n return this;\n }\n /**\n * Closes the transport.\n */\n close() {\n if (this.readyState === \"opening\" || this.readyState === \"open\") {\n this.doClose();\n this.onClose();\n }\n return this;\n }\n /**\n * Sends multiple packets.\n *\n * @param {Array} packets\n */\n send(packets) {\n if (this.readyState === \"open\") {\n this.write(packets);\n }\n else {\n // this might happen if the transport was silently closed in the beforeunload event handler\n }\n }\n /**\n * Called upon open\n *\n * @protected\n */\n onOpen() {\n this.readyState = \"open\";\n this.writable = true;\n super.emitReserved(\"open\");\n }\n /**\n * Called with data.\n *\n * @param {String} data\n * @protected\n */\n onData(data) {\n const packet = decodePacket(data, this.socket.binaryType);\n this.onPacket(packet);\n }\n /**\n * Called with a decoded packet.\n *\n * @protected\n */\n onPacket(packet) {\n super.emitReserved(\"packet\", packet);\n }\n /**\n * Called upon close.\n *\n * @protected\n */\n onClose(details) {\n this.readyState = \"closed\";\n super.emitReserved(\"close\", details);\n }\n /**\n * Pauses the transport, in order not to lose packets during an upgrade.\n *\n * @param onPause\n */\n pause(onPause) { }\n createUri(schema, query = {}) {\n return (schema +\n \"://\" +\n this._hostname() +\n this._port() +\n this.opts.path +\n this._query(query));\n }\n _hostname() {\n const hostname = this.opts.hostname;\n return hostname.indexOf(\":\") === -1 ? hostname : \"[\" + hostname + \"]\";\n }\n _port() {\n if (this.opts.port &&\n ((this.opts.secure && Number(this.opts.port !== 443)) ||\n (!this.opts.secure && Number(this.opts.port) !== 80))) {\n return \":\" + this.opts.port;\n }\n else {\n return \"\";\n }\n }\n _query(query) {\n const encodedQuery = encode(query);\n return encodedQuery.length ? \"?\" + encodedQuery : \"\";\n }\n}\n","import { Transport } from \"../transport.js\";\nimport { randomString } from \"../util.js\";\nimport { encodePayload, decodePayload } from \"engine.io-parser\";\nexport class Polling extends Transport {\n constructor() {\n super(...arguments);\n this._polling = false;\n }\n get name() {\n return \"polling\";\n }\n /**\n * Opens the socket (triggers polling). We write a PING message to determine\n * when the transport is open.\n *\n * @protected\n */\n doOpen() {\n this._poll();\n }\n /**\n * Pauses polling.\n *\n * @param {Function} onPause - callback upon buffers are flushed and transport is paused\n * @package\n */\n pause(onPause) {\n this.readyState = \"pausing\";\n const pause = () => {\n this.readyState = \"paused\";\n onPause();\n };\n if (this._polling || !this.writable) {\n let total = 0;\n if (this._polling) {\n total++;\n this.once(\"pollComplete\", function () {\n --total || pause();\n });\n }\n if (!this.writable) {\n total++;\n this.once(\"drain\", function () {\n --total || pause();\n });\n }\n }\n else {\n pause();\n }\n }\n /**\n * Starts polling cycle.\n *\n * @private\n */\n _poll() {\n this._polling = true;\n this.doPoll();\n this.emitReserved(\"poll\");\n }\n /**\n * Overloads onData to detect payloads.\n *\n * @protected\n */\n onData(data) {\n const callback = (packet) => {\n // if its the first message we consider the transport open\n if (\"opening\" === this.readyState && packet.type === \"open\") {\n this.onOpen();\n }\n // if its a close packet, we close the ongoing requests\n if (\"close\" === packet.type) {\n this.onClose({ description: \"transport closed by the server\" });\n return false;\n }\n // otherwise bypass onData and handle the message\n this.onPacket(packet);\n };\n // decode payload\n decodePayload(data, this.socket.binaryType).forEach(callback);\n // if an event did not trigger closing\n if (\"closed\" !== this.readyState) {\n // if we got data we're not polling\n this._polling = false;\n this.emitReserved(\"pollComplete\");\n if (\"open\" === this.readyState) {\n this._poll();\n }\n else {\n }\n }\n }\n /**\n * For polling, send a close packet.\n *\n * @protected\n */\n doClose() {\n const close = () => {\n this.write([{ type: \"close\" }]);\n };\n if (\"open\" === this.readyState) {\n close();\n }\n else {\n // in case we're trying to close while\n // handshaking is in progress (GH-164)\n this.once(\"open\", close);\n }\n }\n /**\n * Writes a packets payload.\n *\n * @param {Array} packets - data packets\n * @protected\n */\n write(packets) {\n this.writable = false;\n encodePayload(packets, (data) => {\n this.doWrite(data, () => {\n this.writable = true;\n this.emitReserved(\"drain\");\n });\n });\n }\n /**\n * Generates uri for connection.\n *\n * @private\n */\n uri() {\n const schema = this.opts.secure ? \"https\" : \"http\";\n const query = this.query || {};\n // cache busting is forced\n if (false !== this.opts.timestampRequests) {\n query[this.opts.timestampParam] = randomString();\n }\n if (!this.supportsBinary && !query.sid) {\n query.b64 = 1;\n }\n return this.createUri(schema, query);\n }\n}\n","// imported from https://github.com/component/has-cors\nlet value = false;\ntry {\n value = typeof XMLHttpRequest !== 'undefined' &&\n 'withCredentials' in new XMLHttpRequest();\n}\ncatch (err) {\n // if XMLHttp support is disabled in IE then it will throw\n // when trying to create\n}\nexport const hasCORS = value;\n","import { Polling } from \"./polling.js\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { installTimerFunctions, pick } from \"../util.js\";\nimport { globalThisShim as globalThis } from \"../globals.node.js\";\nimport { hasCORS } from \"../contrib/has-cors.js\";\nfunction empty() { }\nexport class BaseXHR extends Polling {\n /**\n * XHR Polling constructor.\n *\n * @param {Object} opts\n * @package\n */\n constructor(opts) {\n super(opts);\n if (typeof location !== \"undefined\") {\n const isSSL = \"https:\" === location.protocol;\n let port = location.port;\n // some user agents have empty `location.port`\n if (!port) {\n port = isSSL ? \"443\" : \"80\";\n }\n this.xd =\n (typeof location !== \"undefined\" &&\n opts.hostname !== location.hostname) ||\n port !== opts.port;\n }\n }\n /**\n * Sends data.\n *\n * @param {String} data to send.\n * @param {Function} called upon flush.\n * @private\n */\n doWrite(data, fn) {\n const req = this.request({\n method: \"POST\",\n data: data,\n });\n req.on(\"success\", fn);\n req.on(\"error\", (xhrStatus, context) => {\n this.onError(\"xhr post error\", xhrStatus, context);\n });\n }\n /**\n * Starts a poll cycle.\n *\n * @private\n */\n doPoll() {\n const req = this.request();\n req.on(\"data\", this.onData.bind(this));\n req.on(\"error\", (xhrStatus, context) => {\n this.onError(\"xhr poll error\", xhrStatus, context);\n });\n this.pollXhr = req;\n }\n}\nexport class Request extends Emitter {\n /**\n * Request constructor\n *\n * @param {Object} options\n * @package\n */\n constructor(createRequest, uri, opts) {\n super();\n this.createRequest = createRequest;\n installTimerFunctions(this, opts);\n this._opts = opts;\n this._method = opts.method || \"GET\";\n this._uri = uri;\n this._data = undefined !== opts.data ? opts.data : null;\n this._create();\n }\n /**\n * Creates the XHR object and sends the request.\n *\n * @private\n */\n _create() {\n var _a;\n const opts = pick(this._opts, \"agent\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"autoUnref\");\n opts.xdomain = !!this._opts.xd;\n const xhr = (this._xhr = this.createRequest(opts));\n try {\n xhr.open(this._method, this._uri, true);\n try {\n if (this._opts.extraHeaders) {\n // @ts-ignore\n xhr.setDisableHeaderCheck && xhr.setDisableHeaderCheck(true);\n for (let i in this._opts.extraHeaders) {\n if (this._opts.extraHeaders.hasOwnProperty(i)) {\n xhr.setRequestHeader(i, this._opts.extraHeaders[i]);\n }\n }\n }\n }\n catch (e) { }\n if (\"POST\" === this._method) {\n try {\n xhr.setRequestHeader(\"Content-type\", \"text/plain;charset=UTF-8\");\n }\n catch (e) { }\n }\n try {\n xhr.setRequestHeader(\"Accept\", \"*/*\");\n }\n catch (e) { }\n (_a = this._opts.cookieJar) === null || _a === void 0 ? void 0 : _a.addCookies(xhr);\n // ie6 check\n if (\"withCredentials\" in xhr) {\n xhr.withCredentials = this._opts.withCredentials;\n }\n if (this._opts.requestTimeout) {\n xhr.timeout = this._opts.requestTimeout;\n }\n xhr.onreadystatechange = () => {\n var _a;\n if (xhr.readyState === 3) {\n (_a = this._opts.cookieJar) === null || _a === void 0 ? void 0 : _a.parseCookies(\n // @ts-ignore\n xhr.getResponseHeader(\"set-cookie\"));\n }\n if (4 !== xhr.readyState)\n return;\n if (200 === xhr.status || 1223 === xhr.status) {\n this._onLoad();\n }\n else {\n // make sure the `error` event handler that's user-set\n // does not throw in the same tick and gets caught here\n this.setTimeoutFn(() => {\n this._onError(typeof xhr.status === \"number\" ? xhr.status : 0);\n }, 0);\n }\n };\n xhr.send(this._data);\n }\n catch (e) {\n // Need to defer since .create() is called directly from the constructor\n // and thus the 'error' event can only be only bound *after* this exception\n // occurs. Therefore, also, we cannot throw here at all.\n this.setTimeoutFn(() => {\n this._onError(e);\n }, 0);\n return;\n }\n if (typeof document !== \"undefined\") {\n this._index = Request.requestsCount++;\n Request.requests[this._index] = this;\n }\n }\n /**\n * Called upon error.\n *\n * @private\n */\n _onError(err) {\n this.emitReserved(\"error\", err, this._xhr);\n this._cleanup(true);\n }\n /**\n * Cleans up house.\n *\n * @private\n */\n _cleanup(fromError) {\n if (\"undefined\" === typeof this._xhr || null === this._xhr) {\n return;\n }\n this._xhr.onreadystatechange = empty;\n if (fromError) {\n try {\n this._xhr.abort();\n }\n catch (e) { }\n }\n if (typeof document !== \"undefined\") {\n delete Request.requests[this._index];\n }\n this._xhr = null;\n }\n /**\n * Called upon load.\n *\n * @private\n */\n _onLoad() {\n const data = this._xhr.responseText;\n if (data !== null) {\n this.emitReserved(\"data\", data);\n this.emitReserved(\"success\");\n this._cleanup();\n }\n }\n /**\n * Aborts the request.\n *\n * @package\n */\n abort() {\n this._cleanup();\n }\n}\nRequest.requestsCount = 0;\nRequest.requests = {};\n/**\n * Aborts pending requests when unloading the window. This is needed to prevent\n * memory leaks (e.g. when using IE) and to ensure that no spurious error is\n * emitted.\n */\nif (typeof document !== \"undefined\") {\n // @ts-ignore\n if (typeof attachEvent === \"function\") {\n // @ts-ignore\n attachEvent(\"onunload\", unloadHandler);\n }\n else if (typeof addEventListener === \"function\") {\n const terminationEvent = \"onpagehide\" in globalThis ? \"pagehide\" : \"unload\";\n addEventListener(terminationEvent, unloadHandler, false);\n }\n}\nfunction unloadHandler() {\n for (let i in Request.requests) {\n if (Request.requests.hasOwnProperty(i)) {\n Request.requests[i].abort();\n }\n }\n}\nconst hasXHR2 = (function () {\n const xhr = newRequest({\n xdomain: false,\n });\n return xhr && xhr.responseType !== null;\n})();\n/**\n * HTTP long-polling based on the built-in `XMLHttpRequest` object.\n *\n * Usage: browser\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest\n */\nexport class XHR extends BaseXHR {\n constructor(opts) {\n super(opts);\n const forceBase64 = opts && opts.forceBase64;\n this.supportsBinary = hasXHR2 && !forceBase64;\n }\n request(opts = {}) {\n Object.assign(opts, { xd: this.xd }, this.opts);\n return new Request(newRequest, this.uri(), opts);\n }\n}\nfunction newRequest(opts) {\n const xdomain = opts.xdomain;\n // XMLHttpRequest can be disabled on IE\n try {\n if (\"undefined\" !== typeof XMLHttpRequest && (!xdomain || hasCORS)) {\n return new XMLHttpRequest();\n }\n }\n catch (e) { }\n if (!xdomain) {\n try {\n return new globalThis[[\"Active\"].concat(\"Object\").join(\"X\")](\"Microsoft.XMLHTTP\");\n }\n catch (e) { }\n }\n}\n","import { Transport } from \"../transport.js\";\nimport { pick, randomString } from \"../util.js\";\nimport { encodePacket } from \"engine.io-parser\";\nimport { globalThisShim as globalThis, nextTick } from \"../globals.node.js\";\n// detect ReactNative environment\nconst isReactNative = typeof navigator !== \"undefined\" &&\n typeof navigator.product === \"string\" &&\n navigator.product.toLowerCase() === \"reactnative\";\nexport class BaseWS extends Transport {\n get name() {\n return \"websocket\";\n }\n doOpen() {\n const uri = this.uri();\n const protocols = this.opts.protocols;\n // React Native only supports the 'headers' option, and will print a warning if anything else is passed\n const opts = isReactNative\n ? {}\n : pick(this.opts, \"agent\", \"perMessageDeflate\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"localAddress\", \"protocolVersion\", \"origin\", \"maxPayload\", \"family\", \"checkServerIdentity\");\n if (this.opts.extraHeaders) {\n opts.headers = this.opts.extraHeaders;\n }\n try {\n this.ws = this.createSocket(uri, protocols, opts);\n }\n catch (err) {\n return this.emitReserved(\"error\", err);\n }\n this.ws.binaryType = this.socket.binaryType;\n this.addEventListeners();\n }\n /**\n * Adds event listeners to the socket\n *\n * @private\n */\n addEventListeners() {\n this.ws.onopen = () => {\n if (this.opts.autoUnref) {\n this.ws._socket.unref();\n }\n this.onOpen();\n };\n this.ws.onclose = (closeEvent) => this.onClose({\n description: \"websocket connection closed\",\n context: closeEvent,\n });\n this.ws.onmessage = (ev) => this.onData(ev.data);\n this.ws.onerror = (e) => this.onError(\"websocket error\", e);\n }\n write(packets) {\n this.writable = false;\n // encodePacket efficient as it uses WS framing\n // no need for encodePayload\n for (let i = 0; i < packets.length; i++) {\n const packet = packets[i];\n const lastPacket = i === packets.length - 1;\n encodePacket(packet, this.supportsBinary, (data) => {\n // Sometimes the websocket has already been closed but the browser didn't\n // have a chance of informing us about it yet, in that case send will\n // throw an error\n try {\n this.doWrite(packet, data);\n }\n catch (e) {\n }\n if (lastPacket) {\n // fake drain\n // defer to next tick to allow Socket to clear writeBuffer\n nextTick(() => {\n this.writable = true;\n this.emitReserved(\"drain\");\n }, this.setTimeoutFn);\n }\n });\n }\n }\n doClose() {\n if (typeof this.ws !== \"undefined\") {\n this.ws.onerror = () => { };\n this.ws.close();\n this.ws = null;\n }\n }\n /**\n * Generates uri for connection.\n *\n * @private\n */\n uri() {\n const schema = this.opts.secure ? \"wss\" : \"ws\";\n const query = this.query || {};\n // append timestamp to URI\n if (this.opts.timestampRequests) {\n query[this.opts.timestampParam] = randomString();\n }\n // communicate binary support capabilities\n if (!this.supportsBinary) {\n query.b64 = 1;\n }\n return this.createUri(schema, query);\n }\n}\nconst WebSocketCtor = globalThis.WebSocket || globalThis.MozWebSocket;\n/**\n * WebSocket transport based on the built-in `WebSocket` object.\n *\n * Usage: browser, Node.js (since v21), Deno, Bun\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket\n * @see https://caniuse.com/mdn-api_websocket\n * @see https://nodejs.org/api/globals.html#websocket\n */\nexport class WS extends BaseWS {\n createSocket(uri, protocols, opts) {\n return !isReactNative\n ? protocols\n ? new WebSocketCtor(uri, protocols)\n : new WebSocketCtor(uri)\n : new WebSocketCtor(uri, protocols, opts);\n }\n doWrite(_packet, data) {\n this.ws.send(data);\n }\n}\n","import { Transport } from \"../transport.js\";\nimport { nextTick } from \"../globals.node.js\";\nimport { createPacketDecoderStream, createPacketEncoderStream, } from \"engine.io-parser\";\n/**\n * WebTransport transport based on the built-in `WebTransport` object.\n *\n * Usage: browser, Node.js (with the `@fails-components/webtransport` package)\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/WebTransport\n * @see https://caniuse.com/webtransport\n */\nexport class WT extends Transport {\n get name() {\n return \"webtransport\";\n }\n doOpen() {\n try {\n // @ts-ignore\n this._transport = new WebTransport(this.createUri(\"https\"), this.opts.transportOptions[this.name]);\n }\n catch (err) {\n return this.emitReserved(\"error\", err);\n }\n this._transport.closed\n .then(() => {\n this.onClose();\n })\n .catch((err) => {\n this.onError(\"webtransport error\", err);\n });\n // note: we could have used async/await, but that would require some additional polyfills\n this._transport.ready.then(() => {\n this._transport.createBidirectionalStream().then((stream) => {\n const decoderStream = createPacketDecoderStream(Number.MAX_SAFE_INTEGER, this.socket.binaryType);\n const reader = stream.readable.pipeThrough(decoderStream).getReader();\n const encoderStream = createPacketEncoderStream();\n encoderStream.readable.pipeTo(stream.writable);\n this._writer = encoderStream.writable.getWriter();\n const read = () => {\n reader\n .read()\n .then(({ done, value }) => {\n if (done) {\n return;\n }\n this.onPacket(value);\n read();\n })\n .catch((err) => {\n });\n };\n read();\n const packet = { type: \"open\" };\n if (this.query.sid) {\n packet.data = `{\"sid\":\"${this.query.sid}\"}`;\n }\n this._writer.write(packet).then(() => this.onOpen());\n });\n });\n }\n write(packets) {\n this.writable = false;\n for (let i = 0; i < packets.length; i++) {\n const packet = packets[i];\n const lastPacket = i === packets.length - 1;\n this._writer.write(packet).then(() => {\n if (lastPacket) {\n nextTick(() => {\n this.writable = true;\n this.emitReserved(\"drain\");\n }, this.setTimeoutFn);\n }\n });\n }\n }\n doClose() {\n var _a;\n (_a = this._transport) === null || _a === void 0 ? void 0 : _a.close();\n }\n}\n","import { XHR } from \"./polling-xhr.node.js\";\nimport { WS } from \"./websocket.node.js\";\nimport { WT } from \"./webtransport.js\";\nexport const transports = {\n websocket: WS,\n webtransport: WT,\n polling: XHR,\n};\n","// imported from https://github.com/galkn/parseuri\n/**\n * Parses a URI\n *\n * Note: we could also have used the built-in URL object, but it isn't supported on all platforms.\n *\n * See:\n * - https://developer.mozilla.org/en-US/docs/Web/API/URL\n * - https://caniuse.com/url\n * - https://www.rfc-editor.org/rfc/rfc3986#appendix-B\n *\n * History of the parse() method:\n * - first commit: https://github.com/socketio/socket.io-client/commit/4ee1d5d94b3906a9c052b459f1a818b15f38f91c\n * - export into its own module: https://github.com/socketio/engine.io-client/commit/de2c561e4564efeb78f1bdb1ba39ef81b2822cb3\n * - reimport: https://github.com/socketio/engine.io-client/commit/df32277c3f6d622eec5ed09f493cae3f3391d242\n *\n * @author Steven Levithan <stevenlevithan.com> (MIT license)\n * @api private\n */\nconst re = /^(?:(?![^:@\\/?#]+:[^:@\\/]*@)(http|https|ws|wss):\\/\\/)?((?:(([^:@\\/?#]*)(?::([^:@\\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/;\nconst parts = [\n 'source', 'protocol', 'authority', 'userInfo', 'user', 'password', 'host', 'port', 'relative', 'path', 'directory', 'file', 'query', 'anchor'\n];\nexport function parse(str) {\n if (str.length > 8000) {\n throw \"URI too long\";\n }\n const src = str, b = str.indexOf('['), e = str.indexOf(']');\n if (b != -1 && e != -1) {\n str = str.substring(0, b) + str.substring(b, e).replace(/:/g, ';') + str.substring(e, str.length);\n }\n let m = re.exec(str || ''), uri = {}, i = 14;\n while (i--) {\n uri[parts[i]] = m[i] || '';\n }\n if (b != -1 && e != -1) {\n uri.source = src;\n uri.host = uri.host.substring(1, uri.host.length - 1).replace(/;/g, ':');\n uri.authority = uri.authority.replace('[', '').replace(']', '').replace(/;/g, ':');\n uri.ipv6uri = true;\n }\n uri.pathNames = pathNames(uri, uri['path']);\n uri.queryKey = queryKey(uri, uri['query']);\n return uri;\n}\nfunction pathNames(obj, path) {\n const regx = /\\/{2,9}/g, names = path.replace(regx, \"/\").split(\"/\");\n if (path.slice(0, 1) == '/' || path.length === 0) {\n names.splice(0, 1);\n }\n if (path.slice(-1) == '/') {\n names.splice(names.length - 1, 1);\n }\n return names;\n}\nfunction queryKey(uri, query) {\n const data = {};\n query.replace(/(?:^|&)([^&=]*)=?([^&]*)/g, function ($0, $1, $2) {\n if ($1) {\n data[$1] = $2;\n }\n });\n return data;\n}\n","import { transports as DEFAULT_TRANSPORTS } from \"./transports/index.js\";\nimport { installTimerFunctions, byteLength } from \"./util.js\";\nimport { decode } from \"./contrib/parseqs.js\";\nimport { parse } from \"./contrib/parseuri.js\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { protocol } from \"engine.io-parser\";\nimport { createCookieJar, defaultBinaryType, nextTick, } from \"./globals.node.js\";\nconst withEventListeners = typeof addEventListener === \"function\" &&\n typeof removeEventListener === \"function\";\nconst OFFLINE_EVENT_LISTENERS = [];\nif (withEventListeners) {\n // within a ServiceWorker, any event handler for the 'offline' event must be added on the initial evaluation of the\n // script, so we create one single event listener here which will forward the event to the socket instances\n addEventListener(\"offline\", () => {\n OFFLINE_EVENT_LISTENERS.forEach((listener) => listener());\n }, false);\n}\n/**\n * This class provides a WebSocket-like interface to connect to an Engine.IO server. The connection will be established\n * with one of the available low-level transports, like HTTP long-polling, WebSocket or WebTransport.\n *\n * This class comes without upgrade mechanism, which means that it will keep the first low-level transport that\n * successfully establishes the connection.\n *\n * In order to allow tree-shaking, there are no transports included, that's why the `transports` option is mandatory.\n *\n * @example\n * import { SocketWithoutUpgrade, WebSocket } from \"engine.io-client\";\n *\n * const socket = new SocketWithoutUpgrade({\n * transports: [WebSocket]\n * });\n *\n * socket.on(\"open\", () => {\n * socket.send(\"hello\");\n * });\n *\n * @see SocketWithUpgrade\n * @see Socket\n */\nexport class SocketWithoutUpgrade extends Emitter {\n /**\n * Socket constructor.\n *\n * @param {String|Object} uri - uri or options\n * @param {Object} opts - options\n */\n constructor(uri, opts) {\n super();\n this.binaryType = defaultBinaryType;\n this.writeBuffer = [];\n this._prevBufferLen = 0;\n this._pingInterval = -1;\n this._pingTimeout = -1;\n this._maxPayload = -1;\n /**\n * The expiration timestamp of the {@link _pingTimeoutTimer} object is tracked, in case the timer is throttled and the\n * callback is not fired on time. This can happen for example when a laptop is suspended or when a phone is locked.\n */\n this._pingTimeoutTime = Infinity;\n if (uri && \"object\" === typeof uri) {\n opts = uri;\n uri = null;\n }\n if (uri) {\n const parsedUri = parse(uri);\n opts.hostname = parsedUri.host;\n opts.secure =\n parsedUri.protocol === \"https\" || parsedUri.protocol === \"wss\";\n opts.port = parsedUri.port;\n if (parsedUri.query)\n opts.query = parsedUri.query;\n }\n else if (opts.host) {\n opts.hostname = parse(opts.host).host;\n }\n installTimerFunctions(this, opts);\n this.secure =\n null != opts.secure\n ? opts.secure\n : typeof location !== \"undefined\" && \"https:\" === location.protocol;\n if (opts.hostname && !opts.port) {\n // if no port is specified manually, use the protocol default\n opts.port = this.secure ? \"443\" : \"80\";\n }\n this.hostname =\n opts.hostname ||\n (typeof location !== \"undefined\" ? location.hostname : \"localhost\");\n this.port =\n opts.port ||\n (typeof location !== \"undefined\" && location.port\n ? location.port\n : this.secure\n ? \"443\"\n : \"80\");\n this.transports = [];\n this._transportsByName = {};\n opts.transports.forEach((t) => {\n const transportName = t.prototype.name;\n this.transports.push(transportName);\n this._transportsByName[transportName] = t;\n });\n this.opts = Object.assign({\n path: \"/engine.io\",\n agent: false,\n withCredentials: false,\n upgrade: true,\n timestampParam: \"t\",\n rememberUpgrade: false,\n addTrailingSlash: true,\n rejectUnauthorized: true,\n perMessageDeflate: {\n threshold: 1024,\n },\n transportOptions: {},\n closeOnBeforeunload: false,\n }, opts);\n this.opts.path =\n this.opts.path.replace(/\\/$/, \"\") +\n (this.opts.addTrailingSlash ? \"/\" : \"\");\n if (typeof this.opts.query === \"string\") {\n this.opts.query = decode(this.opts.query);\n }\n if (withEventListeners) {\n if (this.opts.closeOnBeforeunload) {\n // Firefox closes the connection when the \"beforeunload\" event is emitted but not Chrome. This event listener\n // ensures every browser behaves the same (no \"disconnect\" event at the Socket.IO level when the page is\n // closed/reloaded)\n this._beforeunloadEventListener = () => {\n if (this.transport) {\n // silently close the transport\n this.transport.removeAllListeners();\n this.transport.close();\n }\n };\n addEventListener(\"beforeunload\", this._beforeunloadEventListener, false);\n }\n if (this.hostname !== \"localhost\") {\n this._offlineEventListener = () => {\n this._onClose(\"transport close\", {\n description: \"network connection lost\",\n });\n };\n OFFLINE_EVENT_LISTENERS.push(this._offlineEventListener);\n }\n }\n if (this.opts.withCredentials) {\n this._cookieJar = createCookieJar();\n }\n this._open();\n }\n /**\n * Creates transport of the given type.\n *\n * @param {String} name - transport name\n * @return {Transport}\n * @private\n */\n createTransport(name) {\n const query = Object.assign({}, this.opts.query);\n // append engine.io protocol identifier\n query.EIO = protocol;\n // transport name\n query.transport = name;\n // session id if we already have one\n if (this.id)\n query.sid = this.id;\n const opts = Object.assign({}, this.opts, {\n query,\n socket: this,\n hostname: this.hostname,\n secure: this.secure,\n port: this.port,\n }, this.opts.transportOptions[name]);\n return new this._transportsByName[name](opts);\n }\n /**\n * Initializes transport to use and starts probe.\n *\n * @private\n */\n _open() {\n if (this.transports.length === 0) {\n // Emit error on next tick so it can be listened to\n this.setTimeoutFn(() => {\n this.emitReserved(\"error\", \"No transports available\");\n }, 0);\n return;\n }\n const transportName = this.opts.rememberUpgrade &&\n SocketWithoutUpgrade.priorWebsocketSuccess &&\n this.transports.indexOf(\"websocket\") !== -1\n ? \"websocket\"\n : this.transports[0];\n this.readyState = \"opening\";\n const transport = this.createTransport(transportName);\n transport.open();\n this.setTransport(transport);\n }\n /**\n * Sets the current transport. Disables the existing one (if any).\n *\n * @private\n */\n setTransport(transport) {\n if (this.transport) {\n this.transport.removeAllListeners();\n }\n // set up transport\n this.transport = transport;\n // set up transport listeners\n transport\n .on(\"drain\", this._onDrain.bind(this))\n .on(\"packet\", this._onPacket.bind(this))\n .on(\"error\", this._onError.bind(this))\n .on(\"close\", (reason) => this._onClose(\"transport close\", reason));\n }\n /**\n * Called when connection is deemed open.\n *\n * @private\n */\n onOpen() {\n this.readyState = \"open\";\n SocketWithoutUpgrade.priorWebsocketSuccess =\n \"websocket\" === this.transport.name;\n this.emitReserved(\"open\");\n this.flush();\n }\n /**\n * Handles a packet.\n *\n * @private\n */\n _onPacket(packet) {\n if (\"opening\" === this.readyState ||\n \"open\" === this.readyState ||\n \"closing\" === this.readyState) {\n this.emitReserved(\"packet\", packet);\n // Socket is live - any packet counts\n this.emitReserved(\"heartbeat\");\n switch (packet.type) {\n case \"open\":\n this.onHandshake(JSON.parse(packet.data));\n break;\n case \"ping\":\n this._sendPacket(\"pong\");\n this.emitReserved(\"ping\");\n this.emitReserved(\"pong\");\n this._resetPingTimeout();\n break;\n case \"error\":\n const err = new Error(\"server error\");\n // @ts-ignore\n err.code = packet.data;\n this._onError(err);\n break;\n case \"message\":\n this.emitReserved(\"data\", packet.data);\n this.emitReserved(\"message\", packet.data);\n break;\n }\n }\n else {\n }\n }\n /**\n * Called upon handshake completion.\n *\n * @param {Object} data - handshake obj\n * @private\n */\n onHandshake(data) {\n this.emitReserved(\"handshake\", data);\n this.id = data.sid;\n this.transport.query.sid = data.sid;\n this._pingInterval = data.pingInterval;\n this._pingTimeout = data.pingTimeout;\n this._maxPayload = data.maxPayload;\n this.onOpen();\n // In case open handler closes socket\n if (\"closed\" === this.readyState)\n return;\n this._resetPingTimeout();\n }\n /**\n * Sets and resets ping timeout timer based on server pings.\n *\n * @private\n */\n _resetPingTimeout() {\n this.clearTimeoutFn(this._pingTimeoutTimer);\n const delay = this._pingInterval + this._pingTimeout;\n this._pingTimeoutTime = Date.now() + delay;\n this._pingTimeoutTimer = this.setTimeoutFn(() => {\n this._onClose(\"ping timeout\");\n }, delay);\n if (this.opts.autoUnref) {\n this._pingTimeoutTimer.unref();\n }\n }\n /**\n * Called on `drain` event\n *\n * @private\n */\n _onDrain() {\n this.writeBuffer.splice(0, this._prevBufferLen);\n // setting prevBufferLen = 0 is very important\n // for example, when upgrading, upgrade packet is sent over,\n // and a nonzero prevBufferLen could cause problems on `drain`\n this._prevBufferLen = 0;\n if (0 === this.writeBuffer.length) {\n this.emitReserved(\"drain\");\n }\n else {\n this.flush();\n }\n }\n /**\n * Flush write buffers.\n *\n * @private\n */\n flush() {\n if (\"closed\" !== this.readyState &&\n this.transport.writable &&\n !this.upgrading &&\n this.writeBuffer.length) {\n const packets = this._getWritablePackets();\n this.transport.send(packets);\n // keep track of current length of writeBuffer\n // splice writeBuffer and callbackBuffer on `drain`\n this._prevBufferLen = packets.length;\n this.emitReserved(\"flush\");\n }\n }\n /**\n * Ensure the encoded size of the writeBuffer is below the maxPayload value sent by the server (only for HTTP\n * long-polling)\n *\n * @private\n */\n _getWritablePackets() {\n const shouldCheckPayloadSize = this._maxPayload &&\n this.transport.name === \"polling\" &&\n this.writeBuffer.length > 1;\n if (!shouldCheckPayloadSize) {\n return this.writeBuffer;\n }\n let payloadSize = 1; // first packet type\n for (let i = 0; i < this.writeBuffer.length; i++) {\n const data = this.writeBuffer[i].data;\n if (data) {\n payloadSize += byteLength(data);\n }\n if (i > 0 && payloadSize > this._maxPayload) {\n return this.writeBuffer.slice(0, i);\n }\n payloadSize += 2; // separator + packet type\n }\n return this.writeBuffer;\n }\n /**\n * Checks whether the heartbeat timer has expired but the socket has not yet been notified.\n *\n * Note: this method is private for now because it does not really fit the WebSocket API, but if we put it in the\n * `write()` method then the message would not be buffered by the Socket.IO client.\n *\n * @return {boolean}\n * @private\n */\n /* private */ _hasPingExpired() {\n if (!this._pingTimeoutTime)\n return true;\n const hasExpired = Date.now() > this._pingTimeoutTime;\n if (hasExpired) {\n this._pingTimeoutTime = 0;\n nextTick(() => {\n this._onClose(\"ping timeout\");\n }, this.setTimeoutFn);\n }\n return hasExpired;\n }\n /**\n * Sends a message.\n *\n * @param {String} msg - message.\n * @param {Object} options.\n * @param {Function} fn - callback function.\n * @return {Socket} for chaining.\n */\n write(msg, options, fn) {\n this._sendPacket(\"message\", msg, options, fn);\n return this;\n }\n /**\n * Sends a message. Alias of {@link Socket#write}.\n *\n * @param {String} msg - message.\n * @param {Object} options.\n * @param {Function} fn - callback function.\n * @return {Socket} for chaining.\n */\n send(msg, options, fn) {\n this._sendPacket(\"message\", msg, options, fn);\n return this;\n }\n /**\n * Sends a packet.\n *\n * @param {String} type: packet type.\n * @param {String} data.\n * @param {Object} options.\n * @param {Function} fn - callback function.\n * @private\n */\n _sendPacket(type, data, options, fn) {\n if (\"function\" === typeof data) {\n fn = data;\n data = undefined;\n }\n if (\"function\" === typeof options) {\n fn = options;\n options = null;\n }\n if (\"closing\" === this.readyState || \"closed\" === this.readyState) {\n return;\n }\n options = options || {};\n options.compress = false !== options.compress;\n const packet = {\n type: type,\n data: data,\n options: options,\n };\n this.emitReserved(\"packetCreate\", packet);\n this.writeBuffer.push(packet);\n if (fn)\n this.once(\"flush\", fn);\n this.flush();\n }\n /**\n * Closes the connection.\n */\n close() {\n const close = () => {\n this._onClose(\"forced close\");\n this.transport.close();\n };\n const cleanupAndClose = () => {\n this.off(\"upgrade\", cleanupAndClose);\n this.off(\"upgradeError\", cleanupAndClose);\n close();\n };\n const waitForUpgrade = () => {\n // wait for upgrade to finish since we can't send packets while pausing a transport\n this.once(\"upgrade\", cleanupAndClose);\n this.once(\"upgradeError\", cleanupAndClose);\n };\n if (\"opening\" === this.readyState || \"open\" === this.readyState) {\n this.readyState = \"closing\";\n if (this.writeBuffer.length) {\n this.once(\"drain\", () => {\n if (this.upgrading) {\n waitForUpgrade();\n }\n else {\n close();\n }\n });\n }\n else if (this.upgrading) {\n waitForUpgrade();\n }\n else {\n close();\n }\n }\n return this;\n }\n /**\n * Called upon transport error\n *\n * @private\n */\n _onError(err) {\n SocketWithoutUpgrade.priorWebsocketSuccess = false;\n if (this.opts.tryAllTransports &&\n this.transports.length > 1 &&\n this.readyState === \"opening\") {\n this.transports.shift();\n return this._open();\n }\n this.emitReserved(\"error\", err);\n this._onClose(\"transport error\", err);\n }\n /**\n * Called upon transport close.\n *\n * @private\n */\n _onClose(reason, description) {\n if (\"opening\" === this.readyState ||\n \"open\" === this.readyState ||\n \"closing\" === this.readyState) {\n // clear timers\n this.clearTimeoutFn(this._pingTimeoutTimer);\n // stop event from firing again for transport\n this.transport.removeAllListeners(\"close\");\n // ensure transport won't stay open\n this.transport.close();\n // ignore further transport communication\n this.transport.removeAllListeners();\n if (withEventListeners) {\n if (this._beforeunloadEventListener) {\n removeEventListener(\"beforeunload\", this._beforeunloadEventListener, false);\n }\n if (this._offlineEventListener) {\n const i = OFFLINE_EVENT_LISTENERS.indexOf(this._offlineEventListener);\n if (i !== -1) {\n OFFLINE_EVENT_LISTENERS.splice(i, 1);\n }\n }\n }\n // set ready state\n this.readyState = \"closed\";\n // clear session id\n this.id = null;\n // emit close event\n this.emitReserved(\"close\", reason, description);\n // clean buffers after, so users can still\n // grab the buffers on `close` event\n this.writeBuffer = [];\n this._prevBufferLen = 0;\n }\n }\n}\nSocketWithoutUpgrade.protocol = protocol;\n/**\n * This class provides a WebSocket-like interface to connect to an Engine.IO server. The connection will be established\n * with one of the available low-level transports, like HTTP long-polling, WebSocket or WebTransport.\n *\n * This class comes with an upgrade mechanism, which means that once the connection is established with the first\n * low-level transport, it will try to upgrade to a better transport.\n *\n * In order to allow tree-shaking, there are no transports included, that's why the `transports` option is mandatory.\n *\n * @example\n * import { SocketWithUpgrade, WebSocket } from \"engine.io-client\";\n *\n * const socket = new SocketWithUpgrade({\n * transports: [WebSocket]\n * });\n *\n * socket.on(\"open\", () => {\n * socket.send(\"hello\");\n * });\n *\n * @see SocketWithoutUpgrade\n * @see Socket\n */\nexport class SocketWithUpgrade extends SocketWithoutUpgrade {\n constructor() {\n super(...arguments);\n this._upgrades = [];\n }\n onOpen() {\n super.onOpen();\n if (\"open\" === this.readyState && this.opts.upgrade) {\n for (let i = 0; i < this._upgrades.length; i++) {\n this._probe(this._upgrades[i]);\n }\n }\n }\n /**\n * Probes a transport.\n *\n * @param {String} name - transport name\n * @private\n */\n _probe(name) {\n let transport = this.createTransport(name);\n let failed = false;\n SocketWithoutUpgrade.priorWebsocketSuccess = false;\n const onTransportOpen = () => {\n if (failed)\n return;\n transport.send([{ type: \"ping\", data: \"probe\" }]);\n transport.once(\"packet\", (msg) => {\n if (failed)\n return;\n if (\"pong\" === msg.type && \"probe\" === msg.data) {\n this.upgrading = true;\n this.emitReserved(\"upgrading\", transport);\n if (!transport)\n return;\n SocketWithoutUpgrade.priorWebsocketSuccess =\n \"websocket\" === transport.name;\n this.transport.pause(() => {\n if (failed)\n return;\n if (\"closed\" === this.readyState)\n return;\n cleanup();\n this.setTransport(transport);\n transport.send([{ type: \"upgrade\" }]);\n this.emitReserved(\"upgrade\", transport);\n transport = null;\n this.upgrading = false;\n this.flush();\n });\n }\n else {\n const err = new Error(\"probe error\");\n // @ts-ignore\n err.transport = transport.name;\n this.emitReserved(\"upgradeError\", err);\n }\n });\n };\n function freezeTransport() {\n if (failed)\n return;\n // Any callback called by transport should be ignored since now\n failed = true;\n cleanup();\n transport.close();\n transport = null;\n }\n // Handle any error that happens while probing\n const onerror = (err) => {\n const error = new Error(\"probe error: \" + err);\n // @ts-ignore\n error.transport = transport.name;\n freezeTransport();\n this.emitReserved(\"upgradeError\", error);\n };\n function onTransportClose() {\n onerror(\"transport closed\");\n }\n // When the socket is closed while we're probing\n function onclose() {\n onerror(\"socket closed\");\n }\n // When the socket is upgraded while we're probing\n function onupgrade(to) {\n if (transport && to.name !== transport.name) {\n freezeTransport();\n }\n }\n // Remove all listeners on the transport and on self\n const cleanup = () => {\n transport.removeListener(\"open\", onTransportOpen);\n transport.removeListener(\"error\", onerror);\n transport.removeListener(\"close\", onTransportClose);\n this.off(\"close\", onclose);\n this.off(\"upgrading\", onupgrade);\n };\n transport.once(\"open\", onTransportOpen);\n transport.once(\"error\", onerror);\n transport.once(\"close\", onTransportClose);\n this.once(\"close\", onclose);\n this.once(\"upgrading\", onupgrade);\n if (this._upgrades.indexOf(\"webtransport\") !== -1 &&\n name !== \"webtransport\") {\n // favor WebTransport\n this.setTimeoutFn(() => {\n if (!failed) {\n transport.open();\n }\n }, 200);\n }\n else {\n transport.open();\n }\n }\n onHandshake(data) {\n this._upgrades = this._filterUpgrades(data.upgrades);\n super.onHandshake(data);\n }\n /**\n * Filters upgrades, returning only those matching client transports.\n *\n * @param {Array} upgrades - server upgrades\n * @private\n */\n _filterUpgrades(upgrades) {\n const filteredUpgrades = [];\n for (let i = 0; i < upgrades.length; i++) {\n if (~this.transports.indexOf(upgrades[i]))\n filteredUpgrades.push(upgrades[i]);\n }\n return filteredUpgrades;\n }\n}\n/**\n * This class provides a WebSocket-like interface to connect to an Engine.IO server. The connection will be established\n * with one of the available low-level transports, like HTTP long-polling, WebSocket or WebTransport.\n *\n * This class comes with an upgrade mechanism, which means that once the connection is established with the first\n * low-level transport, it will try to upgrade to a better transport.\n *\n * @example\n * import { Socket } from \"engine.io-client\";\n *\n * const socket = new Socket();\n *\n * socket.on(\"open\", () => {\n * socket.send(\"hello\");\n * });\n *\n * @see SocketWithoutUpgrade\n * @see SocketWithUpgrade\n */\nexport class Socket extends SocketWithUpgrade {\n constructor(uri, opts = {}) {\n const o = typeof uri === \"object\" ? uri : opts;\n if (!o.transports ||\n (o.transports && typeof o.transports[0] === \"string\")) {\n o.transports = (o.transports || [\"polling\", \"websocket\", \"webtransport\"])\n .map((transportName) => DEFAULT_TRANSPORTS[transportName])\n .filter((t) => !!t);\n }\n super(uri, o);\n }\n}\n","import { parse } from \"engine.io-client\";\n/**\n * URL parser.\n *\n * @param uri - url\n * @param path - the request path of the connection\n * @param loc - An object meant to mimic window.location.\n * Defaults to window.location.\n * @public\n */\nexport function url(uri, path = \"\", loc) {\n let obj = uri;\n // default to window.location\n loc = loc || (typeof location !== \"undefined\" && location);\n if (null == uri)\n uri = loc.protocol + \"//\" + loc.host;\n // relative path support\n if (typeof uri === \"string\") {\n if (\"/\" === uri.charAt(0)) {\n if (\"/\" === uri.charAt(1)) {\n uri = loc.protocol + uri;\n }\n else {\n uri = loc.host + uri;\n }\n }\n if (!/^(https?|wss?):\\/\\//.test(uri)) {\n if (\"undefined\" !== typeof loc) {\n uri = loc.protocol + \"//\" + uri;\n }\n else {\n uri = \"https://\" + uri;\n }\n }\n // parse\n obj = parse(uri);\n }\n // make sure we treat `localhost:80` and `localhost` equally\n if (!obj.port) {\n if (/^(http|ws)$/.test(obj.protocol)) {\n obj.port = \"80\";\n }\n else if (/^(http|ws)s$/.test(obj.protocol)) {\n obj.port = \"443\";\n }\n }\n obj.path = obj.path || \"/\";\n const ipv6 = obj.host.indexOf(\":\") !== -1;\n const host = ipv6 ? \"[\" + obj.host + \"]\" : obj.host;\n // define unique id\n obj.id = obj.protocol + \"://\" + host + \":\" + obj.port + path;\n // define href\n obj.href =\n obj.protocol +\n \"://\" +\n host +\n (loc && loc.port === obj.port ? \"\" : \":\" + obj.port);\n return obj;\n}\n","const withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\nconst isView = (obj) => {\n return typeof ArrayBuffer.isView === \"function\"\n ? ArrayBuffer.isView(obj)\n : obj.buffer instanceof ArrayBuffer;\n};\nconst toString = Object.prototype.toString;\nconst withNativeBlob = typeof Blob === \"function\" ||\n (typeof Blob !== \"undefined\" &&\n toString.call(Blob) === \"[object BlobConstructor]\");\nconst withNativeFile = typeof File === \"function\" ||\n (typeof File !== \"undefined\" &&\n toString.call(File) === \"[object FileConstructor]\");\n/**\n * Returns true if obj is a Buffer, an ArrayBuffer, a Blob or a File.\n *\n * @private\n */\nexport function isBinary(obj) {\n return ((withNativeArrayBuffer && (obj instanceof ArrayBuffer || isView(obj))) ||\n (withNativeBlob && obj instanceof Blob) ||\n (withNativeFile && obj instanceof File));\n}\nexport function hasBinary(obj, toJSON) {\n if (!obj || typeof obj !== \"object\") {\n return false;\n }\n if (Array.isArray(obj)) {\n for (let i = 0, l = obj.length; i < l; i++) {\n if (hasBinary(obj[i])) {\n return true;\n }\n }\n return false;\n }\n if (isBinary(obj)) {\n return true;\n }\n if (obj.toJSON &&\n typeof obj.toJSON === \"function\" &&\n arguments.length === 1) {\n return hasBinary(obj.toJSON(), true);\n }\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key) && hasBinary(obj[key])) {\n return true;\n }\n }\n return false;\n}\n","import { isBinary } from \"./is-binary.js\";\n/**\n * Replaces every Buffer | ArrayBuffer | Blob | File in packet with a numbered placeholder.\n *\n * @param {Object} packet - socket.io event packet\n * @return {Object} with deconstructed packet and list of buffers\n * @public\n */\nexport function deconstructPacket(packet) {\n const buffers = [];\n const packetData = packet.data;\n const pack = packet;\n pack.data = _deconstructPacket(packetData, buffers);\n pack.attachments = buffers.length; // number of binary 'attachments'\n return { packet: pack, buffers: buffers };\n}\nfunction _deconstructPacket(data, buffers) {\n if (!data)\n return data;\n if (isBinary(data)) {\n const placeholder = { _placeholder: true, num: buffers.length };\n buffers.push(data);\n return placeholder;\n }\n else if (Array.isArray(data)) {\n const newData = new Array(data.length);\n for (let i = 0; i < data.length; i++) {\n newData[i] = _deconstructPacket(data[i], buffers);\n }\n return newData;\n }\n else if (typeof data === \"object\" && !(data instanceof Date)) {\n const newData = {};\n for (const key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n newData[key] = _deconstructPacket(data[key], buffers);\n }\n }\n return newData;\n }\n return data;\n}\n/**\n * Reconstructs a binary packet from its placeholder packet and buffers\n *\n * @param {Object} packet - event packet with placeholders\n * @param {Array} buffers - binary buffers to put in placeholder positions\n * @return {Object} reconstructed packet\n * @public\n */\nexport function reconstructPacket(packet, buffers) {\n packet.data = _reconstructPacket(packet.data, buffers);\n delete packet.attachments; // no longer useful\n return packet;\n}\nfunction _reconstructPacket(data, buffers) {\n if (!data)\n return data;\n if (data && data._placeholder === true) {\n const isIndexValid = typeof data.num === \"number\" &&\n data.num >= 0 &&\n data.num < buffers.length;\n if (isIndexValid) {\n return buffers[data.num]; // appropriate buffer (should be natural order anyway)\n }\n else {\n throw new Error(\"illegal attachments\");\n }\n }\n else if (Array.isArray(data)) {\n for (let i = 0; i < data.length; i++) {\n data[i] = _reconstructPacket(data[i], buffers);\n }\n }\n else if (typeof data === \"object\") {\n for (const key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n data[key] = _reconstructPacket(data[key], buffers);\n }\n }\n }\n return data;\n}\n","import { Emitter } from \"@socket.io/component-emitter\";\nimport { deconstructPacket, reconstructPacket } from \"./binary.js\";\nimport { isBinary, hasBinary } from \"./is-binary.js\";\n/**\n * These strings must not be used as event names, as they have a special meaning.\n */\nconst RESERVED_EVENTS = [\n \"connect\",\n \"connect_error\",\n \"disconnect\",\n \"disconnecting\",\n \"newListener\",\n \"removeListener\", // used by the Node.js EventEmitter\n];\n/**\n * Protocol version.\n *\n * @public\n */\nexport const protocol = 5;\nexport var PacketType;\n(function (PacketType) {\n PacketType[PacketType[\"CONNECT\"] = 0] = \"CONNECT\";\n PacketType[PacketType[\"DISCONNECT\"] = 1] = \"DISCONNECT\";\n PacketType[PacketType[\"EVENT\"] = 2] = \"EVENT\";\n PacketType[PacketType[\"ACK\"] = 3] = \"ACK\";\n PacketType[PacketType[\"CONNECT_ERROR\"] = 4] = \"CONNECT_ERROR\";\n PacketType[PacketType[\"BINARY_EVENT\"] = 5] = \"BINARY_EVENT\";\n PacketType[PacketType[\"BINARY_ACK\"] = 6] = \"BINARY_ACK\";\n})(PacketType || (PacketType = {}));\n/**\n * A socket.io Encoder instance\n */\nexport class Encoder {\n /**\n * Encoder constructor\n *\n * @param {function} replacer - custom replacer to pass down to JSON.parse\n */\n constructor(replacer) {\n this.replacer = replacer;\n }\n /**\n * Encode a packet as a single string if non-binary, or as a\n * buffer sequence, depending on packet type.\n *\n * @param {Object} obj - packet object\n */\n encode(obj) {\n if (obj.type === PacketType.EVENT || obj.type === PacketType.ACK) {\n if (hasBinary(obj)) {\n return this.encodeAsBinary({\n type: obj.type === PacketType.EVENT\n ? PacketType.BINARY_EVENT\n : PacketType.BINARY_ACK,\n nsp: obj.nsp,\n data: obj.data,\n id: obj.id,\n });\n }\n }\n return [this.encodeAsString(obj)];\n }\n /**\n * Encode packet as string.\n */\n encodeAsString(obj) {\n // first is type\n let str = \"\" + obj.type;\n // attachments if we have them\n if (obj.type === PacketType.BINARY_EVENT ||\n obj.type === PacketType.BINARY_ACK) {\n str += obj.attachments + \"-\";\n }\n // if we have a namespace other than `/`\n // we append it followed by a comma `,`\n if (obj.nsp && \"/\" !== obj.nsp) {\n str += obj.nsp + \",\";\n }\n // immediately followed by the id\n if (null != obj.id) {\n str += obj.id;\n }\n // json data\n if (null != obj.data) {\n str += JSON.stringify(obj.data, this.replacer);\n }\n return str;\n }\n /**\n * Encode packet as 'buffer sequence' by removing blobs, and\n * deconstructing packet into object with placeholders and\n * a list of buffers.\n */\n encodeAsBinary(obj) {\n const deconstruction = deconstructPacket(obj);\n const pack = this.encodeAsString(deconstruction.packet);\n const buffers = deconstruction.buffers;\n buffers.unshift(pack); // add packet info to beginning of data list\n return buffers; // write all the buffers\n }\n}\n// see https://stackoverflow.com/questions/8511281/check-if-a-value-is-an-object-in-javascript\nfunction isObject(value) {\n return Object.prototype.toString.call(value) === \"[object Object]\";\n}\n/**\n * A socket.io Decoder instance\n *\n * @return {Object} decoder\n */\nexport class Decoder extends Emitter {\n /**\n * Decoder constructor\n *\n * @param {function} reviver - custom reviver to pass down to JSON.stringify\n */\n constructor(reviver) {\n super();\n this.reviver = reviver;\n }\n /**\n * Decodes an encoded packet string into packet JSON.\n *\n * @param {String} obj - encoded packet\n */\n add(obj) {\n let packet;\n if (typeof obj === \"string\") {\n if (this.reconstructor) {\n throw new Error(\"got plaintext data when reconstructing a packet\");\n }\n packet = this.decodeString(obj);\n const isBinaryEvent = packet.type === PacketType.BINARY_EVENT;\n if (isBinaryEvent || packet.type === PacketType.BINARY_ACK) {\n packet.type = isBinaryEvent ? PacketType.EVENT : PacketType.ACK;\n // binary packet's json\n this.reconstructor = new BinaryReconstructor(packet);\n // no attachments, labeled binary but no binary data to follow\n if (packet.attachments === 0) {\n super.emitReserved(\"decoded\", packet);\n }\n }\n else {\n // non-binary full packet\n super.emitReserved(\"decoded\", packet);\n }\n }\n else if (isBinary(obj) || obj.base64) {\n // raw binary data\n if (!this.reconstructor) {\n throw new Error(\"got binary data when not reconstructing a packet\");\n }\n else {\n packet = this.reconstructor.takeBinaryData(obj);\n if (packet) {\n // received final buffer\n this.reconstructor = null;\n super.emitReserved(\"decoded\", packet);\n }\n }\n }\n else {\n throw new Error(\"Unknown type: \" + obj);\n }\n }\n /**\n * Decode a packet String (JSON data)\n *\n * @param {String} str\n * @return {Object} packet\n */\n decodeString(str) {\n let i = 0;\n // look up type\n const p = {\n type: Number(str.charAt(0)),\n };\n if (PacketType[p.type] === undefined) {\n throw new Error(\"unknown packet type \" + p.type);\n }\n // look up attachments if type binary\n if (p.type === PacketType.BINARY_EVENT ||\n p.type === PacketType.BINARY_ACK) {\n const start = i + 1;\n while (str.charAt(++i) !== \"-\" && i != str.length) { }\n const buf = str.substring(start, i);\n if (buf != Number(buf) || str.charAt(i) !== \"-\") {\n throw new Error(\"Illegal attachments\");\n }\n p.attachments = Number(buf);\n }\n // look up namespace (if any)\n if (\"/\" === str.charAt(i + 1)) {\n const start = i + 1;\n while (++i) {\n const c = str.charAt(i);\n if (\",\" === c)\n break;\n if (i === str.length)\n break;\n }\n p.nsp = str.substring(start, i);\n }\n else {\n p.nsp = \"/\";\n }\n // look up id\n const next = str.charAt(i + 1);\n if (\"\" !== next && Number(next) == next) {\n const start = i + 1;\n while (++i) {\n const c = str.charAt(i);\n if (null == c || Number(c) != c) {\n --i;\n break;\n }\n if (i === str.length)\n break;\n }\n p.id = Number(str.substring(start, i + 1));\n }\n // look up json data\n if (str.charAt(++i)) {\n const payload = this.tryParse(str.substr(i));\n if (Decoder.isPayloadValid(p.type, payload)) {\n p.data = payload;\n }\n else {\n throw new Error(\"invalid payload\");\n }\n }\n return p;\n }\n tryParse(str) {\n try {\n return JSON.parse(str, this.reviver);\n }\n catch (e) {\n return false;\n }\n }\n static isPayloadValid(type, payload) {\n switch (type) {\n case PacketType.CONNECT:\n return isObject(payload);\n case PacketType.DISCONNECT:\n return payload === undefined;\n case PacketType.CONNECT_ERROR:\n return typeof payload === \"string\" || isObject(payload);\n case PacketType.EVENT:\n case PacketType.BINARY_EVENT:\n return (Array.isArray(payload) &&\n (typeof payload[0] === \"number\" ||\n (typeof payload[0] === \"string\" &&\n RESERVED_EVENTS.indexOf(payload[0]) === -1)));\n case PacketType.ACK:\n case PacketType.BINARY_ACK:\n return Array.isArray(payload);\n }\n }\n /**\n * Deallocates a parser's resources\n */\n destroy() {\n if (this.reconstructor) {\n this.reconstructor.finishedReconstruction();\n this.reconstructor = null;\n }\n }\n}\n/**\n * A manager of a binary event's 'buffer sequence'. Should\n * be constructed whenever a packet of type BINARY_EVENT is\n * decoded.\n *\n * @param {Object} packet\n * @return {BinaryReconstructor} initialized reconstructor\n */\nclass BinaryReconstructor {\n constructor(packet) {\n this.packet = packet;\n this.buffers = [];\n this.reconPack = packet;\n }\n /**\n * Method to be called when binary data received from connection\n * after a BINARY_EVENT packet.\n *\n * @param {Buffer | ArrayBuffer} binData - the raw binary data received\n * @return {null | Object} returns null if more binary data is expected or\n * a reconstructed packet object if all buffers have been received.\n */\n takeBinaryData(binData) {\n this.buffers.push(binData);\n if (this.buffers.length === this.reconPack.attachments) {\n // done with buffer list\n const packet = reconstructPacket(this.reconPack, this.buffers);\n this.finishedReconstruction();\n return packet;\n }\n return null;\n }\n /**\n * Cleans up binary packet reconstruction variables.\n */\n finishedReconstruction() {\n this.reconPack = null;\n this.buffers = [];\n }\n}\n","export function on(obj, ev, fn) {\n obj.on(ev, fn);\n return function subDestroy() {\n obj.off(ev, fn);\n };\n}\n","import { PacketType } from \"socket.io-parser\";\nimport { on } from \"./on.js\";\nimport { Emitter, } from \"@socket.io/component-emitter\";\n/**\n * Internal events.\n * These events can't be emitted by the user.\n */\nconst RESERVED_EVENTS = Object.freeze({\n connect: 1,\n connect_error: 1,\n disconnect: 1,\n disconnecting: 1,\n // EventEmitter reserved events: https://nodejs.org/api/events.html#events_event_newlistener\n newListener: 1,\n removeListener: 1,\n});\n/**\n * A Socket is the fundamental class for interacting with the server.\n *\n * A Socket belongs to a certain Namespace (by default /) and uses an underlying {@link Manager} to communicate.\n *\n * @example\n * const socket = io();\n *\n * socket.on(\"connect\", () => {\n * console.log(\"connected\");\n * });\n *\n * // send an event to the server\n * socket.emit(\"foo\", \"bar\");\n *\n * socket.on(\"foobar\", () => {\n * // an event was received from the server\n * });\n *\n * // upon disconnection\n * socket.on(\"disconnect\", (reason) => {\n * console.log(`disconnected due to ${reason}`);\n * });\n */\nexport class Socket extends Emitter {\n /**\n * `Socket` constructor.\n */\n constructor(io, nsp, opts) {\n super();\n /**\n * Whether the socket is currently connected to the server.\n *\n * @example\n * const socket = io();\n *\n * socket.on(\"connect\", () => {\n * console.log(socket.connected); // true\n * });\n *\n * socket.on(\"disconnect\", () => {\n * console.log(socket.connected); // false\n * });\n */\n this.connected = false;\n /**\n * Whether the connection state was recovered after a temporary disconnection. In that case, any missed packets will\n * be transmitted by the server.\n */\n this.recovered = false;\n /**\n * Buffer for packets received before the CONNECT packet\n */\n this.receiveBuffer = [];\n /**\n * Buffer for packets that will be sent once the socket is connected\n */\n this.sendBuffer = [];\n /**\n * The queue of packets to be sent with retry in case of failure.\n *\n * Packets are sent one by one, each waiting for the server acknowledgement, in order to guarantee the delivery order.\n * @private\n */\n this._queue = [];\n /**\n * A sequence to generate the ID of the {@link QueuedPacket}.\n * @private\n */\n this._queueSeq = 0;\n this.ids = 0;\n /**\n * A map containing acknowledgement handlers.\n *\n * The `withError` attribute is used to differentiate handlers that accept an error as first argument:\n *\n * - `socket.emit(\"test\", (err, value) => { ... })` with `ackTimeout` option\n * - `socket.timeout(5000).emit(\"test\", (err, value) => { ... })`\n * - `const value = await socket.emitWithAck(\"test\")`\n *\n * From those that don't:\n *\n * - `socket.emit(\"test\", (value) => { ... });`\n *\n * In the first case, the handlers will be called with an error when:\n *\n * - the timeout is reached\n * - the socket gets disconnected\n *\n * In the second case, the handlers will be simply discarded upon disconnection, since the client will never receive\n * an acknowledgement from the server.\n *\n * @private\n */\n this.acks = {};\n this.flags = {};\n this.io = io;\n this.nsp = nsp;\n if (opts && opts.auth) {\n this.auth = opts.auth;\n }\n this._opts = Object.assign({}, opts);\n if (this.io._autoConnect)\n this.open();\n }\n /**\n * Whether the socket is currently disconnected\n *\n * @example\n * const socket = io();\n *\n * socket.on(\"connect\", () => {\n * console.log(socket.disconnected); // false\n * });\n *\n * socket.on(\"disconnect\", () => {\n * console.log(socket.disconnected); // true\n * });\n */\n get disconnected() {\n return !this.connected;\n }\n /**\n * Subscribe to open, close and packet events\n *\n * @private\n */\n subEvents() {\n if (this.subs)\n return;\n const io = this.io;\n this.subs = [\n on(io, \"open\", this.onopen.bind(this)),\n on(io, \"packet\", this.onpacket.bind(this)),\n on(io, \"error\", this.onerror.bind(this)),\n on(io, \"close\", this.onclose.bind(this)),\n ];\n }\n /**\n * Whether the Socket will try to reconnect when its Manager connects or reconnects.\n *\n * @example\n * const socket = io();\n *\n * console.log(socket.active); // true\n *\n * socket.on(\"disconnect\", (reason) => {\n * if (reason === \"io server disconnect\") {\n * // the disconnection was initiated by the server, you need to manually reconnect\n * console.log(socket.active); // false\n * }\n * // else the socket will automatically try to reconnect\n * console.log(socket.active); // true\n * });\n */\n get active() {\n return !!this.subs;\n }\n /**\n * \"Opens\" the socket.\n *\n * @example\n * const socket = io({\n * autoConnect: false\n * });\n *\n * socket.connect();\n */\n connect() {\n if (this.connected)\n return this;\n this.subEvents();\n if (!this.io[\"_reconnecting\"])\n this.io.open(); // ensure open\n if (\"open\" === this.io._readyState)\n this.onopen();\n return this;\n }\n /**\n * Alias for {@link connect()}.\n */\n open() {\n return this.connect();\n }\n /**\n * Sends a `message` event.\n *\n * This method mimics the WebSocket.send() method.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/send\n *\n * @example\n * socket.send(\"hello\");\n *\n * // this is equivalent to\n * socket.emit(\"message\", \"hello\");\n *\n * @return self\n */\n send(...args) {\n args.unshift(\"message\");\n this.emit.apply(this, args);\n return this;\n }\n /**\n * Override `emit`.\n * If the event is in `events`, it's emitted normally.\n *\n * @example\n * socket.emit(\"hello\", \"world\");\n *\n * // all serializable datastructures are supported (no need to call JSON.stringify)\n * socket.emit(\"hello\", 1, \"2\", { 3: [\"4\"], 5: Uint8Array.from([6]) });\n *\n * // with an acknowledgement from the server\n * socket.emit(\"hello\", \"world\", (val) => {\n * // ...\n * });\n *\n * @return self\n */\n emit(ev, ...args) {\n var _a, _b, _c;\n if (RESERVED_EVENTS.hasOwnProperty(ev)) {\n throw new Error('\"' + ev.toString() + '\" is a reserved event name');\n }\n args.unshift(ev);\n if (this._opts.retries && !this.flags.fromQueue && !this.flags.volatile) {\n this._addToQueue(args);\n return this;\n }\n const packet = {\n type: PacketType.EVENT,\n data: args,\n };\n packet.options = {};\n packet.options.compress = this.flags.compress !== false;\n // event ack callback\n if (\"function\" === typeof args[args.length - 1]) {\n const id = this.ids++;\n const ack = args.pop();\n this._registerAckCallback(id, ack);\n packet.id = id;\n }\n const isTransportWritable = (_b = (_a = this.io.engine) === null || _a === void 0 ? void 0 : _a.transport) === null || _b === void 0 ? void 0 : _b.writable;\n const isConnected = this.connected && !((_c = this.io.engine) === null || _c === void 0 ? void 0 : _c._hasPingExpired());\n const discardPacket = this.flags.volatile && !isTransportWritable;\n if (discardPacket) {\n }\n else if (isConnected) {\n this.notifyOutgoingListeners(packet);\n this.packet(packet);\n }\n else {\n this.sendBuffer.push(packet);\n }\n this.flags = {};\n return this;\n }\n /**\n * @private\n */\n _registerAckCallback(id, ack) {\n var _a;\n const timeout = (_a = this.flags.timeout) !== null && _a !== void 0 ? _a : this._opts.ackTimeout;\n if (timeout === undefined) {\n this.acks[id] = ack;\n return;\n }\n // @ts-ignore\n const timer = this.io.setTimeoutFn(() => {\n delete this.acks[id];\n for (let i = 0; i < this.sendBuffer.length; i++) {\n if (this.sendBuffer[i].id === id) {\n this.sendBuffer.splice(i, 1);\n }\n }\n ack.call(this, new Error(\"operation has timed out\"));\n }, timeout);\n const fn = (...args) => {\n // @ts-ignore\n this.io.clearTimeoutFn(timer);\n ack.apply(this, args);\n };\n fn.withError = true;\n this.acks[id] = fn;\n }\n /**\n * Emits an event and waits for an acknowledgement\n *\n * @example\n * // without timeout\n * const response = await socket.emitWithAck(\"hello\", \"world\");\n *\n * // with a specific timeout\n * try {\n * const response = await socket.timeout(1000).emitWithAck(\"hello\", \"world\");\n * } catch (err) {\n * // the server did not acknowledge the event in the given delay\n * }\n *\n * @return a Promise that will be fulfilled when the server acknowledges the event\n */\n emitWithAck(ev, ...args) {\n return new Promise((resolve, reject) => {\n const fn = (arg1, arg2) => {\n return arg1 ? reject(arg1) : resolve(arg2);\n };\n fn.withError = true;\n args.push(fn);\n this.emit(ev, ...args);\n });\n }\n /**\n * Add the packet to the queue.\n * @param args\n * @private\n */\n _addToQueue(args) {\n let ack;\n if (typeof args[args.length - 1] === \"function\") {\n ack = args.pop();\n }\n const packet = {\n id: this._queueSeq++,\n tryCount: 0,\n pending: false,\n args,\n flags: Object.assign({ fromQueue: true }, this.flags),\n };\n args.push((err, ...responseArgs) => {\n if (packet !== this._queue[0]) {\n // the packet has already been acknowledged\n return;\n }\n const hasError = err !== null;\n if (hasError) {\n if (packet.tryCount > this._opts.retries) {\n this._queue.shift();\n if (ack) {\n ack(err);\n }\n }\n }\n else {\n this._queue.shift();\n if (ack) {\n ack(null, ...responseArgs);\n }\n }\n packet.pending = false;\n return this._drainQueue();\n });\n this._queue.push(packet);\n this._drainQueue();\n }\n /**\n * Send the first packet of the queue, and wait for an acknowledgement from the server.\n * @param force - whether to resend a packet that has not been acknowledged yet\n *\n * @private\n */\n _drainQueue(force = false) {\n if (!this.connected || this._queue.length === 0) {\n return;\n }\n const packet = this._queue[0];\n if (packet.pending && !force) {\n return;\n }\n packet.pending = true;\n packet.tryCount++;\n this.flags = packet.flags;\n this.emit.apply(this, packet.args);\n }\n /**\n * Sends a packet.\n *\n * @param packet\n * @private\n */\n packet(packet) {\n packet.nsp = this.nsp;\n this.io._packet(packet);\n }\n /**\n * Called upon engine `open`.\n *\n * @private\n */\n onopen() {\n if (typeof this.auth == \"function\") {\n this.auth((data) => {\n this._sendConnectPacket(data);\n });\n }\n else {\n this._sendConnectPacket(this.auth);\n }\n }\n /**\n * Sends a CONNECT packet to initiate the Socket.IO session.\n *\n * @param data\n * @private\n */\n _sendConnectPacket(data) {\n this.packet({\n type: PacketType.CONNECT,\n data: this._pid\n ? Object.assign({ pid: this._pid, offset: this._lastOffset }, data)\n : data,\n });\n }\n /**\n * Called upon engine or manager `error`.\n *\n * @param err\n * @private\n */\n onerror(err) {\n if (!this.connected) {\n this.emitReserved(\"connect_error\", err);\n }\n }\n /**\n * Called upon engine `close`.\n *\n * @param reason\n * @param description\n * @private\n */\n onclose(reason, description) {\n this.connected = false;\n delete this.id;\n this.emitReserved(\"disconnect\", reason, description);\n this._clearAcks();\n }\n /**\n * Clears the acknowledgement handlers upon disconnection, since the client will never receive an acknowledgement from\n * the server.\n *\n * @private\n */\n _clearAcks() {\n Object.keys(this.acks).forEach((id) => {\n const isBuffered = this.sendBuffer.some((packet) => String(packet.id) === id);\n if (!isBuffered) {\n // note: handlers that do not accept an error as first argument are ignored here\n const ack = this.acks[id];\n delete this.acks[id];\n if (ack.withError) {\n ack.call(this, new Error(\"socket has been disconnected\"));\n }\n }\n });\n }\n /**\n * Called with socket packet.\n *\n * @param packet\n * @private\n */\n onpacket(packet) {\n const sameNamespace = packet.nsp === this.nsp;\n if (!sameNamespace)\n return;\n switch (packet.type) {\n case PacketType.CONNECT:\n if (packet.data && packet.data.sid) {\n this.onconnect(packet.data.sid, packet.data.pid);\n }\n else {\n this.emitReserved(\"connect_error\", new Error(\"It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)\"));\n }\n break;\n case PacketType.EVENT:\n case PacketType.BINARY_EVENT:\n this.onevent(packet);\n break;\n case PacketType.ACK:\n case PacketType.BINARY_ACK:\n this.onack(packet);\n break;\n case PacketType.DISCONNECT:\n this.ondisconnect();\n break;\n case PacketType.CONNECT_ERROR:\n this.destroy();\n const err = new Error(packet.data.message);\n // @ts-ignore\n err.data = packet.data.data;\n this.emitReserved(\"connect_error\", err);\n break;\n }\n }\n /**\n * Called upon a server event.\n *\n * @param packet\n * @private\n */\n onevent(packet) {\n const args = packet.data || [];\n if (null != packet.id) {\n args.push(this.ack(packet.id));\n }\n if (this.connected) {\n this.emitEvent(args);\n }\n else {\n this.receiveBuffer.push(Object.freeze(args));\n }\n }\n emitEvent(args) {\n if (this._anyListeners && this._anyListeners.length) {\n const listeners = this._anyListeners.slice();\n for (const listener of listeners) {\n listener.apply(this, args);\n }\n }\n super.emit.apply(this, args);\n if (this._pid && args.length && typeof args[args.length - 1] === \"string\") {\n this._lastOffset = args[args.length - 1];\n }\n }\n /**\n * Produces an ack callback to emit with an event.\n *\n * @private\n */\n ack(id) {\n const self = this;\n let sent = false;\n return function (...args) {\n // prevent double callbacks\n if (sent)\n return;\n sent = true;\n self.packet({\n type: PacketType.ACK,\n id: id,\n data: args,\n });\n };\n }\n /**\n * Called upon a server acknowledgement.\n *\n * @param packet\n * @private\n */\n onack(packet) {\n const ack = this.acks[packet.id];\n if (typeof ack !== \"function\") {\n return;\n }\n delete this.acks[packet.id];\n // @ts-ignore FIXME ack is incorrectly inferred as 'never'\n if (ack.withError) {\n packet.data.unshift(null);\n }\n // @ts-ignore\n ack.apply(this, packet.data);\n }\n /**\n * Called upon server connect.\n *\n * @private\n */\n onconnect(id, pid) {\n this.id = id;\n this.recovered = pid && this._pid === pid;\n this._pid = pid; // defined only if connection state recovery is enabled\n this.connected = true;\n this.emitBuffered();\n this.emitReserved(\"connect\");\n this._drainQueue(true);\n }\n /**\n * Emit buffered events (received and emitted).\n *\n * @private\n */\n emitBuffered() {\n this.receiveBuffer.forEach((args) => this.emitEvent(args));\n this.receiveBuffer = [];\n this.sendBuffer.forEach((packet) => {\n this.notifyOutgoingListeners(packet);\n this.packet(packet);\n });\n this.sendBuffer = [];\n }\n /**\n * Called upon server disconnect.\n *\n * @private\n */\n ondisconnect() {\n this.destroy();\n this.onclose(\"io server disconnect\");\n }\n /**\n * Called upon forced client/server side disconnections,\n * this method ensures the manager stops tracking us and\n * that reconnections don't get triggered for this.\n *\n * @private\n */\n destroy() {\n if (this.subs) {\n // clean subscriptions to avoid reconnections\n this.subs.forEach((subDestroy) => subDestroy());\n this.subs = undefined;\n }\n this.io[\"_destroy\"](this);\n }\n /**\n * Disconnects the socket manually. In that case, the socket will not try to reconnect.\n *\n * If this is the last active Socket instance of the {@link Manager}, the low-level connection will be closed.\n *\n * @example\n * const socket = io();\n *\n * socket.on(\"disconnect\", (reason) => {\n * // console.log(reason); prints \"io client disconnect\"\n * });\n *\n * socket.disconnect();\n *\n * @return self\n */\n disconnect() {\n if (this.connected) {\n this.packet({ type: PacketType.DISCONNECT });\n }\n // remove socket from pool\n this.destroy();\n if (this.connected) {\n // fire events\n this.onclose(\"io client disconnect\");\n }\n return this;\n }\n /**\n * Alias for {@link disconnect()}.\n *\n * @return self\n */\n close() {\n return this.disconnect();\n }\n /**\n * Sets the compress flag.\n *\n * @example\n * socket.compress(false).emit(\"hello\");\n *\n * @param compress - if `true`, compresses the sending data\n * @return self\n */\n compress(compress) {\n this.flags.compress = compress;\n return this;\n }\n /**\n * Sets a modifier for a subsequent event emission that the event message will be dropped when this socket is not\n * ready to send messages.\n *\n * @example\n * socket.volatile.emit(\"hello\"); // the server may or may not receive it\n *\n * @returns self\n */\n get volatile() {\n this.flags.volatile = true;\n return this;\n }\n /**\n * Sets a modifier for a subsequent event emission that the callback will be called with an error when the\n * given number of milliseconds have elapsed without an acknowledgement from the server:\n *\n * @example\n * socket.timeout(5000).emit(\"my-event\", (err) => {\n * if (err) {\n * // the server did not acknowledge the event in the given delay\n * }\n * });\n *\n * @returns self\n */\n timeout(timeout) {\n this.flags.timeout = timeout;\n return this;\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback.\n *\n * @example\n * socket.onAny((event, ...args) => {\n * console.log(`got ${event}`);\n * });\n *\n * @param listener\n */\n onAny(listener) {\n this._anyListeners = this._anyListeners || [];\n this._anyListeners.push(listener);\n return this;\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback. The listener is added to the beginning of the listeners array.\n *\n * @example\n * socket.prependAny((event, ...args) => {\n * console.log(`got event ${event}`);\n * });\n *\n * @param listener\n */\n prependAny(listener) {\n this._anyListeners = this._anyListeners || [];\n this._anyListeners.unshift(listener);\n return this;\n }\n /**\n * Removes the listener that will be fired when any event is emitted.\n *\n * @example\n * const catchAllListener = (event, ...args) => {\n * console.log(`got event ${event}`);\n * }\n *\n * socket.onAny(catchAllListener);\n *\n * // remove a specific listener\n * socket.offAny(catchAllListener);\n *\n * // or remove all listeners\n * socket.offAny();\n *\n * @param listener\n */\n offAny(listener) {\n if (!this._anyListeners) {\n return this;\n }\n if (listener) {\n const listeners = this._anyListeners;\n for (let i = 0; i < listeners.length; i++) {\n if (listener === listeners[i]) {\n listeners.splice(i, 1);\n return this;\n }\n }\n }\n else {\n this._anyListeners = [];\n }\n return this;\n }\n /**\n * Returns an array of listeners that are listening for any event that is specified. This array can be manipulated,\n * e.g. to remove listeners.\n */\n listenersAny() {\n return this._anyListeners || [];\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback.\n *\n * Note: acknowledgements sent to the server are not included.\n *\n * @example\n * socket.onAnyOutgoing((event, ...args) => {\n * console.log(`sent event ${event}`);\n * });\n *\n * @param listener\n */\n onAnyOutgoing(listener) {\n this._anyOutgoingListeners = this._anyOutgoingListeners || [];\n this._anyOutgoingListeners.push(listener);\n return this;\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback. The listener is added to the beginning of the listeners array.\n *\n * Note: acknowledgements sent to the server are not included.\n *\n * @example\n * socket.prependAnyOutgoing((event, ...args) => {\n * console.log(`sent event ${event}`);\n * });\n *\n * @param listener\n */\n prependAnyOutgoing(listener) {\n this._anyOutgoingListeners = this._anyOutgoingListeners || [];\n this._anyOutgoingListeners.unshift(listener);\n return this;\n }\n /**\n * Removes the listener that will be fired when any event is emitted.\n *\n * @example\n * const catchAllListener = (event, ...args) => {\n * console.log(`sent event ${event}`);\n * }\n *\n * socket.onAnyOutgoing(catchAllListener);\n *\n * // remove a specific listener\n * socket.offAnyOutgoing(catchAllListener);\n *\n * // or remove all listeners\n * socket.offAnyOutgoing();\n *\n * @param [listener] - the catch-all listener (optional)\n */\n offAnyOutgoing(listener) {\n if (!this._anyOutgoingListeners) {\n return this;\n }\n if (listener) {\n const listeners = this._anyOutgoingListeners;\n for (let i = 0; i < listeners.length; i++) {\n if (listener === listeners[i]) {\n listeners.splice(i, 1);\n return this;\n }\n }\n }\n else {\n this._anyOutgoingListeners = [];\n }\n return this;\n }\n /**\n * Returns an array of listeners that are listening for any event that is specified. This array can be manipulated,\n * e.g. to remove listeners.\n */\n listenersAnyOutgoing() {\n return this._anyOutgoingListeners || [];\n }\n /**\n * Notify the listeners for each packet sent\n *\n * @param packet\n *\n * @private\n */\n notifyOutgoingListeners(packet) {\n if (this._anyOutgoingListeners && this._anyOutgoingListeners.length) {\n const listeners = this._anyOutgoingListeners.slice();\n for (const listener of listeners) {\n listener.apply(this, packet.data);\n }\n }\n }\n}\n","/**\n * Initialize backoff timer with `opts`.\n *\n * - `min` initial timeout in milliseconds [100]\n * - `max` max timeout [10000]\n * - `jitter` [0]\n * - `factor` [2]\n *\n * @param {Object} opts\n * @api public\n */\nexport function Backoff(opts) {\n opts = opts || {};\n this.ms = opts.min || 100;\n this.max = opts.max || 10000;\n this.factor = opts.factor || 2;\n this.jitter = opts.jitter > 0 && opts.jitter <= 1 ? opts.jitter : 0;\n this.attempts = 0;\n}\n/**\n * Return the backoff duration.\n *\n * @return {Number}\n * @api public\n */\nBackoff.prototype.duration = function () {\n var ms = this.ms * Math.pow(this.factor, this.attempts++);\n if (this.jitter) {\n var rand = Math.random();\n var deviation = Math.floor(rand * this.jitter * ms);\n ms = (Math.floor(rand * 10) & 1) == 0 ? ms - deviation : ms + deviation;\n }\n return Math.min(ms, this.max) | 0;\n};\n/**\n * Reset the number of attempts.\n *\n * @api public\n */\nBackoff.prototype.reset = function () {\n this.attempts = 0;\n};\n/**\n * Set the minimum duration\n *\n * @api public\n */\nBackoff.prototype.setMin = function (min) {\n this.ms = min;\n};\n/**\n * Set the maximum duration\n *\n * @api public\n */\nBackoff.prototype.setMax = function (max) {\n this.max = max;\n};\n/**\n * Set the jitter\n *\n * @api public\n */\nBackoff.prototype.setJitter = function (jitter) {\n this.jitter = jitter;\n};\n","import { Socket as Engine, installTimerFunctions, nextTick, } from \"engine.io-client\";\nimport { Socket } from \"./socket.js\";\nimport * as parser from \"socket.io-parser\";\nimport { on } from \"./on.js\";\nimport { Backoff } from \"./contrib/backo2.js\";\nimport { Emitter, } from \"@socket.io/component-emitter\";\nexport class Manager extends Emitter {\n constructor(uri, opts) {\n var _a;\n super();\n this.nsps = {};\n this.subs = [];\n if (uri && \"object\" === typeof uri) {\n opts = uri;\n uri = undefined;\n }\n opts = opts || {};\n opts.path = opts.path || \"/socket.io\";\n this.opts = opts;\n installTimerFunctions(this, opts);\n this.reconnection(opts.reconnection !== false);\n this.reconnectionAttempts(opts.reconnectionAttempts || Infinity);\n this.reconnectionDelay(opts.reconnectionDelay || 1000);\n this.reconnectionDelayMax(opts.reconnectionDelayMax || 5000);\n this.randomizationFactor((_a = opts.randomizationFactor) !== null && _a !== void 0 ? _a : 0.5);\n this.backoff = new Backoff({\n min: this.reconnectionDelay(),\n max: this.reconnectionDelayMax(),\n jitter: this.randomizationFactor(),\n });\n this.timeout(null == opts.timeout ? 20000 : opts.timeout);\n this._readyState = \"closed\";\n this.uri = uri;\n const _parser = opts.parser || parser;\n this.encoder = new _parser.Encoder();\n this.decoder = new _parser.Decoder();\n this._autoConnect = opts.autoConnect !== false;\n if (this._autoConnect)\n this.open();\n }\n reconnection(v) {\n if (!arguments.length)\n return this._reconnection;\n this._reconnection = !!v;\n if (!v) {\n this.skipReconnect = true;\n }\n return this;\n }\n reconnectionAttempts(v) {\n if (v === undefined)\n return this._reconnectionAttempts;\n this._reconnectionAttempts = v;\n return this;\n }\n reconnectionDelay(v) {\n var _a;\n if (v === undefined)\n return this._reconnectionDelay;\n this._reconnectionDelay = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMin(v);\n return this;\n }\n randomizationFactor(v) {\n var _a;\n if (v === undefined)\n return this._randomizationFactor;\n this._randomizationFactor = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setJitter(v);\n return this;\n }\n reconnectionDelayMax(v) {\n var _a;\n if (v === undefined)\n return this._reconnectionDelayMax;\n this._reconnectionDelayMax = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMax(v);\n return this;\n }\n timeout(v) {\n if (!arguments.length)\n return this._timeout;\n this._timeout = v;\n return this;\n }\n /**\n * Starts trying to reconnect if reconnection is enabled and we have not\n * started reconnecting yet\n *\n * @private\n */\n maybeReconnectOnOpen() {\n // Only try to reconnect if it's the first time we're connecting\n if (!this._reconnecting &&\n this._reconnection &&\n this.backoff.attempts === 0) {\n // keeps reconnection from firing twice for the same reconnection loop\n this.reconnect();\n }\n }\n /**\n * Sets the current transport `socket`.\n *\n * @param {Function} fn - optional, callback\n * @return self\n * @public\n */\n open(fn) {\n if (~this._readyState.indexOf(\"open\"))\n return this;\n this.engine = new Engine(this.uri, this.opts);\n const socket = this.engine;\n const self = this;\n this._readyState = \"opening\";\n this.skipReconnect = false;\n // emit `open`\n const openSubDestroy = on(socket, \"open\", function () {\n self.onopen();\n fn && fn();\n });\n const onError = (err) => {\n this.cleanup();\n this._readyState = \"closed\";\n this.emitReserved(\"error\", err);\n if (fn) {\n fn(err);\n }\n else {\n // Only do this if there is no fn to handle the error\n this.maybeReconnectOnOpen();\n }\n };\n // emit `error`\n const errorSub = on(socket, \"error\", onError);\n if (false !== this._timeout) {\n const timeout = this._timeout;\n // set timer\n const timer = this.setTimeoutFn(() => {\n openSubDestroy();\n onError(new Error(\"timeout\"));\n socket.close();\n }, timeout);\n if (this.opts.autoUnref) {\n timer.unref();\n }\n this.subs.push(() => {\n this.clearTimeoutFn(timer);\n });\n }\n this.subs.push(openSubDestroy);\n this.subs.push(errorSub);\n return this;\n }\n /**\n * Alias for open()\n *\n * @return self\n * @public\n */\n connect(fn) {\n return this.open(fn);\n }\n /**\n * Called upon transport open.\n *\n * @private\n */\n onopen() {\n // clear old subs\n this.cleanup();\n // mark as open\n this._readyState = \"open\";\n this.emitReserved(\"open\");\n // add new subs\n const socket = this.engine;\n this.subs.push(on(socket, \"ping\", this.onping.bind(this)), on(socket, \"data\", this.ondata.bind(this)), on(socket, \"error\", this.onerror.bind(this)), on(socket, \"close\", this.onclose.bind(this)), \n // @ts-ignore\n on(this.decoder, \"decoded\", this.ondecoded.bind(this)));\n }\n /**\n * Called upon a ping.\n *\n * @private\n */\n onping() {\n this.emitReserved(\"ping\");\n }\n /**\n * Called with data.\n *\n * @private\n */\n ondata(data) {\n try {\n this.decoder.add(data);\n }\n catch (e) {\n this.onclose(\"parse error\", e);\n }\n }\n /**\n * Called when parser fully decodes a packet.\n *\n * @private\n */\n ondecoded(packet) {\n // the nextTick call prevents an exception in a user-provided event listener from triggering a disconnection due to a \"parse error\"\n nextTick(() => {\n this.emitReserved(\"packet\", packet);\n }, this.setTimeoutFn);\n }\n /**\n * Called upon socket error.\n *\n * @private\n */\n onerror(err) {\n this.emitReserved(\"error\", err);\n }\n /**\n * Creates a new socket for the given `nsp`.\n *\n * @return {Socket}\n * @public\n */\n socket(nsp, opts) {\n let socket = this.nsps[nsp];\n if (!socket) {\n socket = new Socket(this, nsp, opts);\n this.nsps[nsp] = socket;\n }\n else if (this._autoConnect && !socket.active) {\n socket.connect();\n }\n return socket;\n }\n /**\n * Called upon a socket close.\n *\n * @param socket\n * @private\n */\n _destroy(socket) {\n const nsps = Object.keys(this.nsps);\n for (const nsp of nsps) {\n const socket = this.nsps[nsp];\n if (socket.active) {\n return;\n }\n }\n this._close();\n }\n /**\n * Writes a packet.\n *\n * @param packet\n * @private\n */\n _packet(packet) {\n const encodedPackets = this.encoder.encode(packet);\n for (let i = 0; i < encodedPackets.length; i++) {\n this.engine.write(encodedPackets[i], packet.options);\n }\n }\n /**\n * Clean up transport subscriptions and packet buffer.\n *\n * @private\n */\n cleanup() {\n this.subs.forEach((subDestroy) => subDestroy());\n this.subs.length = 0;\n this.decoder.destroy();\n }\n /**\n * Close the current socket.\n *\n * @private\n */\n _close() {\n this.skipReconnect = true;\n this._reconnecting = false;\n this.onclose(\"forced close\");\n }\n /**\n * Alias for close()\n *\n * @private\n */\n disconnect() {\n return this._close();\n }\n /**\n * Called when:\n *\n * - the low-level engine is closed\n * - the parser encountered a badly formatted packet\n * - all sockets are disconnected\n *\n * @private\n */\n onclose(reason, description) {\n var _a;\n this.cleanup();\n (_a = this.engine) === null || _a === void 0 ? void 0 : _a.close();\n this.backoff.reset();\n this._readyState = \"closed\";\n this.emitReserved(\"close\", reason, description);\n if (this._reconnection && !this.skipReconnect) {\n this.reconnect();\n }\n }\n /**\n * Attempt a reconnection.\n *\n * @private\n */\n reconnect() {\n if (this._reconnecting || this.skipReconnect)\n return this;\n const self = this;\n if (this.backoff.attempts >= this._reconnectionAttempts) {\n this.backoff.reset();\n this.emitReserved(\"reconnect_failed\");\n this._reconnecting = false;\n }\n else {\n const delay = this.backoff.duration();\n this._reconnecting = true;\n const timer = this.setTimeoutFn(() => {\n if (self.skipReconnect)\n return;\n this.emitReserved(\"reconnect_attempt\", self.backoff.attempts);\n // check again for the case socket closed in above events\n if (self.skipReconnect)\n return;\n self.open((err) => {\n if (err) {\n self._reconnecting = false;\n self.reconnect();\n this.emitReserved(\"reconnect_error\", err);\n }\n else {\n self.onreconnect();\n }\n });\n }, delay);\n if (this.opts.autoUnref) {\n timer.unref();\n }\n this.subs.push(() => {\n this.clearTimeoutFn(timer);\n });\n }\n }\n /**\n * Called upon successful reconnect.\n *\n * @private\n */\n onreconnect() {\n const attempt = this.backoff.attempts;\n this._reconnecting = false;\n this.backoff.reset();\n this.emitReserved(\"reconnect\", attempt);\n }\n}\n","import { url } from \"./url.js\";\nimport { Manager } from \"./manager.js\";\nimport { Socket } from \"./socket.js\";\n/**\n * Managers cache.\n */\nconst cache = {};\nfunction lookup(uri, opts) {\n if (typeof uri === \"object\") {\n opts = uri;\n uri = undefined;\n }\n opts = opts || {};\n const parsed = url(uri, opts.path || \"/socket.io\");\n const source = parsed.source;\n const id = parsed.id;\n const path = parsed.path;\n const sameNamespace = cache[id] && path in cache[id][\"nsps\"];\n const newConnection = opts.forceNew ||\n opts[\"force new connection\"] ||\n false === opts.multiplex ||\n sameNamespace;\n let io;\n if (newConnection) {\n io = new Manager(source, opts);\n }\n else {\n if (!cache[id]) {\n cache[id] = new Manager(source, opts);\n }\n io = cache[id];\n }\n if (parsed.query && !opts.query) {\n opts.query = parsed.queryKey;\n }\n return io.socket(parsed.path, opts);\n}\n// so that \"lookup\" can be used both as a function (e.g. `io(...)`) and as a\n// namespace (e.g. `io.connect(...)`), for backward compatibility\nObject.assign(lookup, {\n Manager,\n Socket,\n io: lookup,\n connect: lookup,\n});\n/**\n * Protocol version.\n *\n * @public\n */\nexport { protocol } from \"socket.io-parser\";\n/**\n * Expose constructors for standalone build.\n *\n * @public\n */\nexport { Manager, Socket, lookup as io, lookup as connect, lookup as default, };\nexport { Fetch, NodeXHR, XHR, NodeWebSocket, WebSocket, WebTransport, } from \"engine.io-client\";\n","import { Manager } from \"socket.io-client\";\r\nimport type { Socket } from \"socket.io-client\";\r\nimport type { Store } from \"@reduxjs/toolkit\";\r\nimport { UserType } from \"../../apis/user/user.enum\";\r\n\r\nexport enum SocketNamespace {\r\n SYSTEM = \"system\",\r\n COMMENT = \"comment\",\r\n CHAT = \"chat\",\r\n CHAT_MESSAGE = \"chat-message\",\r\n}\r\nexport enum SocketSystemRoom {\r\n ROOT = UserType.ROOT,\r\n CUSTOMER = UserType.HR,\r\n ADMIN = UserType.ADMIN,\r\n}\r\n\r\nexport enum SocketSystemEvent {\r\n UPDATE_DISCUSSION = \"update-discussion\",\r\n DELETE_DISCUSSION = \"delete-discussion\",\r\n}\r\n\r\nlet manager: Manager | null = null;\r\n\r\nconst sockets: Record<string, Socket> = {};\r\n\r\nlet currentToken = \"\";\r\n\r\nexport const initSockets = (store: Store) => {\r\n if (manager) return;\r\n\r\n const baseURL = `${process.env.REACT_APP_BE_URL}chat`.replace(\r\n /\\/api\\/?$/,\r\n \"\"\r\n );\r\n\r\n manager = new Manager(baseURL, {\r\n transports: [\"websocket\"],\r\n withCredentials: true,\r\n autoConnect: false,\r\n });\r\n\r\n currentToken = store.getState().account.accessToken;\r\n\r\n store.subscribe(() => {\r\n const next = store.getState().account.accessToken;\r\n if (next !== currentToken) {\r\n currentToken = next;\r\n\r\n Object.values(sockets).forEach((s) => {\r\n if (!s) return;\r\n s.auth = { token: currentToken };\r\n if (s.connected) s.emit(\"auth:refresh\", currentToken);\r\n });\r\n }\r\n });\r\n};\r\n\r\nexport const socketConfig = (\r\n namespace: SocketNamespace,\r\n roomId?: string\r\n): Socket => {\r\n if (sockets[namespace]) return sockets[namespace]!;\r\n\r\n console.log(\"namespace\", namespace);\r\n if (!manager) throw new Error(\"Please initial socket at app!\");\r\n\r\n const socket = manager.socket(`/${namespace}`, {\r\n auth: { token: currentToken, roomId },\r\n });\r\n\r\n socket.on(\"reconnect_attempt\", () => {\r\n socket.auth = { token: currentToken };\r\n });\r\n\r\n sockets[namespace] = socket;\r\n return socket;\r\n};\r\n","import { axiosRequest } from '../../common/config';\r\nimport type {\r\n ForgotPasswordDto,\r\n LoginDto,\r\n LogoutDto,\r\n RefreshTokenDto,\r\n ResetPasswordDto,\r\n ResponseAuth,\r\n ResponseFcm,\r\n SubscribeUnsubscribeTopicDto,\r\n TokenObject,\r\n VerifyOtpDto,\r\n} from './auth.interface';\r\n\r\nexport const login = async (body: LoginDto): Promise<ResponseAuth> => await axiosRequest.post('auth/login', body);\r\n\r\nexport const logout = async (body: LogoutDto) => await axiosRequest.post('auth/logout', body);\r\n\r\nexport const forgotPassword = async (body: ForgotPasswordDto) => await axiosRequest.post('auth/forgot-password', body);\r\n\r\nexport const verifyOtp = async (body: VerifyOtpDto): Promise<TokenObject> =>\r\n await axiosRequest.post('auth/verify-otp', body);\r\n\r\nexport const resetPassword = async (body: ResetPasswordDto): Promise<ResponseAuth> =>\r\n await axiosRequest.post('auth/reset-password', body);\r\n\r\nexport const refreshToken = async (body: RefreshTokenDto): Promise<Omit<ResponseAuth, 'user'>> =>\r\n await axiosRequest.post('auth/refresh-token', body);\r\n\r\nexport const subscribeTopic = async (body: SubscribeUnsubscribeTopicDto): Promise<ResponseFcm> =>\r\n await axiosRequest.post('auth/subscribe-topic', body);\r\n\r\nexport const unsubscribeTopic = async (body: SubscribeUnsubscribeTopicDto) =>\r\n await axiosRequest.post('auth/unsubscribe-topic', body);\r\n","export enum LogoutType {\r\n THIS_DEVICE = 'Thiết bị',\r\n ALL_DEVICES = 'Tất cả thiết bị',\r\n}\r\n\r\nexport enum RefreshTokenStatus {\r\n USED = 'Used',\r\n UNUSED = 'Unused',\r\n}\r\n\r\nexport enum ResetPasswordType {\r\n OTP = 'Otp',\r\n EMAIL = 'Email',\r\n}\r\n\r\nexport enum ForgotPasswordType {\r\n PHONE = 'Phone',\r\n EMAIL = 'Email',\r\n}\r\n","// Export auth API\r\nexport * from './auth.api'\r\nexport * from './auth.enum'\r\nexport * from './auth.interface'\r\n\r\n// Export as authApi object\r\nimport * as authApiMethods from './auth.api'\r\nexport const authApi = authApiMethods\r\n","import { axiosRequest } from '../../common/config/axios.config';\r\nimport type { ResList } from '../../common/interfaces/res-list.interface';\r\nimport type { User } from './user.entities';\r\nimport type { CreateUserDto, GetListUserDto, UpdateAccountDto, UpdateUserDto } from './user.interface';\r\n\r\n\r\nexport const createUser = async (body: CreateUserDto): Promise<User> => await axiosRequest.post('user', body);\r\n\r\nexport const updateUser = async (id: string, body: UpdateUserDto): Promise<User> =>\r\n await axiosRequest.put('user/' + id, body);\r\n\r\nexport const updateAccount = async (body: UpdateAccountDto): Promise<User> => await axiosRequest.patch('user', body);\r\n\r\nexport const deleteUser = async (id: string): Promise<void> => await axiosRequest.delete('user/' + id);\r\n\r\nexport const getListUser = async (body: GetListUserDto): Promise<ResList<User>> =>\r\n await axiosRequest.post('user/list', body);\r\n\r\nexport const getListUserRelations = async (body: GetListUserDto): Promise<ResList<User>> =>\r\n await axiosRequest.post('user/list/relations', body);\r\n\r\nexport const getUser = async (id: string): Promise<User> => await axiosRequest.get('user/' + id);\r\n\r\nexport const getUserInformationHistory = async (id: string): Promise<User> =>\r\n await axiosRequest.get('user/user-history/' + id);\r\n\r\nexport const getUserOrgUnitPositionById = async (userId: string): Promise<User> =>\r\n await axiosRequest.get('user/user-org-unit-position/' + userId);\r\n\r\n\r\n\r\n\r\nexport const getUserGenerateNextUserCode = async (): Promise<string> =>\r\n await axiosRequest.get('user/generate-next-user-code');\r\n\r\n\r\n\r\nexport const getUserNearestManagers = async (): Promise<User[]> =>\r\n await axiosRequest.get(`user/nearest-managers/current`);\r\n\r\nexport const getUserByOrgUnit = async (body: { orgUnitIds: string[] }): Promise<User[]> =>\r\n await axiosRequest.post(`/org-unit/users-by-org-units`, body);\r\n\r\n\r\n","// Export user API\r\nexport * from './user.api'\r\nexport * from './user.entities'\r\nexport * from './user.enum'\r\nexport * from './user.interface'\r\n\r\n// Export as userApi object\r\nimport * as userApiMethods from './user.api'\r\nexport const userApi = userApiMethods\r\n","import { axiosRequest } from '../../common/config';\r\nimport type { ResList } from '../../common/interfaces/res-list.interface';\r\nimport type { Notification, NotificationSetting } from './notification.entities';\r\nimport type { GetListNotificationDto, GetListNotificationSettingDto, UpdateNotificationDto, UpdateNotificationSettingDto } from './notification.interface';\r\n \r\nexport interface ResSubscribeTopic {\r\n fcmToken: string;\r\n}\r\n\r\nexport const updateNotification = async (body: UpdateNotificationDto) => await axiosRequest.put('notification', body);\r\n\r\nexport const getListNotification = async (params: GetListNotificationDto): Promise<ResList<Notification>> =>\r\n await axiosRequest.get('notification', { params });\r\n\r\nexport const updateNotificationSetting = async (id: string, body: UpdateNotificationSettingDto) =>\r\n await axiosRequest.put('notification-setting/' + id, body);\r\n\r\nexport const getListNotificationSetting = async (\r\n params: GetListNotificationSettingDto,\r\n): Promise<ResList<NotificationSetting>> =>\r\n await axiosRequest.get('notification-setting', {\r\n params,\r\n });\r\n\r\nexport const subscribeTopicByToken = async (token: string): Promise<ResSubscribeTopic> =>\r\n await axiosRequest.post('notification/subscribe-topic', { token });\r\n\r\nexport const unSubscribeTopicByToken = async (token: string) =>\r\n await axiosRequest.post('notification/un-subscribe-topic', { token });\r\n","export enum NotificationType {\r\n SYSTEM = 'Hệ thống',\r\n APPLICATION = 'Ứng tuyển',\r\n INTERVIEW_BOOKING = 'Đặt lịch phỏng vấn',\r\n HIRED = 'Đã tuyển dụng',\r\n RECRUITMENT_REQUEST = 'Yêu cầu tuyển dụng',\r\n}\r\n\r\nexport enum UpdateNotificationAction {\r\n VIEW_ONE = 'View one',\r\n VIEW_ALL = 'View all',\r\n DELETE_VIEWED = 'Delete viewed',\r\n DELETE_ALL = 'Delete all',\r\n DELETE_ONE = 'Delete one',\r\n}\r\n\r\nexport enum NotificationStatus {\r\n VIEWED = 'Đã xem',\r\n NOT_VIEWED = 'Chưa xem',\r\n}\r\n\r\nexport enum keyNotification {\r\n PROPOSAL_APPROVAL = 'proposal_approval', // phê duyệt đề xuất\r\n JOB_APPROVAL = 'job_approval', // tuyển dụng\r\n JOB = 'job', // yêu cầu tuyển dụng\r\n MOVEMENT = 'movement', // di chuyển\r\n PROJECT_TASK = 'project_task', // nhiệm vụ dự án\r\n RECRUITMENT = 'recruitment', // phê duyệt tuyển dụng\r\n}\r\n","// Export notification API\r\nexport * from './notification.api'\r\nexport * from './notification.entities'\r\nexport * from './notification.enum'\r\nexport * from './notification.interface'\r\n\r\n// Export as notificationApi object\r\nimport * as notificationApiMethods from './notification.api'\r\nexport const notificationApi = notificationApiMethods\r\n","export enum OrgUnitType {\r\n BOARD_OF_DIRECTORS = 1, // Ban Giám đốc\r\n DIVISION = 3, // Khối\r\n DEPARTMENT = 5, // Phòng ban\r\n PART = 7, // Bộ phận\r\n TEAM = 9, // Nhóm\r\n}\r\n\r\nexport enum OrgUnitStatus {\r\n ACTIVE = 'Hoạt động',\r\n INACTIVE = 'Không hoạt động',\r\n}\r\n","import { createAsyncThunk } from '@reduxjs/toolkit'; \r\nimport type { LoginDto, LogoutDto, RefreshTokenDto, ResetPasswordDto, SubscribeUnsubscribeTopicDto } from '../../apis/auth/auth.interface';\r\nimport { authApi, userApi } from '../../apis';\r\nimport type { UpdateAccountDto } from '../../apis/user/user.interface';\r\nimport type { GlobalReduxState } from '../store.interface';\r\n\r\nexport const login = createAsyncThunk('LOGIN', async (params: LoginDto, { rejectWithValue }) => {\r\n try {\r\n return await authApi.login(params);\r\n } catch (error) {\r\n return rejectWithValue(error);\r\n }\r\n});\r\n\r\nexport const logout = createAsyncThunk('LOGOUT', async (params: LogoutDto, { rejectWithValue }) => {\r\n try {\r\n return await authApi.logout(params);\r\n } catch (error) {\r\n return rejectWithValue(error);\r\n }\r\n});\r\n\r\nexport const resetPassword = createAsyncThunk(\r\n 'RESET_PASSWORD',\r\n async (params: ResetPasswordDto, { rejectWithValue }) => {\r\n try {\r\n return await authApi.resetPassword(params);\r\n } catch (error) {\r\n return rejectWithValue(error);\r\n }\r\n },\r\n);\r\n\r\nexport const refreshToken = createAsyncThunk('REFRESH_TOKEN', async (params: RefreshTokenDto, { rejectWithValue }) => {\r\n try {\r\n return await authApi.refreshToken(params);\r\n } catch (error) {\r\n return rejectWithValue(error);\r\n }\r\n});\r\n\r\n// FCM\r\nexport const subscribeTopic = createAsyncThunk(\r\n 'SUBSCRIBE_TOPIC',\r\n async (params: SubscribeUnsubscribeTopicDto, { rejectWithValue }) => {\r\n try {\r\n await authApi.subscribeTopic(params);\r\n return { fcmToken: params.fcmToken };\r\n } catch (error) {\r\n return rejectWithValue(error);\r\n }\r\n },\r\n);\r\n\r\nexport const unsubscribeTopic = createAsyncThunk(\r\n 'UNSUBSCRIBE_TOPIC',\r\n async (params: SubscribeUnsubscribeTopicDto, { rejectWithValue }) => {\r\n try {\r\n return await authApi.unsubscribeTopic(params);\r\n } catch (error) {\r\n return rejectWithValue(error);\r\n }\r\n },\r\n);\r\n\r\nexport const changeNotificationCount = createAsyncThunk('CHANGE_NOTIFICATION_COUNT', (notificationCount: number) => {\r\n return notificationCount;\r\n});\r\n\r\nexport const changeSidebarCount = createAsyncThunk(\r\n 'CHANGE_SIDEBAR_COUNT',\r\n (params: { sidebarPath: string; count: number }) => {\r\n return params;\r\n },\r\n);\r\n\r\n// ACCOUNT\r\nexport const updateAccount = createAsyncThunk(\r\n 'UPDATE_ACCOUNT',\r\n async (body: UpdateAccountDto, { rejectWithValue, getState }) => {\r\n try {\r\n await userApi.updateAccount(body);\r\n const state = getState() as GlobalReduxState;\r\n if (!state.account.user) {\r\n throw new Error('User not found');\r\n }\r\n return await userApi.getUser(state.account.user.id);\r\n } catch (error) {\r\n return rejectWithValue(error);\r\n }\r\n },\r\n);\r\n\r\nexport const getAccount = createAsyncThunk('GET_ACCOUNT', async (id: string, { rejectWithValue }) => {\r\n try {\r\n return await userApi.getUser(id);\r\n } catch (error) {\r\n return rejectWithValue(error);\r\n }\r\n});\r\n\r\nexport const updatePositionOrgUnit = createAsyncThunk('UPDATE_POSITION_ORG_UNIT', (userUnitPositionId: string) => {\r\n return userUnitPositionId;\r\n});\r\n\r\nexport const updateCurrentAccess = createAsyncThunk('UPDATE_CURRENT_ACCESS', (current_access: string) => {\r\n return current_access;\r\n});\r\n","import { createSlice } from \"@reduxjs/toolkit\";\r\nimport type { CURRENT_ACCESS, GlobalAccountState } from \"./account.interface\";\r\nimport {\r\n login,\r\n logout,\r\n resetPassword,\r\n refreshToken,\r\n subscribeTopic,\r\n unsubscribeTopic,\r\n changeNotificationCount,\r\n changeSidebarCount,\r\n updateAccount,\r\n getAccount,\r\n updatePositionOrgUnit,\r\n updateCurrentAccess,\r\n} from \"./account.action\";\r\nimport { changeMode } from \"../system\";\r\nimport { Mode } from \"../../common\";\r\n\r\nexport const initialStateAccount: GlobalAccountState = {\r\n isLogin: false,\r\n user: null,\r\n accessToken: \"\",\r\n refreshToken: \"\",\r\n fcmToken: \"\",\r\n notificationCount: 0,\r\n userUnitPositionId: \"\",\r\n sidebarCountObj: {},\r\n current_access: \"recruitment\",\r\n};\r\n\r\nexport const slice = createSlice({\r\n // Name Slice\r\n name: \"account\",\r\n initialState: initialStateAccount,\r\n reducers: {},\r\n\r\n extraReducers: (builder) => {\r\n // Login\r\n builder.addCase(login.fulfilled, (state, action) => {\r\n state.isLogin = true;\r\n state.user = action.payload.user;\r\n state.accessToken = action.payload.accessToken;\r\n state.refreshToken = action.payload.refreshToken;\r\n state.userUnitPositionId =\r\n state.userUnitPositionId ||\r\n action.payload.user.userOrgUnitPositions[0].id;\r\n state.sidebarCountObj = action.payload.sidebarCountObj;\r\n });\r\n\r\n // Logout\r\n builder.addCase(logout.fulfilled, (state) => {\r\n state.isLogin = initialStateAccount.isLogin;\r\n state.user = initialStateAccount.user;\r\n state.accessToken = initialStateAccount.accessToken;\r\n state.refreshToken = initialStateAccount.refreshToken;\r\n state.fcmToken = initialStateAccount.fcmToken;\r\n state.userUnitPositionId = initialStateAccount.userUnitPositionId;\r\n state.sidebarCountObj = initialStateAccount.sidebarCountObj;\r\n });\r\n builder.addCase(logout.rejected, (state) => {\r\n state.isLogin = initialStateAccount.isLogin;\r\n state.user = initialStateAccount.user;\r\n state.accessToken = initialStateAccount.accessToken;\r\n state.refreshToken = initialStateAccount.refreshToken;\r\n state.fcmToken = initialStateAccount.fcmToken;\r\n state.userUnitPositionId = initialStateAccount.userUnitPositionId;\r\n state.sidebarCountObj = initialStateAccount.sidebarCountObj;\r\n });\r\n\r\n // Reset password\r\n builder.addCase(resetPassword.fulfilled, (state, action) => {\r\n state.isLogin = true;\r\n state.user = action.payload.user;\r\n state.accessToken = action.payload.accessToken;\r\n state.refreshToken = action.payload.refreshToken;\r\n state.userUnitPositionId =\r\n state.userUnitPositionId ||\r\n action.payload.user.userOrgUnitPositions[0].id;\r\n state.sidebarCountObj = initialStateAccount.sidebarCountObj;\r\n });\r\n\r\n // Refresh token\r\n builder.addCase(refreshToken.fulfilled, (state, action) => {\r\n state.accessToken = action.payload.accessToken;\r\n state.refreshToken = action.payload.refreshToken;\r\n });\r\n builder.addCase(refreshToken.rejected, (state) => {\r\n state.isLogin = initialStateAccount.isLogin;\r\n state.user = initialStateAccount.user;\r\n state.accessToken = initialStateAccount.accessToken;\r\n state.refreshToken = initialStateAccount.refreshToken;\r\n state.fcmToken = initialStateAccount.fcmToken;\r\n state.userUnitPositionId = initialStateAccount.userUnitPositionId;\r\n state.sidebarCountObj = initialStateAccount.sidebarCountObj;\r\n });\r\n\r\n // Subscribe Topic\r\n builder.addCase(subscribeTopic.fulfilled, (state, action) => {\r\n state.fcmToken = action.payload.fcmToken;\r\n });\r\n builder.addCase(subscribeTopic.rejected, (state) => {\r\n state.fcmToken = initialStateAccount.fcmToken;\r\n });\r\n\r\n // Unsubscribe Topic\r\n builder.addCase(unsubscribeTopic.fulfilled, (state) => {\r\n state.fcmToken = initialStateAccount.fcmToken;\r\n });\r\n builder.addCase(unsubscribeTopic.rejected, (state) => {\r\n state.fcmToken = initialStateAccount.fcmToken;\r\n });\r\n\r\n // Change notification Count\r\n builder.addCase(changeNotificationCount.fulfilled, (state, action) => {\r\n state.notificationCount = action.payload;\r\n });\r\n\r\n // Change sidebar count\r\n builder.addCase(changeSidebarCount.fulfilled, (state, action) => {\r\n state.sidebarCountObj = {\r\n ...state.sidebarCountObj,\r\n [action.payload.sidebarPath]:\r\n (state.sidebarCountObj[action.payload.sidebarPath] || 0) +\r\n action.payload.count,\r\n };\r\n });\r\n\r\n // Update account\r\n builder.addCase(updateAccount.fulfilled, (state, action) => {\r\n state.user = action.payload;\r\n });\r\n\r\n // Get account\r\n builder.addCase(getAccount.fulfilled, (state, action) => {\r\n state.user = action.payload;\r\n state.userUnitPositionId =\r\n state.userUnitPositionId || action.payload.userOrgUnitPositions[0].id;\r\n });\r\n\r\n // Update position org unit\r\n builder.addCase(updatePositionOrgUnit.fulfilled, (state, action) => {\r\n state.userUnitPositionId = action.payload;\r\n });\r\n\r\n builder.addCase(updateCurrentAccess.fulfilled, (state, action) => {\r\n state.current_access = action.payload as CURRENT_ACCESS;\r\n });\r\n },\r\n});\r\n\r\nexport const reducerAccount = slice.reducer;\r\n","import {\r\n persistStore,\r\n persistReducer,\r\n FLUSH,\r\n REHYDRATE,\r\n PAUSE,\r\n PERSIST,\r\n PURGE,\r\n REGISTER,\r\n} from \"redux-persist\";\r\nimport { configureStore, combineReducers } from \"@reduxjs/toolkit\";\r\nimport storage from \"redux-persist/lib/storage\";\r\nimport { initialStateSystem, reducerSystem } from \"./system/system.slice\";\r\nimport { initialStateAccount, reducerAccount } from \"./account/account.slice\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport remainingWeightReducer, {\r\n initialStateRemainingWeight,\r\n} from \"./slices/remaining-weight.slice\";\r\n\r\nconst persistConfig = {\r\n key: \"root\",\r\n storage,\r\n version: 1,\r\n migrate: (state: any) => {\r\n if (!state) return Promise.resolve(undefined);\r\n state.account = { ...initialStateAccount, ...state.account };\r\n state.system = { ...initialStateSystem, ...state.system };\r\n state.remainingWeight = {\r\n ...initialStateRemainingWeight,\r\n ...state.remainingWeight,\r\n };\r\n return Promise.resolve(state);\r\n },\r\n};\r\n\r\nconst rootReducer = combineReducers({\r\n system: reducerSystem,\r\n account: reducerAccount,\r\n remainingWeight: remainingWeightReducer,\r\n});\r\n\r\nconst persistedReducer = persistReducer(persistConfig, rootReducer);\r\n\r\nexport const store = configureStore({\r\n reducer: persistedReducer,\r\n middleware: (getDefaultMiddleware) =>\r\n getDefaultMiddleware({\r\n serializableCheck: {\r\n ignoredActions: [FLUSH, REHYDRATE, PAUSE, PERSIST, PURGE, REGISTER],\r\n },\r\n }),\r\n});\r\n\r\ntype AppDispatch = typeof store.dispatch;\r\n\r\nexport const useAppDispatch: () => AppDispatch = () =>\r\n useDispatch<AppDispatch>();\r\n\r\nexport const persistor = persistStore(store);\r\n","import { UserType } from '../../apis/user/user.enum';\r\n\r\nexport enum AppCategory {\r\n ALL = 'all',\r\n HRM = 'hrm',\r\n WORKFLOW = 'workflow',\r\n PLATFORM_INFO = 'platform-info',\r\n}\r\n\r\nexport enum AppType {\r\n SUBMENU = 'submenu',\r\n EXPAND_MENU = 'expand-menu',\r\n}\r\n\r\nexport interface AppModule {\r\n key: string;\r\n title: string;\r\n caption: string;\r\n icon: string;\r\n path?: string;\r\n category: AppCategory;\r\n allowUserTypes: UserType[];\r\n type?: AppType;\r\n children?: AppModule[];\r\n}\r\n","import { UserType } from '../../apis/user/user.enum';\r\nimport { ALLOW_USER_TYPES, BOOKING_SCREEN, DASHBOARD_SCREEN, PAGE, WORKFLOW_ENGINE_SCREEN, WORKFLOW_TRACKING_SCREEN } from '../../router/route.constant';\r\nimport { AppCategory, type AppModule } from '../enums/app-category.enum';\r\n\r\n// Định nghĩa tất cả các module/apps của hệ thống\r\nexport const SYSTEM_MODULES: AppModule[] = [\r\n {\r\n key: 'sevago-e-hiring',\r\n title: 'Sevago E-Hiring',\r\n caption: 'Tuyển Dụng',\r\n icon: '/images/system/sevago-e-hiring.svg',\r\n path: DASHBOARD_SCREEN.JOB_DASHBOARD.path,\r\n category: AppCategory.HRM,\r\n allowUserTypes: [UserType.ADMIN, UserType.User, UserType.C_B, UserType.HR, UserType.ROOT],\r\n\r\n },\r\n {\r\n key: 'sevago-hrm',\r\n title: 'Sevago HRM',\r\n caption: 'Nhân Sự',\r\n icon: '/images/system/sevago-hrm.svg',\r\n path: DASHBOARD_SCREEN.USER.path,\r\n category: AppCategory.HRM,\r\n allowUserTypes: ALLOW_USER_TYPES,\r\n\r\n },\r\n {\r\n key: 'sevago-payroll',\r\n title: 'Sevago Payroll',\r\n caption: 'Tính Lương',\r\n icon: '/images/system/sevago-payroll.svg',\r\n path: DASHBOARD_SCREEN.PAYROLL.path,\r\n category: AppCategory.HRM,\r\n allowUserTypes: [UserType.ADMIN, UserType.HR, UserType.ROOT],\r\n\r\n },\r\n {\r\n key: 'sevago-chart',\r\n title: 'Sevago Sơ đồ',\r\n caption: 'Sơ đồ',\r\n icon: '/images/system/sevago-chart.svg',\r\n path: DASHBOARD_SCREEN.ORG_STRUCTURE.path,\r\n category: AppCategory.HRM,\r\n allowUserTypes: ALLOW_USER_TYPES,\r\n\r\n },\r\n {\r\n key: 'sevago-checkin',\r\n title: 'Sevago Checkin',\r\n caption: 'Chấm Công',\r\n icon: '/images/system/sevago-checkin.svg',\r\n path: DASHBOARD_SCREEN.CHECK_IN.path,\r\n category: AppCategory.HRM,\r\n allowUserTypes: ALLOW_USER_TYPES,\r\n\r\n },\r\n {\r\n key: 'sevago-project',\r\n title: 'Sevago Project',\r\n caption: 'Dự Án',\r\n icon: '/images/system/sevago-project.svg',\r\n path: DASHBOARD_SCREEN.PROJECT_TASK.path,\r\n category: AppCategory.WORKFLOW,\r\n allowUserTypes: ALLOW_USER_TYPES,\r\n\r\n },\r\n {\r\n key: 'sevago-request',\r\n title: 'Sevago Request',\r\n caption: 'Đề Xuất',\r\n icon: '/images/system/sevago-request.svg',\r\n path: WORKFLOW_ENGINE_SCREEN.PROPOSAL_JOB_RECRUITMENT.path,\r\n category: AppCategory.WORKFLOW,\r\n allowUserTypes: ALLOW_USER_TYPES,\r\n\r\n },\r\n {\r\n key: 'sevago-process',\r\n title: 'Sevago Process',\r\n caption: 'Quy trình',\r\n icon: '/images/system/sevago.svg',\r\n path: PAGE.NOT_FOUND.path,\r\n category: AppCategory.WORKFLOW,\r\n allowUserTypes: ALLOW_USER_TYPES,\r\n },\r\n {\r\n key: 'sevago-tracking',\r\n title: 'Sevago Tracking',\r\n caption: 'Tiến trình',\r\n icon: '/images/system/sevago.svg',\r\n path: WORKFLOW_TRACKING_SCREEN.MY_TASK.path,\r\n category: AppCategory.WORKFLOW,\r\n allowUserTypes: ALLOW_USER_TYPES,\r\n },\r\n\r\n {\r\n key: 'sevago-message',\r\n title: 'Sevago Message',\r\n caption: 'Chat nhóm',\r\n icon: '/images/system/sevago-message.svg',\r\n path: DASHBOARD_SCREEN.CHAT.path,\r\n category: AppCategory.PLATFORM_INFO,\r\n allowUserTypes: ALLOW_USER_TYPES,\r\n },\r\n {\r\n key: 'sevago-training',\r\n title: 'Sevago Training',\r\n caption: 'Đào Tạo',\r\n icon: '/images/system/sevago-training.svg',\r\n path: DASHBOARD_SCREEN.TRAINING.path,\r\n category: AppCategory.PLATFORM_INFO,\r\n allowUserTypes: ALLOW_USER_TYPES,\r\n\r\n },\r\n {\r\n key: 'sevago-form',\r\n title: 'Sevago Form',\r\n caption: 'Biểu mẫu',\r\n icon: '/images/system/sevago-form.svg',\r\n path: PAGE.NOT_FOUND.path,\r\n category: AppCategory.PLATFORM_INFO,\r\n allowUserTypes: ALLOW_USER_TYPES,\r\n },\r\n {\r\n key: 'sevago-inside',\r\n title: 'Sevago Inside',\r\n caption: 'Truyền Thông và CSNV',\r\n icon: '/images/system/sevago-inside.svg',\r\n path: DASHBOARD_SCREEN.INSIDE.path,\r\n category: AppCategory.PLATFORM_INFO,\r\n allowUserTypes: ALLOW_USER_TYPES,\r\n\r\n },\r\n {\r\n key: 'sevago-booking',\r\n title: 'Sevago Booking',\r\n caption: 'Cuộc họp',\r\n icon: '/images/system/sevago-inside.svg',\r\n path: BOOKING_SCREEN.MEETING_SETTING.path,\r\n category: AppCategory.PLATFORM_INFO,\r\n allowUserTypes: ALLOW_USER_TYPES,\r\n },\r\n];\r\n","import type { ThemeOptions } from '@mui/material';\r\nimport { Mode } from '../enums/mode.enum';\r\n\r\nexport const dark = {\r\n palette: {\r\n mode: Mode.DARK,\r\n primary: {\r\n main: '#388e8e', // Sáng và dễ nhìn\r\n light: '#1de9b6', // Tươi sáng và dễ phân biệt\r\n dark: '#00796b', // Xanh đậm, sáng và rõ nét\r\n contrastText: '#0c0c0c', //\r\n },\r\n secondary: {\r\n main: '#D433FF', // Sáng hơn main gốc\r\n light: '#DC4BFF', // Sáng hơn light 0c0c0c\r\n dark: '#BE29E6', // Sáng hơn dark gốc\r\n contrastText: '#0c0c0c', //\r\n },\r\n error: {\r\n main: '#FF4444', // Màu đỏ tươi nổi bật\r\n light: '#FF6666', // Màu đỏ nhạt hơn để tạo sự cân bằng\r\n dark: '#CC0000', // Màu đỏ đậm nhưng vẫn giữ độ rực rỡ\r\n contrastText: '#0c0c0c', //\r\n },\r\n warning: {\r\n main: '#ffc107', //\r\n light: '#ffc71f', //\r\n dark: '#e5ad06', //\r\n contrastText: '#0c0c0c', //\r\n },\r\n info: {\r\n main: '#3096F0', // Sáng hơn main gốc\r\n light: '#5FAAF0', // Sáng hơn light gốc\r\n dark: '#2A88E0', // Sáng hơn dark gốc\r\n contrastText: '#0c0c0c', //\r\n },\r\n success: {\r\n main: '#3DAF42', // Sáng hơn main gốc\r\n light: '#3CB353', // Sáng hơn light gốc\r\n dark: '#379D3A', // Sáng hơn dark gốc\r\n contrastText: '#0c0c0c', //\r\n },\r\n text: {\r\n primary: '#fdfdfd', // Text\r\n secondary: '#b4b4b4', // Label bên trên textfield //\r\n disabled: '#606060', // Màu disable của content textfield\r\n },\r\n divider: '#545454', // Border //\r\n action: {\r\n active: '#b4b4b4', // Icon đổ xuống ở TextField select //\r\n hover: '#0c0c0c', //\r\n hoverOpacity: 0.05, // Độ mờ khi hover vào button outlined\r\n selected: 'rgba(255, 255, 255, 0.16)',\r\n selectedOpacity: 'none', // Độ mờ khi select rồi nhưng hover tiếp\r\n disabled: '#2f2f2f', // Border textfield, content button when disable\r\n disabledBackground: '#414141', // Background button\r\n disabledOpacity: 0,\r\n focus: 'rgba(0, 0, 0, 0.12)',\r\n focusOpacity: 0,\r\n activatedOpacity: 0,\r\n },\r\n background: {\r\n paper: '#1e1e1e', //\r\n default: '#010101', //\r\n },\r\n },\r\n shadows: [\r\n 'none',\r\n 'rgba(0, 0, 0, 0.19) 0px 10px 20px, rgba(0, 0, 0, 0.23) 0px 6px 6px',\r\n 'rgba(0, 0, 0, 0.19) 0px 10px 20px, rgba(0, 0, 0, 0.23) 0px 6px 6px',\r\n 'rgba(0, 0, 0, 0.19) 0px 10px 20px, rgba(0, 0, 0, 0.23) 0px 6px 6px',\r\n 'rgba(0, 0, 0, 0.19) 0px 10px 20px, rgba(0, 0, 0, 0.23) 0px 6px 6px',\r\n 'rgba(0, 0, 0, 0.19) 0px 10px 20px, rgba(0, 0, 0, 0.23) 0px 6px 6px',\r\n 'rgba(0, 0, 0, 0.19) 0px 10px 20px, rgba(0, 0, 0, 0.23) 0px 6px 6px',\r\n 'rgba(0, 0, 0, 0.19) 0px 10px 20px, rgba(0, 0, 0, 0.23) 0px 6px 6px',\r\n 'rgba(0, 0, 0, 0.19) 0px 10px 20px, rgba(0, 0, 0, 0.23) 0px 6px 6px',\r\n 'rgba(0, 0, 0, 0.19) 0px 10px 20px, rgba(0, 0, 0, 0.23) 0px 6px 6px',\r\n 'rgba(0, 0, 0, 0.19) 0px 10px 20px, rgba(0, 0, 0, 0.23) 0px 6px 6px',\r\n 'rgba(0, 0, 0, 0.19) 0px 10px 20px, rgba(0, 0, 0, 0.23) 0px 6px 6px',\r\n 'rgba(0, 0, 0, 0.19) 0px 10px 20px, rgba(0, 0, 0, 0.23) 0px 6px 6px',\r\n 'rgba(0, 0, 0, 0.19) 0px 10px 20px, rgba(0, 0, 0, 0.23) 0px 6px 6px',\r\n 'rgba(0, 0, 0, 0.19) 0px 10px 20px, rgba(0, 0, 0, 0.23) 0px 6px 6px',\r\n 'rgba(0, 0, 0, 0.19) 0px 10px 20px, rgba(0, 0, 0, 0.23) 0px 6px 6px',\r\n 'rgba(0, 0, 0, 0.19) 0px 10px 20px, rgba(0, 0, 0, 0.23) 0px 6px 6px',\r\n 'rgba(0, 0, 0, 0.19) 0px 10px 20px, rgba(0, 0, 0, 0.23) 0px 6px 6px',\r\n 'rgba(0, 0, 0, 0.19) 0px 10px 20px, rgba(0, 0, 0, 0.23) 0px 6px 6px',\r\n 'rgba(0, 0, 0, 0.19) 0px 10px 20px, rgba(0, 0, 0, 0.23) 0px 6px 6px',\r\n 'rgba(0, 0, 0, 0.19) 0px 10px 20px, rgba(0, 0, 0, 0.23) 0px 6px 6px',\r\n 'rgba(0, 0, 0, 0.19) 0px 10px 20px, rgba(0, 0, 0, 0.23) 0px 6px 6px',\r\n 'rgba(0, 0, 0, 0.19) 0px 10px 20px, rgba(0, 0, 0, 0.23) 0px 6px 6px',\r\n 'rgba(0, 0, 0, 0.19) 0px 10px 20px, rgba(0, 0, 0, 0.23) 0px 6px 6px',\r\n 'rgba(0, 0, 0, 0.19) 0px 10px 20px, rgba(0, 0, 0, 0.23) 0px 6px 6px',\r\n ],\r\n};\r\n\r\nexport const light = {\r\n palette: {\r\n mode: Mode.LIGHT,\r\n primary: {\r\n main: '#07554b',\r\n light: '#018775',\r\n dark: '#043731',\r\n contrastText: '#fdfdfd', //\r\n },\r\n secondary: {\r\n main: '#bf00e0', //\r\n light: '#c519e3', //\r\n dark: '#ab00c9', //\r\n contrastText: '#fdfdfd', //\r\n },\r\n error: {\r\n main: '#BB0000', //\r\n light: '#DD0000', //\r\n dark: '#9A0000', //\r\n contrastText: '#fdfdfd', //\r\n },\r\n warning: {\r\n main: '#ffc107', //\r\n light: '#ffc71f', //\r\n dark: '#e5ad06', //\r\n contrastText: '#fdfdfd', //\r\n },\r\n info: {\r\n main: '#105089', //\r\n light: '#276194', //\r\n dark: '#0e487b', //\r\n contrastText: '#fdfdfd', //\r\n },\r\n success: {\r\n main: '#2e7d32', //\r\n light: '#428a46', //\r\n dark: '#29702d', //\r\n contrastText: '#fdfdfd', //\r\n },\r\n text: {\r\n primary: '#0c0c0c', // Text\r\n secondary: '#242424', // Label bên trên textfield\r\n disabled: '#a7a7a7', // Màu disable của content textfield\r\n },\r\n\r\n divider: '#b3b3b3', // Border\r\n\r\n action: {\r\n active: '#242424', // Icon đổ xuống ở TextField select\r\n hover: '#eaeaea', // Màu hover\r\n hoverOpacity: 0.05, // Độ mờ khi hover vào button outlined\r\n selected: 'rgba(0, 0, 0, 0.08)',\r\n selectedOpacity: 'none', // Độ mờ khi select rồi nhưng hover tiếp\r\n disabled: '#d4d4d4', // Border textfield, content button when disable\r\n disabledBackground: '#b7b7b7', // Background button\r\n disabledOpacity: 0,\r\n focus: 'rgba(0, 0, 0, 0.12)',\r\n focusOpacity: 0,\r\n activatedOpacity: 0,\r\n },\r\n\r\n background: {\r\n paper: '#fafafa', //\r\n default: '#ffffff', //\r\n },\r\n },\r\n shadows: [\r\n 'none',\r\n 'rgba(17, 17, 26, 0.05) 0px 1px 0px, rgba(17, 17, 26, 0.1) 0px 0px 8px',\r\n 'rgba(17, 17, 26, 0.05) 0px 1px 0px, rgba(17, 17, 26, 0.1) 0px 0px 8px',\r\n 'rgba(17, 17, 26, 0.05) 0px 1px 0px, rgba(17, 17, 26, 0.1) 0px 0px 8px',\r\n 'rgba(17, 17, 26, 0.05) 0px 1px 0px, rgba(17, 17, 26, 0.1) 0px 0px 8px',\r\n 'rgba(17, 17, 26, 0.05) 0px 1px 0px, rgba(17, 17, 26, 0.1) 0px 0px 8px',\r\n 'rgba(17, 17, 26, 0.05) 0px 1px 0px, rgba(17, 17, 26, 0.1) 0px 0px 8px',\r\n 'rgba(17, 17, 26, 0.05) 0px 1px 0px, rgba(17, 17, 26, 0.1) 0px 0px 8px',\r\n 'rgba(17, 17, 26, 0.05) 0px 1px 0px, rgba(17, 17, 26, 0.1) 0px 0px 8px',\r\n 'rgba(17, 17, 26, 0.05) 0px 1px 0px, rgba(17, 17, 26, 0.1) 0px 0px 8px',\r\n 'rgba(17, 17, 26, 0.05) 0px 1px 0px, rgba(17, 17, 26, 0.1) 0px 0px 8px',\r\n 'rgba(17, 17, 26, 0.05) 0px 1px 0px, rgba(17, 17, 26, 0.1) 0px 0px 8px',\r\n 'rgba(17, 17, 26, 0.05) 0px 1px 0px, rgba(17, 17, 26, 0.1) 0px 0px 8px',\r\n 'rgba(17, 17, 26, 0.05) 0px 1px 0px, rgba(17, 17, 26, 0.1) 0px 0px 8px',\r\n 'rgba(17, 17, 26, 0.05) 0px 1px 0px, rgba(17, 17, 26, 0.1) 0px 0px 8px',\r\n 'rgba(17, 17, 26, 0.05) 0px 1px 0px, rgba(17, 17, 26, 0.1) 0px 0px 8px',\r\n 'rgba(17, 17, 26, 0.05) 0px 1px 0px, rgba(17, 17, 26, 0.1) 0px 0px 8px',\r\n 'rgba(17, 17, 26, 0.05) 0px 1px 0px, rgba(17, 17, 26, 0.1) 0px 0px 8px',\r\n 'rgba(17, 17, 26, 0.05) 0px 1px 0px, rgba(17, 17, 26, 0.1) 0px 0px 8px',\r\n 'rgba(17, 17, 26, 0.05) 0px 1px 0px, rgba(17, 17, 26, 0.1) 0px 0px 8px',\r\n 'rgba(17, 17, 26, 0.05) 0px 1px 0px, rgba(17, 17, 26, 0.1) 0px 0px 8px',\r\n 'rgba(17, 17, 26, 0.05) 0px 1px 0px, rgba(17, 17, 26, 0.1) 0px 0px 8px',\r\n 'rgba(17, 17, 26, 0.05) 0px 1px 0px, rgba(17, 17, 26, 0.1) 0px 0px 8px',\r\n 'rgba(17, 17, 26, 0.05) 0px 1px 0px, rgba(17, 17, 26, 0.1) 0px 0px 8px',\r\n 'rgba(17, 17, 26, 0.05) 0px 1px 0px, rgba(17, 17, 26, 0.1) 0px 0px 8px',\r\n ],\r\n};\r\n\r\nexport const OTHER: ThemeOptions = {\r\n typography: {\r\n fontFamily: 'Inter',\r\n fontWeightRegular: 400,\r\n fontWeightMedium: 550,\r\n fontWeightBold: 600,\r\n h1: {\r\n fontWeight: 900,\r\n fontSize: 40,\r\n },\r\n h2: {\r\n fontWeight: 700,\r\n fontSize: 35,\r\n },\r\n h3: {\r\n fontWeight: 600,\r\n fontSize: 30,\r\n },\r\n h4: {\r\n fontWeight: 600,\r\n fontSize: 25,\r\n },\r\n h5: {\r\n fontSize: 22,\r\n fontWeight: 600,\r\n },\r\n h6: {\r\n fontSize: 18,\r\n fontWeight: 550,\r\n },\r\n subtitle2: {\r\n fontSize: 15,\r\n fontWeight: 550,\r\n },\r\n subtitle1: {\r\n fontWeight: 550,\r\n fontSize: 14,\r\n },\r\n body2: {\r\n fontWeight: 500,\r\n fontSize: 14,\r\n },\r\n body1: {\r\n fontWeight: 400,\r\n fontSize: 14,\r\n },\r\n caption: {\r\n fontSize: 12,\r\n fontWeight: 300,\r\n },\r\n overline: {\r\n textTransform: 'none',\r\n fontSize: 12,\r\n fontWeight: 300,\r\n },\r\n },\r\n};\r\n\r\n// Export MODE object that contains all themes\r\nexport const MODE = {\r\n dark,\r\n light,\r\n OTHER,\r\n};\r\n","export const OPACITY = {\r\n 100: 'FF',\r\n 99: 'FC',\r\n 98: 'FA',\r\n 97: 'F7',\r\n 96: 'F5',\r\n 95: 'F2',\r\n 94: 'F0',\r\n 93: 'ED',\r\n 92: 'EB',\r\n 91: 'E8',\r\n 90: 'E6',\r\n 89: 'E3',\r\n 88: 'E0',\r\n 87: 'DE',\r\n 86: 'DB',\r\n 85: 'D9',\r\n 84: 'D6',\r\n 83: 'D4',\r\n 82: 'D1',\r\n 81: 'CF',\r\n 80: 'CC',\r\n 79: 'C9',\r\n 78: 'C7',\r\n 77: 'C4',\r\n 76: 'C2',\r\n 75: 'BF',\r\n 74: 'BD',\r\n 73: 'BA',\r\n 72: 'B8',\r\n 71: 'B5',\r\n 70: 'B3',\r\n 69: 'B0',\r\n 68: 'AD',\r\n 67: 'AB',\r\n 66: 'A8',\r\n 65: 'A6',\r\n 64: 'A3',\r\n 63: 'A1',\r\n 62: '9E',\r\n 61: '9C',\r\n 60: '99',\r\n 59: '96',\r\n 58: '94',\r\n 57: '91',\r\n 56: '8F',\r\n 55: '8C',\r\n 54: '8A',\r\n 53: '87',\r\n 52: '85',\r\n 51: '82',\r\n 50: '80',\r\n 49: '7D',\r\n 48: '7A',\r\n 47: '78',\r\n 46: '75',\r\n 45: '73',\r\n 44: '70',\r\n 43: '6E',\r\n 42: '6B',\r\n 41: '69',\r\n 40: '66',\r\n 39: '63',\r\n 38: '61',\r\n 37: '5E',\r\n 36: '5C',\r\n 35: '59',\r\n 34: '57',\r\n 33: '54',\r\n 32: '52',\r\n 31: '4F',\r\n 30: '4D',\r\n 29: '4A',\r\n 28: '47',\r\n 27: '45',\r\n 26: '42',\r\n 25: '40',\r\n 24: '3D',\r\n 23: '3B',\r\n 22: '38',\r\n 21: '36',\r\n 20: '33',\r\n 19: '30',\r\n 18: '2E',\r\n 17: '2B',\r\n 16: '29',\r\n 15: '26',\r\n 14: '24',\r\n 13: '21',\r\n 12: '1F',\r\n 11: '1C',\r\n 10: '1A',\r\n 9: '17',\r\n 8: '14',\r\n 7: '12',\r\n 6: '0F',\r\n 5: '0D',\r\n 4: '0A',\r\n 3: '08',\r\n 2: '05',\r\n 1: '03',\r\n 0: '00',\r\n};\r\n","export const phoneRegExp = /^(\\+?\\d{1,4}[\\s-]?)?(\\(?\\d{1,4}\\)?[\\s-]?)?\\d{1,4}[\\s-]?\\d{1,4}[\\s-]?\\d{1,9}$/;\r\n","// CÁC THÔNG SỐ CÙNG GROUP CÓ TỶ LỆ VỚI NHAU\r\n\r\nimport type { TypographyVariant } from \"@mui/material\";\r\n\r\n\r\n\r\n//\r\n\r\nexport const ANIMATION_TIME = 300;\r\n\r\nexport const SCALE_VALUE = 'scale(1.05)';\r\n\r\nexport const TRANSITION_TIME = '0.2s';\r\n\r\n//\r\n\r\nexport const WIDTH_LAYOUT_DESKTOP = `1200px`;\r\n\r\nexport const HEIGHT_LOGO_DEFAULT = '40px';\r\n\r\nexport const HEIGHT_IMAGE_DEFAULT = '40px';\r\n\r\n//\r\n\r\nexport const PADDING_GAP_TAB = '24px';\r\n\r\nexport const PADDING_GAP_LAYOUT = '16px';\r\n\r\nexport const PADDING_GAP_BUTTON = '12px';\r\n\r\nexport const PADDING_LAYOUT_HEADER = '8px 12px';\r\n\r\nexport const PADDING_GAP_ITEM = '8px';\r\n\r\nexport const PADDING_GAP_ITEM_SMALL = '6px';\r\n\r\n//\r\n\r\nexport const HEIGHT_ELEMENT_OTHER = '36px';\r\n\r\n//\r\n\r\nexport const BORDER_RADIUS_ELEMENT_ACTION = '24px';\r\n\r\nexport const BORDER_RADIUS_ELEMENT_WRAPPER = '12px';\r\n\r\nexport const BORDER_RADIUS_ELEMENT = '10px';\r\n\r\nexport const BORDER_RADIUS_ELEMENT_SMALL = '6px';\r\n\r\nexport const BORDER_RADIUS_ELEMENT_MIDDLE = '8px';\r\n\r\nexport const BORDER_RADIUS_ELEMENT_TAG = '3px';\r\n\r\nexport const HEIGHT_DEFAULT_TEXT_FIELD_BUTTON = '37.13px';\r\n\r\n//\r\n\r\nexport const TEXT_FIELD = {\r\n FONT_SIZE_LABEL: 15,\r\n FONT_SIZE_TITLE: 18,\r\n FONT_SIZE_CAPTION: 10,\r\n};\r\n\r\nexport const FONT_SIZE_ICON = {\r\n large: '22px',\r\n medium: '19px',\r\n small: '12px',\r\n};\r\n\r\nexport const FONT_SIZE_LOADING = {\r\n large: 40,\r\n medium: 22.5,\r\n small: 16,\r\n};\r\n\r\nexport const VARIANT_BY_SIZE: { [key: string]: TypographyVariant } = {\r\n large: 'h6',\r\n medium: 'subtitle1',\r\n small: 'caption',\r\n};\r\n\r\nexport const GAP_ICON_CONTENT_BY_SIZE = {\r\n large: '12px',\r\n medium: '8px',\r\n small: '4px',\r\n};\r\n\r\nexport const BORDER_COLOR_CARD = 'rgba(0, 0, 0, 0.12)';\r\n\r\nexport const BORDER_COLOR_LAYOUT = '#E4E6E6';\r\n\r\nexport const HEIGHT_HEADER = 57;\r\nexport const WIDTH_COLLAPSE = 55;\r\nexport const WIDTH_SIDEBAR = 224;\r\nexport const WIDTH_SIDEBAR_EXPAND = 200;\r\n\r\nexport const BACKGROUND_SYSTEM = '#F2F2F2';\r\n\r\nexport const WIDTH_TEXT_FIELD = {\r\n large: 300,\r\n medium: 200,\r\n small: 100,\r\n};\r\n\r\n// Export STYLE object that combines all constants\r\nexport const STYLE = {\r\n ANIMATION_TIME,\r\n SCALE_VALUE,\r\n TRANSITION_TIME,\r\n WIDTH_LAYOUT_DESKTOP,\r\n HEIGHT_LOGO_DEFAULT,\r\n HEIGHT_IMAGE_DEFAULT,\r\n PADDING_GAP_TAB,\r\n PADDING_GAP_LAYOUT,\r\n PADDING_GAP_BUTTON,\r\n PADDING_LAYOUT_HEADER,\r\n PADDING_GAP_ITEM,\r\n PADDING_GAP_ITEM_SMALL,\r\n HEIGHT_ELEMENT_OTHER,\r\n BORDER_RADIUS_ELEMENT_ACTION,\r\n BORDER_RADIUS_ELEMENT_WRAPPER,\r\n BORDER_RADIUS_ELEMENT,\r\n BORDER_RADIUS_ELEMENT_SMALL,\r\n BORDER_RADIUS_ELEMENT_MIDDLE,\r\n BORDER_RADIUS_ELEMENT_TAG,\r\n HEIGHT_DEFAULT_TEXT_FIELD_BUTTON,\r\n TEXT_FIELD,\r\n FONT_SIZE_ICON,\r\n FONT_SIZE_LOADING,\r\n VARIANT_BY_SIZE,\r\n GAP_ICON_CONTENT_BY_SIZE,\r\n BORDER_COLOR_CARD,\r\n BORDER_COLOR_LAYOUT,\r\n HEIGHT_HEADER,\r\n WIDTH_COLLAPSE,\r\n WIDTH_SIDEBAR,\r\n WIDTH_SIDEBAR_EXPAND,\r\n BACKGROUND_SYSTEM,\r\n WIDTH_TEXT_FIELD,\r\n};"," \r\nexport const BORDER_COLOR = {\r\n RED: 'red',\r\n};\r\n\r\nexport const TREE_TEXT_COLOR = {\r\n WHITE: '#FFFFFF',\r\n BLACK: '#000000',\r\n GREEN: '#003733',\r\n RED: '#ff000042',\r\n};\r\n\r\nexport const TREE_WIDTH = {\r\n NORMAL: 228,\r\n};\r\n","export const TYPOGRAPHY_STYLES = {\r\n '2xl': {\r\n regular: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 400,\r\n fontStyle: 'normal',\r\n fontSize: '72px',\r\n lineHeight: '80px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n medium: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 500,\r\n fontStyle: 'normal',\r\n fontSize: '72px',\r\n lineHeight: '80px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n semiBold: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 600,\r\n fontStyle: 'normal',\r\n fontSize: '72px',\r\n lineHeight: '80px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n bold: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 700,\r\n fontStyle: 'normal',\r\n fontSize: '72px',\r\n lineHeight: '80px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n },\r\n xl: {\r\n regular: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 400,\r\n fontStyle: 'normal',\r\n fontSize: '60px',\r\n lineHeight: '68px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n medium: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 500,\r\n fontStyle: 'normal',\r\n fontSize: '60px',\r\n lineHeight: '68px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n semiBold: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 600,\r\n fontStyle: 'normal',\r\n fontSize: '60px',\r\n lineHeight: '68px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n bold: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 700,\r\n fontStyle: 'normal',\r\n fontSize: '60px',\r\n lineHeight: '68px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n },\r\n lg: {\r\n regular: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 400,\r\n fontStyle: 'normal',\r\n fontSize: '48px',\r\n lineHeight: '56px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n medium: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 500,\r\n fontStyle: 'normal',\r\n fontSize: '48px',\r\n lineHeight: '56px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n semiBold: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 600,\r\n fontStyle: 'normal',\r\n fontSize: '48px',\r\n lineHeight: '56px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n bold: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 700,\r\n fontStyle: 'normal',\r\n fontSize: '48px',\r\n lineHeight: '56px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n },\r\n md: {\r\n regular: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 400,\r\n fontStyle: 'normal',\r\n fontSize: '36px',\r\n lineHeight: '44px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n medium: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 500,\r\n fontStyle: 'normal',\r\n fontSize: '36px',\r\n lineHeight: '44px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n semiBold: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 600,\r\n fontStyle: 'normal',\r\n fontSize: '36px',\r\n lineHeight: '44px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n bold: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 700,\r\n fontStyle: 'normal',\r\n fontSize: '36px',\r\n lineHeight: '44px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n },\r\n sm: {\r\n regular: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 400,\r\n fontStyle: 'normal',\r\n fontSize: '30px',\r\n lineHeight: '38px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n medium: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 500,\r\n fontStyle: 'normal',\r\n fontSize: '30px',\r\n lineHeight: '38px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n semiBold: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 600,\r\n fontStyle: 'normal',\r\n fontSize: '30px',\r\n lineHeight: '38px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n bold: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 700,\r\n fontStyle: 'normal',\r\n fontSize: '30px',\r\n lineHeight: '38px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n },\r\n xs: {\r\n regular: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 400,\r\n fontStyle: 'normal',\r\n fontSize: '24px',\r\n lineHeight: '32px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n medium: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 500,\r\n fontStyle: 'normal',\r\n fontSize: '24px',\r\n lineHeight: '32px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n semiBold: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 600,\r\n fontStyle: 'normal',\r\n fontSize: '24px',\r\n lineHeight: '32px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n bold: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 700,\r\n fontStyle: 'normal',\r\n fontSize: '24px',\r\n lineHeight: '32px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n },\r\n textXl: {\r\n regular: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 400,\r\n fontStyle: 'normal',\r\n fontSize: '20px',\r\n lineHeight: '28px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n medium: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 500,\r\n fontStyle: 'normal',\r\n fontSize: '20px',\r\n lineHeight: '28px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n semiBold: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 600,\r\n fontStyle: 'normal',\r\n fontSize: '20px',\r\n lineHeight: '28px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n bold: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 700,\r\n fontStyle: 'normal',\r\n fontSize: '20px',\r\n lineHeight: '28px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n },\r\n textLg: {\r\n regular: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 400,\r\n fontStyle: 'normal',\r\n fontSize: '18px',\r\n lineHeight: '26px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n medium: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 500,\r\n fontStyle: 'normal',\r\n fontSize: '18px',\r\n lineHeight: '26px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n semiBold: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 600,\r\n fontStyle: 'normal',\r\n fontSize: '18px',\r\n lineHeight: '26px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n bold: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 700,\r\n fontStyle: 'normal',\r\n fontSize: '18px',\r\n lineHeight: '26px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n },\r\n textMd: {\r\n regular: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 400,\r\n fontStyle: 'normal',\r\n fontSize: '16px',\r\n lineHeight: '24px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n medium: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 500,\r\n fontStyle: 'normal',\r\n fontSize: '16px',\r\n lineHeight: '24px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n semiBold: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 600,\r\n fontStyle: 'normal',\r\n fontSize: '16px',\r\n lineHeight: '24px',\r\n verticalAlign: 'middle',\r\n },\r\n bold: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 700,\r\n fontStyle: 'normal',\r\n fontSize: '16px',\r\n lineHeight: '24px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n },\r\n textSm: {\r\n regular: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 400,\r\n fontStyle: 'normal',\r\n fontSize: '14px',\r\n lineHeight: '22px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n medium: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 500,\r\n fontStyle: 'normal',\r\n fontSize: '14px',\r\n lineHeight: '22px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n semiBold: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 600,\r\n fontStyle: 'normal',\r\n fontSize: '14px',\r\n lineHeight: '22px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n bold: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 700,\r\n fontStyle: 'normal',\r\n fontSize: '14px',\r\n lineHeight: '22px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n },\r\n textXs: {\r\n regular: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 400,\r\n fontStyle: 'normal',\r\n fontSize: '12px',\r\n lineHeight: '20px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n medium: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 500,\r\n fontStyle: 'normal',\r\n fontSize: '12px',\r\n lineHeight: '20px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n semiBold: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 600,\r\n fontStyle: 'normal',\r\n fontSize: '12px',\r\n lineHeight: '20px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n bold: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 700,\r\n fontStyle: 'normal',\r\n fontSize: '12px',\r\n lineHeight: '20px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n },\r\n textSmall: {\r\n regular: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 400,\r\n fontStyle: 'normal',\r\n fontSize: '10px',\r\n lineHeight: '12px',\r\n letterSpacing: 0.1,\r\n verticalAlign: 'middle',\r\n },\r\n medium: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 500,\r\n fontStyle: 'normal',\r\n fontSize: '10px',\r\n lineHeight: '12px',\r\n letterSpacing: '0%',\r\n verticalAlign: 'middle',\r\n },\r\n semiBold: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 600,\r\n fontStyle: 'normal',\r\n fontSize: '10px',\r\n lineHeight: '12px',\r\n letterSpacing: 0.1,\r\n verticalAlign: 'middle',\r\n },\r\n bold: {\r\n fontFamily: '\"Inter\",sans-serif',\r\n fontWeight: 700,\r\n fontStyle: 'normal',\r\n fontSize: '10px',\r\n lineHeight: '12px',\r\n letterSpacing: 0.1,\r\n verticalAlign: 'middle',\r\n },\r\n },\r\n};\r\n","export enum Country {\r\n VIETNAM = 'Vietnam',\r\n USA = 'USA',\r\n KOREA = 'Korea',\r\n CHINA = 'China',\r\n TAIWAN = 'Taiwan',\r\n}\r\n","export enum FileTypeEnum {\r\n IMAGE = 'image',\r\n DOCUMENT = 'document',\r\n}\r\n","export enum OrderType {\r\n ASC = 'asc',\r\n DESC = 'desc',\r\n}\r\n","export enum PaymentMethod {\r\n CREDIT_CARD = 'Credit Card', // Thanh toán bằng thẻ tín dụng\r\n DEBIT_CARD = 'Debit Card', // Thanh toán bằng thẻ ghi nợ\r\n BANK_TRANSFER = 'Bank Transfer', // Chuyển khoản ngân hàng\r\n PAYPAL = 'PayPal', // Thanh toán qua PayPal\r\n COD = 'Cash on Delivery', // Thanh toán khi nhận hàng\r\n // E_WALLET = 'E-Wallet', // Thanh toán qua ví điện tử (e.g., Momo, ZaloPay)\r\n // CRYPTOCURRENCY = 'Cryptocurrency', // Thanh toán bằng tiền mã hóa (e.g., Bitcoin, Ethereum)\r\n // GIFT_CARD = 'Gift Card', // Thanh toán bằng thẻ quà tặng\r\n // OTHER = 'Other', // Phương thức thanh toán khác\r\n}\r\n","\r\nimport { SYSTEM_MODULES } from '../constant/apps.constant';\r\nimport type { AppModule } from '../enums/app-category.enum';\r\n\r\n\r\nexport const findCurrentAccessByPath = (pathname: string): string | undefined => {\r\n // Helper để check path trong children và trả về key của module chứa path\r\n const checkInChildren = (module: AppModule, children?: AppModule[]): string | undefined => {\r\n if (!children) return undefined;\r\n\r\n for (const child of children) {\r\n // Kiểm tra path trực tiếp của child\r\n if (child.path && pathname.includes(child.path)) {\r\n return module.key;\r\n }\r\n\r\n // Kiểm tra trong children của child (nếu có)\r\n if (child.children) {\r\n const found = checkInChildren(module, child.children);\r\n if (found) return found;\r\n }\r\n }\r\n\r\n return undefined;\r\n };\r\n\r\n // Tìm module chứa path\r\n for (const module of SYSTEM_MODULES) {\r\n // Kiểm tra path trực tiếp của module\r\n if (module.path && pathname.includes(module.path)) {\r\n return module.key;\r\n }\r\n\r\n // Kiểm tra trong children của module\r\n if (module.children) {\r\n const found = checkInChildren(module, module.children);\r\n if (found) return found;\r\n }\r\n }\r\n\r\n return undefined;\r\n};\r\n\r\n","export const stringToColor = (string: string) => {\r\n let hash = 0;\r\n let i;\r\n\r\n /* eslint-disable no-bitwise */\r\n for (i = 0; i < string.length; i += 1) {\r\n hash = string.charCodeAt(i) + ((hash << 5) - hash);\r\n }\r\n\r\n let color = '#';\r\n\r\n for (i = 0; i < 3; i += 1) {\r\n const value = (hash >> (i * 8)) & 0xff;\r\n color += `00${value.toString(16)}`.slice(-2);\r\n }\r\n /* eslint-enable no-bitwise */\r\n\r\n return color;\r\n};\r\n\r\n/**\r\n * Pha màu để làm nhạt màu gốc (blend với màu trắng)\r\n * @param color Màu HEX gốc (VD: '#008a77')\r\n * @param percentage Phần trăm nhạt đi (0-100)\r\n */\r\nexport const lightenColor = (color: string, percentage: number): string => {\r\n const amt = Math.round(2.55 * percentage);\r\n const R = parseInt(color.substring(1, 3), 16) + amt;\r\n const G = parseInt(color.substring(3, 5), 16) + amt;\r\n const B = parseInt(color.substring(5, 7), 16) + amt;\r\n\r\n return (\r\n '#' +\r\n (\r\n 0x1000000 +\r\n (R < 255 ? (R < 0 ? 0 : R) : 255) * 0x10000 +\r\n (G < 255 ? (G < 0 ? 0 : G) : 255) * 0x100 +\r\n (B < 255 ? (B < 0 ? 0 : B) : 255)\r\n )\r\n .toString(16)\r\n .slice(1)\r\n );\r\n};\r\n\r\nexport const extractNumberAtStartString = (string: string) => {\r\n const match = string.match(/^\\d+(\\.\\d+)?/);\r\n return match ? parseFloat(match[0]) : 0;\r\n};\r\n\r\nexport const stripHtml = (html: string): string => {\r\n const tempDiv = document.createElement('div');\r\n tempDiv.innerHTML = html;\r\n return tempDiv.textContent || tempDiv.innerText || '';\r\n};\r\n\r\nexport const getErrorMessage = (e: unknown) => (e as Error)?.message ?? 'Đã xảy ra lỗi không xác định!';\r\n","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",c=\"month\",f=\"quarter\",h=\"year\",d=\"date\",l=\"Invalid Date\",$=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),ordinal:function(t){var e=[\"th\",\"st\",\"nd\",\"rd\"],n=t%100;return\"[\"+t+(e[(n-20)%10]||e[n]||e[0])+\"]\"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()<n.date())return-t(n,e);var r=12*(n.year()-e.year())+(n.month()-e.month()),i=e.clone().add(r,c),s=n-i<0,u=e.clone().add(r+(s?-1:1),c);return+(-(r+(n-i)/(s?i-u:u-i))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return{M:c,y:h,w:o,d:a,D:d,h:u,m:s,s:i,ms:r,Q:f}[t]||String(t||\"\").toLowerCase().replace(/s$/,\"\")},u:function(t){return void 0===t}},g=\"en\",D={};D[g]=M;var p=\"$isDayjsObject\",S=function(t){return t instanceof _||!(!t||!t[p])},w=function t(e,n,r){var i;if(!e)return g;if(\"string\"==typeof e){var s=e.toLowerCase();D[s]&&(i=s),n&&(D[s]=n,i=s);var u=e.split(\"-\");if(!i&&u.length>1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},O=function(t,e){if(S(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},b=v;b.l=w,b.i=S,b.w=function(t,e){return O(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=w(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[p]=!0}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(b.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return b},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=O(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return O(t)<this.startOf(e)},m.isBefore=function(t,e){return this.endOf(e)<O(t)},m.$g=function(t,e,n){return b.u(t)?this[e]:this.set(n,t)},m.unix=function(){return Math.floor(this.valueOf()/1e3)},m.valueOf=function(){return this.$d.getTime()},m.startOf=function(t,e){var n=this,r=!!b.u(e)||e,f=b.p(t),l=function(t,e){var i=b.w(n.$u?Date.UTC(n.$y,e,t):new Date(n.$y,e,t),n);return r?i:i.endOf(a)},$=function(t,e){return b.w(n.toDate()[t].apply(n.toDate(\"s\"),(r?[0,0,0,0]:[23,59,59,999]).slice(e)),n)},y=this.$W,M=this.$M,m=this.$D,v=\"set\"+(this.$u?\"UTC\":\"\");switch(f){case h:return r?l(1,0):l(31,11);case c:return r?l(1,M):l(0,M+1);case o:var g=this.$locale().weekStart||0,D=(y<g?y+7:y)-g;return l(r?m-D:m+(6-D),M);case a:case d:return $(v+\"Hours\",0);case u:return $(v+\"Minutes\",1);case s:return $(v+\"Seconds\",2);case i:return $(v+\"Milliseconds\",3);default:return this.clone()}},m.endOf=function(t){return this.startOf(t,!1)},m.$set=function(t,e){var n,o=b.p(t),f=\"set\"+(this.$u?\"UTC\":\"\"),l=(n={},n[a]=f+\"Date\",n[d]=f+\"Date\",n[c]=f+\"Month\",n[h]=f+\"FullYear\",n[u]=f+\"Hours\",n[s]=f+\"Minutes\",n[i]=f+\"Seconds\",n[r]=f+\"Milliseconds\",n)[o],$=o===a?this.$D+(e-this.$W):e;if(o===c||o===h){var y=this.clone().set(d,1);y.$d[l]($),y.init(),this.$d=y.set(d,Math.min(this.$D,y.daysInMonth())).$d}else l&&this.$d[l]($);return this.init(),this},m.set=function(t,e){return this.clone().$set(t,e)},m.get=function(t){return this[b.p(t)]()},m.add=function(r,f){var d,l=this;r=Number(r);var $=b.p(f),y=function(t){var e=O(l);return b.w(e.date(e.date()+Math.round(t*r)),l)};if($===c)return this.set(c,this.$M+r);if($===h)return this.set(h,this.$y+r);if($===a)return y(1);if($===o)return y(7);var M=(d={},d[s]=e,d[u]=n,d[i]=t,d)[$]||1,m=this.$d.getTime()+r*M;return b.w(m,this)},m.subtract=function(t,e){return this.add(-1*t,e)},m.format=function(t){var e=this,n=this.$locale();if(!this.isValid())return n.invalidDate||l;var r=t||\"YYYY-MM-DDTHH:mm:ssZ\",i=b.z(this),s=this.$H,u=this.$m,a=this.$M,o=n.weekdays,c=n.months,f=n.meridiem,h=function(t,n,i,s){return t&&(t[n]||t(e,r))||i[n].slice(0,s)},d=function(t){return b.s(s%12||12,t,\"0\")},$=f||function(t,e,n){var r=t<12?\"AM\":\"PM\";return n?r.toLowerCase():r};return r.replace(y,(function(t,r){return r||function(t){switch(t){case\"YY\":return String(e.$y).slice(-2);case\"YYYY\":return b.s(e.$y,4,\"0\");case\"M\":return a+1;case\"MM\":return b.s(a+1,2,\"0\");case\"MMM\":return h(n.monthsShort,a,c,3);case\"MMMM\":return h(c,a);case\"D\":return e.$D;case\"DD\":return b.s(e.$D,2,\"0\");case\"d\":return String(e.$W);case\"dd\":return h(n.weekdaysMin,e.$W,o,2);case\"ddd\":return h(n.weekdaysShort,e.$W,o,3);case\"dddd\":return o[e.$W];case\"H\":return String(s);case\"HH\":return b.s(s,2,\"0\");case\"h\":return d(1);case\"hh\":return d(2);case\"a\":return $(s,u,!0);case\"A\":return $(s,u,!1);case\"m\":return String(u);case\"mm\":return b.s(u,2,\"0\");case\"s\":return String(e.$s);case\"ss\":return b.s(e.$s,2,\"0\");case\"SSS\":return b.s(e.$ms,3,\"0\");case\"Z\":return i}return null}(t)||i.replace(\":\",\"\")}))},m.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},m.diff=function(r,d,l){var $,y=this,M=b.p(d),m=O(r),v=(m.utcOffset()-this.utcOffset())*e,g=this-m,D=function(){return b.m(y,m)};switch(M){case h:$=D()/12;break;case c:$=D();break;case f:$=D()/3;break;case o:$=(g-v)/6048e5;break;case a:$=(g-v)/864e5;break;case u:$=g/n;break;case s:$=g/e;break;case i:$=g/t;break;default:$=g}return l?$:b.a($)},m.daysInMonth=function(){return this.endOf(c).$D},m.$locale=function(){return D[this.$L]},m.locale=function(t,e){if(!t)return this.$L;var n=this.clone(),r=w(t,e,!0);return r&&(n.$L=r),n},m.clone=function(){return b.w(this.$d,this)},m.toDate=function(){return new Date(this.valueOf())},m.toJSON=function(){return this.isValid()?this.toISOString():null},m.toISOString=function(){return this.$d.toISOString()},m.toString=function(){return this.$d.toUTCString()},M}(),k=_.prototype;return O.prototype=k,[[\"$ms\",r],[\"$s\",i],[\"$m\",s],[\"$H\",u],[\"$W\",a],[\"$M\",c],[\"$y\",h],[\"$D\",d]].forEach((function(t){k[t[1]]=function(e){return this.$g(e,t[0],t[1])}})),O.extend=function(t,e){return t.$i||(t(e,_,O),t.$i=!0),O},O.locale=w,O.isDayjs=S,O.unix=function(t){return O(1e3*t)},O.en=D[g],O.Ls=D,O.p={},O}));","!function(t,i){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=i():\"function\"==typeof define&&define.amd?define(i):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs_plugin_utc=i()}(this,(function(){\"use strict\";var t=\"minute\",i=/[+-]\\d\\d(?::?\\d\\d)?/g,e=/([+-]|\\d\\d)/g;return function(s,f,n){var u=f.prototype;n.utc=function(t){var i={date:t,utc:!0,args:arguments};return new f(i)},u.utc=function(i){var e=n(this.toDate(),{locale:this.$L,utc:!0});return i?e.add(this.utcOffset(),t):e},u.local=function(){return n(this.toDate(),{locale:this.$L,utc:!1})};var r=u.parse;u.parse=function(t){t.utc&&(this.$u=!0),this.$utils().u(t.$offset)||(this.$offset=t.$offset),r.call(this,t)};var o=u.init;u.init=function(){if(this.$u){var t=this.$d;this.$y=t.getUTCFullYear(),this.$M=t.getUTCMonth(),this.$D=t.getUTCDate(),this.$W=t.getUTCDay(),this.$H=t.getUTCHours(),this.$m=t.getUTCMinutes(),this.$s=t.getUTCSeconds(),this.$ms=t.getUTCMilliseconds()}else o.call(this)};var a=u.utcOffset;u.utcOffset=function(s,f){var n=this.$utils().u;if(n(s))return this.$u?0:n(this.$offset)?a.call(this):this.$offset;if(\"string\"==typeof s&&(s=function(t){void 0===t&&(t=\"\");var s=t.match(i);if(!s)return null;var f=(\"\"+s[0]).match(e)||[\"-\",0,0],n=f[0],u=60*+f[1]+ +f[2];return 0===u?0:\"+\"===n?u:-u}(s),null===s))return this;var u=Math.abs(s)<=16?60*s:s;if(0===u)return this.utc(f);var r=this.clone();if(f)return r.$offset=u,r.$u=!1,r;var o=this.$u?this.toDate().getTimezoneOffset():-1*this.utcOffset();return(r=this.local().add(u+o,t)).$offset=u,r.$x.$localOffset=o,r};var h=u.format;u.format=function(t){var i=t||(this.$u?\"YYYY-MM-DDTHH:mm:ss[Z]\":\"\");return h.call(this,i)},u.valueOf=function(){var t=this.$utils().u(this.$offset)?0:this.$offset+(this.$x.$localOffset||this.$d.getTimezoneOffset());return this.$d.valueOf()-6e4*t},u.isUTC=function(){return!!this.$u},u.toISOString=function(){return this.toDate().toISOString()},u.toString=function(){return this.toDate().toUTCString()};var l=u.toDate;u.toDate=function(t){return\"s\"===t&&this.$offset?n(this.format(\"YYYY-MM-DD HH:mm:ss:SSS\")).toDate():l.call(this)};var c=u.diff;u.diff=function(t,i,e){if(t&&this.$u===t.$u)return c.call(this,t,i,e);var s=this.local(),f=n(t).local();return c.call(s,f,i,e)}}}));","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs_plugin_timezone=e()}(this,(function(){\"use strict\";var t={year:0,month:1,day:2,hour:3,minute:4,second:5},e={};return function(n,i,o){var r,a=function(t,n,i){void 0===i&&(i={});var o=new Date(t),r=function(t,n){void 0===n&&(n={});var i=n.timeZoneName||\"short\",o=t+\"|\"+i,r=e[o];return r||(r=new Intl.DateTimeFormat(\"en-US\",{hour12:!1,timeZone:t,year:\"numeric\",month:\"2-digit\",day:\"2-digit\",hour:\"2-digit\",minute:\"2-digit\",second:\"2-digit\",timeZoneName:i}),e[o]=r),r}(n,i);return r.formatToParts(o)},u=function(e,n){for(var i=a(e,n),r=[],u=0;u<i.length;u+=1){var f=i[u],s=f.type,m=f.value,c=t[s];c>=0&&(r[c]=parseInt(m,10))}var d=r[3],l=24===d?0:d,h=r[0]+\"-\"+r[1]+\"-\"+r[2]+\" \"+l+\":\"+r[4]+\":\"+r[5]+\":000\",v=+e;return(o.utc(h).valueOf()-(v-=v%1e3))/6e4},f=i.prototype;f.tz=function(t,e){void 0===t&&(t=r);var n,i=this.utcOffset(),a=this.toDate(),u=a.toLocaleString(\"en-US\",{timeZone:t}),f=Math.round((a-new Date(u))/1e3/60),s=15*-Math.round(a.getTimezoneOffset()/15)-f;if(!Number(s))n=this.utcOffset(0,e);else if(n=o(u,{locale:this.$L}).$set(\"millisecond\",this.$ms).utcOffset(s,!0),e){var m=n.utcOffset();n=n.add(i-m,\"minute\")}return n.$x.$timezone=t,n},f.offsetName=function(t){var e=this.$x.$timezone||o.tz.guess(),n=a(this.valueOf(),e,{timeZoneName:t}).find((function(t){return\"timezonename\"===t.type.toLowerCase()}));return n&&n.value};var s=f.startOf;f.startOf=function(t,e){if(!this.$x||!this.$x.$timezone)return s.call(this,t,e);var n=o(this.format(\"YYYY-MM-DD HH:mm:ss:SSS\"),{locale:this.$L});return s.call(n,t,e).tz(this.$x.$timezone,!0)},o.tz=function(t,e,n){var i=n&&e,a=n||e||r,f=u(+o(),a);if(\"string\"!=typeof t)return o(t).tz(a);var s=function(t,e,n){var i=t-60*e*1e3,o=u(i,n);if(e===o)return[i,e];var r=u(i-=60*(o-e)*1e3,n);return o===r?[i,o]:[t-60*Math.min(o,r)*1e3,Math.max(o,r)]}(o.utc(t,i).valueOf(),f,a),m=s[0],c=s[1],d=o(m).utcOffset(c);return d.$x.$timezone=a,d},o.tz.guess=function(){return Intl.DateTimeFormat().resolvedOptions().timeZone},o.tz.setDefault=function(t){r=t}}}));","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_localizedFormat=t()}(this,(function(){\"use strict\";var e={LTS:\"h:mm:ss A\",LT:\"h:mm A\",L:\"MM/DD/YYYY\",LL:\"MMMM D, YYYY\",LLL:\"MMMM D, YYYY h:mm A\",LLLL:\"dddd, MMMM D, YYYY h:mm A\"};return function(t,o,n){var r=o.prototype,i=r.format;n.en.formats=e,r.format=function(t){void 0===t&&(t=\"YYYY-MM-DDTHH:mm:ssZ\");var o=this.$locale().formats,n=function(t,o){return t.replace(/(\\[[^\\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(t,n,r){var i=r&&r.toUpperCase();return n||o[r]||e[r]||o[i].replace(/(\\[[^\\]]+])|(MMMM|MM|DD|dddd)/g,(function(e,t,o){return t||o.slice(1)}))}))}(t,void 0===o?{}:o);return i.call(this,n)}}}));","!function(r,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(r=\"undefined\"!=typeof globalThis?globalThis:r||self).dayjs_plugin_relativeTime=e()}(this,(function(){\"use strict\";return function(r,e,t){r=r||{};var n=e.prototype,o={future:\"in %s\",past:\"%s ago\",s:\"a few seconds\",m:\"a minute\",mm:\"%d minutes\",h:\"an hour\",hh:\"%d hours\",d:\"a day\",dd:\"%d days\",M:\"a month\",MM:\"%d months\",y:\"a year\",yy:\"%d years\"};function i(r,e,t,o){return n.fromToBase(r,e,t,o)}t.en.relativeTime=o,n.fromToBase=function(e,n,i,d,u){for(var f,a,s,l=i.$locale().relativeTime||o,h=r.thresholds||[{l:\"s\",r:44,d:\"second\"},{l:\"m\",r:89},{l:\"mm\",r:44,d:\"minute\"},{l:\"h\",r:89},{l:\"hh\",r:21,d:\"hour\"},{l:\"d\",r:35},{l:\"dd\",r:25,d:\"day\"},{l:\"M\",r:45},{l:\"MM\",r:10,d:\"month\"},{l:\"y\",r:17},{l:\"yy\",d:\"year\"}],m=h.length,c=0;c<m;c+=1){var y=h[c];y.d&&(f=d?t(e).diff(i,y.d,!0):i.diff(e,y.d,!0));var p=(r.rounding||Math.round)(Math.abs(f));if(s=f>0,p<=y.r||!y.r){p<=1&&c>0&&(y=h[c-1]);var v=l[y.l];u&&(p=u(\"\"+p)),a=\"string\"==typeof v?v.replace(\"%d\",p):v(p,n,y.l,s);break}}if(n)return a;var M=s?l.future:l.past;return\"function\"==typeof M?M(a):M.replace(\"%s\",a)},n.to=function(r,e){return i(r,e,this,!0)},n.from=function(r,e){return i(r,e,this)};var d=function(r){return r.$u?t.utc():t()};n.toNow=function(r){return this.to(d(this),r)},n.fromNow=function(r){return this.from(d(this),r)}}}));","import dayjs from 'dayjs';\r\nimport utc from 'dayjs/plugin/utc';\r\nimport timezone from 'dayjs/plugin/timezone';\r\nimport localizedFormat from 'dayjs/plugin/localizedFormat';\r\nimport relativeTime from 'dayjs/plugin/relativeTime';\r\n\r\ndayjs.extend(utc);\r\ndayjs.extend(timezone);\r\ndayjs.extend(localizedFormat);\r\ndayjs.extend(relativeTime);\r\n\r\ndayjs.tz.setDefault('Asia/Ho_Chi_Minh');\r\n\r\nconst locale = {\r\n name: 'vi',\r\n weekdays: 'Chủ Nhật_Thứ Hai_Thứ Ba_Thứ Tư_Thứ Năm_Thứ Sáu_Thứ Bảy'.split('_'),\r\n weekdaysShort: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\r\n weekdaysMin: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\r\n months: 'Tháng 1_Tháng 2_Tháng 3_Tháng 4_Tháng 5_Tháng 6_Tháng 7_Tháng 8_Tháng 9_Tháng 10_Tháng 11_Tháng 12'.split(\r\n '_',\r\n ),\r\n monthsShort: 'Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12'.split('_'),\r\n weekStart: 1,\r\n ordinal: (n) => `${n}`,\r\n formats: {\r\n LT: 'HH:mm',\r\n LTS: 'HH:mm:ss',\r\n L: 'DD/MM/YYYY',\r\n LL: 'D MMMM [năm] YYYY',\r\n LLL: 'D MMMM [năm] YYYY HH:mm',\r\n LLLL: 'dddd, D MMMM [năm] YYYY HH:mm',\r\n l: 'D/M/YYYY',\r\n ll: 'D MMM YYYY',\r\n lll: 'D MMM YYYY HH:mm',\r\n llll: 'ddd, D MMM YYYY HH:mm',\r\n },\r\n relativeTime: {\r\n future: '%s tới',\r\n past: '%s trước',\r\n s: 'vài giây',\r\n m: 'một phút',\r\n mm: '%d phút',\r\n h: 'một giờ',\r\n hh: '%d giờ',\r\n d: 'một ngày',\r\n dd: '%d ngày',\r\n M: 'một tháng',\r\n MM: '%d tháng',\r\n y: 'một năm',\r\n yy: '%d năm',\r\n },\r\n};\r\n\r\ndayjs.locale(locale, null, true);\r\ndayjs.locale('vi');\r\n\r\nexport default locale;\r\n","import dayjs from 'dayjs';\r\nimport '../../assets/other/vi';\r\n\r\nexport const getTimeAgo = (time: Date | string) => {\r\n // @ts-ignore\r\n const inputDate = dayjs.utc(time).tz();\r\n const diffDays = dayjs().diff(inputDate, 'day');\r\n\r\n if (diffDays > 7) {\r\n return inputDate.format('DD/MM/YYYY');\r\n }\r\n\r\n return inputDate.fromNow();\r\n};\r\n\r\nexport const getDateTime = (time?: Date | string, isGetDay?: boolean) => {\r\n if (!time) return '';\r\n return isGetDay ? dayjs(time).format('DD/MM/YYYY hh:mm') : dayjs(time).format('DD/MM/YYYY hh:mm A');\r\n};\r\n\r\nexport const getDate = (time?: Date | string) => {\r\n if (!time) return '';\r\n return dayjs(time).format('DD/MM/YYYY');\r\n};\r\n\r\nexport const checkNowYear = (date?: Date, year?: number) => {\r\n const parsedDate = date ? dayjs(date) : dayjs();\r\n\r\n if (!parsedDate.isValid()) {\r\n return false;\r\n }\r\n\r\n if (parsedDate.year() !== year) {\r\n return false;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nexport const getMonthRangeForYear = (startDate: Date, endDate: Date, year: number) => {\r\n const start = dayjs(startDate);\r\n const end = dayjs(endDate);\r\n\r\n if (year < start.year() || year > end.year()) {\r\n return { start: 0, end: 0 };\r\n }\r\n\r\n const startMonth = start.year() === year ? start.month() : 0;\r\n const endMonth = end.year() === year ? end.month() : 11;\r\n\r\n return { start: startMonth, end: endMonth };\r\n};\r\n\r\nexport function getDayOffsetPx(date: dayjs.Dayjs, monthWidths: number[], dayWidth: number) {\r\n const monthIdx = date.month();\r\n const dayOfMonth = date.date();\r\n const widthBeforeMonth = monthWidths.slice(0, monthIdx).reduce((a, b) => a + b, 0);\r\n return widthBeforeMonth + (dayOfMonth - 1) * dayWidth;\r\n}\r\n\r\nexport const isSameDateTime = (createdAt: Date | string, updatedAt: Date | string): boolean => {\r\n const created = dayjs(createdAt);\r\n const updated = dayjs(updatedAt);\r\n\r\n // So sánh chính xác đến giây\r\n return created.isSame(updated);\r\n};\r\n\r\nexport const getTimeDate = (time?: Date | string) => {\r\n if (!time) return '';\r\n return dayjs(time).format('hh:mm DD/MM/YYYY');\r\n};\r\n\r\n// Hàm kiểm tra xem string có phải là date không\r\nexport const isDateString = (value: any): boolean => {\r\n if (typeof value !== 'string') return false;\r\n\r\n // Kiểm tra các pattern date phổ biến\r\n const datePatterns = [\r\n /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d{3})?Z?$/, // ISO format\r\n /^\\d{4}-\\d{2}-\\d{2}$/, // YYYY-MM-DD\r\n /^\\d{2}\\/\\d{2}\\/\\d{4}$/, // DD/MM/YYYY\r\n /^\\d{2}-\\d{2}-\\d{4}$/, // DD-MM-YYYY\r\n ];\r\n\r\n return datePatterns.some((pattern) => pattern.test(value));\r\n};\r\n","import { AppCategory } from '../../enums/app-category.enum';\r\n\r\nexport const getAppColor = (app: AppCategory): string => {\r\n switch (app) {\r\n case AppCategory.HRM:\r\n return 'linear-gradient(180deg, #09D47B 0%, #07554B 100%)';\r\n case AppCategory.WORKFLOW:\r\n return 'linear-gradient(180deg, #3990FF 0%, #2662FF 100%)';\r\n default:\r\n return 'linear-gradient(180deg, #FF9A56 0%, #FF6A43 100%)';\r\n }\r\n};\r\n","export const getLimitLineCss = (line: number): any => ({\r\n display: '-webkit-box',\r\n overflow: 'hidden',\r\n WebkitBoxOrient: 'vertical',\r\n WebkitLineClamp: line,\r\n // textOverflow: 'ellipsis',\r\n});\r\n\r\nexport const truncateText = (text: string, maxLength: number = 27): string => {\r\n if (!text || text.length <= maxLength) {\r\n return text;\r\n }\r\n return `${text.substring(0, maxLength)}...`;\r\n};\r\n","// Export utils\r\nexport * from './find-current-access.helper'\r\nexport * from './string.utils'\r\nexport * from './time.utils'\r\nexport * from './other'\r\n\r\n// Export as timeUtils object\r\nimport * as timeUtilsMethods from './time.utils'\r\nexport const timeUtils = timeUtilsMethods","/**\n * @license React\n * react-jsx-runtime.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and 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\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\");\nfunction jsxProd(type, config, maybeKey) {\n var key = null;\n void 0 !== maybeKey && (key = \"\" + maybeKey);\n void 0 !== config.key && (key = \"\" + config.key);\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n config = maybeKey.ref;\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n ref: void 0 !== config ? config : null,\n props: maybeKey\n };\n}\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsx = jsxProd;\nexports.jsxs = jsxProd;\n","/**\n * @license React\n * react-jsx-runtime.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and 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\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n function getComponentNameFromType(type) {\n if (null == type) return null;\n if (\"function\" === typeof type)\n return type.$$typeof === REACT_CLIENT_REFERENCE\n ? null\n : type.displayName || type.name || null;\n if (\"string\" === typeof type) return type;\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return \"Fragment\";\n case REACT_PROFILER_TYPE:\n return \"Profiler\";\n case REACT_STRICT_MODE_TYPE:\n return \"StrictMode\";\n case REACT_SUSPENSE_TYPE:\n return \"Suspense\";\n case REACT_SUSPENSE_LIST_TYPE:\n return \"SuspenseList\";\n case REACT_ACTIVITY_TYPE:\n return \"Activity\";\n }\n if (\"object\" === typeof type)\n switch (\n (\"number\" === typeof type.tag &&\n console.error(\n \"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.\"\n ),\n type.$$typeof)\n ) {\n case REACT_PORTAL_TYPE:\n return \"Portal\";\n case REACT_CONTEXT_TYPE:\n return type.displayName || \"Context\";\n case REACT_CONSUMER_TYPE:\n return (type._context.displayName || \"Context\") + \".Consumer\";\n case REACT_FORWARD_REF_TYPE:\n var innerType = type.render;\n type = type.displayName;\n type ||\n ((type = innerType.displayName || innerType.name || \"\"),\n (type = \"\" !== type ? \"ForwardRef(\" + type + \")\" : \"ForwardRef\"));\n return type;\n case REACT_MEMO_TYPE:\n return (\n (innerType = type.displayName || null),\n null !== innerType\n ? innerType\n : getComponentNameFromType(type.type) || \"Memo\"\n );\n case REACT_LAZY_TYPE:\n innerType = type._payload;\n type = type._init;\n try {\n return getComponentNameFromType(type(innerType));\n } catch (x) {}\n }\n return null;\n }\n function testStringCoercion(value) {\n return \"\" + value;\n }\n function checkKeyStringCoercion(value) {\n try {\n testStringCoercion(value);\n var JSCompiler_inline_result = !1;\n } catch (e) {\n JSCompiler_inline_result = !0;\n }\n if (JSCompiler_inline_result) {\n JSCompiler_inline_result = console;\n var JSCompiler_temp_const = JSCompiler_inline_result.error;\n var JSCompiler_inline_result$jscomp$0 =\n (\"function\" === typeof Symbol &&\n Symbol.toStringTag &&\n value[Symbol.toStringTag]) ||\n value.constructor.name ||\n \"Object\";\n JSCompiler_temp_const.call(\n JSCompiler_inline_result,\n \"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.\",\n JSCompiler_inline_result$jscomp$0\n );\n return testStringCoercion(value);\n }\n }\n function getTaskName(type) {\n if (type === REACT_FRAGMENT_TYPE) return \"<>\";\n if (\n \"object\" === typeof type &&\n null !== type &&\n type.$$typeof === REACT_LAZY_TYPE\n )\n return \"<...>\";\n try {\n var name = getComponentNameFromType(type);\n return name ? \"<\" + name + \">\" : \"<...>\";\n } catch (x) {\n return \"<...>\";\n }\n }\n function getOwner() {\n var dispatcher = ReactSharedInternals.A;\n return null === dispatcher ? null : dispatcher.getOwner();\n }\n function UnknownOwner() {\n return Error(\"react-stack-top-frame\");\n }\n function hasValidKey(config) {\n if (hasOwnProperty.call(config, \"key\")) {\n var getter = Object.getOwnPropertyDescriptor(config, \"key\").get;\n if (getter && getter.isReactWarning) return !1;\n }\n return void 0 !== config.key;\n }\n function defineKeyPropWarningGetter(props, displayName) {\n function warnAboutAccessingKey() {\n specialPropKeyWarningShown ||\n ((specialPropKeyWarningShown = !0),\n console.error(\n \"%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)\",\n displayName\n ));\n }\n warnAboutAccessingKey.isReactWarning = !0;\n Object.defineProperty(props, \"key\", {\n get: warnAboutAccessingKey,\n configurable: !0\n });\n }\n function elementRefGetterWithDeprecationWarning() {\n var componentName = getComponentNameFromType(this.type);\n didWarnAboutElementRef[componentName] ||\n ((didWarnAboutElementRef[componentName] = !0),\n console.error(\n \"Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.\"\n ));\n componentName = this.props.ref;\n return void 0 !== componentName ? componentName : null;\n }\n function ReactElement(type, key, props, owner, debugStack, debugTask) {\n var refProp = props.ref;\n type = {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n props: props,\n _owner: owner\n };\n null !== (void 0 !== refProp ? refProp : null)\n ? Object.defineProperty(type, \"ref\", {\n enumerable: !1,\n get: elementRefGetterWithDeprecationWarning\n })\n : Object.defineProperty(type, \"ref\", { enumerable: !1, value: null });\n type._store = {};\n Object.defineProperty(type._store, \"validated\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: 0\n });\n Object.defineProperty(type, \"_debugInfo\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: null\n });\n Object.defineProperty(type, \"_debugStack\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugStack\n });\n Object.defineProperty(type, \"_debugTask\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugTask\n });\n Object.freeze && (Object.freeze(type.props), Object.freeze(type));\n return type;\n }\n function jsxDEVImpl(\n type,\n config,\n maybeKey,\n isStaticChildren,\n debugStack,\n debugTask\n ) {\n var children = config.children;\n if (void 0 !== children)\n if (isStaticChildren)\n if (isArrayImpl(children)) {\n for (\n isStaticChildren = 0;\n isStaticChildren < children.length;\n isStaticChildren++\n )\n validateChildKeys(children[isStaticChildren]);\n Object.freeze && Object.freeze(children);\n } else\n console.error(\n \"React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.\"\n );\n else validateChildKeys(children);\n if (hasOwnProperty.call(config, \"key\")) {\n children = getComponentNameFromType(type);\n var keys = Object.keys(config).filter(function (k) {\n return \"key\" !== k;\n });\n isStaticChildren =\n 0 < keys.length\n ? \"{key: someKey, \" + keys.join(\": ..., \") + \": ...}\"\n : \"{key: someKey}\";\n didWarnAboutKeySpread[children + isStaticChildren] ||\n ((keys =\n 0 < keys.length ? \"{\" + keys.join(\": ..., \") + \": ...}\" : \"{}\"),\n console.error(\n 'A props object containing a \"key\" prop is being spread into JSX:\\n let props = %s;\\n <%s {...props} />\\nReact keys must be passed directly to JSX without using spread:\\n let props = %s;\\n <%s key={someKey} {...props} />',\n isStaticChildren,\n children,\n keys,\n children\n ),\n (didWarnAboutKeySpread[children + isStaticChildren] = !0));\n }\n children = null;\n void 0 !== maybeKey &&\n (checkKeyStringCoercion(maybeKey), (children = \"\" + maybeKey));\n hasValidKey(config) &&\n (checkKeyStringCoercion(config.key), (children = \"\" + config.key));\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n children &&\n defineKeyPropWarningGetter(\n maybeKey,\n \"function\" === typeof type\n ? type.displayName || type.name || \"Unknown\"\n : type\n );\n return ReactElement(\n type,\n children,\n maybeKey,\n getOwner(),\n debugStack,\n debugTask\n );\n }\n function validateChildKeys(node) {\n isValidElement(node)\n ? node._store && (node._store.validated = 1)\n : \"object\" === typeof node &&\n null !== node &&\n node.$$typeof === REACT_LAZY_TYPE &&\n (\"fulfilled\" === node._payload.status\n ? isValidElement(node._payload.value) &&\n node._payload.value._store &&\n (node._payload.value._store.validated = 1)\n : node._store && (node._store.validated = 1));\n }\n function isValidElement(object) {\n return (\n \"object\" === typeof object &&\n null !== object &&\n object.$$typeof === REACT_ELEMENT_TYPE\n );\n }\n var React = require(\"react\"),\n REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\"),\n REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\"),\n ReactSharedInternals =\n React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n hasOwnProperty = Object.prototype.hasOwnProperty,\n isArrayImpl = Array.isArray,\n createTask = console.createTask\n ? console.createTask\n : function () {\n return null;\n };\n React = {\n react_stack_bottom_frame: function (callStackForError) {\n return callStackForError();\n }\n };\n var specialPropKeyWarningShown;\n var didWarnAboutElementRef = {};\n var unknownOwnerDebugStack = React.react_stack_bottom_frame.bind(\n React,\n UnknownOwner\n )();\n var unknownOwnerDebugTask = createTask(getTaskName(UnknownOwner));\n var didWarnAboutKeySpread = {};\n exports.Fragment = REACT_FRAGMENT_TYPE;\n exports.jsx = function (type, config, maybeKey) {\n var trackActualOwner =\n 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n return jsxDEVImpl(\n type,\n config,\n maybeKey,\n !1,\n trackActualOwner\n ? Error(\"react-stack-top-frame\")\n : unknownOwnerDebugStack,\n trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n );\n };\n exports.jsxs = function (type, config, maybeKey) {\n var trackActualOwner =\n 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n return jsxDEVImpl(\n type,\n config,\n maybeKey,\n !0,\n trackActualOwner\n ? Error(\"react-stack-top-frame\")\n : unknownOwnerDebugStack,\n trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n );\n };\n })();\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","import React, { type ReactNode } from \"react\";\r\nimport { Stack } from \"@mui/material\";\r\n\r\nexport interface AuthLayoutProps {\r\n children?: ReactNode;\r\n}\r\n\r\nexport const AuthLayout: React.FC<AuthLayoutProps> = ({ children }) => {\r\n return (\r\n <Stack\r\n sx={{\r\n height: \"100vh\",\r\n width: \"100%\",\r\n backgroundImage: `url(/images/login.jpg)`,\r\n backgroundSize: \"cover\",\r\n backgroundPosition: \"center\",\r\n }}\r\n >\r\n {children}\r\n </Stack>\r\n );\r\n};\r\n","import { useCallback, useEffect } from 'react';\r\nimport { useLocation } from 'react-router-dom';\r\nimport { findCurrentAccessByPath } from '../common/utils/find-current-access.helper';\r\nimport { ACTION_ACCOUNT } from '../redux';\r\nimport { useAppDispatch } from '../redux/store.redux';\r\n\r\nexport const useUpdateCurrentAccess = () => {\r\n const dispatch = useAppDispatch();\r\n const location = useLocation();\r\n\r\n const updateAccess = useCallback(\r\n async (pathname: string) => {\r\n const currentAccess = findCurrentAccessByPath(pathname);\r\n if (currentAccess) {\r\n await dispatch(ACTION_ACCOUNT.updateCurrentAccess(currentAccess)).unwrap();\r\n }\r\n },\r\n [dispatch],\r\n );\r\n\r\n useEffect(() => {\r\n updateAccess(location.pathname);\r\n }, [location.pathname, updateAccess]);\r\n\r\n return updateAccess;\r\n};\r\n","import { LinearProgress, linearProgressClasses, Stack, styled, TableCell, tableCellClasses } from '@mui/material';\r\nimport { STYLE } from '../../common/constant';\r\n\r\nexport const StackRow = styled(Stack)(() => ({\r\n flexDirection: 'row',\r\n}));\r\n\r\nexport const StackWrap = styled(Stack)(() => ({\r\n flexDirection: 'row',\r\n flexWrap: 'wrap',\r\n}));\r\n\r\nexport const StackRowAlignCenter = styled(Stack)(() => ({\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n}));\r\n\r\nexport const StackRowAlignEnd = styled(Stack)(() => ({\r\n flexDirection: 'row',\r\n alignItems: 'flex-end',\r\n}));\r\n\r\nexport const StackRowJustCenter = styled(Stack)(() => ({\r\n flexDirection: 'row',\r\n justifyContent: 'center',\r\n}));\r\n\r\nexport const StackRowJustAround = styled(Stack)(() => ({\r\n flexDirection: 'row',\r\n justifyContent: 'space-around',\r\n}));\r\n\r\nexport const StackRowAlignJustCenter = styled(Stack)(() => ({\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n}));\r\n\r\nexport const StackRowAlignCenterJustEnd = styled(Stack)(() => ({\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n justifyContent: 'flex-end',\r\n}));\r\n\r\nexport const StackRowJustEnd = styled(Stack)(() => ({\r\n flexDirection: 'row',\r\n justifyContent: 'flex-end',\r\n}));\r\n\r\nexport const StackRowJustBetween = styled(Stack)(() => ({\r\n flexDirection: 'row',\r\n justifyContent: 'space-between',\r\n}));\r\n\r\nexport const StackRowAlignCenterJustBetween = styled(Stack)(() => ({\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n justifyContent: 'space-between',\r\n}));\r\n\r\nexport const StackRowAlignStartJustBetween = styled(Stack)(() => ({\r\n flexDirection: 'row',\r\n alignItems: 'flex-start',\r\n justifyContent: 'space-between',\r\n}));\r\n\r\nexport const StackBgDefaultBorRadLayCol = styled(Stack)(({ theme }) => ({\r\n backgroundColor: theme.palette.background.default,\r\n padding: STYLE.PADDING_GAP_LAYOUT,\r\n borderRadius: STYLE.BORDER_RADIUS_ELEMENT,\r\n}));\r\n\r\nexport const StackBgPaperBorRadLayCol = styled(Stack)(({ theme }) => ({\r\n backgroundColor: theme.palette.background.paper,\r\n padding: STYLE.PADDING_GAP_LAYOUT,\r\n borderRadius: STYLE.BORDER_RADIUS_ELEMENT,\r\n}));\r\n\r\nexport const StackLabel = styled(Stack)(() => ({\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n marginRight: STYLE.PADDING_GAP_ITEM_SMALL,\r\n gap: STYLE.PADDING_GAP_ITEM_SMALL,\r\n}));\r\n\r\nexport const SmallIcon = styled(Stack)(({ theme }) => ({\r\n border: `1px solid ${theme.palette.common.white}`,\r\n borderRadius: '50%',\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n background: theme.palette.background.paper,\r\n width: 16,\r\n height: 16,\r\n}));\r\n\r\nexport const StackTabs = styled(Stack)(({ theme }) => ({\r\n borderRadius: STYLE.BORDER_RADIUS_ELEMENT_TAG,\r\n // padding: '6px',\r\n backgroundColor: theme.palette.background.paper,\r\n boxShadow: theme.shadows[1],\r\n width: 'fit-content',\r\n gap: 'unset',\r\n}));\r\n\r\nexport const StyledTableCell = styled(TableCell)(({ theme }) => ({\r\n [`&.${tableCellClasses.head}`]: {\r\n backgroundColor: '#008A77',\r\n color: theme.palette.common.white,\r\n fontWeight: 600,\r\n },\r\n [`&.${tableCellClasses.body}`]: {\r\n fontSize: 14,\r\n },\r\n '&:first-of-type': {\r\n borderBottomLeftRadius: '0 !important',\r\n },\r\n '&:last-child': {\r\n borderBottomRightRadius: '0 !important',\r\n },\r\n}));\r\n\r\nexport const BorderLinearProgress = styled(LinearProgress)(({ theme }) => ({\r\n height: 10,\r\n borderRadius: 5,\r\n [`&.${linearProgressClasses.colorPrimary}`]: {\r\n backgroundColor: theme.palette.grey[200],\r\n ...theme.applyStyles('dark', {\r\n backgroundColor: theme.palette.grey[800],\r\n }),\r\n },\r\n [`& .${linearProgressClasses.bar}`]: {\r\n borderRadius: 5,\r\n backgroundColor: theme.palette.primary,\r\n },\r\n}));\r\n","export enum ImageSizeType {\r\n CIRCLE = 'CIRCLE',\r\n SQUARE = 'SQUARE',\r\n FULL_WIDTH = 'FULL_WIDTH',\r\n}\r\n","const SIZE_LARGE = 32;\r\nconst SIZE_MEDIUM = 26;\r\nconst SIZE_SMALL = 18;\r\nconst SIZE_EXTRA_SMALL = 20;\r\n\r\nexport type SizeProps = 'extra_small' | 'small' | 'medium' | 'large';\r\n\r\nexport const MAP_SIZE: Record<string, { width: number; height: number }> = {\r\n large: { width: SIZE_LARGE, height: SIZE_LARGE },\r\n medium: { width: SIZE_MEDIUM, height: SIZE_MEDIUM },\r\n small: { width: SIZE_SMALL, height: SIZE_SMALL },\r\n extra_small: { width: SIZE_EXTRA_SMALL, height: SIZE_EXTRA_SMALL },\r\n};\r\n\r\nexport enum StatusAvatar {\r\n PENDING = 'Đang chờ',\r\n APPROVED = 'Đã phê duyệt',\r\n REJECTED = 'Đã từ chối',\r\n}\r\n","import React, { type ReactNode, useState } from 'react';\r\nimport { Box, type BoxProps, Skeleton, useTheme } from '@mui/material';\r\nimport { StackRow } from '../../styles/stack.style';\r\nimport { STYLE } from '../../../common/constant';\r\nimport { ImageSizeType } from './image.enum';\r\nimport { MAP_SIZE, type SizeProps } from '../../avatar/avatar-enum.enum';\r\n\r\nexport interface ImageElementProps extends BoxProps {\r\n url: string;\r\n isBorder?: boolean;\r\n isWrap?: boolean;\r\n sizeType?: ImageSizeType;\r\n size?: SizeProps;\r\n}\r\n\r\nconst ImageWrapper: React.FC<{ isWrap: boolean; children: ReactNode }> = ({ isWrap = false, children }) => {\r\n return isWrap ? (\r\n <StackRow alignItems=\"center\" className=\"jsdsdj\">\r\n {children}\r\n </StackRow>\r\n ) : (\r\n <>{children}</>\r\n );\r\n};\r\n\r\nexport const ImageElement: React.FC<ImageElementProps> = ({\r\n url,\r\n onClick,\r\n sx = {},\r\n isBorder = false,\r\n isWrap = false,\r\n sizeType = ImageSizeType.CIRCLE,\r\n size = 'medium',\r\n ...rest\r\n}) => {\r\n const { palette } = useTheme();\r\n const [loaded, setLoaded] = useState(false);\r\n\r\n if (onClick) sx = { ...sx, cursor: 'pointer' };\r\n\r\n // const height = rest.height || STYLE.HEIGHT_IMAGE_DEFAULT;\r\n // const width = sizeType === ImageSizeType.FULL_WIDTH ? '100%' : STYLE.HEIGHT_IMAGE_DEFAULT;\r\n\r\n const borderRadius =\r\n sizeType === ImageSizeType.CIRCLE\r\n ? '50%'\r\n : sizeType === ImageSizeType.SQUARE\r\n ? STYLE.BORDER_RADIUS_ELEMENT_SMALL\r\n : 0;\r\n\r\n return (\r\n <ImageWrapper isWrap={isWrap}>\r\n {!loaded && (\r\n <Skeleton\r\n variant=\"rectangular\"\r\n sx={{\r\n ...MAP_SIZE[size],\r\n borderRadius,\r\n }}\r\n />\r\n )}\r\n <Box\r\n {...rest}\r\n component=\"img\"\r\n src={url as string}\r\n onClick={onClick}\r\n onLoad={() => setLoaded(true)}\r\n onError={(e) => {\r\n (e.currentTarget as HTMLImageElement).src = '/images/diamond.png';\r\n }}\r\n sx={{\r\n display: loaded ? 'block' : 'none',\r\n ...MAP_SIZE[size],\r\n objectFit: 'cover',\r\n borderRadius,\r\n border: isBorder ? `1px solid ${palette.divider}` : 'none',\r\n ...sx,\r\n }}\r\n />\r\n </ImageWrapper>\r\n );\r\n};\r\n","import { type Theme } from \"@emotion/react\";\r\nimport { Box } from \"@mui/material\";\r\nimport { type SxProps } from \"@mui/system\";\r\nimport React from \"react\";\r\nimport { useNavigate } from \"react-router-dom\";\r\nimport { STYLE } from \"../../common/constant\";\r\nimport { PAGE } from \"../../router/route.constant\";\r\nimport { ImageElement } from \"../elements/image/image.element\";\r\n\r\nexport interface LogoComponentProps {\r\n url: string;\r\n height?: number;\r\n sx?: SxProps<Theme>;\r\n fillColor?: string;\r\n}\r\n\r\nexport const LogoComponent: React.FC<LogoComponentProps> = ({\r\n url,\r\n height = STYLE.HEIGHT_LOGO_DEFAULT,\r\n sx = {},\r\n fillColor,\r\n}) => {\r\n const navigate = useNavigate();\r\n const toHome = () => navigate(PAGE.DASHBOARD.path);\r\n\r\n return (\r\n <Box onClick={toHome} sx={{ cursor: \"pointer\", height, ...sx }}>\r\n <ImageElement\r\n url={url}\r\n sx={{\r\n height,\r\n borderRadius: \"unset\",\r\n width: \"auto\",\r\n ...(fillColor === \"white\" && { filter: \"brightness(0) invert(1)\" }), // Chuyển đổi thành màu trắng\r\n }}\r\n />\r\n </Box>\r\n );\r\n};\r\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","/** @license React v16.13.1\n * react-is.development.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';\n\n\n\nif (process.env.NODE_ENV !== \"production\") {\n (function() {\n'use strict';\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n// (unstable) APIs that have been removed. Can we remove the symbols?\n\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\nvar REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;\nvar REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;\nvar REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;\nvar REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;\n\nfunction isValidElementType(type) {\n return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n}\n\nfunction typeOf(object) {\n if (typeof object === 'object' && object !== null) {\n var $$typeof = object.$$typeof;\n\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n var type = object.type;\n\n switch (type) {\n case REACT_ASYNC_MODE_TYPE:\n case REACT_CONCURRENT_MODE_TYPE:\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n return type;\n\n default:\n var $$typeofType = type && type.$$typeof;\n\n switch ($$typeofType) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n case REACT_PROVIDER_TYPE:\n return $$typeofType;\n\n default:\n return $$typeof;\n }\n\n }\n\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n\n return undefined;\n} // AsyncMode is deprecated along with isAsyncMode\n\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n {\n if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n }\n }\n\n return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n })();\n}\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","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/**\n * 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","module.exports = Function.call.bind(Object.prototype.hasOwnProperty);\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 printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n var has = require('./lib/has');\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) { /**/ }\n };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' +\n 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n );\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\n/**\n * Resets warning cache when testing.\n *\n * @private\n */\ncheckPropTypes.resetWarningCache = function() {\n if (process.env.NODE_ENV !== 'production') {\n loggedTypeFailures = {};\n }\n}\n\nmodule.exports = checkPropTypes;\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 ReactIs = require('react-is');\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar has = require('./lib/has');\nvar checkPropTypes = require('./checkPropTypes');\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<<anonymous>>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bigint: createPrimitiveTypeChecker('bigint'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n elementType: createElementTypeTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\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 */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message, data) {\n this.message = message;\n this.data = data && typeof data === 'object' ? data: {};\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\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 } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n printWarning(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'),\n {expectedType: expectedType}\n );\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!ReactIs.isValidElementType(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n if (process.env.NODE_ENV !== 'production') {\n if (arguments.length > 1) {\n printWarning(\n 'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +\n 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'\n );\n } else {\n printWarning('Invalid argument supplied to oneOf, expected an array.');\n }\n }\n return emptyFunctionThatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {\n var type = getPreciseType(value);\n if (type === 'symbol') {\n return String(value);\n }\n return value;\n });\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (has(propValue, key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var expectedTypes = [];\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n var checkerResult = checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret);\n if (checkerResult == null) {\n return null;\n }\n if (checkerResult.data && has(checkerResult.data, 'expectedType')) {\n expectedTypes.push(checkerResult.data.expectedType);\n }\n }\n var expectedTypesMessage = (expectedTypes.length > 0) ? ', expected one of type [' + expectedTypes.join(', ') + ']': '';\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`' + expectedTypesMessage + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function invalidValidatorError(componentName, location, propFullName, key, type) {\n return new PropTypeError(\n (componentName || 'React class') + ': ' + location + ' type `' + propFullName + '.' + key + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + type + '`.'\n );\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (has(shapeTypes, key) && typeof checker !== 'function') {\n return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n }\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // falsy value can't be a Symbol\n if (!propValue) {\n return false;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 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","/* eslint no-restricted-syntax: 0, prefer-template: 0, guard-for-in: 0\n ---\n These rules are preventing the performance optimizations below.\n */\n\n/**\n * Compose classes from multiple sources.\n *\n * @example\n * ```tsx\n * const slots = {\n * root: ['root', 'primary'],\n * label: ['label'],\n * };\n *\n * const getUtilityClass = (slot) => `MuiButton-${slot}`;\n *\n * const classes = {\n * root: 'my-root-class',\n * };\n *\n * const output = composeClasses(slots, getUtilityClass, classes);\n * // {\n * // root: 'MuiButton-root MuiButton-primary my-root-class',\n * // label: 'MuiButton-label',\n * // }\n * ```\n *\n * @param slots a list of classes for each possible slot\n * @param getUtilityClass a function to resolve the class based on the slot name\n * @param classes the input classes from props\n * @returns the resolved classes for all slots\n */\nexport default function composeClasses(slots, getUtilityClass, classes = undefined) {\n const output = {};\n for (const slotName in slots) {\n const slot = slots[slotName];\n let buffer = '';\n let start = true;\n for (let i = 0; i < slot.length; i += 1) {\n const value = slot[i];\n if (value) {\n buffer += (start === true ? '' : ' ') + getUtilityClass(value);\n start = false;\n if (classes && classes[value]) {\n buffer += ' ' + classes[value];\n }\n }\n }\n output[slotName] = buffer;\n }\n return output;\n}","export default function chainPropTypes(propType1, propType2) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n return function validate(...args) {\n return propType1(...args) || propType2(...args);\n };\n}","/**\n * WARNING: Don't import this directly. It's imported by the code generated by\n * `@mui/interal-babel-plugin-minify-errors`. Make sure to always use string literals in `Error`\n * constructors to ensure the plugin works as expected. Supported patterns include:\n * throw new Error('My message');\n * throw new Error(`My message: ${foo}`);\n * throw new Error(`My message: ${foo}` + 'another string');\n * ...\n * @param {number} code\n */\nexport default function formatMuiErrorMessage(code, ...args) {\n const url = new URL(`https://mui.com/production-error/?code=${code}`);\n args.forEach(arg => url.searchParams.append('args[]', arg));\n return `Minified MUI error #${code}; visit ${url} for the full message.`;\n}","import _formatErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\n// It should to be noted that this function isn't equivalent to `text-transform: capitalize`.\n//\n// A strict capitalization should uppercase the first letter of each word in the sentence.\n// We only handle the first word.\nexport default function capitalize(string) {\n if (typeof string !== 'string') {\n throw new Error(process.env.NODE_ENV !== \"production\" ? 'MUI: `capitalize(string)` expects a string argument.' : _formatErrorMessage(7));\n }\n return string.charAt(0).toUpperCase() + string.slice(1);\n}","/**\n * @license React\n * react-is.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and 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\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n REACT_VIEW_TRANSITION_TYPE = Symbol.for(\"react.view_transition\"),\n REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\");\nfunction typeOf(object) {\n if (\"object\" === typeof object && null !== object) {\n var $$typeof = object.$$typeof;\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n switch (((object = object.type), object)) {\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n case REACT_SUSPENSE_LIST_TYPE:\n case REACT_VIEW_TRANSITION_TYPE:\n return object;\n default:\n switch (((object = object && object.$$typeof), object)) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n return object;\n case REACT_CONSUMER_TYPE:\n return object;\n default:\n return $$typeof;\n }\n }\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n}\nexports.ContextConsumer = REACT_CONSUMER_TYPE;\nexports.ContextProvider = REACT_CONTEXT_TYPE;\nexports.Element = REACT_ELEMENT_TYPE;\nexports.ForwardRef = REACT_FORWARD_REF_TYPE;\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.Lazy = REACT_LAZY_TYPE;\nexports.Memo = REACT_MEMO_TYPE;\nexports.Portal = REACT_PORTAL_TYPE;\nexports.Profiler = REACT_PROFILER_TYPE;\nexports.StrictMode = REACT_STRICT_MODE_TYPE;\nexports.Suspense = REACT_SUSPENSE_TYPE;\nexports.SuspenseList = REACT_SUSPENSE_LIST_TYPE;\nexports.isContextConsumer = function (object) {\n return typeOf(object) === REACT_CONSUMER_TYPE;\n};\nexports.isContextProvider = function (object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n};\nexports.isElement = function (object) {\n return (\n \"object\" === typeof object &&\n null !== object &&\n object.$$typeof === REACT_ELEMENT_TYPE\n );\n};\nexports.isForwardRef = function (object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n};\nexports.isFragment = function (object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n};\nexports.isLazy = function (object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n};\nexports.isMemo = function (object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n};\nexports.isPortal = function (object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n};\nexports.isProfiler = function (object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n};\nexports.isStrictMode = function (object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n};\nexports.isSuspense = function (object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n};\nexports.isSuspenseList = function (object) {\n return typeOf(object) === REACT_SUSPENSE_LIST_TYPE;\n};\nexports.isValidElementType = function (type) {\n return \"string\" === typeof type ||\n \"function\" === typeof type ||\n type === REACT_FRAGMENT_TYPE ||\n type === REACT_PROFILER_TYPE ||\n type === REACT_STRICT_MODE_TYPE ||\n type === REACT_SUSPENSE_TYPE ||\n type === REACT_SUSPENSE_LIST_TYPE ||\n (\"object\" === typeof type &&\n null !== type &&\n (type.$$typeof === REACT_LAZY_TYPE ||\n type.$$typeof === REACT_MEMO_TYPE ||\n type.$$typeof === REACT_CONTEXT_TYPE ||\n type.$$typeof === REACT_CONSUMER_TYPE ||\n type.$$typeof === REACT_FORWARD_REF_TYPE ||\n type.$$typeof === REACT_CLIENT_REFERENCE ||\n void 0 !== type.getModuleId))\n ? !0\n : !1;\n};\nexports.typeOf = typeOf;\n","/**\n * @license React\n * react-is.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and 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\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n function typeOf(object) {\n if (\"object\" === typeof object && null !== object) {\n var $$typeof = object.$$typeof;\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n switch (((object = object.type), object)) {\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n case REACT_SUSPENSE_LIST_TYPE:\n case REACT_VIEW_TRANSITION_TYPE:\n return object;\n default:\n switch (((object = object && object.$$typeof), object)) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n return object;\n case REACT_CONSUMER_TYPE:\n return object;\n default:\n return $$typeof;\n }\n }\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n }\n var REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n REACT_VIEW_TRANSITION_TYPE = Symbol.for(\"react.view_transition\"),\n REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\");\n exports.ContextConsumer = REACT_CONSUMER_TYPE;\n exports.ContextProvider = REACT_CONTEXT_TYPE;\n exports.Element = REACT_ELEMENT_TYPE;\n exports.ForwardRef = REACT_FORWARD_REF_TYPE;\n exports.Fragment = REACT_FRAGMENT_TYPE;\n exports.Lazy = REACT_LAZY_TYPE;\n exports.Memo = REACT_MEMO_TYPE;\n exports.Portal = REACT_PORTAL_TYPE;\n exports.Profiler = REACT_PROFILER_TYPE;\n exports.StrictMode = REACT_STRICT_MODE_TYPE;\n exports.Suspense = REACT_SUSPENSE_TYPE;\n exports.SuspenseList = REACT_SUSPENSE_LIST_TYPE;\n exports.isContextConsumer = function (object) {\n return typeOf(object) === REACT_CONSUMER_TYPE;\n };\n exports.isContextProvider = function (object) {\n return typeOf(object) === REACT_CONTEXT_TYPE;\n };\n exports.isElement = function (object) {\n return (\n \"object\" === typeof object &&\n null !== object &&\n object.$$typeof === REACT_ELEMENT_TYPE\n );\n };\n exports.isForwardRef = function (object) {\n return typeOf(object) === REACT_FORWARD_REF_TYPE;\n };\n exports.isFragment = function (object) {\n return typeOf(object) === REACT_FRAGMENT_TYPE;\n };\n exports.isLazy = function (object) {\n return typeOf(object) === REACT_LAZY_TYPE;\n };\n exports.isMemo = function (object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n };\n exports.isPortal = function (object) {\n return typeOf(object) === REACT_PORTAL_TYPE;\n };\n exports.isProfiler = function (object) {\n return typeOf(object) === REACT_PROFILER_TYPE;\n };\n exports.isStrictMode = function (object) {\n return typeOf(object) === REACT_STRICT_MODE_TYPE;\n };\n exports.isSuspense = function (object) {\n return typeOf(object) === REACT_SUSPENSE_TYPE;\n };\n exports.isSuspenseList = function (object) {\n return typeOf(object) === REACT_SUSPENSE_LIST_TYPE;\n };\n exports.isValidElementType = function (type) {\n return \"string\" === typeof type ||\n \"function\" === typeof type ||\n type === REACT_FRAGMENT_TYPE ||\n type === REACT_PROFILER_TYPE ||\n type === REACT_STRICT_MODE_TYPE ||\n type === REACT_SUSPENSE_TYPE ||\n type === REACT_SUSPENSE_LIST_TYPE ||\n (\"object\" === typeof type &&\n null !== type &&\n (type.$$typeof === REACT_LAZY_TYPE ||\n type.$$typeof === REACT_MEMO_TYPE ||\n type.$$typeof === REACT_CONTEXT_TYPE ||\n type.$$typeof === REACT_CONSUMER_TYPE ||\n type.$$typeof === REACT_FORWARD_REF_TYPE ||\n type.$$typeof === REACT_CLIENT_REFERENCE ||\n void 0 !== type.getModuleId))\n ? !0\n : !1;\n };\n exports.typeOf = typeOf;\n })();\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","import * as React from 'react';\nimport { isValidElementType } from 'react-is';\n\n// https://github.com/sindresorhus/is-plain-obj/blob/main/index.js\nexport function isPlainObject(item) {\n if (typeof item !== 'object' || item === null) {\n return false;\n }\n const prototype = Object.getPrototypeOf(item);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in item) && !(Symbol.iterator in item);\n}\nfunction deepClone(source) {\n if (/*#__PURE__*/React.isValidElement(source) || isValidElementType(source) || !isPlainObject(source)) {\n return source;\n }\n const output = {};\n Object.keys(source).forEach(key => {\n output[key] = deepClone(source[key]);\n });\n return output;\n}\n\n/**\n * Merge objects deeply.\n * It will shallow copy React elements.\n *\n * If `options.clone` is set to `false` the source object will be merged directly into the target object.\n *\n * @example\n * ```ts\n * deepmerge({ a: { b: 1 }, d: 2 }, { a: { c: 2 }, d: 4 });\n * // => { a: { b: 1, c: 2 }, d: 4 }\n * ````\n *\n * @param target The target object.\n * @param source The source object.\n * @param options The merge options.\n * @param options.clone Set to `false` to merge the source object directly into the target object.\n * @returns The merged object.\n */\nexport default function deepmerge(target, source, options = {\n clone: true\n}) {\n const output = options.clone ? {\n ...target\n } : target;\n if (isPlainObject(target) && isPlainObject(source)) {\n Object.keys(source).forEach(key => {\n if (/*#__PURE__*/React.isValidElement(source[key]) || isValidElementType(source[key])) {\n output[key] = source[key];\n } else if (isPlainObject(source[key]) &&\n // Avoid prototype pollution\n Object.prototype.hasOwnProperty.call(target, key) && isPlainObject(target[key])) {\n // Since `output` is a clone of `target` and we have narrowed `target` in this block we can cast to the same type.\n output[key] = deepmerge(target[key], source[key], options);\n } else if (options.clone) {\n output[key] = isPlainObject(source[key]) ? deepClone(source[key]) : source[key];\n } else {\n output[key] = source[key];\n }\n });\n }\n return output;\n}","import deepmerge from '@mui/utils/deepmerge';\nfunction merge(acc, item) {\n if (!item) {\n return acc;\n }\n return deepmerge(acc, item, {\n clone: false // No need to clone deep, it's way faster.\n });\n}\nexport default merge;","import PropTypes from 'prop-types';\nconst responsivePropType = process.env.NODE_ENV !== 'production' ? PropTypes.oneOfType([PropTypes.number, PropTypes.string, PropTypes.object, PropTypes.array]) : {};\nexport default responsivePropType;","import _formatErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\n/**\n * For using in `sx` prop to sort the breakpoint from low to high.\n * Note: this function does not work and will not support multiple units.\n * e.g. input: { '@container (min-width:300px)': '1rem', '@container (min-width:40rem)': '2rem' }\n * output: { '@container (min-width:40rem)': '2rem', '@container (min-width:300px)': '1rem' } // since 40 < 300 even though 40rem > 300px\n */\nexport function sortContainerQueries(theme, css) {\n if (!theme.containerQueries) {\n return css;\n }\n const sorted = Object.keys(css).filter(key => key.startsWith('@container')).sort((a, b) => {\n const regex = /min-width:\\s*([0-9.]+)/;\n return +(a.match(regex)?.[1] || 0) - +(b.match(regex)?.[1] || 0);\n });\n if (!sorted.length) {\n return css;\n }\n return sorted.reduce((acc, key) => {\n const value = css[key];\n delete acc[key];\n acc[key] = value;\n return acc;\n }, {\n ...css\n });\n}\nexport function isCqShorthand(breakpointKeys, value) {\n return value === '@' || value.startsWith('@') && (breakpointKeys.some(key => value.startsWith(`@${key}`)) || !!value.match(/^@\\d/));\n}\nexport function getContainerQuery(theme, shorthand) {\n const matches = shorthand.match(/^@([^/]+)?\\/?(.+)?$/);\n if (!matches) {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: The provided shorthand ${`(${shorthand})`} is invalid. The format should be \\`@<breakpoint | number>\\` or \\`@<breakpoint | number>/<container>\\`.\\n` + 'For example, `@sm` or `@600` or `@40rem/sidebar`.' : _formatErrorMessage(18, `(${shorthand})`));\n }\n return null;\n }\n const [, containerQuery, containerName] = matches;\n const value = Number.isNaN(+containerQuery) ? containerQuery || 0 : +containerQuery;\n return theme.containerQueries(containerName).up(value);\n}\nexport default function cssContainerQueries(themeInput) {\n const toContainerQuery = (mediaQuery, name) => mediaQuery.replace('@media', name ? `@container ${name}` : '@container');\n function attachCq(node, name) {\n node.up = (...args) => toContainerQuery(themeInput.breakpoints.up(...args), name);\n node.down = (...args) => toContainerQuery(themeInput.breakpoints.down(...args), name);\n node.between = (...args) => toContainerQuery(themeInput.breakpoints.between(...args), name);\n node.only = (...args) => toContainerQuery(themeInput.breakpoints.only(...args), name);\n node.not = (...args) => {\n const result = toContainerQuery(themeInput.breakpoints.not(...args), name);\n if (result.includes('not all and')) {\n // `@container` does not work with `not all and`, so need to invert the logic\n return result.replace('not all and ', '').replace('min-width:', 'width<').replace('max-width:', 'width>').replace('and', 'or');\n }\n return result;\n };\n }\n const node = {};\n const containerQueries = name => {\n attachCq(node, name);\n return node;\n };\n attachCq(containerQueries);\n return {\n ...themeInput,\n containerQueries\n };\n}","import PropTypes from 'prop-types';\nimport deepmerge from '@mui/utils/deepmerge';\nimport merge from \"../merge/index.js\";\nimport { isCqShorthand, getContainerQuery } from \"../cssContainerQueries/index.js\";\n\n// The breakpoint **start** at this value.\n// For instance with the first breakpoint xs: [xs, sm[.\nexport const values = {\n xs: 0,\n // phone\n sm: 600,\n // tablet\n md: 900,\n // small laptop\n lg: 1200,\n // desktop\n xl: 1536 // large screen\n};\nconst defaultBreakpoints = {\n // Sorted ASC by size. That's important.\n // It can't be configured as it's used statically for propTypes.\n keys: ['xs', 'sm', 'md', 'lg', 'xl'],\n up: key => `@media (min-width:${values[key]}px)`\n};\nconst defaultContainerQueries = {\n containerQueries: containerName => ({\n up: key => {\n let result = typeof key === 'number' ? key : values[key] || key;\n if (typeof result === 'number') {\n result = `${result}px`;\n }\n return containerName ? `@container ${containerName} (min-width:${result})` : `@container (min-width:${result})`;\n }\n })\n};\nexport function handleBreakpoints(props, propValue, styleFromPropValue) {\n const theme = props.theme || {};\n if (Array.isArray(propValue)) {\n const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n return propValue.reduce((acc, item, index) => {\n acc[themeBreakpoints.up(themeBreakpoints.keys[index])] = styleFromPropValue(propValue[index]);\n return acc;\n }, {});\n }\n if (typeof propValue === 'object') {\n const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n return Object.keys(propValue).reduce((acc, breakpoint) => {\n if (isCqShorthand(themeBreakpoints.keys, breakpoint)) {\n const containerKey = getContainerQuery(theme.containerQueries ? theme : defaultContainerQueries, breakpoint);\n if (containerKey) {\n acc[containerKey] = styleFromPropValue(propValue[breakpoint], breakpoint);\n }\n }\n // key is breakpoint\n else if (Object.keys(themeBreakpoints.values || values).includes(breakpoint)) {\n const mediaKey = themeBreakpoints.up(breakpoint);\n acc[mediaKey] = styleFromPropValue(propValue[breakpoint], breakpoint);\n } else {\n const cssKey = breakpoint;\n acc[cssKey] = propValue[cssKey];\n }\n return acc;\n }, {});\n }\n const output = styleFromPropValue(propValue);\n return output;\n}\nfunction breakpoints(styleFunction) {\n // false positive\n // eslint-disable-next-line react/function-component-definition\n const newStyleFunction = props => {\n const theme = props.theme || {};\n const base = styleFunction(props);\n const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n const extended = themeBreakpoints.keys.reduce((acc, key) => {\n if (props[key]) {\n acc = acc || {};\n acc[themeBreakpoints.up(key)] = styleFunction({\n theme,\n ...props[key]\n });\n }\n return acc;\n }, null);\n return merge(base, extended);\n };\n newStyleFunction.propTypes = process.env.NODE_ENV !== 'production' ? {\n ...styleFunction.propTypes,\n xs: PropTypes.object,\n sm: PropTypes.object,\n md: PropTypes.object,\n lg: PropTypes.object,\n xl: PropTypes.object\n } : {};\n newStyleFunction.filterProps = ['xs', 'sm', 'md', 'lg', 'xl', ...styleFunction.filterProps];\n return newStyleFunction;\n}\nexport function createEmptyBreakpointObject(breakpointsInput = {}) {\n const breakpointsInOrder = breakpointsInput.keys?.reduce((acc, key) => {\n const breakpointStyleKey = breakpointsInput.up(key);\n acc[breakpointStyleKey] = {};\n return acc;\n }, {});\n return breakpointsInOrder || {};\n}\nexport function removeUnusedBreakpoints(breakpointKeys, style) {\n return breakpointKeys.reduce((acc, key) => {\n const breakpointOutput = acc[key];\n const isBreakpointUnused = !breakpointOutput || Object.keys(breakpointOutput).length === 0;\n if (isBreakpointUnused) {\n delete acc[key];\n }\n return acc;\n }, style);\n}\nexport function mergeBreakpointsInOrder(breakpointsInput, ...styles) {\n const emptyBreakpoints = createEmptyBreakpointObject(breakpointsInput);\n const mergedOutput = [emptyBreakpoints, ...styles].reduce((prev, next) => deepmerge(prev, next), {});\n return removeUnusedBreakpoints(Object.keys(emptyBreakpoints), mergedOutput);\n}\n\n// compute base for responsive values; e.g.,\n// [1,2,3] => {xs: true, sm: true, md: true}\n// {xs: 1, sm: 2, md: 3} => {xs: true, sm: true, md: true}\nexport function computeBreakpointsBase(breakpointValues, themeBreakpoints) {\n // fixed value\n if (typeof breakpointValues !== 'object') {\n return {};\n }\n const base = {};\n const breakpointsKeys = Object.keys(themeBreakpoints);\n if (Array.isArray(breakpointValues)) {\n breakpointsKeys.forEach((breakpoint, i) => {\n if (i < breakpointValues.length) {\n base[breakpoint] = true;\n }\n });\n } else {\n breakpointsKeys.forEach(breakpoint => {\n if (breakpointValues[breakpoint] != null) {\n base[breakpoint] = true;\n }\n });\n }\n return base;\n}\nexport function resolveBreakpointValues({\n values: breakpointValues,\n breakpoints: themeBreakpoints,\n base: customBase\n}) {\n const base = customBase || computeBreakpointsBase(breakpointValues, themeBreakpoints);\n const keys = Object.keys(base);\n if (keys.length === 0) {\n return breakpointValues;\n }\n let previous;\n return keys.reduce((acc, breakpoint, i) => {\n if (Array.isArray(breakpointValues)) {\n acc[breakpoint] = breakpointValues[i] != null ? breakpointValues[i] : breakpointValues[previous];\n previous = i;\n } else if (typeof breakpointValues === 'object') {\n acc[breakpoint] = breakpointValues[breakpoint] != null ? breakpointValues[breakpoint] : breakpointValues[previous];\n previous = breakpoint;\n } else {\n acc[breakpoint] = breakpointValues;\n }\n return acc;\n }, {});\n}\nexport default breakpoints;","import capitalize from '@mui/utils/capitalize';\nimport responsivePropType from \"../responsivePropType/index.js\";\nimport { handleBreakpoints } from \"../breakpoints/index.js\";\nexport function getPath(obj, path, checkVars = true) {\n if (!path || typeof path !== 'string') {\n return null;\n }\n\n // Check if CSS variables are used\n if (obj && obj.vars && checkVars) {\n const val = `vars.${path}`.split('.').reduce((acc, item) => acc && acc[item] ? acc[item] : null, obj);\n if (val != null) {\n return val;\n }\n }\n return path.split('.').reduce((acc, item) => {\n if (acc && acc[item] != null) {\n return acc[item];\n }\n return null;\n }, obj);\n}\nexport function getStyleValue(themeMapping, transform, propValueFinal, userValue = propValueFinal) {\n let value;\n if (typeof themeMapping === 'function') {\n value = themeMapping(propValueFinal);\n } else if (Array.isArray(themeMapping)) {\n value = themeMapping[propValueFinal] || userValue;\n } else {\n value = getPath(themeMapping, propValueFinal) || userValue;\n }\n if (transform) {\n value = transform(value, userValue, themeMapping);\n }\n return value;\n}\nfunction style(options) {\n const {\n prop,\n cssProperty = options.prop,\n themeKey,\n transform\n } = options;\n\n // false positive\n // eslint-disable-next-line react/function-component-definition\n const fn = props => {\n if (props[prop] == null) {\n return null;\n }\n const propValue = props[prop];\n const theme = props.theme;\n const themeMapping = getPath(theme, themeKey) || {};\n const styleFromPropValue = propValueFinal => {\n let value = getStyleValue(themeMapping, transform, propValueFinal);\n if (propValueFinal === value && typeof propValueFinal === 'string') {\n // Haven't found value\n value = getStyleValue(themeMapping, transform, `${prop}${propValueFinal === 'default' ? '' : capitalize(propValueFinal)}`, propValueFinal);\n }\n if (cssProperty === false) {\n return value;\n }\n return {\n [cssProperty]: value\n };\n };\n return handleBreakpoints(props, propValue, styleFromPropValue);\n };\n fn.propTypes = process.env.NODE_ENV !== 'production' ? {\n [prop]: responsivePropType\n } : {};\n fn.filterProps = [prop];\n return fn;\n}\nexport default style;","export default function memoize(fn) {\n const cache = {};\n return arg => {\n if (cache[arg] === undefined) {\n cache[arg] = fn(arg);\n }\n return cache[arg];\n };\n}","import responsivePropType from \"../responsivePropType/index.js\";\nimport { handleBreakpoints } from \"../breakpoints/index.js\";\nimport { getPath } from \"../style/index.js\";\nimport merge from \"../merge/index.js\";\nimport memoize from \"../memoize/index.js\";\nconst properties = {\n m: 'margin',\n p: 'padding'\n};\nconst directions = {\n t: 'Top',\n r: 'Right',\n b: 'Bottom',\n l: 'Left',\n x: ['Left', 'Right'],\n y: ['Top', 'Bottom']\n};\nconst aliases = {\n marginX: 'mx',\n marginY: 'my',\n paddingX: 'px',\n paddingY: 'py'\n};\n\n// memoize() impact:\n// From 300,000 ops/sec\n// To 350,000 ops/sec\nconst getCssProperties = memoize(prop => {\n // It's not a shorthand notation.\n if (prop.length > 2) {\n if (aliases[prop]) {\n prop = aliases[prop];\n } else {\n return [prop];\n }\n }\n const [a, b] = prop.split('');\n const property = properties[a];\n const direction = directions[b] || '';\n return Array.isArray(direction) ? direction.map(dir => property + dir) : [property + direction];\n});\nexport const marginKeys = ['m', 'mt', 'mr', 'mb', 'ml', 'mx', 'my', 'margin', 'marginTop', 'marginRight', 'marginBottom', 'marginLeft', 'marginX', 'marginY', 'marginInline', 'marginInlineStart', 'marginInlineEnd', 'marginBlock', 'marginBlockStart', 'marginBlockEnd'];\nexport const paddingKeys = ['p', 'pt', 'pr', 'pb', 'pl', 'px', 'py', 'padding', 'paddingTop', 'paddingRight', 'paddingBottom', 'paddingLeft', 'paddingX', 'paddingY', 'paddingInline', 'paddingInlineStart', 'paddingInlineEnd', 'paddingBlock', 'paddingBlockStart', 'paddingBlockEnd'];\nconst spacingKeys = [...marginKeys, ...paddingKeys];\nexport function createUnaryUnit(theme, themeKey, defaultValue, propName) {\n const themeSpacing = getPath(theme, themeKey, true) ?? defaultValue;\n if (typeof themeSpacing === 'number' || typeof themeSpacing === 'string') {\n return val => {\n if (typeof val === 'string') {\n return val;\n }\n if (process.env.NODE_ENV !== 'production') {\n if (typeof val !== 'number') {\n console.error(`MUI: Expected ${propName} argument to be a number or a string, got ${val}.`);\n }\n }\n if (typeof themeSpacing === 'string') {\n if (themeSpacing.startsWith('var(') && val === 0) {\n return 0;\n }\n if (themeSpacing.startsWith('var(') && val === 1) {\n return themeSpacing;\n }\n return `calc(${val} * ${themeSpacing})`;\n }\n return themeSpacing * val;\n };\n }\n if (Array.isArray(themeSpacing)) {\n return val => {\n if (typeof val === 'string') {\n return val;\n }\n const abs = Math.abs(val);\n if (process.env.NODE_ENV !== 'production') {\n if (!Number.isInteger(abs)) {\n console.error([`MUI: The \\`theme.${themeKey}\\` array type cannot be combined with non integer values.` + `You should either use an integer value that can be used as index, or define the \\`theme.${themeKey}\\` as a number.`].join('\\n'));\n } else if (abs > themeSpacing.length - 1) {\n console.error([`MUI: The value provided (${abs}) overflows.`, `The supported values are: ${JSON.stringify(themeSpacing)}.`, `${abs} > ${themeSpacing.length - 1}, you need to add the missing values.`].join('\\n'));\n }\n }\n const transformed = themeSpacing[abs];\n if (val >= 0) {\n return transformed;\n }\n if (typeof transformed === 'number') {\n return -transformed;\n }\n if (typeof transformed === 'string' && transformed.startsWith('var(')) {\n return `calc(-1 * ${transformed})`;\n }\n return `-${transformed}`;\n };\n }\n if (typeof themeSpacing === 'function') {\n return themeSpacing;\n }\n if (process.env.NODE_ENV !== 'production') {\n console.error([`MUI: The \\`theme.${themeKey}\\` value (${themeSpacing}) is invalid.`, 'It should be a number, an array or a function.'].join('\\n'));\n }\n return () => undefined;\n}\nexport function createUnarySpacing(theme) {\n return createUnaryUnit(theme, 'spacing', 8, 'spacing');\n}\nexport function getValue(transformer, propValue) {\n if (typeof propValue === 'string' || propValue == null) {\n return propValue;\n }\n return transformer(propValue);\n}\nexport function getStyleFromPropValue(cssProperties, transformer) {\n return propValue => cssProperties.reduce((acc, cssProperty) => {\n acc[cssProperty] = getValue(transformer, propValue);\n return acc;\n }, {});\n}\nfunction resolveCssProperty(props, keys, prop, transformer) {\n // Using a hash computation over an array iteration could be faster, but with only 28 items,\n // it's doesn't worth the bundle size.\n if (!keys.includes(prop)) {\n return null;\n }\n const cssProperties = getCssProperties(prop);\n const styleFromPropValue = getStyleFromPropValue(cssProperties, transformer);\n const propValue = props[prop];\n return handleBreakpoints(props, propValue, styleFromPropValue);\n}\nfunction style(props, keys) {\n const transformer = createUnarySpacing(props.theme);\n return Object.keys(props).map(prop => resolveCssProperty(props, keys, prop, transformer)).reduce(merge, {});\n}\nexport function margin(props) {\n return style(props, marginKeys);\n}\nmargin.propTypes = process.env.NODE_ENV !== 'production' ? marginKeys.reduce((obj, key) => {\n obj[key] = responsivePropType;\n return obj;\n}, {}) : {};\nmargin.filterProps = marginKeys;\nexport function padding(props) {\n return style(props, paddingKeys);\n}\npadding.propTypes = process.env.NODE_ENV !== 'production' ? paddingKeys.reduce((obj, key) => {\n obj[key] = responsivePropType;\n return obj;\n}, {}) : {};\npadding.filterProps = paddingKeys;\nfunction spacing(props) {\n return style(props, spacingKeys);\n}\nspacing.propTypes = process.env.NODE_ENV !== 'production' ? spacingKeys.reduce((obj, key) => {\n obj[key] = responsivePropType;\n return obj;\n}, {}) : {};\nspacing.filterProps = spacingKeys;\nexport default spacing;","import merge from \"../merge/index.js\";\nfunction compose(...styles) {\n const handlers = styles.reduce((acc, style) => {\n style.filterProps.forEach(prop => {\n acc[prop] = style;\n });\n return acc;\n }, {});\n\n // false positive\n // eslint-disable-next-line react/function-component-definition\n const fn = props => {\n return Object.keys(props).reduce((acc, prop) => {\n if (handlers[prop]) {\n return merge(acc, handlers[prop](props));\n }\n return acc;\n }, {});\n };\n fn.propTypes = process.env.NODE_ENV !== 'production' ? styles.reduce((acc, style) => Object.assign(acc, style.propTypes), {}) : {};\n fn.filterProps = styles.reduce((acc, style) => acc.concat(style.filterProps), []);\n return fn;\n}\nexport default compose;","import responsivePropType from \"../responsivePropType/index.js\";\nimport style from \"../style/index.js\";\nimport compose from \"../compose/index.js\";\nimport { createUnaryUnit, getValue } from \"../spacing/index.js\";\nimport { handleBreakpoints } from \"../breakpoints/index.js\";\nexport function borderTransform(value) {\n if (typeof value !== 'number') {\n return value;\n }\n return `${value}px solid`;\n}\nfunction createBorderStyle(prop, transform) {\n return style({\n prop,\n themeKey: 'borders',\n transform\n });\n}\nexport const border = createBorderStyle('border', borderTransform);\nexport const borderTop = createBorderStyle('borderTop', borderTransform);\nexport const borderRight = createBorderStyle('borderRight', borderTransform);\nexport const borderBottom = createBorderStyle('borderBottom', borderTransform);\nexport const borderLeft = createBorderStyle('borderLeft', borderTransform);\nexport const borderColor = createBorderStyle('borderColor');\nexport const borderTopColor = createBorderStyle('borderTopColor');\nexport const borderRightColor = createBorderStyle('borderRightColor');\nexport const borderBottomColor = createBorderStyle('borderBottomColor');\nexport const borderLeftColor = createBorderStyle('borderLeftColor');\nexport const outline = createBorderStyle('outline', borderTransform);\nexport const outlineColor = createBorderStyle('outlineColor');\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const borderRadius = props => {\n if (props.borderRadius !== undefined && props.borderRadius !== null) {\n const transformer = createUnaryUnit(props.theme, 'shape.borderRadius', 4, 'borderRadius');\n const styleFromPropValue = propValue => ({\n borderRadius: getValue(transformer, propValue)\n });\n return handleBreakpoints(props, props.borderRadius, styleFromPropValue);\n }\n return null;\n};\nborderRadius.propTypes = process.env.NODE_ENV !== 'production' ? {\n borderRadius: responsivePropType\n} : {};\nborderRadius.filterProps = ['borderRadius'];\nconst borders = compose(border, borderTop, borderRight, borderBottom, borderLeft, borderColor, borderTopColor, borderRightColor, borderBottomColor, borderLeftColor, borderRadius, outline, outlineColor);\nexport default borders;","import style from \"../style/index.js\";\nimport compose from \"../compose/index.js\";\nimport { createUnaryUnit, getValue } from \"../spacing/index.js\";\nimport { handleBreakpoints } from \"../breakpoints/index.js\";\nimport responsivePropType from \"../responsivePropType/index.js\";\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const gap = props => {\n if (props.gap !== undefined && props.gap !== null) {\n const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'gap');\n const styleFromPropValue = propValue => ({\n gap: getValue(transformer, propValue)\n });\n return handleBreakpoints(props, props.gap, styleFromPropValue);\n }\n return null;\n};\ngap.propTypes = process.env.NODE_ENV !== 'production' ? {\n gap: responsivePropType\n} : {};\ngap.filterProps = ['gap'];\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const columnGap = props => {\n if (props.columnGap !== undefined && props.columnGap !== null) {\n const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'columnGap');\n const styleFromPropValue = propValue => ({\n columnGap: getValue(transformer, propValue)\n });\n return handleBreakpoints(props, props.columnGap, styleFromPropValue);\n }\n return null;\n};\ncolumnGap.propTypes = process.env.NODE_ENV !== 'production' ? {\n columnGap: responsivePropType\n} : {};\ncolumnGap.filterProps = ['columnGap'];\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const rowGap = props => {\n if (props.rowGap !== undefined && props.rowGap !== null) {\n const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'rowGap');\n const styleFromPropValue = propValue => ({\n rowGap: getValue(transformer, propValue)\n });\n return handleBreakpoints(props, props.rowGap, styleFromPropValue);\n }\n return null;\n};\nrowGap.propTypes = process.env.NODE_ENV !== 'production' ? {\n rowGap: responsivePropType\n} : {};\nrowGap.filterProps = ['rowGap'];\nexport const gridColumn = style({\n prop: 'gridColumn'\n});\nexport const gridRow = style({\n prop: 'gridRow'\n});\nexport const gridAutoFlow = style({\n prop: 'gridAutoFlow'\n});\nexport const gridAutoColumns = style({\n prop: 'gridAutoColumns'\n});\nexport const gridAutoRows = style({\n prop: 'gridAutoRows'\n});\nexport const gridTemplateColumns = style({\n prop: 'gridTemplateColumns'\n});\nexport const gridTemplateRows = style({\n prop: 'gridTemplateRows'\n});\nexport const gridTemplateAreas = style({\n prop: 'gridTemplateAreas'\n});\nexport const gridArea = style({\n prop: 'gridArea'\n});\nconst grid = compose(gap, columnGap, rowGap, gridColumn, gridRow, gridAutoFlow, gridAutoColumns, gridAutoRows, gridTemplateColumns, gridTemplateRows, gridTemplateAreas, gridArea);\nexport default grid;","import style from \"../style/index.js\";\nimport compose from \"../compose/index.js\";\nexport function paletteTransform(value, userValue) {\n if (userValue === 'grey') {\n return userValue;\n }\n return value;\n}\nexport const color = style({\n prop: 'color',\n themeKey: 'palette',\n transform: paletteTransform\n});\nexport const bgcolor = style({\n prop: 'bgcolor',\n cssProperty: 'backgroundColor',\n themeKey: 'palette',\n transform: paletteTransform\n});\nexport const backgroundColor = style({\n prop: 'backgroundColor',\n themeKey: 'palette',\n transform: paletteTransform\n});\nconst palette = compose(color, bgcolor, backgroundColor);\nexport default palette;","import style from \"../style/index.js\";\nimport compose from \"../compose/index.js\";\nimport { handleBreakpoints, values as breakpointsValues } from \"../breakpoints/index.js\";\nexport function sizingTransform(value) {\n return value <= 1 && value !== 0 ? `${value * 100}%` : value;\n}\nexport const width = style({\n prop: 'width',\n transform: sizingTransform\n});\nexport const maxWidth = props => {\n if (props.maxWidth !== undefined && props.maxWidth !== null) {\n const styleFromPropValue = propValue => {\n const breakpoint = props.theme?.breakpoints?.values?.[propValue] || breakpointsValues[propValue];\n if (!breakpoint) {\n return {\n maxWidth: sizingTransform(propValue)\n };\n }\n if (props.theme?.breakpoints?.unit !== 'px') {\n return {\n maxWidth: `${breakpoint}${props.theme.breakpoints.unit}`\n };\n }\n return {\n maxWidth: breakpoint\n };\n };\n return handleBreakpoints(props, props.maxWidth, styleFromPropValue);\n }\n return null;\n};\nmaxWidth.filterProps = ['maxWidth'];\nexport const minWidth = style({\n prop: 'minWidth',\n transform: sizingTransform\n});\nexport const height = style({\n prop: 'height',\n transform: sizingTransform\n});\nexport const maxHeight = style({\n prop: 'maxHeight',\n transform: sizingTransform\n});\nexport const minHeight = style({\n prop: 'minHeight',\n transform: sizingTransform\n});\nexport const sizeWidth = style({\n prop: 'size',\n cssProperty: 'width',\n transform: sizingTransform\n});\nexport const sizeHeight = style({\n prop: 'size',\n cssProperty: 'height',\n transform: sizingTransform\n});\nexport const boxSizing = style({\n prop: 'boxSizing'\n});\nconst sizing = compose(width, maxWidth, minWidth, height, maxHeight, minHeight, boxSizing);\nexport default sizing;","import { padding, margin } from \"../spacing/index.js\";\nimport { borderRadius, borderTransform } from \"../borders/index.js\";\nimport { gap, rowGap, columnGap } from \"../cssGrid/index.js\";\nimport { paletteTransform } from \"../palette/index.js\";\nimport { maxWidth, sizingTransform } from \"../sizing/index.js\";\nconst defaultSxConfig = {\n // borders\n border: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderTop: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderRight: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderBottom: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderLeft: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderColor: {\n themeKey: 'palette'\n },\n borderTopColor: {\n themeKey: 'palette'\n },\n borderRightColor: {\n themeKey: 'palette'\n },\n borderBottomColor: {\n themeKey: 'palette'\n },\n borderLeftColor: {\n themeKey: 'palette'\n },\n outline: {\n themeKey: 'borders',\n transform: borderTransform\n },\n outlineColor: {\n themeKey: 'palette'\n },\n borderRadius: {\n themeKey: 'shape.borderRadius',\n style: borderRadius\n },\n // palette\n color: {\n themeKey: 'palette',\n transform: paletteTransform\n },\n bgcolor: {\n themeKey: 'palette',\n cssProperty: 'backgroundColor',\n transform: paletteTransform\n },\n backgroundColor: {\n themeKey: 'palette',\n transform: paletteTransform\n },\n // spacing\n p: {\n style: padding\n },\n pt: {\n style: padding\n },\n pr: {\n style: padding\n },\n pb: {\n style: padding\n },\n pl: {\n style: padding\n },\n px: {\n style: padding\n },\n py: {\n style: padding\n },\n padding: {\n style: padding\n },\n paddingTop: {\n style: padding\n },\n paddingRight: {\n style: padding\n },\n paddingBottom: {\n style: padding\n },\n paddingLeft: {\n style: padding\n },\n paddingX: {\n style: padding\n },\n paddingY: {\n style: padding\n },\n paddingInline: {\n style: padding\n },\n paddingInlineStart: {\n style: padding\n },\n paddingInlineEnd: {\n style: padding\n },\n paddingBlock: {\n style: padding\n },\n paddingBlockStart: {\n style: padding\n },\n paddingBlockEnd: {\n style: padding\n },\n m: {\n style: margin\n },\n mt: {\n style: margin\n },\n mr: {\n style: margin\n },\n mb: {\n style: margin\n },\n ml: {\n style: margin\n },\n mx: {\n style: margin\n },\n my: {\n style: margin\n },\n margin: {\n style: margin\n },\n marginTop: {\n style: margin\n },\n marginRight: {\n style: margin\n },\n marginBottom: {\n style: margin\n },\n marginLeft: {\n style: margin\n },\n marginX: {\n style: margin\n },\n marginY: {\n style: margin\n },\n marginInline: {\n style: margin\n },\n marginInlineStart: {\n style: margin\n },\n marginInlineEnd: {\n style: margin\n },\n marginBlock: {\n style: margin\n },\n marginBlockStart: {\n style: margin\n },\n marginBlockEnd: {\n style: margin\n },\n // display\n displayPrint: {\n cssProperty: false,\n transform: value => ({\n '@media print': {\n display: value\n }\n })\n },\n display: {},\n overflow: {},\n textOverflow: {},\n visibility: {},\n whiteSpace: {},\n // flexbox\n flexBasis: {},\n flexDirection: {},\n flexWrap: {},\n justifyContent: {},\n alignItems: {},\n alignContent: {},\n order: {},\n flex: {},\n flexGrow: {},\n flexShrink: {},\n alignSelf: {},\n justifyItems: {},\n justifySelf: {},\n // grid\n gap: {\n style: gap\n },\n rowGap: {\n style: rowGap\n },\n columnGap: {\n style: columnGap\n },\n gridColumn: {},\n gridRow: {},\n gridAutoFlow: {},\n gridAutoColumns: {},\n gridAutoRows: {},\n gridTemplateColumns: {},\n gridTemplateRows: {},\n gridTemplateAreas: {},\n gridArea: {},\n // positions\n position: {},\n zIndex: {\n themeKey: 'zIndex'\n },\n top: {},\n right: {},\n bottom: {},\n left: {},\n // shadows\n boxShadow: {\n themeKey: 'shadows'\n },\n // sizing\n width: {\n transform: sizingTransform\n },\n maxWidth: {\n style: maxWidth\n },\n minWidth: {\n transform: sizingTransform\n },\n height: {\n transform: sizingTransform\n },\n maxHeight: {\n transform: sizingTransform\n },\n minHeight: {\n transform: sizingTransform\n },\n boxSizing: {},\n // typography\n font: {\n themeKey: 'font'\n },\n fontFamily: {\n themeKey: 'typography'\n },\n fontSize: {\n themeKey: 'typography'\n },\n fontStyle: {\n themeKey: 'typography'\n },\n fontWeight: {\n themeKey: 'typography'\n },\n letterSpacing: {},\n textTransform: {},\n lineHeight: {},\n textAlign: {},\n typography: {\n cssProperty: false,\n themeKey: 'typography'\n }\n};\nexport default defaultSxConfig;","import capitalize from '@mui/utils/capitalize';\nimport merge from \"../merge/index.js\";\nimport { getPath, getStyleValue as getValue } from \"../style/index.js\";\nimport { handleBreakpoints, createEmptyBreakpointObject, removeUnusedBreakpoints } from \"../breakpoints/index.js\";\nimport { sortContainerQueries } from \"../cssContainerQueries/index.js\";\nimport defaultSxConfig from \"./defaultSxConfig.js\";\nfunction objectsHaveSameKeys(...objects) {\n const allKeys = objects.reduce((keys, object) => keys.concat(Object.keys(object)), []);\n const union = new Set(allKeys);\n return objects.every(object => union.size === Object.keys(object).length);\n}\nfunction callIfFn(maybeFn, arg) {\n return typeof maybeFn === 'function' ? maybeFn(arg) : maybeFn;\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function unstable_createStyleFunctionSx() {\n function getThemeValue(prop, val, theme, config) {\n const props = {\n [prop]: val,\n theme\n };\n const options = config[prop];\n if (!options) {\n return {\n [prop]: val\n };\n }\n const {\n cssProperty = prop,\n themeKey,\n transform,\n style\n } = options;\n if (val == null) {\n return null;\n }\n\n // TODO v6: remove, see https://github.com/mui/material-ui/pull/38123\n if (themeKey === 'typography' && val === 'inherit') {\n return {\n [prop]: val\n };\n }\n const themeMapping = getPath(theme, themeKey) || {};\n if (style) {\n return style(props);\n }\n const styleFromPropValue = propValueFinal => {\n let value = getValue(themeMapping, transform, propValueFinal);\n if (propValueFinal === value && typeof propValueFinal === 'string') {\n // Haven't found value\n value = getValue(themeMapping, transform, `${prop}${propValueFinal === 'default' ? '' : capitalize(propValueFinal)}`, propValueFinal);\n }\n if (cssProperty === false) {\n return value;\n }\n return {\n [cssProperty]: value\n };\n };\n return handleBreakpoints(props, val, styleFromPropValue);\n }\n function styleFunctionSx(props) {\n const {\n sx,\n theme = {},\n nested\n } = props || {};\n if (!sx) {\n return null; // Emotion & styled-components will neglect null\n }\n const config = theme.unstable_sxConfig ?? defaultSxConfig;\n\n /*\n * Receive `sxInput` as object or callback\n * and then recursively check keys & values to create media query object styles.\n * (the result will be used in `styled`)\n */\n function traverse(sxInput) {\n let sxObject = sxInput;\n if (typeof sxInput === 'function') {\n sxObject = sxInput(theme);\n } else if (typeof sxInput !== 'object') {\n // value\n return sxInput;\n }\n if (!sxObject) {\n return null;\n }\n const emptyBreakpoints = createEmptyBreakpointObject(theme.breakpoints);\n const breakpointsKeys = Object.keys(emptyBreakpoints);\n let css = emptyBreakpoints;\n Object.keys(sxObject).forEach(styleKey => {\n const value = callIfFn(sxObject[styleKey], theme);\n if (value !== null && value !== undefined) {\n if (typeof value === 'object') {\n if (config[styleKey]) {\n css = merge(css, getThemeValue(styleKey, value, theme, config));\n } else {\n const breakpointsValues = handleBreakpoints({\n theme\n }, value, x => ({\n [styleKey]: x\n }));\n if (objectsHaveSameKeys(breakpointsValues, value)) {\n css[styleKey] = styleFunctionSx({\n sx: value,\n theme,\n nested: true\n });\n } else {\n css = merge(css, breakpointsValues);\n }\n }\n } else {\n css = merge(css, getThemeValue(styleKey, value, theme, config));\n }\n }\n });\n if (!nested && theme.modularCssLayers) {\n return {\n '@layer sx': sortContainerQueries(theme, removeUnusedBreakpoints(breakpointsKeys, css))\n };\n }\n return sortContainerQueries(theme, removeUnusedBreakpoints(breakpointsKeys, css));\n }\n return Array.isArray(sx) ? sx.map(traverse) : traverse(sx);\n }\n return styleFunctionSx;\n}\nconst styleFunctionSx = unstable_createStyleFunctionSx();\nstyleFunctionSx.filterProps = ['sx'];\nexport default styleFunctionSx;","function clamp(val, min = Number.MIN_SAFE_INTEGER, max = Number.MAX_SAFE_INTEGER) {\n return Math.max(min, Math.min(val, max));\n}\nexport default clamp;","import _formatErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\n/* eslint-disable @typescript-eslint/naming-convention */\nimport clamp from '@mui/utils/clamp';\n\n/**\n * Returns a number whose value is limited to the given range.\n * @param {number} value The value to be clamped\n * @param {number} min The lower boundary of the output range\n * @param {number} max The upper boundary of the output range\n * @returns {number} A number in the range [min, max]\n */\nfunction clampWrapper(value, min = 0, max = 1) {\n if (process.env.NODE_ENV !== 'production') {\n if (value < min || value > max) {\n console.error(`MUI: The value provided ${value} is out of range [${min}, ${max}].`);\n }\n }\n return clamp(value, min, max);\n}\n\n/**\n * Converts a color from CSS hex format to CSS rgb format.\n * @param {string} color - Hex color, i.e. #nnn or #nnnnnn\n * @returns {string} A CSS rgb color string\n */\nexport function hexToRgb(color) {\n color = color.slice(1);\n const re = new RegExp(`.{1,${color.length >= 6 ? 2 : 1}}`, 'g');\n let colors = color.match(re);\n if (colors && colors[0].length === 1) {\n colors = colors.map(n => n + n);\n }\n if (process.env.NODE_ENV !== 'production') {\n if (color.length !== color.trim().length) {\n console.error(`MUI: The color: \"${color}\" is invalid. Make sure the color input doesn't contain leading/trailing space.`);\n }\n }\n return colors ? `rgb${colors.length === 4 ? 'a' : ''}(${colors.map((n, index) => {\n return index < 3 ? parseInt(n, 16) : Math.round(parseInt(n, 16) / 255 * 1000) / 1000;\n }).join(', ')})` : '';\n}\nfunction intToHex(int) {\n const hex = int.toString(16);\n return hex.length === 1 ? `0${hex}` : hex;\n}\n\n/**\n * Returns an object with the type and values of a color.\n *\n * Note: Does not support rgb % values.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @returns {object} - A MUI color object: {type: string, values: number[]}\n */\nexport function decomposeColor(color) {\n // Idempotent\n if (color.type) {\n return color;\n }\n if (color.charAt(0) === '#') {\n return decomposeColor(hexToRgb(color));\n }\n const marker = color.indexOf('(');\n const type = color.substring(0, marker);\n if (!['rgb', 'rgba', 'hsl', 'hsla', 'color'].includes(type)) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: Unsupported \\`${color}\\` color.\\n` + 'The following formats are supported: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color().' : _formatErrorMessage(9, color));\n }\n let values = color.substring(marker + 1, color.length - 1);\n let colorSpace;\n if (type === 'color') {\n values = values.split(' ');\n colorSpace = values.shift();\n if (values.length === 4 && values[3].charAt(0) === '/') {\n values[3] = values[3].slice(1);\n }\n if (!['srgb', 'display-p3', 'a98-rgb', 'prophoto-rgb', 'rec-2020'].includes(colorSpace)) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: unsupported \\`${colorSpace}\\` color space.\\n` + 'The following color spaces are supported: srgb, display-p3, a98-rgb, prophoto-rgb, rec-2020.' : _formatErrorMessage(10, colorSpace));\n }\n } else {\n values = values.split(',');\n }\n values = values.map(value => parseFloat(value));\n return {\n type,\n values,\n colorSpace\n };\n}\n\n/**\n * Returns a channel created from the input color.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @returns {string} - The channel for the color, that can be used in rgba or hsla colors\n */\nexport const colorChannel = color => {\n const decomposedColor = decomposeColor(color);\n return decomposedColor.values.slice(0, 3).map((val, idx) => decomposedColor.type.includes('hsl') && idx !== 0 ? `${val}%` : val).join(' ');\n};\nexport const private_safeColorChannel = (color, warning) => {\n try {\n return colorChannel(color);\n } catch (error) {\n if (warning && process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n return color;\n }\n};\n\n/**\n * Converts a color object with type and values to a string.\n * @param {object} color - Decomposed color\n * @param {string} color.type - One of: 'rgb', 'rgba', 'hsl', 'hsla', 'color'\n * @param {array} color.values - [n,n,n] or [n,n,n,n]\n * @returns {string} A CSS color string\n */\nexport function recomposeColor(color) {\n const {\n type,\n colorSpace\n } = color;\n let {\n values\n } = color;\n if (type.includes('rgb')) {\n // Only convert the first 3 values to int (i.e. not alpha)\n values = values.map((n, i) => i < 3 ? parseInt(n, 10) : n);\n } else if (type.includes('hsl')) {\n values[1] = `${values[1]}%`;\n values[2] = `${values[2]}%`;\n }\n if (type.includes('color')) {\n values = `${colorSpace} ${values.join(' ')}`;\n } else {\n values = `${values.join(', ')}`;\n }\n return `${type}(${values})`;\n}\n\n/**\n * Converts a color from CSS rgb format to CSS hex format.\n * @param {string} color - RGB color, i.e. rgb(n, n, n)\n * @returns {string} A CSS rgb color string, i.e. #nnnnnn\n */\nexport function rgbToHex(color) {\n // Idempotent\n if (color.startsWith('#')) {\n return color;\n }\n const {\n values\n } = decomposeColor(color);\n return `#${values.map((n, i) => intToHex(i === 3 ? Math.round(255 * n) : n)).join('')}`;\n}\n\n/**\n * Converts a color from hsl format to rgb format.\n * @param {string} color - HSL color values\n * @returns {string} rgb color values\n */\nexport function hslToRgb(color) {\n color = decomposeColor(color);\n const {\n values\n } = color;\n const h = values[0];\n const s = values[1] / 100;\n const l = values[2] / 100;\n const a = s * Math.min(l, 1 - l);\n const f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n let type = 'rgb';\n const rgb = [Math.round(f(0) * 255), Math.round(f(8) * 255), Math.round(f(4) * 255)];\n if (color.type === 'hsla') {\n type += 'a';\n rgb.push(values[3]);\n }\n return recomposeColor({\n type,\n values: rgb\n });\n}\n/**\n * The relative brightness of any point in a color space,\n * normalized to 0 for darkest black and 1 for lightest white.\n *\n * Formula: https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @returns {number} The relative brightness of the color in the range 0 - 1\n */\nexport function getLuminance(color) {\n color = decomposeColor(color);\n let rgb = color.type === 'hsl' || color.type === 'hsla' ? decomposeColor(hslToRgb(color)).values : color.values;\n rgb = rgb.map(val => {\n if (color.type !== 'color') {\n val /= 255; // normalized\n }\n return val <= 0.03928 ? val / 12.92 : ((val + 0.055) / 1.055) ** 2.4;\n });\n\n // Truncate at 3 digits\n return Number((0.2126 * rgb[0] + 0.7152 * rgb[1] + 0.0722 * rgb[2]).toFixed(3));\n}\n\n/**\n * Calculates the contrast ratio between two colors.\n *\n * Formula: https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests\n * @param {string} foreground - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {string} background - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @returns {number} A contrast ratio value in the range 0 - 21.\n */\nexport function getContrastRatio(foreground, background) {\n const lumA = getLuminance(foreground);\n const lumB = getLuminance(background);\n return (Math.max(lumA, lumB) + 0.05) / (Math.min(lumA, lumB) + 0.05);\n}\n\n/**\n * Sets the absolute transparency of a color.\n * Any existing alpha values are overwritten.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} value - value to set the alpha channel to in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nexport function alpha(color, value) {\n color = decomposeColor(color);\n value = clampWrapper(value);\n if (color.type === 'rgb' || color.type === 'hsl') {\n color.type += 'a';\n }\n if (color.type === 'color') {\n color.values[3] = `/${value}`;\n } else {\n color.values[3] = value;\n }\n return recomposeColor(color);\n}\nexport function private_safeAlpha(color, value, warning) {\n try {\n return alpha(color, value);\n } catch (error) {\n if (warning && process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n return color;\n }\n}\n\n/**\n * Darkens a color.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} coefficient - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nexport function darken(color, coefficient) {\n color = decomposeColor(color);\n coefficient = clampWrapper(coefficient);\n if (color.type.includes('hsl')) {\n color.values[2] *= 1 - coefficient;\n } else if (color.type.includes('rgb') || color.type.includes('color')) {\n for (let i = 0; i < 3; i += 1) {\n color.values[i] *= 1 - coefficient;\n }\n }\n return recomposeColor(color);\n}\nexport function private_safeDarken(color, coefficient, warning) {\n try {\n return darken(color, coefficient);\n } catch (error) {\n if (warning && process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n return color;\n }\n}\n\n/**\n * Lightens a color.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} coefficient - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nexport function lighten(color, coefficient) {\n color = decomposeColor(color);\n coefficient = clampWrapper(coefficient);\n if (color.type.includes('hsl')) {\n color.values[2] += (100 - color.values[2]) * coefficient;\n } else if (color.type.includes('rgb')) {\n for (let i = 0; i < 3; i += 1) {\n color.values[i] += (255 - color.values[i]) * coefficient;\n }\n } else if (color.type.includes('color')) {\n for (let i = 0; i < 3; i += 1) {\n color.values[i] += (1 - color.values[i]) * coefficient;\n }\n }\n return recomposeColor(color);\n}\nexport function private_safeLighten(color, coefficient, warning) {\n try {\n return lighten(color, coefficient);\n } catch (error) {\n if (warning && process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n return color;\n }\n}\n\n/**\n * Darken or lighten a color, depending on its luminance.\n * Light colors are darkened, dark colors are lightened.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} coefficient=0.15 - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nexport function emphasize(color, coefficient = 0.15) {\n return getLuminance(color) > 0.5 ? darken(color, coefficient) : lighten(color, coefficient);\n}\nexport function private_safeEmphasize(color, coefficient, warning) {\n try {\n return emphasize(color, coefficient);\n } catch (error) {\n if (warning && process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n return color;\n }\n}\n\n/**\n * Blend a transparent overlay color with a background color, resulting in a single\n * RGB color.\n * @param {string} background - CSS color\n * @param {string} overlay - CSS color\n * @param {number} opacity - Opacity multiplier in the range 0 - 1\n * @param {number} [gamma=1.0] - Gamma correction factor. For gamma-correct blending, 2.2 is usual.\n */\nexport function blend(background, overlay, opacity, gamma = 1.0) {\n const blendChannel = (b, o) => Math.round((b ** (1 / gamma) * (1 - opacity) + o ** (1 / gamma) * opacity) ** gamma);\n const backgroundColor = decomposeColor(background);\n const overlayColor = decomposeColor(overlay);\n const rgb = [blendChannel(backgroundColor.values[0], overlayColor.values[0]), blendChannel(backgroundColor.values[1], overlayColor.values[1]), blendChannel(backgroundColor.values[2], overlayColor.values[2])];\n return recomposeColor({\n type: 'rgb',\n values: rgb\n });\n}","const common = {\n black: '#000',\n white: '#fff'\n};\nexport default common;","const grey = {\n 50: '#fafafa',\n 100: '#f5f5f5',\n 200: '#eeeeee',\n 300: '#e0e0e0',\n 400: '#bdbdbd',\n 500: '#9e9e9e',\n 600: '#757575',\n 700: '#616161',\n 800: '#424242',\n 900: '#212121',\n A100: '#f5f5f5',\n A200: '#eeeeee',\n A400: '#bdbdbd',\n A700: '#616161'\n};\nexport default grey;","const purple = {\n 50: '#f3e5f5',\n 100: '#e1bee7',\n 200: '#ce93d8',\n 300: '#ba68c8',\n 400: '#ab47bc',\n 500: '#9c27b0',\n 600: '#8e24aa',\n 700: '#7b1fa2',\n 800: '#6a1b9a',\n 900: '#4a148c',\n A100: '#ea80fc',\n A200: '#e040fb',\n A400: '#d500f9',\n A700: '#aa00ff'\n};\nexport default purple;","const red = {\n 50: '#ffebee',\n 100: '#ffcdd2',\n 200: '#ef9a9a',\n 300: '#e57373',\n 400: '#ef5350',\n 500: '#f44336',\n 600: '#e53935',\n 700: '#d32f2f',\n 800: '#c62828',\n 900: '#b71c1c',\n A100: '#ff8a80',\n A200: '#ff5252',\n A400: '#ff1744',\n A700: '#d50000'\n};\nexport default red;","const orange = {\n 50: '#fff3e0',\n 100: '#ffe0b2',\n 200: '#ffcc80',\n 300: '#ffb74d',\n 400: '#ffa726',\n 500: '#ff9800',\n 600: '#fb8c00',\n 700: '#f57c00',\n 800: '#ef6c00',\n 900: '#e65100',\n A100: '#ffd180',\n A200: '#ffab40',\n A400: '#ff9100',\n A700: '#ff6d00'\n};\nexport default orange;","const blue = {\n 50: '#e3f2fd',\n 100: '#bbdefb',\n 200: '#90caf9',\n 300: '#64b5f6',\n 400: '#42a5f5',\n 500: '#2196f3',\n 600: '#1e88e5',\n 700: '#1976d2',\n 800: '#1565c0',\n 900: '#0d47a1',\n A100: '#82b1ff',\n A200: '#448aff',\n A400: '#2979ff',\n A700: '#2962ff'\n};\nexport default blue;","const lightBlue = {\n 50: '#e1f5fe',\n 100: '#b3e5fc',\n 200: '#81d4fa',\n 300: '#4fc3f7',\n 400: '#29b6f6',\n 500: '#03a9f4',\n 600: '#039be5',\n 700: '#0288d1',\n 800: '#0277bd',\n 900: '#01579b',\n A100: '#80d8ff',\n A200: '#40c4ff',\n A400: '#00b0ff',\n A700: '#0091ea'\n};\nexport default lightBlue;","const green = {\n 50: '#e8f5e9',\n 100: '#c8e6c9',\n 200: '#a5d6a7',\n 300: '#81c784',\n 400: '#66bb6a',\n 500: '#4caf50',\n 600: '#43a047',\n 700: '#388e3c',\n 800: '#2e7d32',\n 900: '#1b5e20',\n A100: '#b9f6ca',\n A200: '#69f0ae',\n A400: '#00e676',\n A700: '#00c853'\n};\nexport default green;","import _formatErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\nimport deepmerge from '@mui/utils/deepmerge';\nimport { darken, getContrastRatio, lighten } from '@mui/system/colorManipulator';\nimport common from \"../colors/common.js\";\nimport grey from \"../colors/grey.js\";\nimport purple from \"../colors/purple.js\";\nimport red from \"../colors/red.js\";\nimport orange from \"../colors/orange.js\";\nimport blue from \"../colors/blue.js\";\nimport lightBlue from \"../colors/lightBlue.js\";\nimport green from \"../colors/green.js\";\nfunction getLight() {\n return {\n // The colors used to style the text.\n text: {\n // The most important text.\n primary: 'rgba(0, 0, 0, 0.87)',\n // Secondary text.\n secondary: 'rgba(0, 0, 0, 0.6)',\n // Disabled text have even lower visual prominence.\n disabled: 'rgba(0, 0, 0, 0.38)'\n },\n // The color used to divide different elements.\n divider: 'rgba(0, 0, 0, 0.12)',\n // The background colors used to style the surfaces.\n // Consistency between these values is important.\n background: {\n paper: common.white,\n default: common.white\n },\n // The colors used to style the action elements.\n action: {\n // The color of an active action like an icon button.\n active: 'rgba(0, 0, 0, 0.54)',\n // The color of an hovered action.\n hover: 'rgba(0, 0, 0, 0.04)',\n hoverOpacity: 0.04,\n // The color of a selected action.\n selected: 'rgba(0, 0, 0, 0.08)',\n selectedOpacity: 0.08,\n // The color of a disabled action.\n disabled: 'rgba(0, 0, 0, 0.26)',\n // The background color of a disabled action.\n disabledBackground: 'rgba(0, 0, 0, 0.12)',\n disabledOpacity: 0.38,\n focus: 'rgba(0, 0, 0, 0.12)',\n focusOpacity: 0.12,\n activatedOpacity: 0.12\n }\n };\n}\nexport const light = getLight();\nfunction getDark() {\n return {\n text: {\n primary: common.white,\n secondary: 'rgba(255, 255, 255, 0.7)',\n disabled: 'rgba(255, 255, 255, 0.5)',\n icon: 'rgba(255, 255, 255, 0.5)'\n },\n divider: 'rgba(255, 255, 255, 0.12)',\n background: {\n paper: '#121212',\n default: '#121212'\n },\n action: {\n active: common.white,\n hover: 'rgba(255, 255, 255, 0.08)',\n hoverOpacity: 0.08,\n selected: 'rgba(255, 255, 255, 0.16)',\n selectedOpacity: 0.16,\n disabled: 'rgba(255, 255, 255, 0.3)',\n disabledBackground: 'rgba(255, 255, 255, 0.12)',\n disabledOpacity: 0.38,\n focus: 'rgba(255, 255, 255, 0.12)',\n focusOpacity: 0.12,\n activatedOpacity: 0.24\n }\n };\n}\nexport const dark = getDark();\nfunction addLightOrDark(intent, direction, shade, tonalOffset) {\n const tonalOffsetLight = tonalOffset.light || tonalOffset;\n const tonalOffsetDark = tonalOffset.dark || tonalOffset * 1.5;\n if (!intent[direction]) {\n if (intent.hasOwnProperty(shade)) {\n intent[direction] = intent[shade];\n } else if (direction === 'light') {\n intent.light = lighten(intent.main, tonalOffsetLight);\n } else if (direction === 'dark') {\n intent.dark = darken(intent.main, tonalOffsetDark);\n }\n }\n}\nfunction mixLightOrDark(colorSpace, intent, direction, shade, tonalOffset) {\n const tonalOffsetLight = tonalOffset.light || tonalOffset;\n const tonalOffsetDark = tonalOffset.dark || tonalOffset * 1.5;\n if (!intent[direction]) {\n if (intent.hasOwnProperty(shade)) {\n intent[direction] = intent[shade];\n } else if (direction === 'light') {\n intent.light = `color-mix(in ${colorSpace}, ${intent.main}, #fff ${(tonalOffsetLight * 100).toFixed(0)}%)`;\n } else if (direction === 'dark') {\n intent.dark = `color-mix(in ${colorSpace}, ${intent.main}, #000 ${(tonalOffsetDark * 100).toFixed(0)}%)`;\n }\n }\n}\nfunction getDefaultPrimary(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: blue[200],\n light: blue[50],\n dark: blue[400]\n };\n }\n return {\n main: blue[700],\n light: blue[400],\n dark: blue[800]\n };\n}\nfunction getDefaultSecondary(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: purple[200],\n light: purple[50],\n dark: purple[400]\n };\n }\n return {\n main: purple[500],\n light: purple[300],\n dark: purple[700]\n };\n}\nfunction getDefaultError(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: red[500],\n light: red[300],\n dark: red[700]\n };\n }\n return {\n main: red[700],\n light: red[400],\n dark: red[800]\n };\n}\nfunction getDefaultInfo(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: lightBlue[400],\n light: lightBlue[300],\n dark: lightBlue[700]\n };\n }\n return {\n main: lightBlue[700],\n light: lightBlue[500],\n dark: lightBlue[900]\n };\n}\nfunction getDefaultSuccess(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: green[400],\n light: green[300],\n dark: green[700]\n };\n }\n return {\n main: green[800],\n light: green[500],\n dark: green[900]\n };\n}\nfunction getDefaultWarning(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: orange[400],\n light: orange[300],\n dark: orange[700]\n };\n }\n return {\n main: '#ed6c02',\n // closest to orange[800] that pass 3:1.\n light: orange[500],\n dark: orange[900]\n };\n}\n\n// Use the same name as the experimental CSS `contrast-color` function.\nexport function contrastColor(background) {\n return `oklch(from ${background} var(--__l) 0 h / var(--__a))`;\n}\nexport default function createPalette(palette) {\n const {\n mode = 'light',\n contrastThreshold = 3,\n tonalOffset = 0.2,\n colorSpace,\n ...other\n } = palette;\n const primary = palette.primary || getDefaultPrimary(mode);\n const secondary = palette.secondary || getDefaultSecondary(mode);\n const error = palette.error || getDefaultError(mode);\n const info = palette.info || getDefaultInfo(mode);\n const success = palette.success || getDefaultSuccess(mode);\n const warning = palette.warning || getDefaultWarning(mode);\n\n // Use the same logic as\n // Bootstrap: https://github.com/twbs/bootstrap/blob/1d6e3710dd447de1a200f29e8fa521f8a0908f70/scss/_functions.scss#L59\n // and material-components-web https://github.com/material-components/material-components-web/blob/ac46b8863c4dab9fc22c4c662dc6bd1b65dd652f/packages/mdc-theme/_functions.scss#L54\n function getContrastText(background) {\n if (colorSpace) {\n return contrastColor(background);\n }\n const contrastText = getContrastRatio(background, dark.text.primary) >= contrastThreshold ? dark.text.primary : light.text.primary;\n if (process.env.NODE_ENV !== 'production') {\n const contrast = getContrastRatio(background, contrastText);\n if (contrast < 3) {\n console.error([`MUI: The contrast ratio of ${contrast}:1 for ${contrastText} on ${background}`, 'falls below the WCAG recommended absolute minimum contrast ratio of 3:1.', 'https://www.w3.org/TR/2008/REC-WCAG20-20081211/#visual-audio-contrast-contrast'].join('\\n'));\n }\n }\n return contrastText;\n }\n const augmentColor = ({\n color,\n name,\n mainShade = 500,\n lightShade = 300,\n darkShade = 700\n }) => {\n color = {\n ...color\n };\n if (!color.main && color[mainShade]) {\n color.main = color[mainShade];\n }\n if (!color.hasOwnProperty('main')) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: The color${name ? ` (${name})` : ''} provided to augmentColor(color) is invalid.\\n` + `The color object needs to have a \\`main\\` property or a \\`${mainShade}\\` property.` : _formatErrorMessage(11, name ? ` (${name})` : '', mainShade));\n }\n if (typeof color.main !== 'string') {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: The color${name ? ` (${name})` : ''} provided to augmentColor(color) is invalid.\\n` + `\\`color.main\\` should be a string, but \\`${JSON.stringify(color.main)}\\` was provided instead.\\n` + '\\n' + 'Did you intend to use one of the following approaches?\\n' + '\\n' + 'import { green } from \"@mui/material/colors\";\\n' + '\\n' + 'const theme1 = createTheme({ palette: {\\n' + ' primary: green,\\n' + '} });\\n' + '\\n' + 'const theme2 = createTheme({ palette: {\\n' + ' primary: { main: green[500] },\\n' + '} });' : _formatErrorMessage(12, name ? ` (${name})` : '', JSON.stringify(color.main)));\n }\n if (colorSpace) {\n mixLightOrDark(colorSpace, color, 'light', lightShade, tonalOffset);\n mixLightOrDark(colorSpace, color, 'dark', darkShade, tonalOffset);\n } else {\n addLightOrDark(color, 'light', lightShade, tonalOffset);\n addLightOrDark(color, 'dark', darkShade, tonalOffset);\n }\n if (!color.contrastText) {\n color.contrastText = getContrastText(color.main);\n }\n return color;\n };\n let modeHydrated;\n if (mode === 'light') {\n modeHydrated = getLight();\n } else if (mode === 'dark') {\n modeHydrated = getDark();\n }\n if (process.env.NODE_ENV !== 'production') {\n if (!modeHydrated) {\n console.error(`MUI: The palette mode \\`${mode}\\` is not supported.`);\n }\n }\n const paletteOutput = deepmerge({\n // A collection of common colors.\n common: {\n ...common\n },\n // prevent mutable object.\n // The palette mode, can be light or dark.\n mode,\n // The colors used to represent primary interface elements for a user.\n primary: augmentColor({\n color: primary,\n name: 'primary'\n }),\n // The colors used to represent secondary interface elements for a user.\n secondary: augmentColor({\n color: secondary,\n name: 'secondary',\n mainShade: 'A400',\n lightShade: 'A200',\n darkShade: 'A700'\n }),\n // The colors used to represent interface elements that the user should be made aware of.\n error: augmentColor({\n color: error,\n name: 'error'\n }),\n // The colors used to represent potentially dangerous actions or important messages.\n warning: augmentColor({\n color: warning,\n name: 'warning'\n }),\n // The colors used to present information to the user that is neutral and not necessarily important.\n info: augmentColor({\n color: info,\n name: 'info'\n }),\n // The colors used to indicate the successful completion of an action that user triggered.\n success: augmentColor({\n color: success,\n name: 'success'\n }),\n // The grey colors.\n grey,\n // Used by `getContrastText()` to maximize the contrast between\n // the background and the text.\n contrastThreshold,\n // Takes a background color and returns the text color that maximizes the contrast.\n getContrastText,\n // Generate a rich color object.\n augmentColor,\n // Used by the functions below to shift a color's luminance by approximately\n // two indexes within its tonal palette.\n // E.g., shift from Red 500 to Red 300 or Red 700.\n tonalOffset,\n // The light and dark mode object.\n ...modeHydrated\n }, other);\n return paletteOutput;\n}","/* eslint-disable */\n// Inspired by https://github.com/garycourt/murmurhash-js\n// Ported from https://github.com/aappleby/smhasher/blob/61a0530f28277f2e850bfc39600ce61d02b518de/src/MurmurHash2.cpp#L37-L86\nfunction murmur2(str) {\n // 'm' and 'r' are mixing constants generated offline.\n // They're not really 'magic', they just happen to work well.\n // const m = 0x5bd1e995;\n // const r = 24;\n // Initialize the hash\n var h = 0; // Mix 4 bytes at a time into the hash\n\n var k,\n i = 0,\n len = str.length;\n\n for (; len >= 4; ++i, len -= 4) {\n k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n k =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16);\n k ^=\n /* k >>> r: */\n k >>> 24;\n h =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16) ^\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Handle the last few bytes of the input array\n\n\n switch (len) {\n case 3:\n h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n\n case 2:\n h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n\n case 1:\n h ^= str.charCodeAt(i) & 0xff;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Do a few final mixes of the hash to ensure the last few\n // bytes are well-incorporated.\n\n\n h ^= h >>> 13;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n return ((h ^ h >>> 15) >>> 0).toString(36);\n}\n\nexport { murmur2 as default };\n","var unitlessKeys = {\n animationIterationCount: 1,\n aspectRatio: 1,\n borderImageOutset: 1,\n borderImageSlice: 1,\n borderImageWidth: 1,\n boxFlex: 1,\n boxFlexGroup: 1,\n boxOrdinalGroup: 1,\n columnCount: 1,\n columns: 1,\n flex: 1,\n flexGrow: 1,\n flexPositive: 1,\n flexShrink: 1,\n flexNegative: 1,\n flexOrder: 1,\n gridRow: 1,\n gridRowEnd: 1,\n gridRowSpan: 1,\n gridRowStart: 1,\n gridColumn: 1,\n gridColumnEnd: 1,\n gridColumnSpan: 1,\n gridColumnStart: 1,\n msGridRow: 1,\n msGridRowSpan: 1,\n msGridColumn: 1,\n msGridColumnSpan: 1,\n fontWeight: 1,\n lineHeight: 1,\n opacity: 1,\n order: 1,\n orphans: 1,\n scale: 1,\n tabSize: 1,\n widows: 1,\n zIndex: 1,\n zoom: 1,\n WebkitLineClamp: 1,\n // SVG-related properties\n fillOpacity: 1,\n floodOpacity: 1,\n stopOpacity: 1,\n strokeDasharray: 1,\n strokeDashoffset: 1,\n strokeMiterlimit: 1,\n strokeOpacity: 1,\n strokeWidth: 1\n};\n\nexport { unitlessKeys as default };\n","function memoize(fn) {\n var cache = Object.create(null);\n return function (arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\n\nexport { memoize as default };\n","import hashString from '@emotion/hash';\nimport unitless from '@emotion/unitless';\nimport memoize from '@emotion/memoize';\n\nvar isDevelopment = false;\n\nvar hyphenateRegex = /[A-Z]|^ms/g;\nvar animationRegex = /_EMO_([^_]+?)_([^]*?)_EMO_/g;\n\nvar isCustomProperty = function isCustomProperty(property) {\n return property.charCodeAt(1) === 45;\n};\n\nvar isProcessableValue = function isProcessableValue(value) {\n return value != null && typeof value !== 'boolean';\n};\n\nvar processStyleName = /* #__PURE__ */memoize(function (styleName) {\n return isCustomProperty(styleName) ? styleName : styleName.replace(hyphenateRegex, '-$&').toLowerCase();\n});\n\nvar processStyleValue = function processStyleValue(key, value) {\n switch (key) {\n case 'animation':\n case 'animationName':\n {\n if (typeof value === 'string') {\n return value.replace(animationRegex, function (match, p1, p2) {\n cursor = {\n name: p1,\n styles: p2,\n next: cursor\n };\n return p1;\n });\n }\n }\n }\n\n if (unitless[key] !== 1 && !isCustomProperty(key) && typeof value === 'number' && value !== 0) {\n return value + 'px';\n }\n\n return value;\n};\n\nvar noComponentSelectorMessage = 'Component selectors can only be used in conjunction with ' + '@emotion/babel-plugin, the swc Emotion plugin, or another Emotion-aware ' + 'compiler transform.';\n\nfunction handleInterpolation(mergedProps, registered, interpolation) {\n if (interpolation == null) {\n return '';\n }\n\n var componentSelector = interpolation;\n\n if (componentSelector.__emotion_styles !== undefined) {\n\n return componentSelector;\n }\n\n switch (typeof interpolation) {\n case 'boolean':\n {\n return '';\n }\n\n case 'object':\n {\n var keyframes = interpolation;\n\n if (keyframes.anim === 1) {\n cursor = {\n name: keyframes.name,\n styles: keyframes.styles,\n next: cursor\n };\n return keyframes.name;\n }\n\n var serializedStyles = interpolation;\n\n if (serializedStyles.styles !== undefined) {\n var next = serializedStyles.next;\n\n if (next !== undefined) {\n // not the most efficient thing ever but this is a pretty rare case\n // and there will be very few iterations of this generally\n while (next !== undefined) {\n cursor = {\n name: next.name,\n styles: next.styles,\n next: cursor\n };\n next = next.next;\n }\n }\n\n var styles = serializedStyles.styles + \";\";\n return styles;\n }\n\n return createStringFromObject(mergedProps, registered, interpolation);\n }\n\n case 'function':\n {\n if (mergedProps !== undefined) {\n var previousCursor = cursor;\n var result = interpolation(mergedProps);\n cursor = previousCursor;\n return handleInterpolation(mergedProps, registered, result);\n }\n\n break;\n }\n } // finalize string values (regular strings and functions interpolated into css calls)\n\n\n var asString = interpolation;\n\n if (registered == null) {\n return asString;\n }\n\n var cached = registered[asString];\n return cached !== undefined ? cached : asString;\n}\n\nfunction createStringFromObject(mergedProps, registered, obj) {\n var string = '';\n\n if (Array.isArray(obj)) {\n for (var i = 0; i < obj.length; i++) {\n string += handleInterpolation(mergedProps, registered, obj[i]) + \";\";\n }\n } else {\n for (var key in obj) {\n var value = obj[key];\n\n if (typeof value !== 'object') {\n var asString = value;\n\n if (registered != null && registered[asString] !== undefined) {\n string += key + \"{\" + registered[asString] + \"}\";\n } else if (isProcessableValue(asString)) {\n string += processStyleName(key) + \":\" + processStyleValue(key, asString) + \";\";\n }\n } else {\n if (key === 'NO_COMPONENT_SELECTOR' && isDevelopment) {\n throw new Error(noComponentSelectorMessage);\n }\n\n if (Array.isArray(value) && typeof value[0] === 'string' && (registered == null || registered[value[0]] === undefined)) {\n for (var _i = 0; _i < value.length; _i++) {\n if (isProcessableValue(value[_i])) {\n string += processStyleName(key) + \":\" + processStyleValue(key, value[_i]) + \";\";\n }\n }\n } else {\n var interpolated = handleInterpolation(mergedProps, registered, value);\n\n switch (key) {\n case 'animation':\n case 'animationName':\n {\n string += processStyleName(key) + \":\" + interpolated + \";\";\n break;\n }\n\n default:\n {\n\n string += key + \"{\" + interpolated + \"}\";\n }\n }\n }\n }\n }\n }\n\n return string;\n}\n\nvar labelPattern = /label:\\s*([^\\s;{]+)\\s*(;|$)/g; // this is the cursor for keyframes\n// keyframes are stored on the SerializedStyles object as a linked list\n\nvar cursor;\nfunction serializeStyles(args, registered, mergedProps) {\n if (args.length === 1 && typeof args[0] === 'object' && args[0] !== null && args[0].styles !== undefined) {\n return args[0];\n }\n\n var stringMode = true;\n var styles = '';\n cursor = undefined;\n var strings = args[0];\n\n if (strings == null || strings.raw === undefined) {\n stringMode = false;\n styles += handleInterpolation(mergedProps, registered, strings);\n } else {\n var asTemplateStringsArr = strings;\n\n styles += asTemplateStringsArr[0];\n } // we start at 1 since we've already handled the first arg\n\n\n for (var i = 1; i < args.length; i++) {\n styles += handleInterpolation(mergedProps, registered, args[i]);\n\n if (stringMode) {\n var templateStringsArr = strings;\n\n styles += templateStringsArr[i];\n }\n } // using a global regex with .exec is stateful so lastIndex has to be reset each time\n\n\n labelPattern.lastIndex = 0;\n var identifierName = '';\n var match; // https://esbench.com/bench/5b809c2cf2949800a0f61fb5\n\n while ((match = labelPattern.exec(styles)) !== null) {\n identifierName += '-' + match[1];\n }\n\n var name = hashString(styles) + identifierName;\n\n return {\n name: name,\n styles: styles,\n next: cursor\n };\n}\n\nexport { serializeStyles };\n","/**\n * @mui/styled-engine v7.3.3\n *\n * @license MIT\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 client';\n\n/* eslint-disable no-underscore-dangle */\nimport emStyled from '@emotion/styled';\nimport { serializeStyles as emSerializeStyles } from '@emotion/serialize';\nexport default function styled(tag, options) {\n const stylesFactory = emStyled(tag, options);\n if (process.env.NODE_ENV !== 'production') {\n return (...styles) => {\n const component = typeof tag === 'string' ? `\"${tag}\"` : 'component';\n if (styles.length === 0) {\n console.error([`MUI: Seems like you called \\`styled(${component})()\\` without a \\`style\\` argument.`, 'You must provide a `styles` argument: `styled(\"div\")(styleYouForgotToPass)`.'].join('\\n'));\n } else if (styles.some(style => style === undefined)) {\n console.error(`MUI: the styled(${component})(...args) API requires all its args to be defined.`);\n }\n return stylesFactory(...styles);\n };\n }\n return stylesFactory;\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function internal_mutateStyles(tag, processor) {\n // Emotion attaches all the styles as `__emotion_styles`.\n // Ref: https://github.com/emotion-js/emotion/blob/16d971d0da229596d6bcc39d282ba9753c9ee7cf/packages/styled/src/base.js#L186\n if (Array.isArray(tag.__emotion_styles)) {\n tag.__emotion_styles = processor(tag.__emotion_styles);\n }\n}\n\n// Emotion only accepts an array, but we want to avoid allocations\nconst wrapper = [];\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function internal_serializeStyles(styles) {\n wrapper[0] = styles;\n return emSerializeStyles(wrapper);\n}\nexport { ThemeContext, keyframes, css } from '@emotion/react';\nexport { default as StyledEngineProvider } from \"./StyledEngineProvider/index.js\";\nexport { default as GlobalStyles } from \"./GlobalStyles/index.js\";","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","import clsx from 'clsx';\n\n/**\n * Add keys, values of `defaultProps` that does not exist in `props`\n * @param defaultProps\n * @param props\n * @param mergeClassNameAndStyle If `true`, merges `className` and `style` props instead of overriding them.\n * When `false` (default), props override defaultProps. When `true`, `className` values are concatenated\n * and `style` objects are merged with props taking precedence.\n * @returns resolved props\n */\nexport default function resolveProps(defaultProps, props, mergeClassNameAndStyle = false) {\n const output = {\n ...props\n };\n for (const key in defaultProps) {\n if (Object.prototype.hasOwnProperty.call(defaultProps, key)) {\n const propName = key;\n if (propName === 'components' || propName === 'slots') {\n output[propName] = {\n ...defaultProps[propName],\n ...output[propName]\n };\n } else if (propName === 'componentsProps' || propName === 'slotProps') {\n const defaultSlotProps = defaultProps[propName];\n const slotProps = props[propName];\n if (!slotProps) {\n output[propName] = defaultSlotProps || {};\n } else if (!defaultSlotProps) {\n output[propName] = slotProps;\n } else {\n output[propName] = {\n ...slotProps\n };\n for (const slotKey in defaultSlotProps) {\n if (Object.prototype.hasOwnProperty.call(defaultSlotProps, slotKey)) {\n const slotPropName = slotKey;\n output[propName][slotPropName] = resolveProps(defaultSlotProps[slotPropName], slotProps[slotPropName], mergeClassNameAndStyle);\n }\n }\n }\n } else if (propName === 'className' && mergeClassNameAndStyle && props.className) {\n output.className = clsx(defaultProps?.className, props?.className);\n } else if (propName === 'style' && mergeClassNameAndStyle && props.style) {\n output.style = {\n ...defaultProps?.style,\n ...props?.style\n };\n } else if (output[propName] === undefined) {\n output[propName] = defaultProps[propName];\n }\n }\n }\n return output;\n}","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport resolveProps from '@mui/utils/resolveProps';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst PropsContext = /*#__PURE__*/React.createContext(undefined);\nfunction DefaultPropsProvider({\n value,\n children\n}) {\n return /*#__PURE__*/_jsx(PropsContext.Provider, {\n value: value,\n children: children\n });\n}\nprocess.env.NODE_ENV !== \"production\" ? DefaultPropsProvider.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * @ignore\n */\n children: PropTypes.node,\n /**\n * @ignore\n */\n value: PropTypes.object\n} : void 0;\nfunction getThemeProps(params) {\n const {\n theme,\n name,\n props\n } = params;\n if (!theme || !theme.components || !theme.components[name]) {\n return props;\n }\n const config = theme.components[name];\n if (config.defaultProps) {\n // compatible with v5 signature\n return resolveProps(config.defaultProps, props, theme.components.mergeClassNameAndStyle);\n }\n if (!config.styleOverrides && !config.variants) {\n // v6 signature, no property 'defaultProps'\n return resolveProps(config, props, theme.components.mergeClassNameAndStyle);\n }\n return props;\n}\nexport function useDefaultProps({\n props,\n name\n}) {\n const ctx = React.useContext(PropsContext);\n return getThemeProps({\n props,\n name,\n theme: {\n components: ctx\n }\n });\n}\nexport default DefaultPropsProvider;","// Sorted ASC by size. That's important.\n// It can't be configured as it's used statically for propTypes.\nexport const breakpointKeys = ['xs', 'sm', 'md', 'lg', 'xl'];\nconst sortBreakpointsValues = values => {\n const breakpointsAsArray = Object.keys(values).map(key => ({\n key,\n val: values[key]\n })) || [];\n // Sort in ascending order\n breakpointsAsArray.sort((breakpoint1, breakpoint2) => breakpoint1.val - breakpoint2.val);\n return breakpointsAsArray.reduce((acc, obj) => {\n return {\n ...acc,\n [obj.key]: obj.val\n };\n }, {});\n};\n\n// Keep in mind that @media is inclusive by the CSS specification.\nexport default function createBreakpoints(breakpoints) {\n const {\n // The breakpoint **start** at this value.\n // For instance with the first breakpoint xs: [xs, sm).\n values = {\n xs: 0,\n // phone\n sm: 600,\n // tablet\n md: 900,\n // small laptop\n lg: 1200,\n // desktop\n xl: 1536 // large screen\n },\n unit = 'px',\n step = 5,\n ...other\n } = breakpoints;\n const sortedValues = sortBreakpointsValues(values);\n const keys = Object.keys(sortedValues);\n function up(key) {\n const value = typeof values[key] === 'number' ? values[key] : key;\n return `@media (min-width:${value}${unit})`;\n }\n function down(key) {\n const value = typeof values[key] === 'number' ? values[key] : key;\n return `@media (max-width:${value - step / 100}${unit})`;\n }\n function between(start, end) {\n const endIndex = keys.indexOf(end);\n return `@media (min-width:${typeof values[start] === 'number' ? values[start] : start}${unit}) and ` + `(max-width:${(endIndex !== -1 && typeof values[keys[endIndex]] === 'number' ? values[keys[endIndex]] : end) - step / 100}${unit})`;\n }\n function only(key) {\n if (keys.indexOf(key) + 1 < keys.length) {\n return between(key, keys[keys.indexOf(key) + 1]);\n }\n return up(key);\n }\n function not(key) {\n // handle first and last key separately, for better readability\n const keyIndex = keys.indexOf(key);\n if (keyIndex === 0) {\n return up(keys[1]);\n }\n if (keyIndex === keys.length - 1) {\n return down(keys[keyIndex]);\n }\n return between(key, keys[keys.indexOf(key) + 1]).replace('@media', '@media not all and');\n }\n return {\n keys,\n values: sortedValues,\n up,\n down,\n between,\n only,\n not,\n unit,\n ...other\n };\n}","const shape = {\n borderRadius: 4\n};\nexport default shape;","import { createUnarySpacing } from \"../spacing/index.js\";\n\n// The different signatures imply different meaning for their arguments that can't be expressed structurally.\n// We express the difference with variable names.\n\nexport default function createSpacing(spacingInput = 8,\n// Material Design layouts are visually balanced. Most measurements align to an 8dp grid, which aligns both spacing and the overall layout.\n// Smaller components, such as icons, can align to a 4dp grid.\n// https://m2.material.io/design/layout/understanding-layout.html\ntransform = createUnarySpacing({\n spacing: spacingInput\n})) {\n // Already transformed.\n if (spacingInput.mui) {\n return spacingInput;\n }\n const spacing = (...argsInput) => {\n if (process.env.NODE_ENV !== 'production') {\n if (!(argsInput.length <= 4)) {\n console.error(`MUI: Too many arguments provided, expected between 0 and 4, got ${argsInput.length}`);\n }\n }\n const args = argsInput.length === 0 ? [1] : argsInput;\n return args.map(argument => {\n const output = transform(argument);\n return typeof output === 'number' ? `${output}px` : output;\n }).join(' ');\n };\n spacing.mui = true;\n return spacing;\n}","/**\n * A universal utility to style components with multiple color modes. Always use it from the theme object.\n * It works with:\n * - [Basic theme](https://mui.com/material-ui/customization/dark-mode/)\n * - [CSS theme variables](https://mui.com/material-ui/customization/css-theme-variables/overview/)\n * - Zero-runtime engine\n *\n * Tips: Use an array over object spread and place `theme.applyStyles()` last.\n *\n * With the styled function:\n * ✅ [{ background: '#e5e5e5' }, theme.applyStyles('dark', { background: '#1c1c1c' })]\n * 🚫 { background: '#e5e5e5', ...theme.applyStyles('dark', { background: '#1c1c1c' })}\n *\n * With the sx prop:\n * ✅ [{ background: '#e5e5e5' }, theme => theme.applyStyles('dark', { background: '#1c1c1c' })]\n * 🚫 { background: '#e5e5e5', ...theme => theme.applyStyles('dark', { background: '#1c1c1c' })}\n *\n * @example\n * 1. using with `styled`:\n * ```jsx\n * const Component = styled('div')(({ theme }) => [\n * { background: '#e5e5e5' },\n * theme.applyStyles('dark', {\n * background: '#1c1c1c',\n * color: '#fff',\n * }),\n * ]);\n * ```\n *\n * @example\n * 2. using with `sx` prop:\n * ```jsx\n * <Box sx={[\n * { background: '#e5e5e5' },\n * theme => theme.applyStyles('dark', {\n * background: '#1c1c1c',\n * color: '#fff',\n * }),\n * ]}\n * />\n * ```\n *\n * @example\n * 3. theming a component:\n * ```jsx\n * extendTheme({\n * components: {\n * MuiButton: {\n * styleOverrides: {\n * root: ({ theme }) => [\n * { background: '#e5e5e5' },\n * theme.applyStyles('dark', {\n * background: '#1c1c1c',\n * color: '#fff',\n * }),\n * ],\n * },\n * }\n * }\n * })\n *```\n */\nexport default function applyStyles(key, styles) {\n // @ts-expect-error this is 'any' type\n const theme = this;\n if (theme.vars) {\n if (!theme.colorSchemes?.[key] || typeof theme.getColorSchemeSelector !== 'function') {\n return {};\n }\n // If CssVarsProvider is used as a provider, returns '*:where({selector}) &'\n let selector = theme.getColorSchemeSelector(key);\n if (selector === '&') {\n return styles;\n }\n if (selector.includes('data-') || selector.includes('.')) {\n // '*' is required as a workaround for Emotion issue (https://github.com/emotion-js/emotion/issues/2836)\n selector = `*:where(${selector.replace(/\\s*&$/, '')}) &`;\n }\n return {\n [selector]: styles\n };\n }\n if (theme.palette.mode === key) {\n return styles;\n }\n return {};\n}","import deepmerge from '@mui/utils/deepmerge';\nimport createBreakpoints from \"../createBreakpoints/createBreakpoints.js\";\nimport cssContainerQueries from \"../cssContainerQueries/index.js\";\nimport shape from \"./shape.js\";\nimport createSpacing from \"./createSpacing.js\";\nimport styleFunctionSx from \"../styleFunctionSx/styleFunctionSx.js\";\nimport defaultSxConfig from \"../styleFunctionSx/defaultSxConfig.js\";\nimport applyStyles from \"./applyStyles.js\";\nfunction createTheme(options = {}, ...args) {\n const {\n breakpoints: breakpointsInput = {},\n palette: paletteInput = {},\n spacing: spacingInput,\n shape: shapeInput = {},\n ...other\n } = options;\n const breakpoints = createBreakpoints(breakpointsInput);\n const spacing = createSpacing(spacingInput);\n let muiTheme = deepmerge({\n breakpoints,\n direction: 'ltr',\n components: {},\n // Inject component definitions.\n palette: {\n mode: 'light',\n ...paletteInput\n },\n spacing,\n shape: {\n ...shape,\n ...shapeInput\n }\n }, other);\n muiTheme = cssContainerQueries(muiTheme);\n muiTheme.applyStyles = applyStyles;\n muiTheme = args.reduce((acc, argument) => deepmerge(acc, argument), muiTheme);\n muiTheme.unstable_sxConfig = {\n ...defaultSxConfig,\n ...other?.unstable_sxConfig\n };\n muiTheme.unstable_sx = function sx(props) {\n return styleFunctionSx({\n sx: props,\n theme: this\n });\n };\n return muiTheme;\n}\nexport default createTheme;","/**\n * This function create an object from keys, value and then assign to target\n *\n * @param {Object} obj : the target object to be assigned\n * @param {string[]} keys\n * @param {string | number} value\n *\n * @example\n * const source = {}\n * assignNestedKeys(source, ['palette', 'primary'], 'var(--palette-primary)')\n * console.log(source) // { palette: { primary: 'var(--palette-primary)' } }\n *\n * @example\n * const source = { palette: { primary: 'var(--palette-primary)' } }\n * assignNestedKeys(source, ['palette', 'secondary'], 'var(--palette-secondary)')\n * console.log(source) // { palette: { primary: 'var(--palette-primary)', secondary: 'var(--palette-secondary)' } }\n */\nexport const assignNestedKeys = (obj, keys, value, arrayKeys = []) => {\n let temp = obj;\n keys.forEach((k, index) => {\n if (index === keys.length - 1) {\n if (Array.isArray(temp)) {\n temp[Number(k)] = value;\n } else if (temp && typeof temp === 'object') {\n temp[k] = value;\n }\n } else if (temp && typeof temp === 'object') {\n if (!temp[k]) {\n temp[k] = arrayKeys.includes(k) ? [] : {};\n }\n temp = temp[k];\n }\n });\n};\n\n/**\n *\n * @param {Object} obj : source object\n * @param {Function} callback : a function that will be called when\n * - the deepest key in source object is reached\n * - the value of the deepest key is NOT `undefined` | `null`\n *\n * @example\n * walkObjectDeep({ palette: { primary: { main: '#000000' } } }, console.log)\n * // ['palette', 'primary', 'main'] '#000000'\n */\nexport const walkObjectDeep = (obj, callback, shouldSkipPaths) => {\n function recurse(object, parentKeys = [], arrayKeys = []) {\n Object.entries(object).forEach(([key, value]) => {\n if (!shouldSkipPaths || shouldSkipPaths && !shouldSkipPaths([...parentKeys, key])) {\n if (value !== undefined && value !== null) {\n if (typeof value === 'object' && Object.keys(value).length > 0) {\n recurse(value, [...parentKeys, key], Array.isArray(value) ? [...arrayKeys, key] : arrayKeys);\n } else {\n callback([...parentKeys, key], value, arrayKeys);\n }\n }\n }\n });\n }\n recurse(obj);\n};\nconst getCssValue = (keys, value) => {\n if (typeof value === 'number') {\n if (['lineHeight', 'fontWeight', 'opacity', 'zIndex'].some(prop => keys.includes(prop))) {\n // CSS property that are unitless\n return value;\n }\n const lastKey = keys[keys.length - 1];\n if (lastKey.toLowerCase().includes('opacity')) {\n // opacity values are unitless\n return value;\n }\n return `${value}px`;\n }\n return value;\n};\n\n/**\n * a function that parse theme and return { css, vars }\n *\n * @param {Object} theme\n * @param {{\n * prefix?: string,\n * shouldSkipGeneratingVar?: (objectPathKeys: Array<string>, value: string | number) => boolean\n * }} options.\n * `prefix`: The prefix of the generated CSS variables. This function does not change the value.\n *\n * @returns {{ css: Object, vars: Object }} `css` is the stylesheet, `vars` is an object to get css variable (same structure as theme).\n *\n * @example\n * const { css, vars } = parser({\n * fontSize: 12,\n * lineHeight: 1.2,\n * palette: { primary: { 500: 'var(--color)' } }\n * }, { prefix: 'foo' })\n *\n * console.log(css) // { '--foo-fontSize': '12px', '--foo-lineHeight': 1.2, '--foo-palette-primary-500': 'var(--color)' }\n * console.log(vars) // { fontSize: 'var(--foo-fontSize)', lineHeight: 'var(--foo-lineHeight)', palette: { primary: { 500: 'var(--foo-palette-primary-500)' } } }\n */\nexport default function cssVarsParser(theme, options) {\n const {\n prefix,\n shouldSkipGeneratingVar\n } = options || {};\n const css = {};\n const vars = {};\n const varsWithDefaults = {};\n walkObjectDeep(theme, (keys, value, arrayKeys) => {\n if (typeof value === 'string' || typeof value === 'number') {\n if (!shouldSkipGeneratingVar || !shouldSkipGeneratingVar(keys, value)) {\n // only create css & var if `shouldSkipGeneratingVar` return false\n const cssVar = `--${prefix ? `${prefix}-` : ''}${keys.join('-')}`;\n const resolvedValue = getCssValue(keys, value);\n Object.assign(css, {\n [cssVar]: resolvedValue\n });\n assignNestedKeys(vars, keys, `var(${cssVar})`, arrayKeys);\n assignNestedKeys(varsWithDefaults, keys, `var(${cssVar}, ${resolvedValue})`, arrayKeys);\n }\n }\n }, keys => keys[0] === 'vars' // skip 'vars/*' paths\n );\n return {\n css,\n vars,\n varsWithDefaults\n };\n}","import deepmerge from '@mui/utils/deepmerge';\nimport cssVarsParser from \"./cssVarsParser.js\";\nfunction prepareCssVars(theme, parserConfig = {}) {\n const {\n getSelector = defaultGetSelector,\n disableCssColorScheme,\n colorSchemeSelector: selector,\n enableContrastVars\n } = parserConfig;\n // @ts-ignore - ignore components do not exist\n const {\n colorSchemes = {},\n components,\n defaultColorScheme = 'light',\n ...otherTheme\n } = theme;\n const {\n vars: rootVars,\n css: rootCss,\n varsWithDefaults: rootVarsWithDefaults\n } = cssVarsParser(otherTheme, parserConfig);\n let themeVars = rootVarsWithDefaults;\n const colorSchemesMap = {};\n const {\n [defaultColorScheme]: defaultScheme,\n ...otherColorSchemes\n } = colorSchemes;\n Object.entries(otherColorSchemes || {}).forEach(([key, scheme]) => {\n const {\n vars,\n css,\n varsWithDefaults\n } = cssVarsParser(scheme, parserConfig);\n themeVars = deepmerge(themeVars, varsWithDefaults);\n colorSchemesMap[key] = {\n css,\n vars\n };\n });\n if (defaultScheme) {\n // default color scheme vars should be merged last to set as default\n const {\n css,\n vars,\n varsWithDefaults\n } = cssVarsParser(defaultScheme, parserConfig);\n themeVars = deepmerge(themeVars, varsWithDefaults);\n colorSchemesMap[defaultColorScheme] = {\n css,\n vars\n };\n }\n function defaultGetSelector(colorScheme, cssObject) {\n let rule = selector;\n if (selector === 'class') {\n rule = '.%s';\n }\n if (selector === 'data') {\n rule = '[data-%s]';\n }\n if (selector?.startsWith('data-') && !selector.includes('%s')) {\n // 'data-joy-color-scheme' -> '[data-joy-color-scheme=\"%s\"]'\n rule = `[${selector}=\"%s\"]`;\n }\n if (colorScheme) {\n if (rule === 'media') {\n if (theme.defaultColorScheme === colorScheme) {\n return ':root';\n }\n const mode = colorSchemes[colorScheme]?.palette?.mode || colorScheme;\n return {\n [`@media (prefers-color-scheme: ${mode})`]: {\n ':root': cssObject\n }\n };\n }\n if (rule) {\n if (theme.defaultColorScheme === colorScheme) {\n return `:root, ${rule.replace('%s', String(colorScheme))}`;\n }\n return rule.replace('%s', String(colorScheme));\n }\n }\n return ':root';\n }\n const generateThemeVars = () => {\n let vars = {\n ...rootVars\n };\n Object.entries(colorSchemesMap).forEach(([, {\n vars: schemeVars\n }]) => {\n vars = deepmerge(vars, schemeVars);\n });\n return vars;\n };\n const generateStyleSheets = () => {\n const stylesheets = [];\n const colorScheme = theme.defaultColorScheme || 'light';\n function insertStyleSheet(key, css) {\n if (Object.keys(css).length) {\n stylesheets.push(typeof key === 'string' ? {\n [key]: {\n ...css\n }\n } : key);\n }\n }\n insertStyleSheet(getSelector(undefined, {\n ...rootCss\n }), rootCss);\n const {\n [colorScheme]: defaultSchemeVal,\n ...other\n } = colorSchemesMap;\n if (defaultSchemeVal) {\n // default color scheme has to come before other color schemes\n const {\n css\n } = defaultSchemeVal;\n const cssColorSheme = colorSchemes[colorScheme]?.palette?.mode;\n const finalCss = !disableCssColorScheme && cssColorSheme ? {\n colorScheme: cssColorSheme,\n ...css\n } : {\n ...css\n };\n insertStyleSheet(getSelector(colorScheme, {\n ...finalCss\n }), finalCss);\n }\n Object.entries(other).forEach(([key, {\n css\n }]) => {\n const cssColorSheme = colorSchemes[key]?.palette?.mode;\n const finalCss = !disableCssColorScheme && cssColorSheme ? {\n colorScheme: cssColorSheme,\n ...css\n } : {\n ...css\n };\n insertStyleSheet(getSelector(key, {\n ...finalCss\n }), finalCss);\n });\n if (enableContrastVars) {\n stylesheets.push({\n ':root': {\n // use double underscore to indicate that these are private variables\n '--__l-threshold': '0.7',\n '--__l': 'clamp(0, (l / var(--__l-threshold) - 1) * -infinity, 1)',\n '--__a': 'clamp(0.87, (l / var(--__l-threshold) - 1) * -infinity, 1)' // 0.87 is the default alpha value for black text.\n }\n });\n }\n return stylesheets;\n };\n return {\n vars: themeVars,\n generateThemeVars,\n generateStyleSheets\n };\n}\nexport default prepareCssVars;","export default function prepareTypographyVars(typography) {\n const vars = {};\n const entries = Object.entries(typography);\n entries.forEach(entry => {\n const [key, value] = entry;\n if (typeof value === 'object') {\n vars[key] = `${value.fontStyle ? `${value.fontStyle} ` : ''}${value.fontVariant ? `${value.fontVariant} ` : ''}${value.fontWeight ? `${value.fontWeight} ` : ''}${value.fontStretch ? `${value.fontStretch} ` : ''}${value.fontSize || ''}${value.lineHeight ? `/${value.lineHeight} ` : ''}${value.fontFamily || ''}`;\n }\n });\n return vars;\n}","/* eslint-disable import/prefer-default-export */\nexport function createGetColorSchemeSelector(selector) {\n return function getColorSchemeSelector(colorScheme) {\n if (selector === 'media') {\n if (process.env.NODE_ENV !== 'production') {\n if (colorScheme !== 'light' && colorScheme !== 'dark') {\n console.error(`MUI: @media (prefers-color-scheme) supports only 'light' or 'dark', but receive '${colorScheme}'.`);\n }\n }\n return `@media (prefers-color-scheme: ${colorScheme})`;\n }\n if (selector) {\n if (selector.startsWith('data-') && !selector.includes('%s')) {\n return `[${selector}=\"${colorScheme}\"] &`;\n }\n if (selector === 'class') {\n return `.${colorScheme} &`;\n }\n if (selector === 'data') {\n return `[data-${colorScheme}] &`;\n }\n return `${selector.replace('%s', colorScheme)} &`;\n }\n return '&';\n };\n}","const defaultGenerator = componentName => componentName;\nconst createClassNameGenerator = () => {\n let generate = defaultGenerator;\n return {\n configure(generator) {\n generate = generator;\n },\n generate(componentName) {\n return generate(componentName);\n },\n reset() {\n generate = defaultGenerator;\n }\n };\n};\nconst ClassNameGenerator = createClassNameGenerator();\nexport default ClassNameGenerator;","import ClassNameGenerator from \"../ClassNameGenerator/index.js\";\nexport const globalStateClasses = {\n active: 'active',\n checked: 'checked',\n completed: 'completed',\n disabled: 'disabled',\n error: 'error',\n expanded: 'expanded',\n focused: 'focused',\n focusVisible: 'focusVisible',\n open: 'open',\n readOnly: 'readOnly',\n required: 'required',\n selected: 'selected'\n};\nexport default function generateUtilityClass(componentName, slot, globalStatePrefix = 'Mui') {\n const globalStateClass = globalStateClasses[slot];\n return globalStateClass ? `${globalStatePrefix}-${globalStateClass}` : `${ClassNameGenerator.generate(componentName)}-${slot}`;\n}\nexport function isGlobalState(slot) {\n return globalStateClasses[slot] !== undefined;\n}","export default function createMixins(breakpoints, mixins) {\n return {\n toolbar: {\n minHeight: 56,\n [breakpoints.up('xs')]: {\n '@media (orientation: landscape)': {\n minHeight: 48\n }\n },\n [breakpoints.up('sm')]: {\n minHeight: 64\n }\n },\n ...mixins\n };\n}","import deepmerge from '@mui/utils/deepmerge';\nfunction round(value) {\n return Math.round(value * 1e5) / 1e5;\n}\nconst caseAllCaps = {\n textTransform: 'uppercase'\n};\nconst defaultFontFamily = '\"Roboto\", \"Helvetica\", \"Arial\", sans-serif';\n\n/**\n * @see @link{https://m2.material.io/design/typography/the-type-system.html}\n * @see @link{https://m2.material.io/design/typography/understanding-typography.html}\n */\nexport default function createTypography(palette, typography) {\n const {\n fontFamily = defaultFontFamily,\n // The default font size of the Material Specification.\n fontSize = 14,\n // px\n fontWeightLight = 300,\n fontWeightRegular = 400,\n fontWeightMedium = 500,\n fontWeightBold = 700,\n // Tell MUI what's the font-size on the html element.\n // 16px is the default font-size used by browsers.\n htmlFontSize = 16,\n // Apply the CSS properties to all the variants.\n allVariants,\n pxToRem: pxToRem2,\n ...other\n } = typeof typography === 'function' ? typography(palette) : typography;\n if (process.env.NODE_ENV !== 'production') {\n if (typeof fontSize !== 'number') {\n console.error('MUI: `fontSize` is required to be a number.');\n }\n if (typeof htmlFontSize !== 'number') {\n console.error('MUI: `htmlFontSize` is required to be a number.');\n }\n }\n const coef = fontSize / 14;\n const pxToRem = pxToRem2 || (size => `${size / htmlFontSize * coef}rem`);\n const buildVariant = (fontWeight, size, lineHeight, letterSpacing, casing) => ({\n fontFamily,\n fontWeight,\n fontSize: pxToRem(size),\n // Unitless following https://meyerweb.com/eric/thoughts/2006/02/08/unitless-line-heights/\n lineHeight,\n // The letter spacing was designed for the Roboto font-family. Using the same letter-spacing\n // across font-families can cause issues with the kerning.\n ...(fontFamily === defaultFontFamily ? {\n letterSpacing: `${round(letterSpacing / size)}em`\n } : {}),\n ...casing,\n ...allVariants\n });\n const variants = {\n h1: buildVariant(fontWeightLight, 96, 1.167, -1.5),\n h2: buildVariant(fontWeightLight, 60, 1.2, -0.5),\n h3: buildVariant(fontWeightRegular, 48, 1.167, 0),\n h4: buildVariant(fontWeightRegular, 34, 1.235, 0.25),\n h5: buildVariant(fontWeightRegular, 24, 1.334, 0),\n h6: buildVariant(fontWeightMedium, 20, 1.6, 0.15),\n subtitle1: buildVariant(fontWeightRegular, 16, 1.75, 0.15),\n subtitle2: buildVariant(fontWeightMedium, 14, 1.57, 0.1),\n body1: buildVariant(fontWeightRegular, 16, 1.5, 0.15),\n body2: buildVariant(fontWeightRegular, 14, 1.43, 0.15),\n button: buildVariant(fontWeightMedium, 14, 1.75, 0.4, caseAllCaps),\n caption: buildVariant(fontWeightRegular, 12, 1.66, 0.4),\n overline: buildVariant(fontWeightRegular, 12, 2.66, 1, caseAllCaps),\n // TODO v6: Remove handling of 'inherit' variant from the theme as it is already handled in Material UI's Typography component. Also, remember to remove the associated types.\n inherit: {\n fontFamily: 'inherit',\n fontWeight: 'inherit',\n fontSize: 'inherit',\n lineHeight: 'inherit',\n letterSpacing: 'inherit'\n }\n };\n return deepmerge({\n htmlFontSize,\n pxToRem,\n fontFamily,\n fontSize,\n fontWeightLight,\n fontWeightRegular,\n fontWeightMedium,\n fontWeightBold,\n ...variants\n }, other, {\n clone: false // No need to clone deep\n });\n}","const shadowKeyUmbraOpacity = 0.2;\nconst shadowKeyPenumbraOpacity = 0.14;\nconst shadowAmbientShadowOpacity = 0.12;\nfunction createShadow(...px) {\n return [`${px[0]}px ${px[1]}px ${px[2]}px ${px[3]}px rgba(0,0,0,${shadowKeyUmbraOpacity})`, `${px[4]}px ${px[5]}px ${px[6]}px ${px[7]}px rgba(0,0,0,${shadowKeyPenumbraOpacity})`, `${px[8]}px ${px[9]}px ${px[10]}px ${px[11]}px rgba(0,0,0,${shadowAmbientShadowOpacity})`].join(',');\n}\n\n// Values from https://github.com/material-components/material-components-web/blob/be8747f94574669cb5e7add1a7c54fa41a89cec7/packages/mdc-elevation/_variables.scss\nconst shadows = ['none', createShadow(0, 2, 1, -1, 0, 1, 1, 0, 0, 1, 3, 0), createShadow(0, 3, 1, -2, 0, 2, 2, 0, 0, 1, 5, 0), createShadow(0, 3, 3, -2, 0, 3, 4, 0, 0, 1, 8, 0), createShadow(0, 2, 4, -1, 0, 4, 5, 0, 0, 1, 10, 0), createShadow(0, 3, 5, -1, 0, 5, 8, 0, 0, 1, 14, 0), createShadow(0, 3, 5, -1, 0, 6, 10, 0, 0, 1, 18, 0), createShadow(0, 4, 5, -2, 0, 7, 10, 1, 0, 2, 16, 1), createShadow(0, 5, 5, -3, 0, 8, 10, 1, 0, 3, 14, 2), createShadow(0, 5, 6, -3, 0, 9, 12, 1, 0, 3, 16, 2), createShadow(0, 6, 6, -3, 0, 10, 14, 1, 0, 4, 18, 3), createShadow(0, 6, 7, -4, 0, 11, 15, 1, 0, 4, 20, 3), createShadow(0, 7, 8, -4, 0, 12, 17, 2, 0, 5, 22, 4), createShadow(0, 7, 8, -4, 0, 13, 19, 2, 0, 5, 24, 4), createShadow(0, 7, 9, -4, 0, 14, 21, 2, 0, 5, 26, 4), createShadow(0, 8, 9, -5, 0, 15, 22, 2, 0, 6, 28, 5), createShadow(0, 8, 10, -5, 0, 16, 24, 2, 0, 6, 30, 5), createShadow(0, 8, 11, -5, 0, 17, 26, 2, 0, 6, 32, 5), createShadow(0, 9, 11, -5, 0, 18, 28, 2, 0, 7, 34, 6), createShadow(0, 9, 12, -6, 0, 19, 29, 2, 0, 7, 36, 6), createShadow(0, 10, 13, -6, 0, 20, 31, 3, 0, 8, 38, 7), createShadow(0, 10, 13, -6, 0, 21, 33, 3, 0, 8, 40, 7), createShadow(0, 10, 14, -6, 0, 22, 35, 3, 0, 8, 42, 7), createShadow(0, 11, 14, -7, 0, 23, 36, 3, 0, 9, 44, 8), createShadow(0, 11, 15, -7, 0, 24, 38, 3, 0, 9, 46, 8)];\nexport default shadows;","// Follow https://material.google.com/motion/duration-easing.html#duration-easing-natural-easing-curves\n// to learn the context in which each easing should be used.\nexport const easing = {\n // This is the most common easing curve.\n easeInOut: 'cubic-bezier(0.4, 0, 0.2, 1)',\n // Objects enter the screen at full velocity from off-screen and\n // slowly decelerate to a resting point.\n easeOut: 'cubic-bezier(0.0, 0, 0.2, 1)',\n // Objects leave the screen at full velocity. They do not decelerate when off-screen.\n easeIn: 'cubic-bezier(0.4, 0, 1, 1)',\n // The sharp curve is used by objects that may return to the screen at any time.\n sharp: 'cubic-bezier(0.4, 0, 0.6, 1)'\n};\n\n// Follow https://m2.material.io/guidelines/motion/duration-easing.html#duration-easing-common-durations\n// to learn when use what timing\nexport const duration = {\n shortest: 150,\n shorter: 200,\n short: 250,\n // most basic recommended timing\n standard: 300,\n // this is to be used in complex animations\n complex: 375,\n // recommended when something is entering screen\n enteringScreen: 225,\n // recommended when something is leaving screen\n leavingScreen: 195\n};\nfunction formatMs(milliseconds) {\n return `${Math.round(milliseconds)}ms`;\n}\nfunction getAutoHeightDuration(height) {\n if (!height) {\n return 0;\n }\n const constant = height / 36;\n\n // https://www.desmos.com/calculator/vbrp3ggqet\n return Math.min(Math.round((4 + 15 * constant ** 0.25 + constant / 5) * 10), 3000);\n}\nexport default function createTransitions(inputTransitions) {\n const mergedEasing = {\n ...easing,\n ...inputTransitions.easing\n };\n const mergedDuration = {\n ...duration,\n ...inputTransitions.duration\n };\n const create = (props = ['all'], options = {}) => {\n const {\n duration: durationOption = mergedDuration.standard,\n easing: easingOption = mergedEasing.easeInOut,\n delay = 0,\n ...other\n } = options;\n if (process.env.NODE_ENV !== 'production') {\n const isString = value => typeof value === 'string';\n const isNumber = value => !Number.isNaN(parseFloat(value));\n if (!isString(props) && !Array.isArray(props)) {\n console.error('MUI: Argument \"props\" must be a string or Array.');\n }\n if (!isNumber(durationOption) && !isString(durationOption)) {\n console.error(`MUI: Argument \"duration\" must be a number or a string but found ${durationOption}.`);\n }\n if (!isString(easingOption)) {\n console.error('MUI: Argument \"easing\" must be a string.');\n }\n if (!isNumber(delay) && !isString(delay)) {\n console.error('MUI: Argument \"delay\" must be a number or a string.');\n }\n if (typeof options !== 'object') {\n console.error(['MUI: Secong argument of transition.create must be an object.', \"Arguments should be either `create('prop1', options)` or `create(['prop1', 'prop2'], options)`\"].join('\\n'));\n }\n if (Object.keys(other).length !== 0) {\n console.error(`MUI: Unrecognized argument(s) [${Object.keys(other).join(',')}].`);\n }\n }\n return (Array.isArray(props) ? props : [props]).map(animatedProp => `${animatedProp} ${typeof durationOption === 'string' ? durationOption : formatMs(durationOption)} ${easingOption} ${typeof delay === 'string' ? delay : formatMs(delay)}`).join(',');\n };\n return {\n getAutoHeightDuration,\n create,\n ...inputTransitions,\n easing: mergedEasing,\n duration: mergedDuration\n };\n}","// We need to centralize the zIndex definitions as they work\n// like global values in the browser.\nconst zIndex = {\n mobileStepper: 1000,\n fab: 1050,\n speedDial: 1050,\n appBar: 1100,\n drawer: 1200,\n modal: 1300,\n snackbar: 1400,\n tooltip: 1500\n};\nexport default zIndex;","/* eslint-disable import/prefer-default-export */\nimport { isPlainObject } from '@mui/utils/deepmerge';\nfunction isSerializable(val) {\n return isPlainObject(val) || typeof val === 'undefined' || typeof val === 'string' || typeof val === 'boolean' || typeof val === 'number' || Array.isArray(val);\n}\n\n/**\n * `baseTheme` usually comes from `createTheme()` or `extendTheme()`.\n *\n * This function is intended to be used with zero-runtime CSS-in-JS like Pigment CSS\n * For example, in a Next.js project:\n *\n * ```js\n * // next.config.js\n * const { extendTheme } = require('@mui/material/styles');\n *\n * const theme = extendTheme();\n * // `.toRuntimeSource` is Pigment CSS specific to create a theme that is available at runtime.\n * theme.toRuntimeSource = stringifyTheme;\n *\n * module.exports = withPigment({\n * theme,\n * });\n * ```\n */\nexport function stringifyTheme(baseTheme = {}) {\n const serializableTheme = {\n ...baseTheme\n };\n function serializeTheme(object) {\n const array = Object.entries(object);\n // eslint-disable-next-line no-plusplus\n for (let index = 0; index < array.length; index++) {\n const [key, value] = array[index];\n if (!isSerializable(value) || key.startsWith('unstable_')) {\n delete object[key];\n } else if (isPlainObject(value)) {\n object[key] = {\n ...value\n };\n serializeTheme(object[key]);\n }\n }\n }\n serializeTheme(serializableTheme);\n return `import { unstable_createBreakpoints as createBreakpoints, createTransitions } from '@mui/material/styles';\n\nconst theme = ${JSON.stringify(serializableTheme, null, 2)};\n\ntheme.breakpoints = createBreakpoints(theme.breakpoints || {});\ntheme.transitions = createTransitions(theme.transitions || {});\n\nexport default theme;`;\n}","import _formatErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\nimport deepmerge from '@mui/utils/deepmerge';\nimport styleFunctionSx, { unstable_defaultSxConfig as defaultSxConfig } from '@mui/system/styleFunctionSx';\nimport systemCreateTheme from '@mui/system/createTheme';\nimport { alpha as systemAlpha, lighten as systemLighten, darken as systemDarken } from '@mui/system/colorManipulator';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport createMixins from \"./createMixins.js\";\nimport createPalette from \"./createPalette.js\";\nimport createTypography from \"./createTypography.js\";\nimport shadows from \"./shadows.js\";\nimport createTransitions from \"./createTransitions.js\";\nimport zIndex from \"./zIndex.js\";\nimport { stringifyTheme } from \"./stringifyTheme.js\";\nfunction coefficientToPercentage(coefficient) {\n if (typeof coefficient === 'number') {\n return `${(coefficient * 100).toFixed(0)}%`;\n }\n return `calc((${coefficient}) * 100%)`;\n}\n\n// This can be removed when moved to `color-mix()` entirely.\nconst parseAddition = str => {\n if (!Number.isNaN(+str)) {\n return +str;\n }\n const numbers = str.match(/\\d*\\.?\\d+/g);\n if (!numbers) {\n return 0;\n }\n let sum = 0;\n for (let i = 0; i < numbers.length; i += 1) {\n sum += +numbers[i];\n }\n return sum;\n};\nfunction attachColorManipulators(theme) {\n Object.assign(theme, {\n alpha(color, coefficient) {\n const obj = this || theme;\n if (obj.colorSpace) {\n return `oklch(from ${color} l c h / ${typeof coefficient === 'string' ? `calc(${coefficient})` : coefficient})`;\n }\n if (obj.vars) {\n // To preserve the behavior of the CSS theme variables\n // In the future, this could be replaced by `color-mix` (when https://caniuse.com/?search=color-mix reaches 95%).\n return `rgba(${color.replace(/var\\(--([^,\\s)]+)(?:,[^)]+)?\\)+/g, 'var(--$1Channel)')} / ${typeof coefficient === 'string' ? `calc(${coefficient})` : coefficient})`;\n }\n return systemAlpha(color, parseAddition(coefficient));\n },\n lighten(color, coefficient) {\n const obj = this || theme;\n if (obj.colorSpace) {\n return `color-mix(in ${obj.colorSpace}, ${color}, #fff ${coefficientToPercentage(coefficient)})`;\n }\n return systemLighten(color, coefficient);\n },\n darken(color, coefficient) {\n const obj = this || theme;\n if (obj.colorSpace) {\n return `color-mix(in ${obj.colorSpace}, ${color}, #000 ${coefficientToPercentage(coefficient)})`;\n }\n return systemDarken(color, coefficient);\n }\n });\n}\nfunction createThemeNoVars(options = {}, ...args) {\n const {\n breakpoints: breakpointsInput,\n mixins: mixinsInput = {},\n spacing: spacingInput,\n palette: paletteInput = {},\n transitions: transitionsInput = {},\n typography: typographyInput = {},\n shape: shapeInput,\n colorSpace,\n ...other\n } = options;\n if (options.vars &&\n // The error should throw only for the root theme creation because user is not allowed to use a custom node `vars`.\n // `generateThemeVars` is the closest identifier for checking that the `options` is a result of `createTheme` with CSS variables so that user can create new theme for nested ThemeProvider.\n options.generateThemeVars === undefined) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? 'MUI: `vars` is a private field used for CSS variables support.\\n' +\n // #host-reference\n 'Please use another name or follow the [docs](https://mui.com/material-ui/customization/css-theme-variables/usage/) to enable the feature.' : _formatErrorMessage(20));\n }\n const palette = createPalette({\n ...paletteInput,\n colorSpace\n });\n const systemTheme = systemCreateTheme(options);\n let muiTheme = deepmerge(systemTheme, {\n mixins: createMixins(systemTheme.breakpoints, mixinsInput),\n palette,\n // Don't use [...shadows] until you've verified its transpiled code is not invoking the iterator protocol.\n shadows: shadows.slice(),\n typography: createTypography(palette, typographyInput),\n transitions: createTransitions(transitionsInput),\n zIndex: {\n ...zIndex\n }\n });\n muiTheme = deepmerge(muiTheme, other);\n muiTheme = args.reduce((acc, argument) => deepmerge(acc, argument), muiTheme);\n if (process.env.NODE_ENV !== 'production') {\n // TODO v6: Refactor to use globalStateClassesMapping from @mui/utils once `readOnly` state class is used in Rating component.\n const stateClasses = ['active', 'checked', 'completed', 'disabled', 'error', 'expanded', 'focused', 'focusVisible', 'required', 'selected'];\n const traverse = (node, component) => {\n let key;\n\n // eslint-disable-next-line guard-for-in\n for (key in node) {\n const child = node[key];\n if (stateClasses.includes(key) && Object.keys(child).length > 0) {\n if (process.env.NODE_ENV !== 'production') {\n const stateClass = generateUtilityClass('', key);\n console.error([`MUI: The \\`${component}\\` component increases ` + `the CSS specificity of the \\`${key}\\` internal state.`, 'You can not override it like this: ', JSON.stringify(node, null, 2), '', `Instead, you need to use the '&.${stateClass}' syntax:`, JSON.stringify({\n root: {\n [`&.${stateClass}`]: child\n }\n }, null, 2), '', 'https://mui.com/r/state-classes-guide'].join('\\n'));\n }\n // Remove the style to prevent global conflicts.\n node[key] = {};\n }\n }\n };\n Object.keys(muiTheme.components).forEach(component => {\n const styleOverrides = muiTheme.components[component].styleOverrides;\n if (styleOverrides && component.startsWith('Mui')) {\n traverse(styleOverrides, component);\n }\n });\n }\n muiTheme.unstable_sxConfig = {\n ...defaultSxConfig,\n ...other?.unstable_sxConfig\n };\n muiTheme.unstable_sx = function sx(props) {\n return styleFunctionSx({\n sx: props,\n theme: this\n });\n };\n muiTheme.toRuntimeSource = stringifyTheme; // for Pigment CSS integration\n\n attachColorManipulators(muiTheme);\n return muiTheme;\n}\nexport default createThemeNoVars;","// Inspired by https://github.com/material-components/material-components-ios/blob/bca36107405594d5b7b16265a5b0ed698f85a5ee/components/Elevation/src/UIColor%2BMaterialElevation.m#L61\nexport default function getOverlayAlpha(elevation) {\n let alphaValue;\n if (elevation < 1) {\n alphaValue = 5.11916 * elevation ** 2;\n } else {\n alphaValue = 4.5 * Math.log(elevation + 1) + 2;\n }\n return Math.round(alphaValue * 10) / 1000;\n}","import createPalette from \"./createPalette.js\";\nimport getOverlayAlpha from \"./getOverlayAlpha.js\";\nconst defaultDarkOverlays = [...Array(25)].map((_, index) => {\n if (index === 0) {\n return 'none';\n }\n const overlay = getOverlayAlpha(index);\n return `linear-gradient(rgba(255 255 255 / ${overlay}), rgba(255 255 255 / ${overlay}))`;\n});\nexport function getOpacity(mode) {\n return {\n inputPlaceholder: mode === 'dark' ? 0.5 : 0.42,\n inputUnderline: mode === 'dark' ? 0.7 : 0.42,\n switchTrackDisabled: mode === 'dark' ? 0.2 : 0.12,\n switchTrack: mode === 'dark' ? 0.3 : 0.38\n };\n}\nexport function getOverlays(mode) {\n return mode === 'dark' ? defaultDarkOverlays : [];\n}\nexport default function createColorScheme(options) {\n const {\n palette: paletteInput = {\n mode: 'light'\n },\n // need to cast to avoid module augmentation test\n opacity,\n overlays,\n colorSpace,\n ...other\n } = options;\n // need to cast because `colorSpace` is considered internal at the moment.\n const palette = createPalette({\n ...paletteInput,\n colorSpace\n });\n return {\n palette,\n opacity: {\n ...getOpacity(palette.mode),\n ...opacity\n },\n overlays: overlays || getOverlays(palette.mode),\n ...other\n };\n}","export default function shouldSkipGeneratingVar(keys) {\n return !!keys[0].match(/(cssVarPrefix|colorSchemeSelector|modularCssLayers|rootSelector|typography|mixins|breakpoints|direction|transitions)/) || !!keys[0].match(/sxConfig$/) ||\n // ends with sxConfig\n keys[0] === 'palette' && !!keys[1]?.match(/(mode|contrastThreshold|tonalOffset)/);\n}","/**\n * @internal These variables should not appear in the :root stylesheet when the `defaultColorScheme=\"dark\"`\n */\nconst excludeVariablesFromRoot = cssVarPrefix => [...[...Array(25)].map((_, index) => `--${cssVarPrefix ? `${cssVarPrefix}-` : ''}overlays-${index}`), `--${cssVarPrefix ? `${cssVarPrefix}-` : ''}palette-AppBar-darkBg`, `--${cssVarPrefix ? `${cssVarPrefix}-` : ''}palette-AppBar-darkColor`];\nexport default excludeVariablesFromRoot;","import excludeVariablesFromRoot from \"./excludeVariablesFromRoot.js\";\nexport default theme => (colorScheme, css) => {\n const root = theme.rootSelector || ':root';\n const selector = theme.colorSchemeSelector;\n let rule = selector;\n if (selector === 'class') {\n rule = '.%s';\n }\n if (selector === 'data') {\n rule = '[data-%s]';\n }\n if (selector?.startsWith('data-') && !selector.includes('%s')) {\n // 'data-mui-color-scheme' -> '[data-mui-color-scheme=\"%s\"]'\n rule = `[${selector}=\"%s\"]`;\n }\n if (theme.defaultColorScheme === colorScheme) {\n if (colorScheme === 'dark') {\n const excludedVariables = {};\n excludeVariablesFromRoot(theme.cssVarPrefix).forEach(cssVar => {\n excludedVariables[cssVar] = css[cssVar];\n delete css[cssVar];\n });\n if (rule === 'media') {\n return {\n [root]: css,\n [`@media (prefers-color-scheme: dark)`]: {\n [root]: excludedVariables\n }\n };\n }\n if (rule) {\n return {\n [rule.replace('%s', colorScheme)]: excludedVariables,\n [`${root}, ${rule.replace('%s', colorScheme)}`]: css\n };\n }\n return {\n [root]: {\n ...css,\n ...excludedVariables\n }\n };\n }\n if (rule && rule !== 'media') {\n return `${root}, ${rule.replace('%s', String(colorScheme))}`;\n }\n } else if (colorScheme) {\n if (rule === 'media') {\n return {\n [`@media (prefers-color-scheme: ${String(colorScheme)})`]: {\n [root]: css\n }\n };\n }\n if (rule) {\n return rule.replace('%s', String(colorScheme));\n }\n }\n return root;\n};","import _formatErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\nimport deepmerge from '@mui/utils/deepmerge';\nimport { unstable_createGetCssVar as systemCreateGetCssVar, createSpacing } from '@mui/system';\nimport { createUnarySpacing } from '@mui/system/spacing';\nimport { prepareCssVars, prepareTypographyVars, createGetColorSchemeSelector } from '@mui/system/cssVars';\nimport styleFunctionSx, { unstable_defaultSxConfig as defaultSxConfig } from '@mui/system/styleFunctionSx';\nimport { private_safeColorChannel as safeColorChannel, private_safeAlpha as safeAlpha, private_safeDarken as safeDarken, private_safeLighten as safeLighten, private_safeEmphasize as safeEmphasize, hslToRgb } from '@mui/system/colorManipulator';\nimport createThemeNoVars from \"./createThemeNoVars.js\";\nimport createColorScheme, { getOpacity, getOverlays } from \"./createColorScheme.js\";\nimport defaultShouldSkipGeneratingVar from \"./shouldSkipGeneratingVar.js\";\nimport defaultGetSelector from \"./createGetSelector.js\";\nimport { stringifyTheme } from \"./stringifyTheme.js\";\nimport { light, dark } from \"./createPalette.js\";\nfunction assignNode(obj, keys) {\n keys.forEach(k => {\n if (!obj[k]) {\n obj[k] = {};\n }\n });\n}\nfunction setColor(obj, key, defaultValue) {\n if (!obj[key] && defaultValue) {\n obj[key] = defaultValue;\n }\n}\nfunction toRgb(color) {\n if (typeof color !== 'string' || !color.startsWith('hsl')) {\n return color;\n }\n return hslToRgb(color);\n}\nfunction setColorChannel(obj, key) {\n if (!(`${key}Channel` in obj)) {\n // custom channel token is not provided, generate one.\n // if channel token can't be generated, show a warning.\n obj[`${key}Channel`] = safeColorChannel(toRgb(obj[key]), `MUI: Can't create \\`palette.${key}Channel\\` because \\`palette.${key}\\` is not one of these formats: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color().` + '\\n' + `To suppress this warning, you need to explicitly provide the \\`palette.${key}Channel\\` as a string (in rgb format, for example \"12 12 12\") or undefined if you want to remove the channel token.`);\n }\n}\nfunction getSpacingVal(spacingInput) {\n if (typeof spacingInput === 'number') {\n return `${spacingInput}px`;\n }\n if (typeof spacingInput === 'string' || typeof spacingInput === 'function' || Array.isArray(spacingInput)) {\n return spacingInput;\n }\n return '8px';\n}\nconst silent = fn => {\n try {\n return fn();\n } catch (error) {\n // ignore error\n }\n return undefined;\n};\nexport const createGetCssVar = (cssVarPrefix = 'mui') => systemCreateGetCssVar(cssVarPrefix);\nfunction attachColorScheme(colorSpace, colorSchemes, scheme, restTheme, colorScheme) {\n if (!scheme) {\n return undefined;\n }\n scheme = scheme === true ? {} : scheme;\n const mode = colorScheme === 'dark' ? 'dark' : 'light';\n if (!restTheme) {\n colorSchemes[colorScheme] = createColorScheme({\n ...scheme,\n palette: {\n mode,\n ...scheme?.palette\n },\n colorSpace\n });\n return undefined;\n }\n const {\n palette,\n ...muiTheme\n } = createThemeNoVars({\n ...restTheme,\n palette: {\n mode,\n ...scheme?.palette\n },\n colorSpace\n });\n colorSchemes[colorScheme] = {\n ...scheme,\n palette,\n opacity: {\n ...getOpacity(mode),\n ...scheme?.opacity\n },\n overlays: scheme?.overlays || getOverlays(mode)\n };\n return muiTheme;\n}\n\n/**\n * A default `createThemeWithVars` comes with a single color scheme, either `light` or `dark` based on the `defaultColorScheme`.\n * This is better suited for apps that only need a single color scheme.\n *\n * To enable built-in `light` and `dark` color schemes, either:\n * 1. provide a `colorSchemeSelector` to define how the color schemes will change.\n * 2. provide `colorSchemes.dark` will set `colorSchemeSelector: 'media'` by default.\n */\nexport default function createThemeWithVars(options = {}, ...args) {\n const {\n colorSchemes: colorSchemesInput = {\n light: true\n },\n defaultColorScheme: defaultColorSchemeInput,\n disableCssColorScheme = false,\n cssVarPrefix = 'mui',\n nativeColor = false,\n shouldSkipGeneratingVar = defaultShouldSkipGeneratingVar,\n colorSchemeSelector: selector = colorSchemesInput.light && colorSchemesInput.dark ? 'media' : undefined,\n rootSelector = ':root',\n ...input\n } = options;\n const firstColorScheme = Object.keys(colorSchemesInput)[0];\n const defaultColorScheme = defaultColorSchemeInput || (colorSchemesInput.light && firstColorScheme !== 'light' ? 'light' : firstColorScheme);\n const getCssVar = createGetCssVar(cssVarPrefix);\n const {\n [defaultColorScheme]: defaultSchemeInput,\n light: builtInLight,\n dark: builtInDark,\n ...customColorSchemes\n } = colorSchemesInput;\n const colorSchemes = {\n ...customColorSchemes\n };\n let defaultScheme = defaultSchemeInput;\n\n // For built-in light and dark color schemes, ensure that the value is valid if they are the default color scheme.\n if (defaultColorScheme === 'dark' && !('dark' in colorSchemesInput) || defaultColorScheme === 'light' && !('light' in colorSchemesInput)) {\n defaultScheme = true;\n }\n if (!defaultScheme) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: The \\`colorSchemes.${defaultColorScheme}\\` option is either missing or invalid.` : _formatErrorMessage(21, defaultColorScheme));\n }\n\n // The reason to use `oklch` is that it is the most perceptually uniform color space and widely supported.\n let colorSpace;\n if (nativeColor) {\n colorSpace = 'oklch';\n }\n\n // Create the palette for the default color scheme, either `light`, `dark`, or custom color scheme.\n const muiTheme = attachColorScheme(colorSpace, colorSchemes, defaultScheme, input, defaultColorScheme);\n if (builtInLight && !colorSchemes.light) {\n attachColorScheme(colorSpace, colorSchemes, builtInLight, undefined, 'light');\n }\n if (builtInDark && !colorSchemes.dark) {\n attachColorScheme(colorSpace, colorSchemes, builtInDark, undefined, 'dark');\n }\n let theme = {\n defaultColorScheme,\n ...muiTheme,\n cssVarPrefix,\n colorSchemeSelector: selector,\n rootSelector,\n getCssVar,\n colorSchemes,\n font: {\n ...prepareTypographyVars(muiTheme.typography),\n ...muiTheme.font\n },\n spacing: getSpacingVal(input.spacing)\n };\n Object.keys(theme.colorSchemes).forEach(key => {\n const palette = theme.colorSchemes[key].palette;\n const setCssVarColor = cssVar => {\n const tokens = cssVar.split('-');\n const color = tokens[1];\n const colorToken = tokens[2];\n return getCssVar(cssVar, palette[color][colorToken]);\n };\n\n // attach black & white channels to common node\n if (palette.mode === 'light') {\n setColor(palette.common, 'background', '#fff');\n setColor(palette.common, 'onBackground', '#000');\n }\n if (palette.mode === 'dark') {\n setColor(palette.common, 'background', '#000');\n setColor(palette.common, 'onBackground', '#fff');\n }\n function colorMix(method, color, coefficient) {\n if (colorSpace) {\n let mixer;\n if (method === safeAlpha) {\n mixer = `transparent ${((1 - coefficient) * 100).toFixed(0)}%`;\n }\n if (method === safeDarken) {\n mixer = `#000 ${(coefficient * 100).toFixed(0)}%`;\n }\n if (method === safeLighten) {\n mixer = `#fff ${(coefficient * 100).toFixed(0)}%`;\n }\n return `color-mix(in ${colorSpace}, ${color}, ${mixer})`;\n }\n return method(color, coefficient);\n }\n\n // assign component variables\n assignNode(palette, ['Alert', 'AppBar', 'Avatar', 'Button', 'Chip', 'FilledInput', 'LinearProgress', 'Skeleton', 'Slider', 'SnackbarContent', 'SpeedDialAction', 'StepConnector', 'StepContent', 'Switch', 'TableCell', 'Tooltip']);\n if (palette.mode === 'light') {\n setColor(palette.Alert, 'errorColor', colorMix(safeDarken, palette.error.light, 0.6));\n setColor(palette.Alert, 'infoColor', colorMix(safeDarken, palette.info.light, 0.6));\n setColor(palette.Alert, 'successColor', colorMix(safeDarken, palette.success.light, 0.6));\n setColor(palette.Alert, 'warningColor', colorMix(safeDarken, palette.warning.light, 0.6));\n setColor(palette.Alert, 'errorFilledBg', setCssVarColor('palette-error-main'));\n setColor(palette.Alert, 'infoFilledBg', setCssVarColor('palette-info-main'));\n setColor(palette.Alert, 'successFilledBg', setCssVarColor('palette-success-main'));\n setColor(palette.Alert, 'warningFilledBg', setCssVarColor('palette-warning-main'));\n setColor(palette.Alert, 'errorFilledColor', silent(() => palette.getContrastText(palette.error.main)));\n setColor(palette.Alert, 'infoFilledColor', silent(() => palette.getContrastText(palette.info.main)));\n setColor(palette.Alert, 'successFilledColor', silent(() => palette.getContrastText(palette.success.main)));\n setColor(palette.Alert, 'warningFilledColor', silent(() => palette.getContrastText(palette.warning.main)));\n setColor(palette.Alert, 'errorStandardBg', colorMix(safeLighten, palette.error.light, 0.9));\n setColor(palette.Alert, 'infoStandardBg', colorMix(safeLighten, palette.info.light, 0.9));\n setColor(palette.Alert, 'successStandardBg', colorMix(safeLighten, palette.success.light, 0.9));\n setColor(palette.Alert, 'warningStandardBg', colorMix(safeLighten, palette.warning.light, 0.9));\n setColor(palette.Alert, 'errorIconColor', setCssVarColor('palette-error-main'));\n setColor(palette.Alert, 'infoIconColor', setCssVarColor('palette-info-main'));\n setColor(palette.Alert, 'successIconColor', setCssVarColor('palette-success-main'));\n setColor(palette.Alert, 'warningIconColor', setCssVarColor('palette-warning-main'));\n setColor(palette.AppBar, 'defaultBg', setCssVarColor('palette-grey-100'));\n setColor(palette.Avatar, 'defaultBg', setCssVarColor('palette-grey-400'));\n setColor(palette.Button, 'inheritContainedBg', setCssVarColor('palette-grey-300'));\n setColor(palette.Button, 'inheritContainedHoverBg', setCssVarColor('palette-grey-A100'));\n setColor(palette.Chip, 'defaultBorder', setCssVarColor('palette-grey-400'));\n setColor(palette.Chip, 'defaultAvatarColor', setCssVarColor('palette-grey-700'));\n setColor(palette.Chip, 'defaultIconColor', setCssVarColor('palette-grey-700'));\n setColor(palette.FilledInput, 'bg', 'rgba(0, 0, 0, 0.06)');\n setColor(palette.FilledInput, 'hoverBg', 'rgba(0, 0, 0, 0.09)');\n setColor(palette.FilledInput, 'disabledBg', 'rgba(0, 0, 0, 0.12)');\n setColor(palette.LinearProgress, 'primaryBg', colorMix(safeLighten, palette.primary.main, 0.62));\n setColor(palette.LinearProgress, 'secondaryBg', colorMix(safeLighten, palette.secondary.main, 0.62));\n setColor(palette.LinearProgress, 'errorBg', colorMix(safeLighten, palette.error.main, 0.62));\n setColor(palette.LinearProgress, 'infoBg', colorMix(safeLighten, palette.info.main, 0.62));\n setColor(palette.LinearProgress, 'successBg', colorMix(safeLighten, palette.success.main, 0.62));\n setColor(palette.LinearProgress, 'warningBg', colorMix(safeLighten, palette.warning.main, 0.62));\n setColor(palette.Skeleton, 'bg', colorSpace ? colorMix(safeAlpha, palette.text.primary, 0.11) : `rgba(${setCssVarColor('palette-text-primaryChannel')} / 0.11)`);\n setColor(palette.Slider, 'primaryTrack', colorMix(safeLighten, palette.primary.main, 0.62));\n setColor(palette.Slider, 'secondaryTrack', colorMix(safeLighten, palette.secondary.main, 0.62));\n setColor(palette.Slider, 'errorTrack', colorMix(safeLighten, palette.error.main, 0.62));\n setColor(palette.Slider, 'infoTrack', colorMix(safeLighten, palette.info.main, 0.62));\n setColor(palette.Slider, 'successTrack', colorMix(safeLighten, palette.success.main, 0.62));\n setColor(palette.Slider, 'warningTrack', colorMix(safeLighten, palette.warning.main, 0.62));\n const snackbarContentBackground = colorSpace ? colorMix(safeDarken, palette.background.default, 0.6825) // use `0.6825` instead of `0.8` to match the contrast ratio of JS implementation\n : safeEmphasize(palette.background.default, 0.8);\n setColor(palette.SnackbarContent, 'bg', snackbarContentBackground);\n setColor(palette.SnackbarContent, 'color', silent(() => colorSpace ? dark.text.primary : palette.getContrastText(snackbarContentBackground)));\n setColor(palette.SpeedDialAction, 'fabHoverBg', safeEmphasize(palette.background.paper, 0.15));\n setColor(palette.StepConnector, 'border', setCssVarColor('palette-grey-400'));\n setColor(palette.StepContent, 'border', setCssVarColor('palette-grey-400'));\n setColor(palette.Switch, 'defaultColor', setCssVarColor('palette-common-white'));\n setColor(palette.Switch, 'defaultDisabledColor', setCssVarColor('palette-grey-100'));\n setColor(palette.Switch, 'primaryDisabledColor', colorMix(safeLighten, palette.primary.main, 0.62));\n setColor(palette.Switch, 'secondaryDisabledColor', colorMix(safeLighten, palette.secondary.main, 0.62));\n setColor(palette.Switch, 'errorDisabledColor', colorMix(safeLighten, palette.error.main, 0.62));\n setColor(palette.Switch, 'infoDisabledColor', colorMix(safeLighten, palette.info.main, 0.62));\n setColor(palette.Switch, 'successDisabledColor', colorMix(safeLighten, palette.success.main, 0.62));\n setColor(palette.Switch, 'warningDisabledColor', colorMix(safeLighten, palette.warning.main, 0.62));\n setColor(palette.TableCell, 'border', colorMix(safeLighten, colorMix(safeAlpha, palette.divider, 1), 0.88));\n setColor(palette.Tooltip, 'bg', colorMix(safeAlpha, palette.grey[700], 0.92));\n }\n if (palette.mode === 'dark') {\n setColor(palette.Alert, 'errorColor', colorMix(safeLighten, palette.error.light, 0.6));\n setColor(palette.Alert, 'infoColor', colorMix(safeLighten, palette.info.light, 0.6));\n setColor(palette.Alert, 'successColor', colorMix(safeLighten, palette.success.light, 0.6));\n setColor(palette.Alert, 'warningColor', colorMix(safeLighten, palette.warning.light, 0.6));\n setColor(palette.Alert, 'errorFilledBg', setCssVarColor('palette-error-dark'));\n setColor(palette.Alert, 'infoFilledBg', setCssVarColor('palette-info-dark'));\n setColor(palette.Alert, 'successFilledBg', setCssVarColor('palette-success-dark'));\n setColor(palette.Alert, 'warningFilledBg', setCssVarColor('palette-warning-dark'));\n setColor(palette.Alert, 'errorFilledColor', silent(() => palette.getContrastText(palette.error.dark)));\n setColor(palette.Alert, 'infoFilledColor', silent(() => palette.getContrastText(palette.info.dark)));\n setColor(palette.Alert, 'successFilledColor', silent(() => palette.getContrastText(palette.success.dark)));\n setColor(palette.Alert, 'warningFilledColor', silent(() => palette.getContrastText(palette.warning.dark)));\n setColor(palette.Alert, 'errorStandardBg', colorMix(safeDarken, palette.error.light, 0.9));\n setColor(palette.Alert, 'infoStandardBg', colorMix(safeDarken, palette.info.light, 0.9));\n setColor(palette.Alert, 'successStandardBg', colorMix(safeDarken, palette.success.light, 0.9));\n setColor(palette.Alert, 'warningStandardBg', colorMix(safeDarken, palette.warning.light, 0.9));\n setColor(palette.Alert, 'errorIconColor', setCssVarColor('palette-error-main'));\n setColor(palette.Alert, 'infoIconColor', setCssVarColor('palette-info-main'));\n setColor(palette.Alert, 'successIconColor', setCssVarColor('palette-success-main'));\n setColor(palette.Alert, 'warningIconColor', setCssVarColor('palette-warning-main'));\n setColor(palette.AppBar, 'defaultBg', setCssVarColor('palette-grey-900'));\n setColor(palette.AppBar, 'darkBg', setCssVarColor('palette-background-paper')); // specific for dark mode\n setColor(palette.AppBar, 'darkColor', setCssVarColor('palette-text-primary')); // specific for dark mode\n setColor(palette.Avatar, 'defaultBg', setCssVarColor('palette-grey-600'));\n setColor(palette.Button, 'inheritContainedBg', setCssVarColor('palette-grey-800'));\n setColor(palette.Button, 'inheritContainedHoverBg', setCssVarColor('palette-grey-700'));\n setColor(palette.Chip, 'defaultBorder', setCssVarColor('palette-grey-700'));\n setColor(palette.Chip, 'defaultAvatarColor', setCssVarColor('palette-grey-300'));\n setColor(palette.Chip, 'defaultIconColor', setCssVarColor('palette-grey-300'));\n setColor(palette.FilledInput, 'bg', 'rgba(255, 255, 255, 0.09)');\n setColor(palette.FilledInput, 'hoverBg', 'rgba(255, 255, 255, 0.13)');\n setColor(palette.FilledInput, 'disabledBg', 'rgba(255, 255, 255, 0.12)');\n setColor(palette.LinearProgress, 'primaryBg', colorMix(safeDarken, palette.primary.main, 0.5));\n setColor(palette.LinearProgress, 'secondaryBg', colorMix(safeDarken, palette.secondary.main, 0.5));\n setColor(palette.LinearProgress, 'errorBg', colorMix(safeDarken, palette.error.main, 0.5));\n setColor(palette.LinearProgress, 'infoBg', colorMix(safeDarken, palette.info.main, 0.5));\n setColor(palette.LinearProgress, 'successBg', colorMix(safeDarken, palette.success.main, 0.5));\n setColor(palette.LinearProgress, 'warningBg', colorMix(safeDarken, palette.warning.main, 0.5));\n setColor(palette.Skeleton, 'bg', colorSpace ? colorMix(safeAlpha, palette.text.primary, 0.13) : `rgba(${setCssVarColor('palette-text-primaryChannel')} / 0.13)`);\n setColor(palette.Slider, 'primaryTrack', colorMix(safeDarken, palette.primary.main, 0.5));\n setColor(palette.Slider, 'secondaryTrack', colorMix(safeDarken, palette.secondary.main, 0.5));\n setColor(palette.Slider, 'errorTrack', colorMix(safeDarken, palette.error.main, 0.5));\n setColor(palette.Slider, 'infoTrack', colorMix(safeDarken, palette.info.main, 0.5));\n setColor(palette.Slider, 'successTrack', colorMix(safeDarken, palette.success.main, 0.5));\n setColor(palette.Slider, 'warningTrack', colorMix(safeDarken, palette.warning.main, 0.5));\n const snackbarContentBackground = colorSpace ? colorMix(safeLighten, palette.background.default, 0.985) // use `0.985` instead of `0.98` to match the contrast ratio of JS implementation\n : safeEmphasize(palette.background.default, 0.98);\n setColor(palette.SnackbarContent, 'bg', snackbarContentBackground);\n setColor(palette.SnackbarContent, 'color', silent(() => colorSpace ? light.text.primary : palette.getContrastText(snackbarContentBackground)));\n setColor(palette.SpeedDialAction, 'fabHoverBg', safeEmphasize(palette.background.paper, 0.15));\n setColor(palette.StepConnector, 'border', setCssVarColor('palette-grey-600'));\n setColor(palette.StepContent, 'border', setCssVarColor('palette-grey-600'));\n setColor(palette.Switch, 'defaultColor', setCssVarColor('palette-grey-300'));\n setColor(palette.Switch, 'defaultDisabledColor', setCssVarColor('palette-grey-600'));\n setColor(palette.Switch, 'primaryDisabledColor', colorMix(safeDarken, palette.primary.main, 0.55));\n setColor(palette.Switch, 'secondaryDisabledColor', colorMix(safeDarken, palette.secondary.main, 0.55));\n setColor(palette.Switch, 'errorDisabledColor', colorMix(safeDarken, palette.error.main, 0.55));\n setColor(palette.Switch, 'infoDisabledColor', colorMix(safeDarken, palette.info.main, 0.55));\n setColor(palette.Switch, 'successDisabledColor', colorMix(safeDarken, palette.success.main, 0.55));\n setColor(palette.Switch, 'warningDisabledColor', colorMix(safeDarken, palette.warning.main, 0.55));\n setColor(palette.TableCell, 'border', colorMix(safeDarken, colorMix(safeAlpha, palette.divider, 1), 0.68));\n setColor(palette.Tooltip, 'bg', colorMix(safeAlpha, palette.grey[700], 0.92));\n }\n\n // MUI X - DataGrid needs this token.\n setColorChannel(palette.background, 'default');\n\n // added for consistency with the `background.default` token\n setColorChannel(palette.background, 'paper');\n setColorChannel(palette.common, 'background');\n setColorChannel(palette.common, 'onBackground');\n setColorChannel(palette, 'divider');\n Object.keys(palette).forEach(color => {\n const colors = palette[color];\n\n // The default palettes (primary, secondary, error, info, success, and warning) errors are handled by the above `createTheme(...)`.\n\n if (color !== 'tonalOffset' && colors && typeof colors === 'object') {\n // Silent the error for custom palettes.\n if (colors.main) {\n setColor(palette[color], 'mainChannel', safeColorChannel(toRgb(colors.main)));\n }\n if (colors.light) {\n setColor(palette[color], 'lightChannel', safeColorChannel(toRgb(colors.light)));\n }\n if (colors.dark) {\n setColor(palette[color], 'darkChannel', safeColorChannel(toRgb(colors.dark)));\n }\n if (colors.contrastText) {\n setColor(palette[color], 'contrastTextChannel', safeColorChannel(toRgb(colors.contrastText)));\n }\n if (color === 'text') {\n // Text colors: text.primary, text.secondary\n setColorChannel(palette[color], 'primary');\n setColorChannel(palette[color], 'secondary');\n }\n if (color === 'action') {\n // Action colors: action.active, action.selected\n if (colors.active) {\n setColorChannel(palette[color], 'active');\n }\n if (colors.selected) {\n setColorChannel(palette[color], 'selected');\n }\n }\n }\n });\n });\n theme = args.reduce((acc, argument) => deepmerge(acc, argument), theme);\n const parserConfig = {\n prefix: cssVarPrefix,\n disableCssColorScheme,\n shouldSkipGeneratingVar,\n getSelector: defaultGetSelector(theme),\n enableContrastVars: nativeColor\n };\n const {\n vars,\n generateThemeVars,\n generateStyleSheets\n } = prepareCssVars(theme, parserConfig);\n theme.vars = vars;\n Object.entries(theme.colorSchemes[theme.defaultColorScheme]).forEach(([key, value]) => {\n theme[key] = value;\n });\n theme.generateThemeVars = generateThemeVars;\n theme.generateStyleSheets = generateStyleSheets;\n theme.generateSpacing = function generateSpacing() {\n return createSpacing(input.spacing, createUnarySpacing(this));\n };\n theme.getColorSchemeSelector = createGetColorSchemeSelector(selector);\n theme.spacing = theme.generateSpacing();\n theme.shouldSkipGeneratingVar = shouldSkipGeneratingVar;\n theme.unstable_sxConfig = {\n ...defaultSxConfig,\n ...input?.unstable_sxConfig\n };\n theme.unstable_sx = function sx(props) {\n return styleFunctionSx({\n sx: props,\n theme: this\n });\n };\n theme.toRuntimeSource = stringifyTheme; // for Pigment CSS integration\n\n return theme;\n}","import createPalette from \"./createPalette.js\";\nimport createThemeWithVars from \"./createThemeWithVars.js\";\nimport createThemeNoVars from \"./createThemeNoVars.js\";\n// eslint-disable-next-line consistent-return\nfunction attachColorScheme(theme, scheme, colorScheme) {\n if (!theme.colorSchemes) {\n return undefined;\n }\n if (colorScheme) {\n theme.colorSchemes[scheme] = {\n ...(colorScheme !== true && colorScheme),\n palette: createPalette({\n ...(colorScheme === true ? {} : colorScheme.palette),\n mode: scheme\n }) // cast type to skip module augmentation test\n };\n }\n}\n\n/**\n * Generate a theme base on the options received.\n * @param options Takes an incomplete theme object and adds the missing parts.\n * @param args Deep merge the arguments with the about to be returned theme.\n * @returns A complete, ready-to-use theme object.\n */\nexport default function createTheme(options = {},\n// cast type to skip module augmentation test\n...args) {\n const {\n palette,\n cssVariables = false,\n colorSchemes: initialColorSchemes = !palette ? {\n light: true\n } : undefined,\n defaultColorScheme: initialDefaultColorScheme = palette?.mode,\n ...other\n } = options;\n const defaultColorSchemeInput = initialDefaultColorScheme || 'light';\n const defaultScheme = initialColorSchemes?.[defaultColorSchemeInput];\n const colorSchemesInput = {\n ...initialColorSchemes,\n ...(palette ? {\n [defaultColorSchemeInput]: {\n ...(typeof defaultScheme !== 'boolean' && defaultScheme),\n palette\n }\n } : undefined)\n };\n if (cssVariables === false) {\n if (!('colorSchemes' in options)) {\n // Behaves exactly as v5\n return createThemeNoVars(options, ...args);\n }\n let paletteOptions = palette;\n if (!('palette' in options)) {\n if (colorSchemesInput[defaultColorSchemeInput]) {\n if (colorSchemesInput[defaultColorSchemeInput] !== true) {\n paletteOptions = colorSchemesInput[defaultColorSchemeInput].palette;\n } else if (defaultColorSchemeInput === 'dark') {\n // @ts-ignore to prevent the module augmentation test from failing\n paletteOptions = {\n mode: 'dark'\n };\n }\n }\n }\n const theme = createThemeNoVars({\n ...options,\n palette: paletteOptions\n }, ...args);\n theme.defaultColorScheme = defaultColorSchemeInput;\n theme.colorSchemes = colorSchemesInput;\n if (theme.palette.mode === 'light') {\n theme.colorSchemes.light = {\n ...(colorSchemesInput.light !== true && colorSchemesInput.light),\n palette: theme.palette\n };\n attachColorScheme(theme, 'dark', colorSchemesInput.dark);\n }\n if (theme.palette.mode === 'dark') {\n theme.colorSchemes.dark = {\n ...(colorSchemesInput.dark !== true && colorSchemesInput.dark),\n palette: theme.palette\n };\n attachColorScheme(theme, 'light', colorSchemesInput.light);\n }\n return theme;\n }\n if (!palette && !('light' in colorSchemesInput) && defaultColorSchemeInput === 'light') {\n colorSchemesInput.light = true;\n }\n return createThemeWithVars({\n ...other,\n colorSchemes: colorSchemesInput,\n defaultColorScheme: defaultColorSchemeInput,\n ...(typeof cssVariables !== 'boolean' && cssVariables)\n }, ...args);\n}","'use client';\n\nimport createTheme from \"./createTheme.js\";\nconst defaultTheme = createTheme();\nexport default defaultTheme;","export default '$$material';","import { ForwardRef, Memo } from 'react-is';\nfunction getFunctionComponentName(Component, fallback = '') {\n return Component.displayName || Component.name || fallback;\n}\nfunction getWrappedName(outerType, innerType, wrapperName) {\n const functionName = getFunctionComponentName(innerType);\n return outerType.displayName || (functionName !== '' ? `${wrapperName}(${functionName})` : wrapperName);\n}\n\n/**\n * cherry-pick from\n * https://github.com/facebook/react/blob/769b1f270e1251d9dbdce0fcbd9e92e502d059b8/packages/shared/getComponentName.js\n * originally forked from recompose/getDisplayName\n */\nexport default function getDisplayName(Component) {\n if (Component == null) {\n return undefined;\n }\n if (typeof Component === 'string') {\n return Component;\n }\n if (typeof Component === 'function') {\n return getFunctionComponentName(Component, 'Component');\n }\n\n // TypeScript can't have components as objects but they exist in the form of `memo` or `Suspense`\n if (typeof Component === 'object') {\n switch (Component.$$typeof) {\n case ForwardRef:\n return getWrappedName(Component, Component.render, 'ForwardRef');\n case Memo:\n return getWrappedName(Component, Component.type, 'memo');\n default:\n return undefined;\n }\n }\n return undefined;\n}","import { internal_serializeStyles } from '@mui/styled-engine';\nexport default function preprocessStyles(input) {\n const {\n variants,\n ...style\n } = input;\n const result = {\n variants,\n style: internal_serializeStyles(style),\n isProcessed: true\n };\n\n // Not supported on styled-components\n if (result.style === style) {\n return result;\n }\n if (variants) {\n variants.forEach(variant => {\n if (typeof variant.style !== 'function') {\n variant.style = internal_serializeStyles(variant.style);\n }\n });\n }\n return result;\n}","import styledEngineStyled, { internal_mutateStyles as mutateStyles, internal_serializeStyles as serializeStyles } from '@mui/styled-engine';\nimport { isPlainObject } from '@mui/utils/deepmerge';\nimport capitalize from '@mui/utils/capitalize';\nimport getDisplayName from '@mui/utils/getDisplayName';\nimport createTheme from \"../createTheme/index.js\";\nimport styleFunctionSx from \"../styleFunctionSx/index.js\";\nimport preprocessStyles from \"../preprocessStyles.js\";\n\n/* eslint-disable no-underscore-dangle */\n/* eslint-disable no-labels */\n/* eslint-disable no-lone-blocks */\n\nexport const systemDefaultTheme = createTheme();\n\n// Update /system/styled/#api in case if this changes\nexport function shouldForwardProp(prop) {\n return prop !== 'ownerState' && prop !== 'theme' && prop !== 'sx' && prop !== 'as';\n}\nfunction shallowLayer(serialized, layerName) {\n if (layerName && serialized && typeof serialized === 'object' && serialized.styles && !serialized.styles.startsWith('@layer') // only add the layer if it is not already there.\n ) {\n serialized.styles = `@layer ${layerName}{${String(serialized.styles)}}`;\n }\n return serialized;\n}\nfunction defaultOverridesResolver(slot) {\n if (!slot) {\n return null;\n }\n return (_props, styles) => styles[slot];\n}\nfunction attachTheme(props, themeId, defaultTheme) {\n props.theme = isObjectEmpty(props.theme) ? defaultTheme : props.theme[themeId] || props.theme;\n}\nfunction processStyle(props, style, layerName) {\n /*\n * Style types:\n * - null/undefined\n * - string\n * - CSS style object: { [cssKey]: [cssValue], variants }\n * - Processed style object: { style, variants, isProcessed: true }\n * - Array of any of the above\n */\n\n const resolvedStyle = typeof style === 'function' ? style(props) : style;\n if (Array.isArray(resolvedStyle)) {\n return resolvedStyle.flatMap(subStyle => processStyle(props, subStyle, layerName));\n }\n if (Array.isArray(resolvedStyle?.variants)) {\n let rootStyle;\n if (resolvedStyle.isProcessed) {\n rootStyle = layerName ? shallowLayer(resolvedStyle.style, layerName) : resolvedStyle.style;\n } else {\n const {\n variants,\n ...otherStyles\n } = resolvedStyle;\n rootStyle = layerName ? shallowLayer(serializeStyles(otherStyles), layerName) : otherStyles;\n }\n return processStyleVariants(props, resolvedStyle.variants, [rootStyle], layerName);\n }\n if (resolvedStyle?.isProcessed) {\n return layerName ? shallowLayer(serializeStyles(resolvedStyle.style), layerName) : resolvedStyle.style;\n }\n return layerName ? shallowLayer(serializeStyles(resolvedStyle), layerName) : resolvedStyle;\n}\nfunction processStyleVariants(props, variants, results = [], layerName = undefined) {\n let mergedState; // We might not need it, initialized lazily\n\n variantLoop: for (let i = 0; i < variants.length; i += 1) {\n const variant = variants[i];\n if (typeof variant.props === 'function') {\n mergedState ??= {\n ...props,\n ...props.ownerState,\n ownerState: props.ownerState\n };\n if (!variant.props(mergedState)) {\n continue;\n }\n } else {\n for (const key in variant.props) {\n if (props[key] !== variant.props[key] && props.ownerState?.[key] !== variant.props[key]) {\n continue variantLoop;\n }\n }\n }\n if (typeof variant.style === 'function') {\n mergedState ??= {\n ...props,\n ...props.ownerState,\n ownerState: props.ownerState\n };\n results.push(layerName ? shallowLayer(serializeStyles(variant.style(mergedState)), layerName) : variant.style(mergedState));\n } else {\n results.push(layerName ? shallowLayer(serializeStyles(variant.style), layerName) : variant.style);\n }\n }\n return results;\n}\nexport default function createStyled(input = {}) {\n const {\n themeId,\n defaultTheme = systemDefaultTheme,\n rootShouldForwardProp = shouldForwardProp,\n slotShouldForwardProp = shouldForwardProp\n } = input;\n function styleAttachTheme(props) {\n attachTheme(props, themeId, defaultTheme);\n }\n const styled = (tag, inputOptions = {}) => {\n // If `tag` is already a styled component, filter out the `sx` style function\n // to prevent unnecessary styles generated by the composite components.\n mutateStyles(tag, styles => styles.filter(style => style !== styleFunctionSx));\n const {\n name: componentName,\n slot: componentSlot,\n skipVariantsResolver: inputSkipVariantsResolver,\n skipSx: inputSkipSx,\n // TODO v6: remove `lowercaseFirstLetter()` in the next major release\n // For more details: https://github.com/mui/material-ui/pull/37908\n overridesResolver = defaultOverridesResolver(lowercaseFirstLetter(componentSlot)),\n ...options\n } = inputOptions;\n const layerName = componentName && componentName.startsWith('Mui') || !!componentSlot ? 'components' : 'custom';\n\n // if skipVariantsResolver option is defined, take the value, otherwise, true for root and false for other slots.\n const skipVariantsResolver = inputSkipVariantsResolver !== undefined ? inputSkipVariantsResolver :\n // TODO v6: remove `Root` in the next major release\n // For more details: https://github.com/mui/material-ui/pull/37908\n componentSlot && componentSlot !== 'Root' && componentSlot !== 'root' || false;\n const skipSx = inputSkipSx || false;\n let shouldForwardPropOption = shouldForwardProp;\n\n // TODO v6: remove `Root` in the next major release\n // For more details: https://github.com/mui/material-ui/pull/37908\n if (componentSlot === 'Root' || componentSlot === 'root') {\n shouldForwardPropOption = rootShouldForwardProp;\n } else if (componentSlot) {\n // any other slot specified\n shouldForwardPropOption = slotShouldForwardProp;\n } else if (isStringTag(tag)) {\n // for string (html) tag, preserve the behavior in emotion & styled-components.\n shouldForwardPropOption = undefined;\n }\n const defaultStyledResolver = styledEngineStyled(tag, {\n shouldForwardProp: shouldForwardPropOption,\n label: generateStyledLabel(componentName, componentSlot),\n ...options\n });\n const transformStyle = style => {\n // - On the server Emotion doesn't use React.forwardRef for creating components, so the created\n // component stays as a function. This condition makes sure that we do not interpolate functions\n // which are basically components used as a selectors.\n // - `style` could be a styled component from a babel plugin for component selectors, This condition\n // makes sure that we do not interpolate them.\n if (style.__emotion_real === style) {\n return style;\n }\n if (typeof style === 'function') {\n return function styleFunctionProcessor(props) {\n return processStyle(props, style, props.theme.modularCssLayers ? layerName : undefined);\n };\n }\n if (isPlainObject(style)) {\n const serialized = preprocessStyles(style);\n return function styleObjectProcessor(props) {\n if (!serialized.variants) {\n return props.theme.modularCssLayers ? shallowLayer(serialized.style, layerName) : serialized.style;\n }\n return processStyle(props, serialized, props.theme.modularCssLayers ? layerName : undefined);\n };\n }\n return style;\n };\n const muiStyledResolver = (...expressionsInput) => {\n const expressionsHead = [];\n const expressionsBody = expressionsInput.map(transformStyle);\n const expressionsTail = [];\n\n // Preprocess `props` to set the scoped theme value.\n // This must run before any other expression.\n expressionsHead.push(styleAttachTheme);\n if (componentName && overridesResolver) {\n expressionsTail.push(function styleThemeOverrides(props) {\n const theme = props.theme;\n const styleOverrides = theme.components?.[componentName]?.styleOverrides;\n if (!styleOverrides) {\n return null;\n }\n const resolvedStyleOverrides = {};\n\n // TODO: v7 remove iteration and use `resolveStyleArg(styleOverrides[slot])` directly\n // eslint-disable-next-line guard-for-in\n for (const slotKey in styleOverrides) {\n resolvedStyleOverrides[slotKey] = processStyle(props, styleOverrides[slotKey], props.theme.modularCssLayers ? 'theme' : undefined);\n }\n return overridesResolver(props, resolvedStyleOverrides);\n });\n }\n if (componentName && !skipVariantsResolver) {\n expressionsTail.push(function styleThemeVariants(props) {\n const theme = props.theme;\n const themeVariants = theme?.components?.[componentName]?.variants;\n if (!themeVariants) {\n return null;\n }\n return processStyleVariants(props, themeVariants, [], props.theme.modularCssLayers ? 'theme' : undefined);\n });\n }\n if (!skipSx) {\n expressionsTail.push(styleFunctionSx);\n }\n\n // This function can be called as a tagged template, so the first argument would contain\n // CSS `string[]` values.\n if (Array.isArray(expressionsBody[0])) {\n const inputStrings = expressionsBody.shift();\n\n // We need to add placeholders in the tagged template for the custom functions we have\n // possibly added (attachTheme, overrides, variants, and sx).\n const placeholdersHead = new Array(expressionsHead.length).fill('');\n const placeholdersTail = new Array(expressionsTail.length).fill('');\n let outputStrings;\n // prettier-ignore\n {\n outputStrings = [...placeholdersHead, ...inputStrings, ...placeholdersTail];\n outputStrings.raw = [...placeholdersHead, ...inputStrings.raw, ...placeholdersTail];\n }\n\n // The only case where we put something before `attachTheme`\n expressionsHead.unshift(outputStrings);\n }\n const expressions = [...expressionsHead, ...expressionsBody, ...expressionsTail];\n const Component = defaultStyledResolver(...expressions);\n if (tag.muiName) {\n Component.muiName = tag.muiName;\n }\n if (process.env.NODE_ENV !== 'production') {\n Component.displayName = generateDisplayName(componentName, componentSlot, tag);\n }\n return Component;\n };\n if (defaultStyledResolver.withConfig) {\n muiStyledResolver.withConfig = defaultStyledResolver.withConfig;\n }\n return muiStyledResolver;\n };\n return styled;\n}\nfunction generateDisplayName(componentName, componentSlot, tag) {\n if (componentName) {\n return `${componentName}${capitalize(componentSlot || '')}`;\n }\n return `Styled(${getDisplayName(tag)})`;\n}\nfunction generateStyledLabel(componentName, componentSlot) {\n let label;\n if (process.env.NODE_ENV !== 'production') {\n if (componentName) {\n // TODO v6: remove `lowercaseFirstLetter()` in the next major release\n // For more details: https://github.com/mui/material-ui/pull/37908\n label = `${componentName}-${lowercaseFirstLetter(componentSlot || 'Root')}`;\n }\n }\n return label;\n}\nfunction isObjectEmpty(object) {\n // eslint-disable-next-line\n for (const _ in object) {\n return false;\n }\n return true;\n}\n\n// https://github.com/emotion-js/emotion/blob/26ded6109fcd8ca9875cc2ce4564fee678a3f3c5/packages/styled/src/utils.js#L40\nfunction isStringTag(tag) {\n return typeof tag === 'string' &&\n // 96 is one less than the char code\n // for \"a\" so this is checking that\n // it's a lowercase character\n tag.charCodeAt(0) > 96;\n}\nfunction lowercaseFirstLetter(string) {\n if (!string) {\n return string;\n }\n return string.charAt(0).toLowerCase() + string.slice(1);\n}","// copied from @mui/system/createStyled\nfunction slotShouldForwardProp(prop) {\n return prop !== 'ownerState' && prop !== 'theme' && prop !== 'sx' && prop !== 'as';\n}\nexport default slotShouldForwardProp;","import slotShouldForwardProp from \"./slotShouldForwardProp.js\";\nconst rootShouldForwardProp = prop => slotShouldForwardProp(prop) && prop !== 'classes';\nexport default rootShouldForwardProp;","'use client';\n\nimport createStyled from '@mui/system/createStyled';\nimport defaultTheme from \"./defaultTheme.js\";\nimport THEME_ID from \"./identifier.js\";\nimport rootShouldForwardProp from \"./rootShouldForwardProp.js\";\nexport { default as slotShouldForwardProp } from \"./slotShouldForwardProp.js\";\nexport { default as rootShouldForwardProp } from \"./rootShouldForwardProp.js\";\nconst styled = createStyled({\n themeId: THEME_ID,\n defaultTheme,\n rootShouldForwardProp\n});\nexport default styled;","import { unstable_memoTheme } from '@mui/system';\nconst memoTheme = unstable_memoTheme;\nexport default memoTheme;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport SystemDefaultPropsProvider, { useDefaultProps as useSystemDefaultProps } from '@mui/system/DefaultPropsProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction DefaultPropsProvider(props) {\n return /*#__PURE__*/_jsx(SystemDefaultPropsProvider, {\n ...props\n });\n}\nprocess.env.NODE_ENV !== \"production\" ? DefaultPropsProvider.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the TypeScript types and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * @ignore\n */\n children: PropTypes.node,\n /**\n * @ignore\n */\n value: PropTypes.object.isRequired\n} : void 0;\nexport default DefaultPropsProvider;\nexport function useDefaultProps(params) {\n return useSystemDefaultProps(params);\n}","import generateUtilityClass from \"../generateUtilityClass/index.js\";\nexport default function generateUtilityClasses(componentName, slots, globalStatePrefix = 'Mui') {\n const result = {};\n slots.forEach(slot => {\n result[slot] = generateUtilityClass(componentName, slot, globalStatePrefix);\n });\n return result;\n}","import React, { createContext, useState, useContext, type ReactNode } from 'react';\r\nimport Snackbar from '@mui/material/Snackbar';\r\nimport { STYLE } from '../common/constant';\r\nimport { Alert } from '@mui/material';\r\n\r\nexport enum SnackbarType {\r\n INFO = 'info',\r\n SUCCESS = 'success',\r\n ERROR = 'error',\r\n WARNING = 'warning',\r\n}\r\n\r\nexport interface SnackbarContext {\r\n message: string;\r\n type: SnackbarType;\r\n}\r\n\r\nexport interface SnackbarContextType {\r\n showSnackbar: (params: SnackbarContext) => void;\r\n}\r\n\r\nconst SnackbarContext = createContext<SnackbarContextType | undefined>(undefined);\r\n\r\nexport interface SnackbarProviderProps {\r\n children?: ReactNode;\r\n}\r\n\r\nexport const SnackbarProvider: React.FC<SnackbarProviderProps> = ({ children }) => {\r\n const [snackbar, setSnackbar] = useState<SnackbarContext & { open: boolean }>({\r\n open: false,\r\n message: '',\r\n type: SnackbarType.INFO,\r\n });\r\n\r\n const showSnackbar = (params: SnackbarContext) => {\r\n setSnackbar({\r\n open: true,\r\n ...params,\r\n });\r\n };\r\n\r\n const handleClose = () => {\r\n setSnackbar({ ...snackbar, open: false });\r\n };\r\n\r\n return (\r\n <SnackbarContext.Provider value={{ showSnackbar }}>\r\n {children}\r\n <Snackbar\r\n anchorOrigin={{ vertical: 'bottom', horizontal: 'right' }}\r\n sx={{\r\n '&.MuiSnackbar-root': {\r\n bottom: STYLE.PADDING_GAP_LAYOUT,\r\n right: STYLE.PADDING_GAP_LAYOUT,\r\n },\r\n }}\r\n open={snackbar.open}\r\n autoHideDuration={6000}\r\n onClose={handleClose}\r\n >\r\n <Alert\r\n sx={{ borderRadius: STYLE.BORDER_RADIUS_ELEMENT, boxShadow: 1 }}\r\n onClose={handleClose}\r\n severity={snackbar.type}\r\n >\r\n {snackbar.message}\r\n </Alert>\r\n </Snackbar>\r\n </SnackbarContext.Provider>\r\n );\r\n};\r\n\r\n// Custom hook to use SnackbarContext\r\nexport const useSnackbar = () => {\r\n const context = useContext(SnackbarContext);\r\n\r\n if (!context) throw new Error('useSnackbar must be used within a SnackbarProvider');\r\n\r\n return context;\r\n};\r\n","import {\r\n Icon,\r\n type IconProps,\r\n type SxProps,\r\n type Theme,\r\n useTheme,\r\n} from \"@mui/material\";\r\nimport React from \"react\";\r\nimport { STYLE } from \"../../../common/constant\";\r\n\r\nexport interface IconElementProps extends IconProps {\r\n icon?: any;\r\n size?: \"large\" | \"small\" | \"medium\";\r\n disabled?: boolean;\r\n fill?: 0 | 1;\r\n sx?: SxProps<Theme>;\r\n onClick?: (event: React.MouseEvent<HTMLDivElement>) => void;\r\n}\r\n\r\nexport const IconElement: React.FC<IconElementProps> = ({\r\n icon,\r\n size = \"medium\",\r\n color,\r\n disabled,\r\n onClick,\r\n sx,\r\n fill = 0,\r\n}) => {\r\n const { palette } = useTheme();\r\n\r\n if (disabled) {\r\n onClick = undefined;\r\n color = \"disabled\";\r\n }\r\n\r\n if (onClick)\r\n sx = {\r\n cursor: \"pointer\",\r\n \"&:hover\": {\r\n color: color ? \"none\" : palette.primary.main,\r\n },\r\n ...sx,\r\n };\r\n\r\n return (\r\n <Icon\r\n onClick={onClick}\r\n color={color}\r\n sx={{\r\n cursor: \"inherit\",\r\n fontSize: STYLE.FONT_SIZE_ICON[size],\r\n fontVariationSettings: `'FILL' ${fill}, 'wght' 100, 'GRAD' 200, 'opsz' 24`,\r\n ...sx,\r\n }}\r\n component={\"span\"}\r\n className=\"material-symbols-rounded\"\r\n >\r\n {icon}\r\n </Icon>\r\n );\r\n};\r\n","import styled from '@emotion/styled';\r\nimport { Avatar, type AvatarProps, Tooltip, type TooltipProps, tooltipClasses } from '@mui/material';\r\nimport React, { type ReactNode } from 'react';\r\nimport { MAP_SIZE, type SizeProps } from './avatar-enum.enum';\r\n\r\nexport interface AvatarElementProps extends AvatarProps {\r\n url?: string | null;\r\n size?: SizeProps;\r\n tooltipContent?: ReactNode;\r\n}\r\n\r\nconst ArrowTooltip = styled(({ className, ...props }: TooltipProps) => (\r\n <Tooltip {...props} arrow classes={{ popper: className }} />\r\n))(() => ({\r\n [`& .${tooltipClasses.arrow}`]: {\r\n color: 'white',\r\n },\r\n}));\r\n\r\nexport const AvatarElement: React.FC<AvatarElementProps> = ({\r\n url,\r\n sx = {},\r\n size = 'medium',\r\n tooltipContent,\r\n ...rest\r\n}) => {\r\n if (tooltipContent) {\r\n return (\r\n <ArrowTooltip title={tooltipContent} arrow>\r\n <Avatar\r\n {...rest}\r\n src={url || ''}\r\n sx={{ ...MAP_SIZE[size], bgcolor: 'primary.main', ...sx, cursor: 'pointer' }}\r\n />\r\n </ArrowTooltip>\r\n );\r\n }\r\n return (\r\n <Avatar {...rest} src={url || ''} sx={{ ...MAP_SIZE[size], bgcolor: 'primary.main', ...sx, cursor: 'pointer' }} />\r\n );\r\n};\r\n","import { Typography } from \"@mui/material\";\r\nimport React from \"react\";\r\nimport { timeUtils } from \"../../common/utils\";\r\nimport { getLimitLineCss } from \"../../common/utils/other/get-limit-line-css.utils\";\r\n\r\nexport interface TimeAgoComponentProps {\r\n time: Date;\r\n hasText?: boolean;\r\n}\r\n\r\nexport const TimeAgoComponent: React.FC<TimeAgoComponentProps> = ({\r\n time,\r\n hasText,\r\n}) => {\r\n return (\r\n <Typography\r\n variant=\"caption\"\r\n sx={{ ...getLimitLineCss(1), color: \"text.disabled\", lineHeight: 1.2 }}\r\n >\r\n {(hasText ? \"Cập nhật lúc \" : \"\") + timeUtils.getTimeAgo(time)}\r\n </Typography>\r\n );\r\n};\r\n","import React from \"react\";\r\nimport { Stack } from \"@mui/system\";\r\nimport { TimeAgoComponent } from \"./time-ago.component\";\r\nimport { STYLE } from \"../../common/constant\";\r\nimport { Typography } from \"@mui/material\";\r\nimport { getLimitLineCss } from \"../../common/utils/other/get-limit-line-css.utils\";\r\n\r\nexport interface TimeAgoContentComponentProps {\r\n time: Date;\r\n content: string;\r\n height?: number | string;\r\n}\r\n\r\nexport const TimeAgoContentComponent: React.FC<\r\n TimeAgoContentComponentProps\r\n> = ({ time, content, height = STYLE.HEIGHT_IMAGE_DEFAULT }) => {\r\n return (\r\n <Stack\r\n sx={{\r\n height,\r\n gap: 0,\r\n justifyContent: \"space-between\",\r\n alignItems: \"flex-start\",\r\n }}\r\n >\r\n <Typography\r\n sx={{\r\n ...getLimitLineCss(1),\r\n }}\r\n >\r\n {content}\r\n </Typography>\r\n <TimeAgoComponent time={time} />\r\n </Stack>\r\n );\r\n};\r\n","import React from 'react';\r\nimport { StackRow } from '../../styles/stack.style';\r\nimport type { SizeProps } from '../../avatar/avatar-enum.enum';\r\nimport { AvatarElement } from '../../avatar/avatar.element';\r\nimport { TimeAgoContentComponent } from '../../time-ago/time-ago-content.component';\r\n\r\n\r\nexport interface ImageContentTimeComponentProps {\r\n url: string;\r\n content: string;\r\n time: Date;\r\n sizeType?: SizeProps;\r\n}\r\n\r\nexport const ImageContentTimeComponent: React.FC<ImageContentTimeComponentProps> = ({\r\n url,\r\n content,\r\n time,\r\n sizeType = 'medium',\r\n}) => {\r\n return (\r\n <StackRow alignItems=\"center\">\r\n <AvatarElement url={url} size={sizeType} />\r\n <TimeAgoContentComponent content={content} time={time} />\r\n </StackRow>\r\n );\r\n};\r\n","import { ClickAwayListener, Tooltip, type TooltipProps } from '@mui/material';\r\nimport React, { type ReactElement } from 'react';\r\n\r\nexport interface TooltipOnClickElementProps extends Partial<Omit<TooltipProps, 'content'>> {\r\n content: ReactElement | string;\r\n onClickAway: () => void;\r\n}\r\n\r\nexport const TooltipOnClickElement: React.FC<TooltipOnClickElementProps> = ({\r\n open,\r\n placement = 'top',\r\n content,\r\n children,\r\n onOpen,\r\n onClose,\r\n onClickAway,\r\n ...rest\r\n}) => {\r\n return (\r\n // Chỗ này có thể là bug, onClickAway apply ngay cả khi component chưa được render\r\n <ClickAwayListener onClickAway={onClickAway}>\r\n <Tooltip\r\n PopperProps={{ disablePortal: true }}\r\n open={open}\r\n onOpen={onOpen}\r\n onClose={onClose}\r\n disableFocusListener\r\n disableHoverListener\r\n disableTouchListener\r\n placement={placement}\r\n title={content}\r\n {...rest}\r\n >\r\n <span>{children}</span>\r\n </Tooltip>\r\n </ClickAwayListener>\r\n );\r\n};\r\n","import { Box, Fade, Stack } from '@mui/material';\r\nimport React from 'react';\r\nimport { STYLE } from '../../common/constant';\r\n\r\nexport interface EmptyComponentProps {}\r\n\r\nexport const EmptyComponent: React.FC<EmptyComponentProps> = ({}) => {\r\n return (\r\n <Fade in={true} timeout={STYLE.ANIMATION_TIME}>\r\n <Stack\r\n direction=\"column\"\r\n sx={{\r\n flex: 1,\r\n height: '100%',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n padding: STYLE.PADDING_GAP_ITEM,\r\n }}\r\n >\r\n <Box component=\"img\" sx={{ width: 70 }} src=\"/images/empty.svg\" />\r\n </Stack>\r\n </Fade>\r\n );\r\n};\r\n","/**\n * Type guard to check if the object has a \"main\" property of type string.\n *\n * @param obj - the object to check\n * @returns boolean\n */\nfunction hasCorrectMainProperty(obj) {\n return typeof obj.main === 'string';\n}\n/**\n * Checks if the object conforms to the SimplePaletteColorOptions type.\n * The minimum requirement is that the object has a \"main\" property of type string, this is always checked.\n * Optionally, you can pass additional properties to check.\n *\n * @param obj - The object to check\n * @param additionalPropertiesToCheck - Array containing \"light\", \"dark\", and/or \"contrastText\"\n * @returns boolean\n */\nfunction checkSimplePaletteColorValues(obj, additionalPropertiesToCheck = []) {\n if (!hasCorrectMainProperty(obj)) {\n return false;\n }\n for (const value of additionalPropertiesToCheck) {\n if (!obj.hasOwnProperty(value) || typeof obj[value] !== 'string') {\n return false;\n }\n }\n return true;\n}\n\n/**\n * Creates a filter function used to filter simple palette color options.\n * The minimum requirement is that the object has a \"main\" property of type string, this is always checked.\n * Optionally, you can pass additional properties to check.\n *\n * @param additionalPropertiesToCheck - Array containing \"light\", \"dark\", and/or \"contrastText\"\n * @returns ([, value]: [any, PaletteColorOptions]) => boolean\n */\nexport default function createSimplePaletteValueFilter(additionalPropertiesToCheck = []) {\n return ([, value]) => value && checkSimplePaletteColorValues(value, additionalPropertiesToCheck);\n}","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getCircularProgressUtilityClass(slot) {\n return generateUtilityClass('MuiCircularProgress', slot);\n}\nconst circularProgressClasses = generateUtilityClasses('MuiCircularProgress', ['root', 'determinate', 'indeterminate', 'colorPrimary', 'colorSecondary', 'svg', 'track', 'circle', 'circleDeterminate', 'circleIndeterminate', 'circleDisableShrink']);\nexport default circularProgressClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport chainPropTypes from '@mui/utils/chainPropTypes';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { keyframes, css, styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport createSimplePaletteValueFilter from \"../utils/createSimplePaletteValueFilter.js\";\nimport { getCircularProgressUtilityClass } from \"./circularProgressClasses.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst SIZE = 44;\nconst circularRotateKeyframe = keyframes`\n 0% {\n transform: rotate(0deg);\n }\n\n 100% {\n transform: rotate(360deg);\n }\n`;\nconst circularDashKeyframe = keyframes`\n 0% {\n stroke-dasharray: 1px, 200px;\n stroke-dashoffset: 0;\n }\n\n 50% {\n stroke-dasharray: 100px, 200px;\n stroke-dashoffset: -15px;\n }\n\n 100% {\n stroke-dasharray: 1px, 200px;\n stroke-dashoffset: -126px;\n }\n`;\n\n// This implementation is for supporting both Styled-components v4+ and Pigment CSS.\n// A global animation has to be created here for Styled-components v4+ (https://github.com/styled-components/styled-components/blob/main/packages/styled-components/src/utils/errors.md#12).\n// which can be done by checking typeof indeterminate1Keyframe !== 'string' (at runtime, Pigment CSS transform keyframes`` to a string).\nconst rotateAnimation = typeof circularRotateKeyframe !== 'string' ? css`\n animation: ${circularRotateKeyframe} 1.4s linear infinite;\n ` : null;\nconst dashAnimation = typeof circularDashKeyframe !== 'string' ? css`\n animation: ${circularDashKeyframe} 1.4s ease-in-out infinite;\n ` : null;\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n variant,\n color,\n disableShrink\n } = ownerState;\n const slots = {\n root: ['root', variant, `color${capitalize(color)}`],\n svg: ['svg'],\n track: ['track'],\n circle: ['circle', `circle${capitalize(variant)}`, disableShrink && 'circleDisableShrink']\n };\n return composeClasses(slots, getCircularProgressUtilityClass, classes);\n};\nconst CircularProgressRoot = styled('span', {\n name: 'MuiCircularProgress',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, styles[ownerState.variant], styles[`color${capitalize(ownerState.color)}`]];\n }\n})(memoTheme(({\n theme\n}) => ({\n display: 'inline-block',\n variants: [{\n props: {\n variant: 'determinate'\n },\n style: {\n transition: theme.transitions.create('transform')\n }\n }, {\n props: {\n variant: 'indeterminate'\n },\n style: rotateAnimation || {\n animation: `${circularRotateKeyframe} 1.4s linear infinite`\n }\n }, ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color]) => ({\n props: {\n color\n },\n style: {\n color: (theme.vars || theme).palette[color].main\n }\n }))]\n})));\nconst CircularProgressSVG = styled('svg', {\n name: 'MuiCircularProgress',\n slot: 'Svg'\n})({\n display: 'block' // Keeps the progress centered\n});\nconst CircularProgressCircle = styled('circle', {\n name: 'MuiCircularProgress',\n slot: 'Circle',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.circle, styles[`circle${capitalize(ownerState.variant)}`], ownerState.disableShrink && styles.circleDisableShrink];\n }\n})(memoTheme(({\n theme\n}) => ({\n stroke: 'currentColor',\n variants: [{\n props: {\n variant: 'determinate'\n },\n style: {\n transition: theme.transitions.create('stroke-dashoffset')\n }\n }, {\n props: {\n variant: 'indeterminate'\n },\n style: {\n // Some default value that looks fine waiting for the animation to kicks in.\n strokeDasharray: '80px, 200px',\n strokeDashoffset: 0 // Add the unit to fix a Edge 16 and below bug.\n }\n }, {\n props: ({\n ownerState\n }) => ownerState.variant === 'indeterminate' && !ownerState.disableShrink,\n style: dashAnimation || {\n // At runtime for Pigment CSS, `bufferAnimation` will be null and the generated keyframe will be used.\n animation: `${circularDashKeyframe} 1.4s ease-in-out infinite`\n }\n }]\n})));\nconst CircularProgressTrack = styled('circle', {\n name: 'MuiCircularProgress',\n slot: 'Track'\n})(memoTheme(({\n theme\n}) => ({\n stroke: 'currentColor',\n opacity: (theme.vars || theme).palette.action.activatedOpacity\n})));\n\n/**\n * ## ARIA\n *\n * If the progress bar is describing the loading progress of a particular region of a page,\n * you should use `aria-describedby` to point to the progress bar, and set the `aria-busy`\n * attribute to `true` on that region until it has finished loading.\n */\nconst CircularProgress = /*#__PURE__*/React.forwardRef(function CircularProgress(inProps, ref) {\n const props = useDefaultProps({\n props: inProps,\n name: 'MuiCircularProgress'\n });\n const {\n className,\n color = 'primary',\n disableShrink = false,\n enableTrackSlot = false,\n size = 40,\n style,\n thickness = 3.6,\n value = 0,\n variant = 'indeterminate',\n ...other\n } = props;\n const ownerState = {\n ...props,\n color,\n disableShrink,\n size,\n thickness,\n value,\n variant,\n enableTrackSlot\n };\n const classes = useUtilityClasses(ownerState);\n const circleStyle = {};\n const rootStyle = {};\n const rootProps = {};\n if (variant === 'determinate') {\n const circumference = 2 * Math.PI * ((SIZE - thickness) / 2);\n circleStyle.strokeDasharray = circumference.toFixed(3);\n rootProps['aria-valuenow'] = Math.round(value);\n circleStyle.strokeDashoffset = `${((100 - value) / 100 * circumference).toFixed(3)}px`;\n rootStyle.transform = 'rotate(-90deg)';\n }\n return /*#__PURE__*/_jsx(CircularProgressRoot, {\n className: clsx(classes.root, className),\n style: {\n width: size,\n height: size,\n ...rootStyle,\n ...style\n },\n ownerState: ownerState,\n ref: ref,\n role: \"progressbar\",\n ...rootProps,\n ...other,\n children: /*#__PURE__*/_jsxs(CircularProgressSVG, {\n className: classes.svg,\n ownerState: ownerState,\n viewBox: `${SIZE / 2} ${SIZE / 2} ${SIZE} ${SIZE}`,\n children: [enableTrackSlot ? /*#__PURE__*/_jsx(CircularProgressTrack, {\n className: classes.track,\n ownerState: ownerState,\n cx: SIZE,\n cy: SIZE,\n r: (SIZE - thickness) / 2,\n fill: \"none\",\n strokeWidth: thickness,\n \"aria-hidden\": \"true\"\n }) : null, /*#__PURE__*/_jsx(CircularProgressCircle, {\n className: classes.circle,\n style: circleStyle,\n ownerState: ownerState,\n cx: SIZE,\n cy: SIZE,\n r: (SIZE - thickness) / 2,\n fill: \"none\",\n strokeWidth: thickness\n })]\n })\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? CircularProgress.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The color of the component.\n * It supports both default and custom theme colors, which can be added as shown in the\n * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n * @default 'primary'\n */\n color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['inherit', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n /**\n * If `true`, the shrink animation is disabled.\n * This only works if variant is `indeterminate`.\n * @default false\n */\n disableShrink: chainPropTypes(PropTypes.bool, props => {\n if (props.disableShrink && props.variant && props.variant !== 'indeterminate') {\n return new Error('MUI: You have provided the `disableShrink` prop ' + 'with a variant other than `indeterminate`. This will have no effect.');\n }\n return null;\n }),\n /**\n * If `true`, a track circle slot is mounted to show a subtle background for the progress.\n * The `size` and `thickness` apply to the track slot to be consistent with the progress circle.\n * @default false\n */\n enableTrackSlot: PropTypes.bool,\n /**\n * The size of the component.\n * If using a number, the pixel unit is assumed.\n * If using a string, you need to provide the CSS unit, for example '3rem'.\n * @default 40\n */\n size: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * @ignore\n */\n style: PropTypes.object,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The thickness of the circle.\n * @default 3.6\n */\n thickness: PropTypes.number,\n /**\n * The value of the progress indicator for the determinate variant.\n * Value between 0 and 100.\n * @default 0\n */\n value: PropTypes.number,\n /**\n * The variant to use.\n * Use indeterminate when there is no progress value.\n * @default 'indeterminate'\n */\n variant: PropTypes.oneOf(['determinate', 'indeterminate'])\n} : void 0;\nexport default CircularProgress;","import { Stack, type SxProps, type Theme } from '@mui/material';\r\nimport React from 'react';\r\nimport CircularProgress from '@mui/material/CircularProgress';\r\nimport { STYLE } from '../../common/constant';\r\n\r\nexport interface LoadingComponentProps {\r\n color?: string;\r\n size?: 'large' | 'small' | 'medium';\r\n sx?: SxProps<Theme>;\r\n}\r\n\r\nexport const LoadingComponent: React.FC<LoadingComponentProps> = ({ color, size = 'medium', sx = {} }) => {\r\n return (\r\n <Stack\r\n sx={{\r\n ...sx,\r\n flex: 1,\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n }}\r\n >\r\n <CircularProgress size={STYLE.FONT_SIZE_LOADING[size]} sx={{ color }} />\r\n </Stack>\r\n );\r\n};\r\n","import { useMemo, useState } from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { useLocation } from 'react-router-dom';\r\nimport { SYSTEM_MODULES } from '../common/constant/apps.constant';\r\nimport { AppCategory } from '../common/enums/app-category.enum';\r\nimport type { GlobalReduxState } from '../redux/store.interface';\r\nimport { PAGE } from '../router/route.constant';\r\n\r\n// Lấy danh sách apps được lọc theo category và user type\r\nexport const useApps = (tab: AppCategory) => {\r\n const userType = useSelector((state: GlobalReduxState) => state.account.user?.type);\r\n\r\n const listApp = useMemo(() => {\r\n let filteredApps = SYSTEM_MODULES.filter((app) => {\r\n return app.allowUserTypes.includes(userType!);\r\n });\r\n\r\n if (tab !== AppCategory.ALL) {\r\n filteredApps = filteredApps.filter((app) => app.category === tab);\r\n }\r\n\r\n return filteredApps;\r\n }, [tab, userType]);\r\n\r\n return listApp;\r\n};\r\n\r\nexport const useIsSystemMonitor = (): boolean => {\r\n const location = useLocation();\r\n const normalize = (p: string) => p.replace(/\\/+$/, '');\r\n return normalize(location.pathname) === normalize(PAGE.DASHBOARD.path);\r\n};\r\n\r\n//Lấy tất cả apps mà user hiện tại có quyền truy cập.\r\nexport const useAllApps = () => {\r\n const userType = useSelector((state: GlobalReduxState) => state.account.user?.type);\r\n\r\n const allApps = useMemo(() => {\r\n return SYSTEM_MODULES.filter((app) => {\r\n return app.allowUserTypes.includes(userType!);\r\n });\r\n }, [userType]);\r\n\r\n return allApps;\r\n};\r\n\r\n// Tìm sidebar item đang active dựa trên `current_access` trong Redux state.\r\nexport const useActiveSidebar = () => {\r\n const { user, current_access } = useSelector((state: GlobalReduxState) => state.account);\r\n\r\n const activeSidebar = useMemo(() => {\r\n return SYSTEM_MODULES.find(\r\n (it) => it.key === current_access && user && (it.allowUserTypes ? it.allowUserTypes.includes(user?.type) : true),\r\n );\r\n }, [current_access, user]);\r\n\r\n return activeSidebar;\r\n};\r\n\r\n// Hook để quản lý sidebar state (mở/đóng)\r\nexport const useSidebarState = () => {\r\n const [isSidebarOpen, setIsSidebarOpen] = useState(false);\r\n\r\n const openSidebar = () => setIsSidebarOpen(true);\r\n const closeSidebar = () => setIsSidebarOpen(false);\r\n const toggleSidebar = () => setIsSidebarOpen((prev) => !prev);\r\n\r\n return {\r\n isSidebarOpen,\r\n openSidebar,\r\n closeSidebar,\r\n toggleSidebar,\r\n };\r\n};\r\n","import { Badge, List, ListItem, Stack, Typography, useTheme } from '@mui/material';\r\nimport React, { useEffect, useState } from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { useNavigate } from 'react-router-dom';\r\nimport type { Notification } from '../../apis/notification/notification.entities';\r\nimport { NotificationStatus, UpdateNotificationAction } from '../../apis/notification/notification.enum';\r\nimport { UserMovementSearchType } from '../../apis/user/user.enum';\r\nimport { STYLE } from '../../common/constant';\r\nimport { getLimitLineCss } from '../../common/utils/other/get-limit-line-css.utils';\r\nimport { getErrorMessage } from '../../common/utils/string.utils';\r\nimport { SnackbarType, useSnackbar } from '../../hooks/use-snackbar.hook';\r\nimport { ACTION_ACCOUNT } from '../../redux';\r\nimport type { GlobalReduxState } from '../../redux/store.interface';\r\nimport { useAppDispatch } from '../../redux/store.redux';\r\nimport { DASHBOARD_SCREEN, PAGE } from '../../router/route.constant';\r\nimport { IconElement } from '../elements/icon/icon.element';\r\nimport { ImageContentTimeComponent } from '../elements/image/image-name-time.component';\r\nimport { TooltipOnClickElement } from '../elements/tooltip/tooltip-on-click.element';\r\nimport { EmptyComponent } from '../empty/empty.component';\r\nimport { LoadingComponent } from '../loading/loading.component';\r\nimport { StackRow, StackRowAlignCenter } from '../styles/stack.style';\r\nimport { notificationApi } from '../../apis';\r\nimport { useIsSystemMonitor } from '../../hooks/use-apps.hook';\r\n\r\nexport interface BellComponentProps { }\r\n\r\nexport const BellComponent: React.FC<BellComponentProps> = ({ }) => {\r\n const isSystemMonitor = useIsSystemMonitor();\r\n const { notificationCount } = useSelector((state: GlobalReduxState) => state.account);\r\n const account = useSelector((state: GlobalReduxState) => state.account);\r\n\r\n const dispatch = useAppDispatch();\r\n const navigate = useNavigate();\r\n const { palette } = useTheme();\r\n const { showSnackbar } = useSnackbar();\r\n\r\n const [open, setOpen] = useState(false);\r\n\r\n const [list, setList] = useState<Notification[]>([]);\r\n\r\n const [loading, setLoading] = useState(false);\r\n\r\n const handleGetListNotification = async () => {\r\n setLoading(true);\r\n try {\r\n const res = await notificationApi.getListNotification({\r\n status: NotificationStatus.NOT_VIEWED,\r\n page: 0,\r\n take: 0,\r\n });\r\n\r\n setList(res.list);\r\n dispatch(ACTION_ACCOUNT.changeNotificationCount(res.total));\r\n } catch (error) {\r\n showSnackbar({ message: getErrorMessage(error), type: SnackbarType.ERROR });\r\n } finally {\r\n setLoading(false);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n (async () => await handleGetListNotification())();\r\n }, []);\r\n\r\n const clickNotification = async (notification: Notification) => {\r\n setOpen(false);\r\n const isMyProposal = notification?.createdById === account.user!.id;\r\n try {\r\n await notificationApi.updateNotification({\r\n updateNotificationAction: UpdateNotificationAction.VIEW_ONE,\r\n id: notification.id,\r\n });\r\n\r\n dispatch(ACTION_ACCOUNT.changeNotificationCount(notificationCount - 1));\r\n\r\n navigate(notification.path || PAGE.DASHBOARD.path, {\r\n state: {\r\n searchType: isMyProposal ? UserMovementSearchType.MY_PROPOSAL : UserMovementSearchType.NEED_APPROVE,\r\n },\r\n });\r\n } catch (error) {\r\n showSnackbar({ message: getErrorMessage(error), type: SnackbarType.ERROR });\r\n }\r\n };\r\n\r\n return (\r\n <TooltipOnClickElement\r\n open={open}\r\n onClickAway={() => setOpen(false)}\r\n placement=\"bottom-end\"\r\n content={\r\n <List\r\n sx={{\r\n display: 'flex',\r\n flexDirection: 'column',\r\n padding: 0,\r\n maxHeight: 500,\r\n overflowY: 'auto',\r\n flex: 1,\r\n width: '300px',\r\n }}\r\n >\r\n <ListItem\r\n sx={{\r\n padding: STYLE.PADDING_GAP_ITEM,\r\n display: 'flex',\r\n flexDirection: 'row',\r\n justifyContent: 'space-between',\r\n alignItems: 'center',\r\n position: 'sticky',\r\n top: 0,\r\n backgroundColor: palette.background.paper,\r\n zIndex: 1,\r\n }}\r\n >\r\n <Typography variant=\"subtitle1\">Thông báo</Typography>\r\n\r\n <StackRow>\r\n <IconElement\r\n sx={{ cursor: 'pointer' }}\r\n icon=\"mark_email_read\"\r\n onClick={async (e) => {\r\n e.stopPropagation();\r\n try {\r\n await notificationApi.updateNotification({\r\n updateNotificationAction: UpdateNotificationAction.VIEW_ALL,\r\n });\r\n dispatch(ACTION_ACCOUNT.changeNotificationCount(0));\r\n } catch (error) {\r\n showSnackbar({ message: getErrorMessage(error), type: SnackbarType.ERROR });\r\n }\r\n }}\r\n />\r\n\r\n <IconElement\r\n icon=\"settings\"\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n // setOpen(false);\r\n // navigate(PAGE.DASHBOARD.path + DASHBOARD_SCREEN.NOTIFICATION.path);\r\n }}\r\n />\r\n </StackRow>\r\n </ListItem>\r\n\r\n {loading ? (\r\n <StackRowAlignCenter sx={{ height: 50 }}>\r\n <LoadingComponent />\r\n </StackRowAlignCenter>\r\n ) : list.length === 0 ? (\r\n <EmptyComponent />\r\n ) : (\r\n list.map((notification) => (\r\n <ListItem\r\n onClick={() => clickNotification(notification)}\r\n key={notification.id}\r\n id={notification.id}\r\n sx={{\r\n borderRadius: STYLE.BORDER_RADIUS_ELEMENT,\r\n padding: STYLE.PADDING_GAP_ITEM,\r\n display: 'flex',\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n cursor: 'pointer',\r\n transition: STYLE.TRANSITION_TIME,\r\n '&:hover': {\r\n backgroundColor: palette.action.hover,\r\n color: palette.primary.main,\r\n },\r\n }}\r\n >\r\n <Stack gap={1}>\r\n <ImageContentTimeComponent\r\n url={notification.createdBy?.url || ''}\r\n content={notification.title}\r\n time={notification.createdAt}\r\n />\r\n\r\n <Typography variant=\"caption\" sx={{ ...getLimitLineCss(2) }}>\r\n {notification.content}\r\n </Typography>\r\n </Stack>\r\n </ListItem>\r\n ))\r\n )}\r\n </List>\r\n }\r\n >\r\n <Badge\r\n onClick={async () => {\r\n setOpen(!open);\r\n await handleGetListNotification();\r\n }}\r\n badgeContent={notificationCount}\r\n color=\"error\"\r\n sx={{ cursor: 'pointer' }}\r\n >\r\n <IconElement\r\n icon=\"notifications\"\r\n onClick={() => setOpen(!open)}\r\n size=\"large\"\r\n sx={{\r\n color: isSystemMonitor ? palette.background.default : palette.primary.main,\r\n '&:hover': { color: isSystemMonitor ? palette.background.default : palette.primary.main },\r\n }}\r\n />\r\n </Badge>\r\n </TooltipOnClickElement>\r\n );\r\n};\r\n","import { Stack, Typography, useTheme, type SxProps } from '@mui/material';\r\nimport React from 'react'; \r\nimport { AvatarElement } from './avatar.element';\r\nimport type { SizeProps } from './avatar-enum.enum';\r\nimport { useIsSystemMonitor } from '../../hooks/use-apps.hook';\r\nimport { STYLE } from '../../common/constant';\r\nimport { StackRow } from '../styles/stack.style';\r\nimport { getLimitLineCss } from '../../common/utils/other/get-limit-line-css.utils';\r\nimport { TYPOGRAPHY_STYLES } from '../../common/constant/typography.constant';\r\n\r\ninterface AvatarUserInfoProps {\r\n name: string;\r\n url?: string;\r\n positions?: string[];\r\n maxWidth?: string | number;\r\n isTag?: boolean;\r\n sxName?: SxProps;\r\n sxPosition?: SxProps;\r\n sizeAvatar?: SizeProps;\r\n}\r\n\r\nexport const AvatarUserInfo: React.FC<AvatarUserInfoProps> = ({\r\n name,\r\n url,\r\n positions = [],\r\n maxWidth = '440px',\r\n isTag = false,\r\n sxName,\r\n sxPosition,\r\n sizeAvatar = 'large',\r\n}) => {\r\n const { palette } = useTheme();\r\n const isSystemMonitor = useIsSystemMonitor();\r\n\r\n return (\r\n <StackRow sx={{ alignItems: 'center', gap: STYLE.PADDING_GAP_ITEM }}>\r\n <AvatarElement url={url} size={sizeAvatar} />\r\n {positions.length > 0 ? (\r\n <Stack sx={{ gap: 0 }}>\r\n <Typography\r\n sx={{\r\n color: isSystemMonitor ? palette.primary.contrastText : palette.text.secondary,\r\n fontWeight: '600',\r\n fontSize: '14px',\r\n lineHeight: '20px',\r\n ...getLimitLineCss(1),\r\n ...sxName,\r\n }}\r\n >\r\n {name}\r\n </Typography>\r\n\r\n <Typography\r\n variant=\"caption\"\r\n sx={{\r\n ...getLimitLineCss(1),\r\n color: palette.text.disabled,\r\n maxWidth,\r\n ...(isTag && {\r\n display: 'flex',\r\n padding: '2px 4px',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n gap: '10px',\r\n borderRadius: '4px',\r\n background: ' #EFF8FF',\r\n color: ' #035388',\r\n width: 'fit-content',\r\n ...sxPosition,\r\n }),\r\n }}\r\n >\r\n {positions.join(' / ')}\r\n </Typography>\r\n </Stack>\r\n ) : (\r\n <Typography sx={{ ...TYPOGRAPHY_STYLES.textSm.semiBold, ...getLimitLineCss(1), ...sxName }}>{name}</Typography>\r\n )}\r\n </StackRow>\r\n );\r\n};\r\n","import { Typography, type SxProps, type Theme } from '@mui/material';\r\nimport React from 'react';\r\nimport { STYLE } from '../../../common/constant';\r\nimport { getLimitLineCss } from '../../../common/utils/other/get-limit-line-css.utils';\r\nimport { StackRowAlignCenter } from '../../styles/stack.style';\r\nimport { IconElement, type IconElementProps } from './icon.element';\r\n\r\nexport interface IconContentElementProps extends IconElementProps {\r\n content: any;\r\n size?: 'large' | 'small' | 'medium';\r\n onClick?: (event: React.MouseEvent<HTMLDivElement>) => void;\r\n sx?: SxProps<Theme>;\r\n sxIcon?: SxProps<Theme>;\r\n sxText?: SxProps<Theme>;\r\n applyCssOnClick?: boolean;\r\n id?: string;\r\n isNowrap?: boolean;\r\n}\r\n\r\nexport const IconContentElement: React.FC<IconContentElementProps> = ({\r\n icon,\r\n content,\r\n size,\r\n color = 'inherit',\r\n onClick,\r\n sx = {},\r\n sxIcon = {},\r\n sxText = {},\r\n fill = 0,\r\n applyCssOnClick,\r\n id,\r\n isNowrap = false,\r\n}) => {\r\n if (onClick || applyCssOnClick)\r\n sx = {\r\n ...sx,\r\n cursor: 'pointer',\r\n };\r\n\r\n return (\r\n <StackRowAlignCenter\r\n onClick={onClick}\r\n sx={{ gap: STYLE.GAP_ICON_CONTENT_BY_SIZE[size || 'medium'], ...sx }}\r\n id={id}\r\n >\r\n {icon && <IconElement icon={icon!} sx={sxIcon} color={color} fill={fill} />}\r\n\r\n {content && (\r\n <Typography\r\n color={color}\r\n variant={size ? STYLE.VARIANT_BY_SIZE[size] : 'body1'}\r\n sx={{\r\n ...(isNowrap ? { whiteSpace: 'nowrap' } : getLimitLineCss(1)),\r\n transform: `translateY(0.5px)`,\r\n ...sxText,\r\n }}\r\n >\r\n {content}\r\n </Typography>\r\n )}\r\n </StackRowAlignCenter>\r\n );\r\n};\r\n","import { FormControl, RadioGroup, type SxProps, type Theme } from '@mui/material';\r\nimport React, { type ReactNode } from 'react';\r\nimport { STYLE } from '../../../common/constant';\r\nimport { InputLabel } from '@mui/material';\r\nimport { IconElement } from '../icon/icon.element';\r\nimport { StackLabel } from '../../styles/stack.style';\r\n\r\nexport interface RadioGroupElementProps {\r\n name?: string;\r\n direction?: 'row' | 'column';\r\n label?: string;\r\n iconLabel?: string;\r\n disabled?: boolean;\r\n defaultValue?: any;\r\n value?: any;\r\n onChange?: (event: React.ChangeEvent<HTMLInputElement> | any) => void;\r\n children: ReactNode;\r\n required?: boolean;\r\n sx?: SxProps<Theme>;\r\n}\r\n\r\nexport const RadioGroupElement: React.FC<RadioGroupElementProps> = ({\r\n name,\r\n direction = 'row',\r\n label,\r\n disabled,\r\n iconLabel = 'event_list',\r\n defaultValue,\r\n value,\r\n onChange,\r\n children,\r\n required = false,\r\n sx = {},\r\n}) => {\r\n const change = (event: React.ChangeEvent<HTMLInputElement>) => {\r\n onChange && onChange({ target: { name, value: event.target.value || undefined } });\r\n };\r\n\r\n return (\r\n <FormControl disabled={disabled} sx={{ gap: STYLE.PADDING_GAP_ITEM }} onChange={change}>\r\n {label && (\r\n <InputLabel\r\n shrink\r\n required={required}\r\n sx={{\r\n transform: 'translate(0px , -9px) scale(0.75)',\r\n zIndex: 2,\r\n display: 'flex',\r\n }} // Số này lấy từ default theme\r\n >\r\n <StackLabel>\r\n <IconElement icon={iconLabel} sx={{ fontSize: STYLE.TEXT_FIELD.FONT_SIZE_LABEL }} />\r\n {label}\r\n </StackLabel>\r\n </InputLabel>\r\n )}\r\n <RadioGroup\r\n name={name}\r\n defaultValue={defaultValue}\r\n value={value}\r\n sx={{\r\n flexDirection: direction,\r\n paddingTop: label ? 'calc(8.5px + 1.5px)' : 0, // 8.5 lấy từ default theme không phải tự nhiên mà có\r\n gap: STYLE.PADDING_GAP_LAYOUT,\r\n ...sx,\r\n }}\r\n >\r\n {children}\r\n </RadioGroup>\r\n </FormControl>\r\n );\r\n};\r\n","import { FormControlLabel, Radio, type RadioProps } from '@mui/material';\r\nimport React from 'react';\r\nimport { STYLE } from '../../../common/constant';\r\n\r\nexport interface RadioElementProps extends RadioProps {\r\n name?: string;\r\n label: any;\r\n}\r\n\r\nexport const RadioElement: React.FC<RadioElementProps> = ({ name, label, ...rest }) => {\r\n return (\r\n <FormControlLabel\r\n name={name}\r\n label={label}\r\n sx={{ alignItems: 'center', mr: 0 }}\r\n control={\r\n <Radio\r\n {...rest}\r\n sx={{\r\n paddingTop: 0,\r\n paddingBottom: 0,\r\n paddingRight: STYLE.PADDING_GAP_ITEM,\r\n marginLeft: '2px',\r\n '&:hover': { backgroundColor: 'unset' },\r\n '& .MuiSvgIcon-root': { fontSize: '18px' },\r\n }}\r\n />\r\n }\r\n />\r\n );\r\n};\r\n","import { Box, Divider, Menu, MenuItem, Typography } from '@mui/material';\r\nimport { Stack } from '@mui/system';\r\nimport React, { useState } from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { useNavigate } from 'react-router-dom';\r\nimport { LogoutType } from '../../apis/auth/auth.enum';\r\nimport { getLimitLineCss } from '../../common/utils/other/get-limit-line-css.utils';\r\nimport { getErrorMessage } from '../../common/utils/string.utils';\r\nimport { SnackbarType, useSnackbar } from '../../hooks/use-snackbar.hook';\r\nimport { ACTION_ACCOUNT } from '../../redux';\r\nimport { useAppDispatch } from '../../redux/store.redux';\r\nimport { DASHBOARD_SCREEN, PAGE } from '../../router/route.constant';\r\nimport { IconElement } from '../elements/icon/icon.element';\r\nimport { StackRowAlignStartJustBetween } from '../styles/stack.style';\r\nimport type { GlobalReduxState } from '../../redux/store.interface';\r\nimport { AvatarUserInfo } from '../avatar/avatar-user-info.element';\r\nimport { IconContentElement } from '../elements/icon/icon-content.element';\r\nimport { RadioGroupElement } from '../elements/radio/radio-group.element';\r\nimport { RadioElement } from '../elements/radio/radio.element';\r\n\r\nexport interface AvatarUserComponentProps { }\r\n\r\nexport const AvatarUserComponent: React.FC<AvatarUserComponentProps> = ({ }) => {\r\n const account = useSelector((state: GlobalReduxState) => state.account);\r\n const { showSnackbar } = useSnackbar();\r\n const dispatch = useAppDispatch();\r\n const navigate = useNavigate();\r\n const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null);\r\n const positions = account?.user?.managedOrgUnits?.map((e) => e.name) || [];\r\n\r\n\r\n const menu = [ \r\n {\r\n content: 'Đăng xuất khỏi thiết bị',\r\n icon: 'logout',\r\n onClick: async () => {\r\n try { \r\n await Promise.all([\r\n dispatch(\r\n ACTION_ACCOUNT.logout({ type: LogoutType.THIS_DEVICE, refreshToken: account.refreshToken }),\r\n ).unwrap(),\r\n dispatch(ACTION_ACCOUNT.unsubscribeTopic({ fcmToken: account.fcmToken })).unwrap(),\r\n ]); \r\n navigate(PAGE.AUTH.path);\r\n } catch (error) {\r\n showSnackbar({ message: getErrorMessage(error), type: SnackbarType.ERROR });\r\n }\r\n },\r\n },\r\n {\r\n content: 'Đăng xuất khỏi tất cả thiết bị',\r\n icon: 'exit_to_app',\r\n onClick: async () => {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker\r\n .getRegistrations()\r\n .then((registrations) => {\r\n registrations.forEach((registration) => {\r\n registration.unregister();\r\n });\r\n })\r\n .catch((error) => {\r\n console.error('Error unregistering Service Workers: ', error);\r\n });\r\n } else {\r\n console.warn('Service Worker is not supported in this browser.');\r\n }\r\n\r\n await Promise.all([\r\n dispatch(\r\n ACTION_ACCOUNT.logout({ type: LogoutType.THIS_DEVICE, refreshToken: account.refreshToken }),\r\n ).unwrap(),\r\n\r\n dispatch(ACTION_ACCOUNT.unsubscribeTopic({ fcmToken: account.fcmToken })).unwrap(),\r\n ]); \r\n navigate(PAGE.AUTH.path);\r\n },\r\n },\r\n ];\r\n\r\n const handleClick = (event: React.MouseEvent<HTMLElement>) => {\r\n setAnchorEl(event.currentTarget);\r\n };\r\n\r\n const handleClose = () => {\r\n setAnchorEl(null);\r\n };\r\n\r\n return (\r\n <>\r\n <Box onClick={handleClick} sx={{ cursor: 'pointer', display: 'flex', alignItems: 'center', gap: 1 }}>\r\n <AvatarUserInfo url={account.user?.url} name={account.user?.name ?? ''} positions={positions} isTag />\r\n <IconElement\r\n icon=\"arrow_drop_down\"\r\n size=\"medium\"\r\n sx={{\r\n color: 'text.secondary',\r\n transition: 'transform 0.2s ease-in-out',\r\n transform: anchorEl ? 'rotate(180deg)' : 'rotate(0deg)',\r\n fontVariationSettings: \"'wght' 600, 'FILL' 0\",\r\n willChange: 'transform',\r\n backfaceVisibility: 'hidden',\r\n }}\r\n />\r\n </Box>\r\n <Menu\r\n anchorEl={anchorEl}\r\n open={Boolean(anchorEl)}\r\n onClose={handleClose}\r\n onClick={handleClose}\r\n disableScrollLock={true}\r\n PaperProps={{\r\n elevation: 0,\r\n sx: {\r\n overflow: 'visible',\r\n filter: 'drop-shadow(0px 2px 8px rgba(0,0,0,0.32))',\r\n mt: 1.5,\r\n transform: 'translate3d(0, 0, 0)',\r\n willChange: 'transform',\r\n '& .MuiAvatar-root': {\r\n width: 32,\r\n height: 32,\r\n ml: -0.5,\r\n mr: 1,\r\n },\r\n '&:before': {\r\n content: '\"\"',\r\n display: 'block',\r\n position: 'absolute',\r\n top: 0,\r\n right: 14,\r\n width: 10,\r\n height: 10,\r\n bgcolor: 'background.paper',\r\n transform: 'translateY(-50%) rotate(45deg)',\r\n zIndex: 0,\r\n },\r\n },\r\n }}\r\n transformOrigin={{ horizontal: 'right', vertical: 'top' }}\r\n anchorOrigin={{ horizontal: 'right', vertical: 'bottom' }}\r\n >\r\n {/* User Info Header */}\r\n <Box sx={{ p: 2 }}>\r\n <StackRowAlignStartJustBetween>\r\n <Typography variant=\"subtitle1\" sx={{ lineHeight: 1 }}>\r\n {account.user?.name}\r\n </Typography>\r\n <IconElement\r\n icon=\"settings\"\r\n onClick={() => navigate(PAGE.DASHBOARD.path + DASHBOARD_SCREEN.ACCOUNT.path)}\r\n />\r\n </StackRowAlignStartJustBetween>\r\n\r\n {account.user?.userOrgUnitPositions && account.user.userOrgUnitPositions.length > 0 && (\r\n <React.Fragment>\r\n <IconContentElement icon=\"admin_panel_settings\" content=\"Vai trò\" />\r\n\r\n <RadioGroupElement\r\n direction=\"column\"\r\n sx={{ paddingLeft: '20px' }}\r\n value={account.userUnitPositionId}\r\n onChange={(event) => {\r\n dispatch(ACTION_ACCOUNT.updatePositionOrgUnit(event.target.value));\r\n window.location.reload();\r\n }}\r\n >\r\n {account.user.userOrgUnitPositions.map((e) => (\r\n <RadioElement\r\n key={e.id}\r\n value={e.id}\r\n size=\"small\"\r\n label={\r\n <Stack gap={0}>\r\n <Typography>{e.orgUnit.name}</Typography>\r\n <Typography variant=\"caption\" sx={{ ...getLimitLineCss(1), color: 'text.disabled' }}>\r\n {e.position.name}\r\n </Typography>\r\n </Stack>\r\n }\r\n />\r\n ))}\r\n </RadioGroupElement>\r\n </React.Fragment>\r\n )}\r\n </Box>\r\n\r\n <Divider />\r\n\r\n {/* Menu Items */}\r\n {menu.map((item, index) => (\r\n <MenuItem key={index} onClick={item.onClick}>\r\n <IconElement icon={item.icon} size=\"small\" sx={{ mr: 1 }} />\r\n <Typography>{item.content}</Typography>\r\n </MenuItem>\r\n ))}\r\n </Menu>\r\n </>\r\n );\r\n};\r\n","import { Stack } from \"@mui/system\";\r\nimport { type ReactNode } from \"react\";\r\nimport { STYLE } from \"../../../common/constant\";\r\nimport {\r\n StackRowAlignCenter,\r\n StackRowJustBetween,\r\n} from \"../../../components/styles/stack.style\";\r\nimport { LogoComponent } from \"../../../components/logo/logo.component\";\r\nimport { BellComponent } from \"../../../components/bell/bell.component\";\r\nimport { AvatarUserComponent } from \"../../../components/avatar-user/avatar-user.component\";\r\n\r\nexport const MonitorPart: React.FC<any> = ({\r\n children,\r\n}: {\r\n children: ReactNode;\r\n}) => {\r\n return (\r\n <Stack\r\n sx={{\r\n minHeight: \"100vh\",\r\n width: \"100%\",\r\n overflowY: \"auto\",\r\n backgroundImage: \"url('/images/image-dashboard.jpg')\",\r\n backgroundSize: \"cover\",\r\n backgroundPosition: \"top\",\r\n backgroundRepeat: \"no-repeat\",\r\n }}\r\n >\r\n <Stack p={{ padding: STYLE.PADDING_GAP_LAYOUT }}>\r\n <StackRowJustBetween>\r\n <StackRowAlignCenter>\r\n <LogoComponent\r\n url={\"/images/logo/logo-sub-3.svg\"}\r\n fillColor=\"white\"\r\n />\r\n </StackRowAlignCenter>\r\n <StackRowAlignCenter>\r\n <BellComponent />\r\n <AvatarUserComponent />\r\n </StackRowAlignCenter>\r\n </StackRowJustBetween>\r\n\r\n {children}\r\n </Stack>\r\n </Stack>\r\n );\r\n};\r\n\r\nexport default MonitorPart;\r\n","\r\nimport React, { type ReactNode } from 'react'; \r\nimport { useUpdateCurrentAccess } from '../hooks/use-update-current-access.hook';\r\nimport MonitorPart from '../pages/dashboard/parts/monitor.part';\r\n\r\nexport interface DashboardLayoutProps {\r\n children?: ReactNode;\r\n}\r\n\r\nexport const DashboardLayout: React.FC<DashboardLayoutProps> = ({ children }) => {\r\n\r\n useUpdateCurrentAccess();\r\n return <MonitorPart>{children}</MonitorPart>;\r\n\r\n};\r\n","import { Stack } from '@mui/material';\r\nimport React, { type ReactNode } from 'react';\r\nimport { STYLE } from '../common/constant';\r\n\r\nexport interface DefaultLayoutProps {\r\n children?: ReactNode;\r\n}\r\n\r\nexport const DefaultLayout: React.FC<DefaultLayoutProps> = ({ children }) => {\r\n return (\r\n <Stack sx={{ backgroundColor: 'background.default', minHeight: '100vh', width: '100%', overflowY: 'auto' }}>\r\n <Stack sx={{ flex: 1, alignItems: 'center', py: STYLE.PADDING_GAP_LAYOUT, justifyContent: 'center' }}>\r\n {children}\r\n </Stack>\r\n </Stack>\r\n );\r\n};\r\n","import { useCallback, useEffect, useState } from 'react'; \r\nimport { getErrorMessage } from '../common/utils/string.utils';\r\nimport { SnackbarType, useSnackbar } from './use-snackbar.hook';\r\n\r\nexport interface TaggedUser {\r\n id: string;\r\n name: string;\r\n url: string;\r\n}\r\n\r\ninterface TagPosition {\r\n start: number;\r\n end: number;\r\n}\r\n\r\ninterface UseTagSelectorReturn {\r\n showTagSelector: boolean;\r\n tagPosition: TagPosition | null;\r\n searchQuery: string;\r\n filteredUsers: TaggedUser[];\r\n selectedUserIndex: number;\r\n users: TaggedUser[];\r\n handleInputChange: (newValue: string) => void;\r\n // handleKeyDown: (e: React.KeyboardEvent) => { newValue: string; newTag: DiscussionTag } | null;\r\n // selectTagUser: (user: TaggedUser) => { newValue: string; newTag: DiscussionTag };\r\n // handleAllTag: () => { newValue: string; newTag: DiscussionTag };\r\n resetTagSelector: () => void;\r\n resetAll: () => void;\r\n setSearchQuery: (query: string) => void;\r\n taggedUserIds: Set<string>; // Thêm danh sách user đã tag\r\n removeTaggedUser: (userId: string) => void;\r\n}\r\n\r\nexport const useTagSelector = (movementId: string): UseTagSelectorReturn => {\r\n const [showTagSelector, setShowTagSelector] = useState(false);\r\n const [tagPosition, setTagPosition] = useState<TagPosition | null>(null);\r\n const [searchQuery, setSearchQuery] = useState('');\r\n const [users, setUsers] = useState<TaggedUser[]>([]);\r\n const [filteredUsers, setFilteredUsers] = useState<TaggedUser[]>([]);\r\n const [selectedUserIndex, setSelectedUserIndex] = useState(0);\r\n const [taggedUserIds, setTaggedUserIds] = useState<Set<string>>(new Set()); // Track những user đã được tag\r\n const { showSnackbar } = useSnackbar();\r\n\r\n // Fetch users for tagging\r\n // useEffect(() => {\r\n // const fetchUsers = async () => {\r\n // try {\r\n // const response = await getUserMovementIdUser(movementId);\r\n // setUsers(response);\r\n // } catch (error) {\r\n // showSnackbar({ message: getErrorMessage(error), type: SnackbarType.ERROR });\r\n // }\r\n // };\r\n // fetchUsers();\r\n // }, []);\r\n\r\n // Filter users based on search query, loại bỏ những user đã được tag\r\n useEffect(() => {\r\n if (searchQuery.trim()) {\r\n const filtered = users\r\n .filter((user) => user.name.toLowerCase().includes(searchQuery.toLowerCase()))\r\n .filter((user) => !taggedUserIds.has(user.id)); // Chỉ hiển thị user chưa được tag\r\n setFilteredUsers(filtered);\r\n setSelectedUserIndex(0);\r\n } else {\r\n const availableUsers = users.filter((user) => !taggedUserIds.has(user?.id)); // Chỉ hiển thị user chưa được tag\r\n setFilteredUsers(availableUsers);\r\n setSelectedUserIndex(0);\r\n }\r\n }, [searchQuery, users, taggedUserIds]);\r\n\r\n // Handle input change and detect @ symbol\r\n const handleInputChange = useCallback((newValue: string) => {\r\n if (newValue?.trim() === '') {\r\n resetAll();\r\n return;\r\n }\r\n const lastAtSymbol = newValue?.lastIndexOf('@');\r\n if (lastAtSymbol !== -1) {\r\n const afterAt = newValue?.substring(lastAtSymbol + 1);\r\n const spaceIndex = afterAt?.indexOf(' ');\r\n\r\n if (spaceIndex === -1) {\r\n // Still typing the tag\r\n setSearchQuery(afterAt);\r\n setTagPosition({ start: lastAtSymbol, end: lastAtSymbol + afterAt.length + 1 });\r\n setShowTagSelector(true);\r\n return;\r\n }\r\n }\r\n\r\n setShowTagSelector(false);\r\n setTagPosition(null);\r\n }, []);\r\n\r\n // Reset tag selector\r\n const resetTagSelector = useCallback(() => {\r\n setShowTagSelector(false);\r\n setTagPosition(null);\r\n setSearchQuery('');\r\n }, []);\r\n\r\n // Select a user and insert tag\r\n // const selectTagUser = useCallback(\r\n // (user: TaggedUser) => {\r\n // if (!tagPosition) {\r\n // return { newValue: '', newTag: {} as DiscussionTag };\r\n // }\r\n\r\n // // Create tag data\r\n // const newTag: DiscussionTag = {\r\n // userId: user.id,\r\n // type: DiscussionTagType.USER,\r\n // index: tagPosition.start,\r\n // length: user.name.length + 1, // +1 for @ symbol\r\n // };\r\n\r\n // // Thêm user vào danh sách đã tag TRƯỚC KHI reset\r\n // setTaggedUserIds((prev) => new Set([...prev, user.id]));\r\n\r\n // // Reset tag selector SAU KHI đã cập nhật taggedUserIds\r\n // resetTagSelector();\r\n\r\n // return { newValue: `@${user.name} `, newTag };\r\n // },\r\n // [tagPosition, resetTagSelector],\r\n // );\r\n\r\n // Handle special tag @all\r\n // const handleAllTag = useCallback(() => {\r\n // if (!tagPosition) {\r\n // return { newValue: '', newTag: {} as DiscussionTag };\r\n // }\r\n\r\n // // Create @all tag\r\n // const newTag: DiscussionTag = {\r\n // type: DiscussionTagType.ALL,\r\n // index: tagPosition.start,\r\n // length: 4, // @all\r\n // };\r\n\r\n // // Reset tag selector SAU KHI đã tạo tag\r\n // resetTagSelector();\r\n\r\n // return { newValue: '@all ', newTag };\r\n // }, [tagPosition, resetTagSelector]);\r\n\r\n // Handle key navigation in tag selector\r\n const handleKeyDown = useCallback(\r\n (e: React.KeyboardEvent) => {\r\n if (!showTagSelector) return null;\r\n\r\n // Tính tổng số options (bao gồm @all + users)\r\n const totalOptions = filteredUsers.length + 1; // +1 for @all option\r\n\r\n switch (e.key) {\r\n case 'ArrowDown':\r\n e.preventDefault();\r\n setSelectedUserIndex((prev) => {\r\n if (totalOptions === 0) return 0;\r\n return prev < totalOptions - 1 ? prev + 1 : 0;\r\n });\r\n break;\r\n case 'ArrowUp':\r\n e.preventDefault();\r\n setSelectedUserIndex((prev) => {\r\n if (totalOptions === 0) return 0;\r\n return prev > 0 ? prev - 1 : totalOptions - 1;\r\n });\r\n break;\r\n case 'Enter':\r\n case 'Tab':\r\n e.preventDefault();\r\n if (totalOptions === 0) return null;\r\n\r\n // if (selectedUserIndex === 0) {\r\n // // Chọn @all\r\n // const result = handleAllTag();\r\n // resetTagSelector();\r\n // return result;\r\n // } else if (selectedUserIndex > 0 && selectedUserIndex <= filteredUsers.length) {\r\n // // Chọn user (index - 1 vì index 0 là @all)\r\n // const userIndex = selectedUserIndex - 1;\r\n // if (filteredUsers[userIndex]) {\r\n // const result = selectTagUser(filteredUsers[userIndex]);\r\n // resetTagSelector();\r\n // return result;\r\n // }\r\n // }\r\n break;\r\n case 'Escape':\r\n resetTagSelector();\r\n break;\r\n }\r\n return null;\r\n },\r\n [showTagSelector, filteredUsers, selectedUserIndex, resetTagSelector],\r\n );\r\n\r\n // Reset hoàn toàn để có thể tag lại\r\n const resetAll = useCallback(() => {\r\n setShowTagSelector(false);\r\n setTagPosition(null);\r\n setSearchQuery('');\r\n setTaggedUserIds(new Set()); // Reset danh sách user đã tag\r\n }, []);\r\n\r\n const removeTaggedUser = useCallback(\r\n (userId: string) => {\r\n setTaggedUserIds((prev) => {\r\n const newSet = new Set(prev);\r\n newSet.delete(userId);\r\n return newSet;\r\n });\r\n },\r\n [taggedUserIds],\r\n );\r\n\r\n return {\r\n showTagSelector,\r\n tagPosition,\r\n searchQuery,\r\n filteredUsers,\r\n selectedUserIndex,\r\n users,\r\n handleInputChange,\r\n // handleKeyDown,\r\n // selectTagUser,\r\n // handleAllTag,\r\n resetTagSelector,\r\n resetAll,\r\n removeTaggedUser,\r\n setSearchQuery,\r\n taggedUserIds, // Export để component cha có thể biết những user nào đã được tag\r\n };\r\n};\r\n","import { useEffect } from \"react\";\r\n\r\nexport const useVersionCheck = (options?: { interval?: number }) => {\r\n useEffect(() => {\r\n let currentVersion = localStorage.getItem(\"app_version\");\r\n\r\n const checkVersion = async () => {\r\n try {\r\n const res = await fetch(\"/version.json\", { cache: \"no-store\" });\r\n const data = await res.json();\r\n\r\n // Lần chạy đầu tiên: lưu version hiện tại\r\n if (!currentVersion) {\r\n localStorage.setItem(\"app_version\", data.version);\r\n currentVersion = data.version;\r\n return;\r\n }\r\n\r\n // Nếu version mới khác → reload\r\n if (currentVersion !== data.version) {\r\n localStorage.setItem(\"app_version\", data.version);\r\n window.location.reload();\r\n }\r\n } catch (err) {\r\n console.error(\"Failed to check version\", err);\r\n }\r\n };\r\n\r\n checkVersion();\r\n\r\n if (options?.interval && options.interval > 0) {\r\n const timer = setInterval(checkVersion, options.interval);\r\n return () => clearInterval(timer);\r\n }\r\n }, [options?.interval]);\r\n};\r\n","import React from 'react';\r\nimport { Navigate, Route as RouteDom } from 'react-router-dom';\r\nimport { PAGE } from './route.constant';\r\nimport { RouteType } from './route.enum';\r\nimport { UserType } from '../apis/user/user.enum';\r\nimport type { Route } from '../common/interfaces/route.interface';\r\nimport type { GlobalAccountState } from '../redux/account/account.interface';\r\n\r\nexport const renderRoutes = (routes: Route[], account: GlobalAccountState) =>\r\n routes.map((route) => {\r\n const { path, layout, element, type, allowUserTypes = [], children } = route;\r\n\r\n const Layout = layout || React.Fragment;\r\n let Element = element;\r\n\r\n // Redirect nếu đã login mà vào auth\r\n if (path === PAGE.AUTH.path && account.isLogin) Element = () => <Navigate to={PAGE.DASHBOARD.path} />;\r\n\r\n // Logic bảo vệ \r\n if (type === RouteType.PROTECTED)\r\n if (!account.isLogin) Element = () => <Navigate to={PAGE.AUTH.path} />;\r\n else if (\r\n allowUserTypes.length &&\r\n !allowUserTypes.includes(account.user!.type) &&\r\n account.user!.type !== UserType.ROOT\r\n )\r\n Element = () => <Navigate to={PAGE.ERROR.path} />;\r\n\r\n return (\r\n <RouteDom\r\n key={path}\r\n path={path}\r\n element={\r\n <Layout>\r\n\r\n <Element />\r\n </Layout>\r\n }\r\n >\r\n {children && renderRoutes(children, account)}\r\n </RouteDom>\r\n );\r\n });\r\n"],"names":["getStorage_1","getStorage","_typeof","obj","noop","storage","createWebStorage_1","createWebStorage","require$$0","Mode","slice","wrap","toString","cache","isFunction","isObject","isPlainObject","prototype","merge","descriptors","filter","toArray","hasOwnProperty","name","value","AxiosError","utils","toFormData","encode","url","URLSearchParams","FormData","Blob","platform","parser","isFormData","isFileList","transitional","self","AxiosHeaders","isCancel","CanceledError","validateStatus","origin","mergeConfig","protocol","signal","iterator","done","Request","ReadableStream","TextEncoder","fetch","fetchAdapter.getFetch","adapters","VERSION","validators","validator","version","Axios","spread","isAxiosError","HttpStatusCode","CancelToken","all","UserType","UserStatus","Gender","UserMovementType","UserMovementStatus","UserMovementSearchType","UserMovementHistoryField","UserOfficialStatus","UserExportExcelColumn","UserDepartmentStatus","UserDivisionStatus","UserPositionStatus","UserTeamStatus","UserApproveTransferType","UserMovementApproveType","RejectionReason","SubManagerStatus","UserTrackingType","UserPositionType","UserLevel","UserEducationLevel","UserCultureLevel","UserResignType","UserCitizenIdentificationPlace","UserEthnic","UserReligion","UserMaritalStatus","UserBankName","RouteType","refreshToken","DEFAULT_ENTRY_NAME","LogLevel","target","version$1","name$2","name$1","app","ERROR_FACTORY","dbPromise","getDbPromise","getHeaders","getKey","DATABASE_NAME","DATABASE_VERSION","OBJECT_STORE_NAME","store","installationEntry","extractAppConfig","getMissingValueError","MessageType","padding","base64","db","messaging","getMessaging","withNativeBlob","withNativeArrayBuffer","isView","lookup","decode","isBinary","on","globalThis","_a","DEFAULT_TRANSPORTS","toJSON","RESERVED_EVENTS","PacketType","Socket","Engine","socket","SocketNamespace","SocketSystemRoom","SocketSystemEvent","login","logout","resetPassword","subscribeTopic","unsubscribeTopic","LogoutType","RefreshTokenStatus","ResetPasswordType","ForgotPasswordType","updateAccount","NotificationType","UpdateNotificationAction","NotificationStatus","keyNotification","OrgUnitType","OrgUnitStatus","AppCategory","AppType","dark","light","Country","FileTypeEnum","OrderType","PaymentMethod","color","this","r","t","e","n","i","s","u","a","M","m","f","l","$","y","v","g","D","o","d","c","h","React","jsxRuntimeModule","require$$1","jsx","location","styled","ImageSizeType","Fragment","borderRadius","jsxs","height","reactIs_development","reactIsModule","has","values","require$$2","require$$3","require$$4","checker","propTypesModule","_formatErrorMessage","isValidElementType","css","node","style","memoize","breakpointsValues","getValue","styleFunctionSx","re","isCustomProperty","isProcessableValue","processStyleValue","unitless","keyframes","hashString","emSerializeStyles","useDefaultProps","createTheme","shouldSkipGeneratingVar","defaultGetSelector","isString","isNumber","systemAlpha","systemLighten","systemDarken","systemCreateTheme","safeColorChannel","systemCreateGetCssVar","attachColorScheme","defaultShouldSkipGeneratingVar","safeAlpha","safeDarken","safeLighten","safeEmphasize","createSpacing","Component","ForwardRef","Memo","defaultTheme","serializeStyles","rootShouldForwardProp","slotShouldForwardProp","mutateStyles","styledEngineStyled","useSystemDefaultProps","SnackbarType","Stack","CircularProgress","_jsx","_jsxs","maxWidth","RouteDom"],"mappings":"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","x_google_ignoreList":[0,1,2,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,62,63,64,65,66,67,68,69,70,71,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,127,128,129,130,131,137,138,139,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,242,243,244]}
|