@strapi/admin 5.50.0 → 5.50.2
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/admin/admin/src/components/ConfirmDialog.js +2 -2
- package/dist/admin/admin/src/components/ConfirmDialog.js.map +1 -1
- package/dist/admin/admin/src/components/ContentBox.js +3 -3
- package/dist/admin/admin/src/components/ContentBox.js.map +1 -1
- package/dist/admin/admin/src/components/DescriptionComponentRenderer.js +8 -8
- package/dist/admin/admin/src/components/DescriptionComponentRenderer.js.map +1 -1
- package/dist/admin/admin/src/components/DescriptionComponentRenderer.mjs +8 -8
- package/dist/admin/admin/src/components/DescriptionComponentRenderer.mjs.map +1 -1
- package/dist/admin/admin/src/components/ErrorElement.js +4 -4
- package/dist/admin/admin/src/components/ErrorElement.js.map +1 -1
- package/dist/admin/admin/src/components/Form.js +41 -27
- package/dist/admin/admin/src/components/Form.js.map +1 -1
- package/dist/admin/admin/src/components/Form.mjs +41 -27
- package/dist/admin/admin/src/components/Form.mjs.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Date.js +1 -1
- package/dist/admin/admin/src/components/FormInputs/Date.js.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Date.mjs +1 -1
- package/dist/admin/admin/src/components/FormInputs/Date.mjs.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Email.js.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Email.mjs.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Enumeration.js +4 -1
- package/dist/admin/admin/src/components/FormInputs/Enumeration.js.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Enumeration.mjs +4 -1
- package/dist/admin/admin/src/components/FormInputs/Enumeration.mjs.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Json.js +2 -1
- package/dist/admin/admin/src/components/FormInputs/Json.js.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Json.mjs +2 -1
- package/dist/admin/admin/src/components/FormInputs/Json.mjs.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Password.js.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Password.mjs.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Renderer.js +18 -26
- package/dist/admin/admin/src/components/FormInputs/Renderer.js.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Renderer.mjs +20 -28
- package/dist/admin/admin/src/components/FormInputs/Renderer.mjs.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/String.js.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/String.mjs.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Textarea.js.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Textarea.mjs.map +1 -1
- package/dist/admin/admin/src/components/GapDropZone.js +2 -2
- package/dist/admin/admin/src/components/GapDropZone.js.map +1 -1
- package/dist/admin/admin/src/components/GradientBadge.js +3 -3
- package/dist/admin/admin/src/components/GradientBadge.js.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Overview.js +8 -8
- package/dist/admin/admin/src/components/GuidedTour/Overview.js.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Steps/Step.js +4 -4
- package/dist/admin/admin/src/components/GuidedTour/Steps/Step.js.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Steps/Step.mjs.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Tours.js +2 -2
- package/dist/admin/admin/src/components/GuidedTour/Tours.js.map +1 -1
- package/dist/admin/admin/src/components/Layouts/ActionLayout.js +2 -2
- package/dist/admin/admin/src/components/Layouts/ActionLayout.js.map +1 -1
- package/dist/admin/admin/src/components/Layouts/GridLayout.js +2 -2
- package/dist/admin/admin/src/components/Layouts/GridLayout.js.map +1 -1
- package/dist/admin/admin/src/components/Layouts/Layout.js +4 -4
- package/dist/admin/admin/src/components/Layouts/Layout.js.map +1 -1
- package/dist/admin/admin/src/components/LeftMenu.js +3 -3
- package/dist/admin/admin/src/components/LeftMenu.js.map +1 -1
- package/dist/admin/admin/src/components/MainNav/MainNav.js +2 -2
- package/dist/admin/admin/src/components/MainNav/MainNav.js.map +1 -1
- package/dist/admin/admin/src/components/MainNav/MainNavLinks.js +4 -4
- package/dist/admin/admin/src/components/MainNav/MainNavLinks.js.map +1 -1
- package/dist/admin/admin/src/components/MainNav/NavBrand.js +2 -2
- package/dist/admin/admin/src/components/MainNav/NavBrand.js.map +1 -1
- package/dist/admin/admin/src/components/MainNav/NavBurgerMenu.js +3 -3
- package/dist/admin/admin/src/components/MainNav/NavBurgerMenu.js.map +1 -1
- package/dist/admin/admin/src/components/MainNav/NavLink.js +8 -8
- package/dist/admin/admin/src/components/MainNav/NavLink.js.map +1 -1
- package/dist/admin/admin/src/components/MainNav/NavUser.js +7 -7
- package/dist/admin/admin/src/components/MainNav/NavUser.js.map +1 -1
- package/dist/admin/admin/src/components/MainNav/TrialCountdown.js +3 -3
- package/dist/admin/admin/src/components/MainNav/TrialCountdown.js.map +1 -1
- package/dist/admin/admin/src/components/NpsSurvey.js +2 -2
- package/dist/admin/admin/src/components/NpsSurvey.js.map +1 -1
- package/dist/admin/admin/src/components/NpsSurvey.mjs.map +1 -1
- package/dist/admin/admin/src/components/ResizeIndicator.js +6 -6
- package/dist/admin/admin/src/components/ResizeIndicator.js.map +1 -1
- package/dist/admin/admin/src/components/SubNav.js +11 -9
- package/dist/admin/admin/src/components/SubNav.js.map +1 -1
- package/dist/admin/admin/src/components/SubNav.mjs +4 -2
- package/dist/admin/admin/src/components/SubNav.mjs.map +1 -1
- package/dist/admin/admin/src/components/Table.js +9 -5
- package/dist/admin/admin/src/components/Table.js.map +1 -1
- package/dist/admin/admin/src/components/Table.mjs +6 -2
- package/dist/admin/admin/src/components/Table.mjs.map +1 -1
- package/dist/admin/admin/src/components/Theme.js +2 -2
- package/dist/admin/admin/src/components/Theme.js.map +1 -1
- package/dist/admin/admin/src/components/UnauthenticatedLogo.js +2 -2
- package/dist/admin/admin/src/components/UnauthenticatedLogo.js.map +1 -1
- package/dist/admin/admin/src/components/UpsellBanner.js +3 -3
- package/dist/admin/admin/src/components/UpsellBanner.js.map +1 -1
- package/dist/admin/admin/src/components/WidgetRoot.js +4 -7
- package/dist/admin/admin/src/components/WidgetRoot.js.map +1 -1
- package/dist/admin/admin/src/components/WidgetRoot.mjs +1 -1
- package/dist/admin/admin/src/components/WidgetRoot.mjs.map +1 -1
- package/dist/admin/admin/src/components/Widgets.js +5 -5
- package/dist/admin/admin/src/components/Widgets.js.map +1 -1
- package/dist/admin/admin/src/core/apis/Plugin.js.map +1 -1
- package/dist/admin/admin/src/core/apis/Plugin.mjs.map +1 -1
- package/dist/admin/admin/src/core/apis/Widgets.js +1 -1
- package/dist/admin/admin/src/core/apis/Widgets.js.map +1 -1
- package/dist/admin/admin/src/core/apis/Widgets.mjs +1 -1
- package/dist/admin/admin/src/core/apis/Widgets.mjs.map +1 -1
- package/dist/admin/admin/src/core/store/configure.js.map +1 -1
- package/dist/admin/admin/src/core/store/configure.mjs.map +1 -1
- package/dist/admin/admin/src/core/utils/createHook.js.map +1 -1
- package/dist/admin/admin/src/core/utils/createHook.mjs.map +1 -1
- package/dist/admin/admin/src/features/Tracking.js +3 -1
- package/dist/admin/admin/src/features/Tracking.js.map +1 -1
- package/dist/admin/admin/src/features/Tracking.mjs +3 -1
- package/dist/admin/admin/src/features/Tracking.mjs.map +1 -1
- package/dist/admin/admin/src/features/Widgets.js.map +1 -1
- package/dist/admin/admin/src/features/Widgets.mjs.map +1 -1
- package/dist/admin/admin/src/hooks/useMediaQuery.js +4 -4
- package/dist/admin/admin/src/hooks/useMediaQuery.js.map +1 -1
- package/dist/admin/admin/src/hooks/useMenu.js +6 -4
- package/dist/admin/admin/src/hooks/useMenu.js.map +1 -1
- package/dist/admin/admin/src/hooks/useMenu.mjs +6 -4
- package/dist/admin/admin/src/hooks/useMenu.mjs.map +1 -1
- package/dist/admin/admin/src/hooks/useQueryParams.js.map +1 -1
- package/dist/admin/admin/src/hooks/useQueryParams.mjs.map +1 -1
- package/dist/admin/admin/src/hooks/useRBAC.js +1 -1
- package/dist/admin/admin/src/hooks/useRBAC.js.map +1 -1
- package/dist/admin/admin/src/hooks/useRBAC.mjs +1 -1
- package/dist/admin/admin/src/hooks/useRBAC.mjs.map +1 -1
- package/dist/admin/admin/src/hooks/useThrottledCallback.js.map +1 -1
- package/dist/admin/admin/src/hooks/useThrottledCallback.mjs.map +1 -1
- package/dist/admin/admin/src/layouts/AuthenticatedLayout.js +1 -1
- package/dist/admin/admin/src/layouts/AuthenticatedLayout.js.map +1 -1
- package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs +1 -1
- package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs.map +1 -1
- package/dist/admin/admin/src/layouts/UnauthenticatedLayout.js +3 -3
- package/dist/admin/admin/src/layouts/UnauthenticatedLayout.js.map +1 -1
- package/dist/admin/admin/src/pages/Auth/components/Register.js +17 -9
- package/dist/admin/admin/src/pages/Auth/components/Register.js.map +1 -1
- package/dist/admin/admin/src/pages/Auth/components/Register.mjs +15 -7
- package/dist/admin/admin/src/pages/Auth/components/Register.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Home/HomePage.js +2 -2
- package/dist/admin/admin/src/pages/Home/HomePage.js.map +1 -1
- package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.js +3 -6
- package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.js.map +1 -1
- package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.mjs +1 -1
- package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.js +4 -8
- package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.js.map +1 -1
- package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.mjs +1 -1
- package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.js +4 -8
- package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.js.map +1 -1
- package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.mjs +1 -1
- package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/SettingsNav.js +2 -2
- package/dist/admin/admin/src/pages/Settings/components/SettingsNav.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/SettingsNav.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.js +2 -2
- package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.js +2 -2
- package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.js +2 -2
- package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.js +2 -2
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.js +4 -4
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/reducer.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/reducer.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js +3 -11
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs +3 -11
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.js +2 -2
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.js +2 -2
- package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapseLabel.js +2 -2
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapseLabel.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.js +10 -10
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsButton.js +3 -3
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsButton.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.js +5 -5
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/HiddenAction.js +2 -2
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/HiddenAction.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.js +3 -3
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/createArrayOfValues.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/createArrayOfValues.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/components/SelectRoles.js +3 -3
- package/dist/admin/admin/src/pages/Settings/pages/Users/components/SelectRoles.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/Events.js +2 -2
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/Events.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.js +2 -2
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.mjs.map +1 -1
- package/dist/admin/admin/src/reducer.js +3 -3
- package/dist/admin/admin/src/reducer.js.map +1 -1
- package/dist/admin/admin/src/reducer.mjs +4 -4
- package/dist/admin/admin/src/reducer.mjs.map +1 -1
- package/dist/admin/admin/src/render.js +6 -2
- package/dist/admin/admin/src/render.js.map +1 -1
- package/dist/admin/admin/src/render.mjs +6 -2
- package/dist/admin/admin/src/render.mjs.map +1 -1
- package/dist/admin/admin/src/translations/en.json.js +1 -2
- package/dist/admin/admin/src/translations/en.json.js.map +1 -1
- package/dist/admin/admin/src/translations/en.json.mjs +1 -2
- package/dist/admin/admin/src/translations/en.json.mjs.map +1 -1
- package/dist/admin/admin/src/translations/ja.json.js +693 -687
- package/dist/admin/admin/src/translations/ja.json.js.map +1 -1
- package/dist/admin/admin/src/translations/ja.json.mjs +693 -687
- package/dist/admin/admin/src/translations/ja.json.mjs.map +1 -1
- package/dist/admin/admin/src/translations/ko.json.js +157 -1
- package/dist/admin/admin/src/translations/ko.json.js.map +1 -1
- package/dist/admin/admin/src/translations/ko.json.mjs +157 -1
- package/dist/admin/admin/src/translations/ko.json.mjs.map +1 -1
- package/dist/admin/admin/src/translations/pl.json.js +22 -0
- package/dist/admin/admin/src/translations/pl.json.js.map +1 -1
- package/dist/admin/admin/src/translations/pl.json.mjs +22 -0
- package/dist/admin/admin/src/translations/pl.json.mjs.map +1 -1
- package/dist/admin/admin/src/utils/arrays.js.map +1 -1
- package/dist/admin/admin/src/utils/arrays.mjs.map +1 -1
- package/dist/admin/admin/src/utils/baseQuery.js +1 -1
- package/dist/admin/admin/src/utils/baseQuery.js.map +1 -1
- package/dist/admin/admin/src/utils/baseQuery.mjs +1 -1
- package/dist/admin/admin/src/utils/baseQuery.mjs.map +1 -1
- package/dist/admin/admin/src/utils/cookies.js +7 -0
- package/dist/admin/admin/src/utils/cookies.js.map +1 -1
- package/dist/admin/admin/src/utils/cookies.mjs +7 -1
- package/dist/admin/admin/src/utils/cookies.mjs.map +1 -1
- package/dist/admin/admin/src/utils/getFetchClient.js +2 -2
- package/dist/admin/admin/src/utils/getFetchClient.js.map +1 -1
- package/dist/admin/admin/src/utils/getFetchClient.mjs +3 -3
- package/dist/admin/admin/src/utils/getFetchClient.mjs.map +1 -1
- package/dist/admin/admin/src/utils/getProjectType.js +22 -0
- package/dist/admin/admin/src/utils/getProjectType.js.map +1 -0
- package/dist/admin/admin/src/utils/getProjectType.mjs +20 -0
- package/dist/admin/admin/src/utils/getProjectType.mjs.map +1 -0
- package/dist/admin/admin/src/utils/objects.js +43 -11
- package/dist/admin/admin/src/utils/objects.js.map +1 -1
- package/dist/admin/admin/src/utils/objects.mjs +43 -11
- package/dist/admin/admin/src/utils/objects.mjs.map +1 -1
- package/dist/admin/admin/src/utils/once.js.map +1 -1
- package/dist/admin/admin/src/utils/once.mjs.map +1 -1
- package/dist/admin/admin/src/utils/rulesEngine.js +2 -1
- package/dist/admin/admin/src/utils/rulesEngine.js.map +1 -1
- package/dist/admin/admin/src/utils/rulesEngine.mjs +2 -1
- package/dist/admin/admin/src/utils/rulesEngine.mjs.map +1 -1
- package/dist/admin/admin/src/utils/shims.js.map +1 -1
- package/dist/admin/admin/src/utils/shims.mjs.map +1 -1
- package/dist/admin/admin/src/utils/widgetVisibility.js +16 -1
- package/dist/admin/admin/src/utils/widgetVisibility.js.map +1 -1
- package/dist/admin/admin/src/utils/widgetVisibility.mjs +14 -2
- package/dist/admin/admin/src/utils/widgetVisibility.mjs.map +1 -1
- package/dist/admin/ee/admin/src/components/AuditLogs/Widgets.js +2 -2
- package/dist/admin/ee/admin/src/components/AuditLogs/Widgets.js.map +1 -1
- package/dist/admin/ee/admin/src/hooks/useLicenseLimitNotification.js +2 -2
- package/dist/admin/ee/admin/src/hooks/useLicenseLimitNotification.js.map +1 -1
- package/dist/admin/ee/admin/src/hooks/useLicenseLimitNotification.mjs +2 -2
- package/dist/admin/ee/admin/src/hooks/useLicenseLimitNotification.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/AuthPage/components/Login.js +2 -2
- package/dist/admin/ee/admin/src/pages/AuthPage/components/Login.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/AuthPage/components/Providers.js +2 -2
- package/dist/admin/ee/admin/src/pages/AuthPage/components/Providers.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/AuthPage/components/SSOProviders.js +3 -3
- package/dist/admin/ee/admin/src/pages/AuthPage/components/SSOProviders.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/AuthResponse.js +1 -1
- package/dist/admin/ee/admin/src/pages/AuthResponse.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/AuthResponse.mjs +2 -2
- package/dist/admin/ee/admin/src/pages/AuthResponse.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.js +3 -3
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/ComboboxFilter.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/ComboboxFilter.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/Modal.js +2 -2
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/Modal.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.mjs.map +1 -1
- package/dist/admin/shared/utils/auth-cookie-name.js +31 -0
- package/dist/admin/shared/utils/auth-cookie-name.js.map +1 -0
- package/dist/admin/shared/utils/auth-cookie-name.mjs +28 -0
- package/dist/admin/shared/utils/auth-cookie-name.mjs.map +1 -0
- package/dist/admin/src/StrapiApp.d.ts +2 -2
- package/dist/admin/src/components/DescriptionComponentRenderer.d.ts +2 -1
- package/dist/admin/src/components/Form.d.ts +14 -12
- package/dist/admin/src/components/FormInputs/Renderer.d.ts +1 -1
- package/dist/admin/src/components/GuidedTour/Steps/Step.d.ts +1 -1
- package/dist/admin/src/components/SubNav.d.ts +1 -1
- package/dist/admin/src/components/Table.d.ts +3 -2
- package/dist/admin/src/core/apis/Plugin.d.ts +1 -1
- package/dist/admin/src/core/utils/createHook.d.ts +6 -6
- package/dist/admin/src/hooks/useAdminRoles.d.ts +1 -1
- package/dist/admin/src/hooks/useMenu.d.ts +1 -1
- package/dist/admin/src/hooks/useQueryParams.d.ts +2 -1
- package/dist/admin/src/hooks/useThrottledCallback.d.ts +1 -1
- package/dist/admin/src/pages/Settings/pages/ApiTokens/EditView/reducer.d.ts +1 -1
- package/dist/admin/src/pages/Settings/pages/Roles/utils/createArrayOfValues.d.ts +1 -1
- package/dist/admin/src/pages/Settings/pages/Webhooks/hooks/useWebhooks.d.ts +5 -5
- package/dist/admin/src/services/admin.d.ts +6 -6
- package/dist/admin/src/services/api.d.ts +1 -1
- package/dist/admin/src/services/apiTokens.d.ts +2 -2
- package/dist/admin/src/services/auth.d.ts +12 -12
- package/dist/admin/src/services/contentApi.d.ts +1 -1
- package/dist/admin/src/services/contentManager.d.ts +1 -1
- package/dist/admin/src/services/homepage.d.ts +3 -3
- package/dist/admin/src/services/transferTokens.d.ts +1 -1
- package/dist/admin/src/services/users.d.ts +8 -8
- package/dist/admin/src/services/webhooks.d.ts +3 -3
- package/dist/admin/src/utils/arrays.d.ts +1 -1
- package/dist/admin/src/utils/baseQuery.d.ts +1 -1
- package/dist/admin/src/utils/cookies.d.ts +5 -0
- package/dist/admin/src/utils/getFetchClient.d.ts +7 -7
- package/dist/admin/src/utils/getProjectType.d.ts +16 -0
- package/dist/admin/src/utils/objects.d.ts +6 -4
- package/dist/admin/src/utils/once.d.ts +1 -1
- package/dist/admin/src/utils/widgetVisibility.d.ts +11 -0
- package/dist/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useAuditLogsData.d.ts +1 -1
- package/dist/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/tableHeaders.d.ts +2 -1
- package/dist/ee/admin/src/services/ai.d.ts +3 -3
- package/dist/ee/admin/src/services/auditLogs.d.ts +1 -1
- package/dist/ee/server/src/audit-logs/routes/audit-logs.d.ts +1 -1
- package/dist/ee/server/src/controllers/admin.d.ts +2 -0
- package/dist/ee/server/src/controllers/admin.d.ts.map +1 -1
- package/dist/ee/server/src/controllers/authentication-utils/middlewares.d.ts.map +1 -1
- package/dist/ee/server/src/controllers/index.d.ts +2 -0
- package/dist/ee/server/src/controllers/index.d.ts.map +1 -1
- package/dist/ee/server/src/index.d.ts +2 -0
- package/dist/ee/server/src/index.d.ts.map +1 -1
- package/dist/ee/server/src/routes/index.d.ts +2 -2
- package/dist/ee/server/src/routes/sso.d.ts +2 -2
- package/dist/ee/server/src/services/index.d.ts +2 -2
- package/dist/server/ee/server/src/controllers/admin.js +1 -0
- package/dist/server/ee/server/src/controllers/admin.js.map +1 -1
- package/dist/server/ee/server/src/controllers/admin.mjs +1 -0
- package/dist/server/ee/server/src/controllers/admin.mjs.map +1 -1
- package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.js +1 -1
- package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.js.map +1 -1
- package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.mjs +2 -2
- package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.mjs.map +1 -1
- package/dist/server/server/src/services/permission/sections-builder/handlers.js +9 -2
- package/dist/server/server/src/services/permission/sections-builder/handlers.js.map +1 -1
- package/dist/server/server/src/services/permission/sections-builder/handlers.mjs +9 -2
- package/dist/server/server/src/services/permission/sections-builder/handlers.mjs.map +1 -1
- package/dist/server/server/src/services/role.js +5 -1
- package/dist/server/server/src/services/role.js.map +1 -1
- package/dist/server/server/src/services/role.mjs +5 -1
- package/dist/server/server/src/services/role.mjs.map +1 -1
- package/dist/server/server/src/validation/common-validators.js +19 -11
- package/dist/server/server/src/validation/common-validators.js.map +1 -1
- package/dist/server/server/src/validation/common-validators.mjs +19 -11
- package/dist/server/server/src/validation/common-validators.mjs.map +1 -1
- package/dist/server/server/src/validation/permission.js +1 -1
- package/dist/server/server/src/validation/permission.js.map +1 -1
- package/dist/server/server/src/validation/permission.mjs +1 -1
- package/dist/server/server/src/validation/permission.mjs.map +1 -1
- package/dist/server/server/src/validation/role.js +2 -2
- package/dist/server/server/src/validation/role.js.map +1 -1
- package/dist/server/server/src/validation/role.mjs +2 -2
- package/dist/server/server/src/validation/role.mjs.map +1 -1
- package/dist/server/shared/utils/auth-cookie-name.js +31 -0
- package/dist/server/shared/utils/auth-cookie-name.js.map +1 -0
- package/dist/server/shared/utils/auth-cookie-name.mjs +28 -0
- package/dist/server/shared/utils/auth-cookie-name.mjs.map +1 -0
- package/dist/server/shared/utils/session-auth.js +6 -0
- package/dist/server/shared/utils/session-auth.js.map +1 -1
- package/dist/server/shared/utils/session-auth.mjs +6 -1
- package/dist/server/shared/utils/session-auth.mjs.map +1 -1
- package/dist/server/src/controllers/admin.d.ts +3 -3
- package/dist/server/src/controllers/index.d.ts +3 -3
- package/dist/server/src/domain/user.d.ts +1 -1
- package/dist/server/src/index.d.ts +19 -19
- package/dist/server/src/middlewares/index.d.ts +1 -1
- package/dist/server/src/services/index.d.ts +13 -13
- package/dist/server/src/services/permission/sections-builder/handlers.d.ts.map +1 -1
- package/dist/server/src/services/role.d.ts.map +1 -1
- package/dist/server/src/validation/common-validators.d.ts.map +1 -1
- package/dist/server/src/validation/role.d.ts.map +1 -1
- package/dist/shared/utils/__tests__/auth-cookie-name.test.d.ts +1 -0
- package/dist/shared/utils/__tests__/auth-cookie-name.test.d.ts.map +1 -0
- package/dist/shared/utils/__tests__/session-auth.test.d.ts +1 -0
- package/dist/shared/utils/__tests__/session-auth.test.d.ts.map +1 -0
- package/dist/shared/utils/auth-cookie-name.d.ts +14 -0
- package/dist/shared/utils/auth-cookie-name.d.ts.map +1 -0
- package/dist/shared/utils/session-auth.d.ts +1 -0
- package/dist/shared/utils/session-auth.d.ts.map +1 -1
- package/package.json +20 -17
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useRBAC.mjs","sources":["../../../../../admin/src/hooks/useRBAC.ts"],"sourcesContent":["import * as React from 'react';\n\nimport isEqual from 'lodash/isEqual';\n\nimport { useAuth, Permission } from '../features/Auth';\nimport { once } from '../utils/once';\nimport { capitalise } from '../utils/strings';\n\nimport { usePrev } from './usePrev';\n\ntype AllowedActions = Record<string, boolean>;\n\n/**\n * @public\n * @description This hooks takes an object or array of permissions (the latter preferred) and\n * runs through them to match against the current user's permissions as well as the RBAC middleware\n * system checking any conditions that may be present. It returns the filtered permissions as the complete\n * object from the API and a set of actions that can be performed. An action is derived from the last part\n * of the permission action e.g. `admin::roles.create` would be `canCreate`. If there's a hyphen in the action\n * this is removed and capitalised e.g `admin::roles.create-draft` would be `canCreateDraft`.\n * @example\n * ```tsx\n * import { Page, useRBAC } from '@strapi/strapi/admin'\n *\n * const MyProtectedPage = () => {\n * const { allowedActions, isLoading, error, permissions } = useRBAC([{ action: 'admin::roles.create' }])\n *\n * if(isLoading) {\n * return <Page.Loading />\n * }\n *\n * if(error){\n * return <Page.Error />\n * }\n *\n * if(!allowedActions.canCreate) {\n * return null\n * }\n *\n * return <MyPage permissions={permissions} />\n * }\n * ```\n */\nconst useRBAC = (\n permissionsToCheck: Record<string, Permission[]> | Permission[] = [],\n passedPermissions?: Permission[],\n rawQueryContext?: string\n): {\n allowedActions: AllowedActions;\n isLoading: boolean;\n error?: unknown;\n permissions: Permission[];\n} => {\n const isLoadingAuth = useAuth('useRBAC', (state) => state.isLoading);\n const [isLoading, setIsLoading] = React.useState(true);\n const [error, setError] = React.useState<unknown>();\n const [data, setData] = React.useState<Record<string, boolean>>();\n\n const warnOnce = React.useMemo(() => once(console.warn), []);\n\n const actualPermissionsToCheck: Permission[] = React.useMemo(() => {\n if (Array.isArray(permissionsToCheck)) {\n return permissionsToCheck;\n } else {\n warnOnce(\n 'useRBAC: The first argument should be an array of permissions, not an object. This will be deprecated in the future.'\n );\n\n return Object.values(permissionsToCheck).flat();\n }\n }, [permissionsToCheck, warnOnce]);\n\n /**\n * This is the default value we return until the queryResults[i].data\n * are all resolved with data. This preserves the original behaviour.\n */\n const defaultAllowedActions = React.useMemo(() => {\n return actualPermissionsToCheck.reduce<Record<string, boolean>>((acc, permission) => {\n return {\n ...acc,\n [getActionName(permission)]: false,\n };\n }, {});\n }, [actualPermissionsToCheck]);\n\n const checkUserHasPermissions = useAuth('useRBAC'
|
|
1
|
+
{"version":3,"file":"useRBAC.mjs","sources":["../../../../../admin/src/hooks/useRBAC.ts"],"sourcesContent":["import * as React from 'react';\n\nimport isEqual from 'lodash/isEqual';\n\nimport { useAuth, Permission } from '../features/Auth';\nimport { once } from '../utils/once';\nimport { capitalise } from '../utils/strings';\n\nimport { usePrev } from './usePrev';\n\ntype AllowedActions = Record<string, boolean>;\n\n/**\n * @public\n * @description This hooks takes an object or array of permissions (the latter preferred) and\n * runs through them to match against the current user's permissions as well as the RBAC middleware\n * system checking any conditions that may be present. It returns the filtered permissions as the complete\n * object from the API and a set of actions that can be performed. An action is derived from the last part\n * of the permission action e.g. `admin::roles.create` would be `canCreate`. If there's a hyphen in the action\n * this is removed and capitalised e.g `admin::roles.create-draft` would be `canCreateDraft`.\n * @example\n * ```tsx\n * import { Page, useRBAC } from '@strapi/strapi/admin'\n *\n * const MyProtectedPage = () => {\n * const { allowedActions, isLoading, error, permissions } = useRBAC([{ action: 'admin::roles.create' }])\n *\n * if(isLoading) {\n * return <Page.Loading />\n * }\n *\n * if(error){\n * return <Page.Error />\n * }\n *\n * if(!allowedActions.canCreate) {\n * return null\n * }\n *\n * return <MyPage permissions={permissions} />\n * }\n * ```\n */\nconst useRBAC = (\n permissionsToCheck: Record<string, Permission[]> | Permission[] = [],\n passedPermissions?: Permission[],\n rawQueryContext?: string\n): {\n allowedActions: AllowedActions;\n isLoading: boolean;\n error?: unknown;\n permissions: Permission[];\n} => {\n const isLoadingAuth = useAuth('useRBAC', (state) => state.isLoading);\n const [isLoading, setIsLoading] = React.useState(true);\n const [error, setError] = React.useState<unknown>();\n const [data, setData] = React.useState<Record<string, boolean>>();\n\n const warnOnce = React.useMemo(() => once(console.warn), []);\n\n const actualPermissionsToCheck: Permission[] = React.useMemo(() => {\n if (Array.isArray(permissionsToCheck)) {\n return permissionsToCheck;\n } else {\n warnOnce(\n 'useRBAC: The first argument should be an array of permissions, not an object. This will be deprecated in the future.'\n );\n\n return Object.values(permissionsToCheck).flat();\n }\n }, [permissionsToCheck, warnOnce]);\n\n /**\n * This is the default value we return until the queryResults[i].data\n * are all resolved with data. This preserves the original behaviour.\n */\n const defaultAllowedActions = React.useMemo(() => {\n return actualPermissionsToCheck.reduce<Record<string, boolean>>((acc, permission) => {\n return {\n ...acc,\n [getActionName(permission)]: false,\n };\n }, {});\n }, [actualPermissionsToCheck]);\n\n const checkUserHasPermissions = useAuth(\n 'useRBAC',\n (state) => state.checkUserHasPermissions,\n true\n );\n\n const permssionsChecked = usePrev(actualPermissionsToCheck);\n const contextChecked = usePrev(rawQueryContext);\n\n React.useEffect(() => {\n if (\n !isEqual(permssionsChecked, actualPermissionsToCheck) ||\n // TODO: also run this when the query context changes\n contextChecked !== rawQueryContext\n ) {\n setIsLoading(true);\n setData(undefined);\n setError(undefined);\n\n checkUserHasPermissions(actualPermissionsToCheck, passedPermissions, rawQueryContext)\n .then((res) => {\n if (res) {\n setData(\n res.reduce<Record<string, boolean>>((acc, permission) => {\n return {\n ...acc,\n [getActionName(permission)]: true,\n };\n }, {})\n );\n }\n })\n .catch((err) => {\n setError(err);\n })\n .finally(() => {\n setIsLoading(false);\n });\n }\n }, [\n actualPermissionsToCheck,\n checkUserHasPermissions,\n passedPermissions,\n permissionsToCheck,\n permssionsChecked,\n contextChecked,\n rawQueryContext,\n ]);\n\n /**\n * This hook originally would not return allowedActions\n * until all the checks were complete.\n */\n const allowedActions = Object.entries({\n ...defaultAllowedActions,\n ...data,\n }).reduce((acc, [name, allowed]) => {\n acc[`can${capitalise(name)}`] = allowed;\n\n return acc;\n }, {} as AllowedActions);\n\n return {\n allowedActions,\n permissions: actualPermissionsToCheck,\n isLoading: isLoading || isLoadingAuth,\n error,\n };\n};\n\nconst getActionName = (permission: Permission): string => {\n const [action = ''] = permission.action.split('.').slice(-1);\n return action.split('-').map(capitalise).join('');\n};\n\nexport { useRBAC };\nexport type { AllowedActions };\n"],"names":["useRBAC","permissionsToCheck","passedPermissions","rawQueryContext","isLoadingAuth","useAuth","state","isLoading","setIsLoading","React","useState","error","setError","data","setData","warnOnce","useMemo","once","console","warn","actualPermissionsToCheck","Array","isArray","Object","values","flat","defaultAllowedActions","reduce","acc","permission","getActionName","checkUserHasPermissions","permssionsChecked","usePrev","contextChecked","useEffect","isEqual","undefined","then","res","catch","err","finally","allowedActions","entries","name","allowed","capitalise","permissions","action","split","slice","map","join"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useThrottledCallback.js","sources":["../../../../../admin/src/hooks/useThrottledCallback.ts"],"sourcesContent":["import { useMemo } from 'react';\n\nimport throttle from 'lodash/throttle';\n\ntype ThrottleSettings = Parameters<typeof throttle>[2];\n\n/**\n * @internal\n * @description Create a throttled version of a callback\n * @example\n * ```tsx\n * // First create a callback using React’s `useCallback` hook\n * const myCallback = useCallback(() => {\n * // this is not throttled\n * }, [])\n *\n * // Then make a throttled version using the `useThrottledCallback` hook\n * const myThrottledCallback = useThrottledCallback(myCallback, 100)\n *\n * // Call the throttled callback\n * <Button onClick={myThrottledCallback} />\n * ```\n */\nconst useThrottledCallback = <T extends (...args:
|
|
1
|
+
{"version":3,"file":"useThrottledCallback.js","sources":["../../../../../admin/src/hooks/useThrottledCallback.ts"],"sourcesContent":["import { useMemo } from 'react';\n\nimport throttle from 'lodash/throttle';\n\ntype ThrottleSettings = Parameters<typeof throttle>[2];\n\n/**\n * @internal\n * @description Create a throttled version of a callback\n * @example\n * ```tsx\n * // First create a callback using React’s `useCallback` hook\n * const myCallback = useCallback(() => {\n * // this is not throttled\n * }, [])\n *\n * // Then make a throttled version using the `useThrottledCallback` hook\n * const myThrottledCallback = useThrottledCallback(myCallback, 100)\n *\n * // Call the throttled callback\n * <Button onClick={myThrottledCallback} />\n * ```\n */\nconst useThrottledCallback = <T extends (...args: never[]) => unknown>(\n callback: T,\n wait: number,\n options: ThrottleSettings\n): T => {\n const throttledCallback = useMemo(\n () => throttle(callback, wait, options) as unknown as T,\n [callback, options, wait]\n );\n\n return throttledCallback;\n};\n\nexport { useThrottledCallback };\n"],"names":["useThrottledCallback","callback","wait","options","throttledCallback","useMemo","throttle"],"mappings":";;;;;;;;;AAMA;;;;;;;;;;;;;;;;AAgBC,IACD,MAAMA,oBAAAA,GAAuB,CAC3BC,QAAAA,EACAC,IAAAA,EACAC,OAAAA,GAAAA;AAEA,IAAA,MAAMC,oBAAoBC,aAAAA,CACxB,IAAMC,yBAAAA,CAASL,QAAAA,EAAUC,MAAMC,OAAAA,CAAAA,EAC/B;AAACF,QAAAA,QAAAA;AAAUE,QAAAA,OAAAA;AAASD,QAAAA;AAAK,KAAA,CAAA;IAG3B,OAAOE,iBAAAA;AACT;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useThrottledCallback.mjs","sources":["../../../../../admin/src/hooks/useThrottledCallback.ts"],"sourcesContent":["import { useMemo } from 'react';\n\nimport throttle from 'lodash/throttle';\n\ntype ThrottleSettings = Parameters<typeof throttle>[2];\n\n/**\n * @internal\n * @description Create a throttled version of a callback\n * @example\n * ```tsx\n * // First create a callback using React’s `useCallback` hook\n * const myCallback = useCallback(() => {\n * // this is not throttled\n * }, [])\n *\n * // Then make a throttled version using the `useThrottledCallback` hook\n * const myThrottledCallback = useThrottledCallback(myCallback, 100)\n *\n * // Call the throttled callback\n * <Button onClick={myThrottledCallback} />\n * ```\n */\nconst useThrottledCallback = <T extends (...args:
|
|
1
|
+
{"version":3,"file":"useThrottledCallback.mjs","sources":["../../../../../admin/src/hooks/useThrottledCallback.ts"],"sourcesContent":["import { useMemo } from 'react';\n\nimport throttle from 'lodash/throttle';\n\ntype ThrottleSettings = Parameters<typeof throttle>[2];\n\n/**\n * @internal\n * @description Create a throttled version of a callback\n * @example\n * ```tsx\n * // First create a callback using React’s `useCallback` hook\n * const myCallback = useCallback(() => {\n * // this is not throttled\n * }, [])\n *\n * // Then make a throttled version using the `useThrottledCallback` hook\n * const myThrottledCallback = useThrottledCallback(myCallback, 100)\n *\n * // Call the throttled callback\n * <Button onClick={myThrottledCallback} />\n * ```\n */\nconst useThrottledCallback = <T extends (...args: never[]) => unknown>(\n callback: T,\n wait: number,\n options: ThrottleSettings\n): T => {\n const throttledCallback = useMemo(\n () => throttle(callback, wait, options) as unknown as T,\n [callback, options, wait]\n );\n\n return throttledCallback;\n};\n\nexport { useThrottledCallback };\n"],"names":["useThrottledCallback","callback","wait","options","throttledCallback","useMemo","throttle"],"mappings":";;;AAMA;;;;;;;;;;;;;;;;AAgBC,IACD,MAAMA,oBAAAA,GAAuB,CAC3BC,QAAAA,EACAC,IAAAA,EACAC,OAAAA,GAAAA;AAEA,IAAA,MAAMC,oBAAoBC,OAAAA,CACxB,IAAMC,QAAAA,CAASL,QAAAA,EAAUC,MAAMC,OAAAA,CAAAA,EAC/B;AAACF,QAAAA,QAAAA;AAAUE,QAAAA,OAAAA;AAASD,QAAAA;AAAK,KAAA,CAAA;IAG3B,OAAOE,iBAAAA;AACT;;;;"}
|
|
@@ -87,7 +87,7 @@ const AdminLayout = ()=>{
|
|
|
87
87
|
userInfo
|
|
88
88
|
]);
|
|
89
89
|
const { trackUsage } = Tracking.useTracking();
|
|
90
|
-
const { isLoading: isLoadingMenu, generalSectionLinks, pluginsSectionLinks, topMobileNavigation, burgerMobileNavigation } = useMenu.useMenu(checkLatestStrapiVersion(strapiVersion, tagName));
|
|
90
|
+
const { isLoading: isLoadingMenu, generalSectionLinks, pluginsSectionLinks, topMobileNavigation, burgerMobileNavigation } = useMenu.useMenu(checkLatestStrapiVersion(strapiVersion, tagName), appInfo?.currentEnvironment);
|
|
91
91
|
const getAllWidgets = StrapiApp.useStrapiApp('TrackingProvider', (state)=>state.widgets.getAll);
|
|
92
92
|
const projectId = appInfo?.projectId;
|
|
93
93
|
React__namespace.useEffect(()=>{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AuthenticatedLayout.js","sources":["../../../../../admin/src/layouts/AuthenticatedLayout.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport packageInfo from '@strapi/admin/package.json';\nimport { Box, Flex, SkipToContent } from '@strapi/design-system';\nimport { DndProvider } from 'react-dnd';\nimport { HTML5Backend } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport lt from 'semver/functions/lt';\nimport valid from 'semver/functions/valid';\n\nimport { LazyOutlet } from '../components/LazyOutlet';\nimport { LeftMenu } from '../components/LeftMenu';\nimport { NpsSurvey } from '../components/NpsSurvey';\nimport { Page } from '../components/PageHelpers';\nimport { PluginsInitializer } from '../components/PluginsInitializer';\nimport { PrivateRoute } from '../components/PrivateRoute';\nimport { UpsellBanner } from '../components/UpsellBanner';\nimport { AppInfoProvider } from '../features/AppInfo';\nimport { useAuth } from '../features/Auth';\nimport { useConfiguration } from '../features/Configuration';\nimport { useStrapiApp } from '../features/StrapiApp';\nimport { useTracking } from '../features/Tracking';\nimport { useMenu } from '../hooks/useMenu';\nimport { useInformationQuery } from '../services/admin';\nimport { hashAdminUserEmail } from '../utils/users';\n\nconst { version: strapiVersion } = packageInfo;\n\nconst AdminLayout = () => {\n const { formatMessage } = useIntl();\n const userInfo = useAuth('AuthenticatedApp', (state) => state.user);\n const [userId, setUserId] = React.useState<string>();\n const { showReleaseNotification } = useConfiguration('AuthenticatedApp');\n\n const { data: appInfo, isLoading: isLoadingAppInfo } = useInformationQuery();\n const [tagName, setTagName] = React.useState<string>(strapiVersion);\n\n React.useEffect(() => {\n if (showReleaseNotification) {\n fetch('https://api.github.com/repos/strapi/strapi/releases/latest')\n .then(async (res) => {\n if (!res.ok) {\n return;\n }\n\n const response = (await res.json()) as { tag_name: string | null | undefined };\n\n if (!response.tag_name) {\n throw new Error();\n }\n\n setTagName(response.tag_name);\n })\n .catch(() => {\n /**\n * silence is golden & we'll use the strapiVersion as a fallback\n */\n });\n }\n }, [showReleaseNotification]);\n\n React.useEffect(() => {\n hashAdminUserEmail(userInfo).then((id) => {\n if (id) {\n setUserId(id);\n }\n });\n }, [userInfo]);\n\n const { trackUsage } = useTracking();\n\n const {\n isLoading: isLoadingMenu,\n generalSectionLinks,\n pluginsSectionLinks,\n topMobileNavigation,\n burgerMobileNavigation,\n } = useMenu(checkLatestStrapiVersion(strapiVersion, tagName));\n\n const getAllWidgets = useStrapiApp('TrackingProvider', (state) => state.widgets.getAll);\n const projectId = appInfo?.projectId;\n React.useEffect(() => {\n if (projectId) {\n trackUsage('didAccessAuthenticatedAdministration', {\n registeredWidgets: getAllWidgets().map((widget) => widget.uid),\n projectId,\n });\n }\n }, [projectId, getAllWidgets, trackUsage]);\n\n // We don't need to wait for the release query to be fetched before rendering the plugins\n // however, we need the appInfos and the permissions\n if (isLoadingMenu || isLoadingAppInfo) {\n return <Page.Loading />;\n }\n\n return (\n <AppInfoProvider\n {...appInfo}\n userId={userId}\n latestStrapiReleaseTag={tagName}\n shouldUpdateStrapi={checkLatestStrapiVersion(strapiVersion, tagName)}\n >\n <NpsSurvey />\n <PluginsInitializer>\n <DndProvider backend={HTML5Backend}>\n <Box background=\"neutral100\">\n <SkipToContent>\n {formatMessage({ id: 'skipToContent', defaultMessage: 'Skip to content' })}\n </SkipToContent>\n <Flex\n height=\"100dvh\"\n direction={{\n initial: 'column',\n large: 'row',\n }}\n alignItems=\"flex-start\"\n >\n <LeftMenu\n generalSectionLinks={generalSectionLinks}\n pluginsSectionLinks={pluginsSectionLinks}\n topMobileNavigation={topMobileNavigation}\n burgerMobileNavigation={burgerMobileNavigation}\n />\n <Flex\n direction=\"column\"\n alignItems=\"stretch\"\n flex={1}\n overflow=\"auto\"\n width=\"100%\"\n height={{\n initial: 'auto',\n large: '100%',\n }}\n >\n <UpsellBanner />\n {/*\n * Top-level Suspense only — nested layouts (Settings, Content Manager) use\n * LazyOutlet with useNavigation so in-app navigations show loading in the content\n * column without hiding section side navs.\n */}\n <LazyOutlet suspenseOnly />\n </Flex>\n </Flex>\n </Box>\n </DndProvider>\n </PluginsInitializer>\n </AppInfoProvider>\n );\n};\n\nconst PrivateAdminLayout = () => {\n return (\n <PrivateRoute>\n <AdminLayout />\n </PrivateRoute>\n );\n};\n\nconst checkLatestStrapiVersion = (\n currentPackageVersion: string,\n latestPublishedVersion: string = ''\n): boolean => {\n if (!valid(currentPackageVersion) || !valid(latestPublishedVersion)) {\n return false;\n }\n\n return lt(currentPackageVersion, latestPublishedVersion);\n};\n\nexport { AdminLayout, PrivateAdminLayout };\n"],"names":["version","strapiVersion","packageInfo","AdminLayout","formatMessage","useIntl","userInfo","useAuth","state","user","userId","setUserId","React","useState","showReleaseNotification","useConfiguration","data","appInfo","isLoading","isLoadingAppInfo","useInformationQuery","tagName","setTagName","useEffect","fetch","then","res","ok","response","json","tag_name","Error","catch","hashAdminUserEmail","id","trackUsage","useTracking","isLoadingMenu","generalSectionLinks","pluginsSectionLinks","topMobileNavigation","burgerMobileNavigation","useMenu","checkLatestStrapiVersion","getAllWidgets","useStrapiApp","widgets","getAll","projectId","registeredWidgets","map","widget","uid","_jsx","Page","Loading","_jsxs","AppInfoProvider","latestStrapiReleaseTag","shouldUpdateStrapi","NpsSurvey","PluginsInitializer","DndProvider","backend","HTML5Backend","Box","background","SkipToContent","defaultMessage","Flex","height","direction","initial","large","alignItems","LeftMenu","flex","overflow","width","UpsellBanner","LazyOutlet","suspenseOnly","PrivateAdminLayout","PrivateRoute","currentPackageVersion","latestPublishedVersion","valid","lt"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AuthenticatedLayout.js","sources":["../../../../../admin/src/layouts/AuthenticatedLayout.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport packageInfo from '@strapi/admin/package.json';\nimport { Box, Flex, SkipToContent } from '@strapi/design-system';\nimport { DndProvider } from 'react-dnd';\nimport { HTML5Backend } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport lt from 'semver/functions/lt';\nimport valid from 'semver/functions/valid';\n\nimport { LazyOutlet } from '../components/LazyOutlet';\nimport { LeftMenu } from '../components/LeftMenu';\nimport { NpsSurvey } from '../components/NpsSurvey';\nimport { Page } from '../components/PageHelpers';\nimport { PluginsInitializer } from '../components/PluginsInitializer';\nimport { PrivateRoute } from '../components/PrivateRoute';\nimport { UpsellBanner } from '../components/UpsellBanner';\nimport { AppInfoProvider } from '../features/AppInfo';\nimport { useAuth } from '../features/Auth';\nimport { useConfiguration } from '../features/Configuration';\nimport { useStrapiApp } from '../features/StrapiApp';\nimport { useTracking } from '../features/Tracking';\nimport { useMenu } from '../hooks/useMenu';\nimport { useInformationQuery } from '../services/admin';\nimport { hashAdminUserEmail } from '../utils/users';\n\nconst { version: strapiVersion } = packageInfo;\n\nconst AdminLayout = () => {\n const { formatMessage } = useIntl();\n const userInfo = useAuth('AuthenticatedApp', (state) => state.user);\n const [userId, setUserId] = React.useState<string>();\n const { showReleaseNotification } = useConfiguration('AuthenticatedApp');\n\n const { data: appInfo, isLoading: isLoadingAppInfo } = useInformationQuery();\n const [tagName, setTagName] = React.useState<string>(strapiVersion);\n\n React.useEffect(() => {\n if (showReleaseNotification) {\n fetch('https://api.github.com/repos/strapi/strapi/releases/latest')\n .then(async (res) => {\n if (!res.ok) {\n return;\n }\n\n const response = (await res.json()) as { tag_name: string | null | undefined };\n\n if (!response.tag_name) {\n throw new Error();\n }\n\n setTagName(response.tag_name);\n })\n .catch(() => {\n /**\n * silence is golden & we'll use the strapiVersion as a fallback\n */\n });\n }\n }, [showReleaseNotification]);\n\n React.useEffect(() => {\n hashAdminUserEmail(userInfo).then((id) => {\n if (id) {\n setUserId(id);\n }\n });\n }, [userInfo]);\n\n const { trackUsage } = useTracking();\n\n const {\n isLoading: isLoadingMenu,\n generalSectionLinks,\n pluginsSectionLinks,\n topMobileNavigation,\n burgerMobileNavigation,\n } = useMenu(checkLatestStrapiVersion(strapiVersion, tagName), appInfo?.currentEnvironment);\n\n const getAllWidgets = useStrapiApp('TrackingProvider', (state) => state.widgets.getAll);\n const projectId = appInfo?.projectId;\n React.useEffect(() => {\n if (projectId) {\n trackUsage('didAccessAuthenticatedAdministration', {\n registeredWidgets: getAllWidgets().map((widget) => widget.uid),\n projectId,\n });\n }\n }, [projectId, getAllWidgets, trackUsage]);\n\n // We don't need to wait for the release query to be fetched before rendering the plugins\n // however, we need the appInfos and the permissions\n if (isLoadingMenu || isLoadingAppInfo) {\n return <Page.Loading />;\n }\n\n return (\n <AppInfoProvider\n {...appInfo}\n userId={userId}\n latestStrapiReleaseTag={tagName}\n shouldUpdateStrapi={checkLatestStrapiVersion(strapiVersion, tagName)}\n >\n <NpsSurvey />\n <PluginsInitializer>\n <DndProvider backend={HTML5Backend}>\n <Box background=\"neutral100\">\n <SkipToContent>\n {formatMessage({ id: 'skipToContent', defaultMessage: 'Skip to content' })}\n </SkipToContent>\n <Flex\n height=\"100dvh\"\n direction={{\n initial: 'column',\n large: 'row',\n }}\n alignItems=\"flex-start\"\n >\n <LeftMenu\n generalSectionLinks={generalSectionLinks}\n pluginsSectionLinks={pluginsSectionLinks}\n topMobileNavigation={topMobileNavigation}\n burgerMobileNavigation={burgerMobileNavigation}\n />\n <Flex\n direction=\"column\"\n alignItems=\"stretch\"\n flex={1}\n overflow=\"auto\"\n width=\"100%\"\n height={{\n initial: 'auto',\n large: '100%',\n }}\n >\n <UpsellBanner />\n {/*\n * Top-level Suspense only — nested layouts (Settings, Content Manager) use\n * LazyOutlet with useNavigation so in-app navigations show loading in the content\n * column without hiding section side navs.\n */}\n <LazyOutlet suspenseOnly />\n </Flex>\n </Flex>\n </Box>\n </DndProvider>\n </PluginsInitializer>\n </AppInfoProvider>\n );\n};\n\nconst PrivateAdminLayout = () => {\n return (\n <PrivateRoute>\n <AdminLayout />\n </PrivateRoute>\n );\n};\n\nconst checkLatestStrapiVersion = (\n currentPackageVersion: string,\n latestPublishedVersion: string = ''\n): boolean => {\n if (!valid(currentPackageVersion) || !valid(latestPublishedVersion)) {\n return false;\n }\n\n return lt(currentPackageVersion, latestPublishedVersion);\n};\n\nexport { AdminLayout, PrivateAdminLayout };\n"],"names":["version","strapiVersion","packageInfo","AdminLayout","formatMessage","useIntl","userInfo","useAuth","state","user","userId","setUserId","React","useState","showReleaseNotification","useConfiguration","data","appInfo","isLoading","isLoadingAppInfo","useInformationQuery","tagName","setTagName","useEffect","fetch","then","res","ok","response","json","tag_name","Error","catch","hashAdminUserEmail","id","trackUsage","useTracking","isLoadingMenu","generalSectionLinks","pluginsSectionLinks","topMobileNavigation","burgerMobileNavigation","useMenu","checkLatestStrapiVersion","currentEnvironment","getAllWidgets","useStrapiApp","widgets","getAll","projectId","registeredWidgets","map","widget","uid","_jsx","Page","Loading","_jsxs","AppInfoProvider","latestStrapiReleaseTag","shouldUpdateStrapi","NpsSurvey","PluginsInitializer","DndProvider","backend","HTML5Backend","Box","background","SkipToContent","defaultMessage","Flex","height","direction","initial","large","alignItems","LeftMenu","flex","overflow","width","UpsellBanner","LazyOutlet","suspenseOnly","PrivateAdminLayout","PrivateRoute","currentPackageVersion","latestPublishedVersion","valid","lt"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BA,MAAM,EAAEA,OAAAA,EAASC,aAAa,EAAE,GAAGC,4BAAAA;AAEnC,MAAMC,WAAAA,GAAc,IAAA;IAClB,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAMC,WAAWC,YAAAA,CAAQ,kBAAA,EAAoB,CAACC,KAAAA,GAAUA,MAAMC,IAAI,CAAA;AAClE,IAAA,MAAM,CAACC,MAAAA,EAAQC,SAAAA,CAAU,GAAGC,iBAAMC,QAAQ,EAAA;AAC1C,IAAA,MAAM,EAAEC,uBAAuB,EAAE,GAAGC,8BAAAA,CAAiB,kBAAA,CAAA;AAErD,IAAA,MAAM,EAAEC,IAAAA,EAAMC,OAAO,EAAEC,SAAAA,EAAWC,gBAAgB,EAAE,GAAGC,yBAAAA,EAAAA;AACvD,IAAA,MAAM,CAACC,OAAAA,EAASC,UAAAA,CAAW,GAAGV,gBAAAA,CAAMC,QAAQ,CAASZ,aAAAA,CAAAA;AAErDW,IAAAA,gBAAAA,CAAMW,SAAS,CAAC,IAAA;AACd,QAAA,IAAIT,uBAAAA,EAAyB;YAC3BU,KAAAA,CAAM,4DAAA,CAAA,CACHC,IAAI,CAAC,OAAOC,GAAAA,GAAAA;gBACX,IAAI,CAACA,GAAAA,CAAIC,EAAE,EAAE;AACX,oBAAA;AACF,gBAAA;gBAEA,MAAMC,QAAAA,GAAY,MAAMF,GAAAA,CAAIG,IAAI,EAAA;gBAEhC,IAAI,CAACD,QAAAA,CAASE,QAAQ,EAAE;AACtB,oBAAA,MAAM,IAAIC,KAAAA,EAAAA;AACZ,gBAAA;AAEAT,gBAAAA,UAAAA,CAAWM,SAASE,QAAQ,CAAA;AAC9B,YAAA,CAAA,CAAA,CACCE,KAAK,CAAC,IAAA;AACL;;cAGF,CAAA,CAAA;AACJ,QAAA;IACF,CAAA,EAAG;AAAClB,QAAAA;AAAwB,KAAA,CAAA;AAE5BF,IAAAA,gBAAAA,CAAMW,SAAS,CAAC,IAAA;QACdU,wBAAAA,CAAmB3B,QAAAA,CAAAA,CAAUmB,IAAI,CAAC,CAACS,EAAAA,GAAAA;AACjC,YAAA,IAAIA,EAAAA,EAAI;gBACNvB,SAAAA,CAAUuB,EAAAA,CAAAA;AACZ,YAAA;AACF,QAAA,CAAA,CAAA;IACF,CAAA,EAAG;AAAC5B,QAAAA;AAAS,KAAA,CAAA;IAEb,MAAM,EAAE6B,UAAU,EAAE,GAAGC,oBAAAA,EAAAA;AAEvB,IAAA,MAAM,EACJlB,SAAAA,EAAWmB,aAAa,EACxBC,mBAAmB,EACnBC,mBAAmB,EACnBC,mBAAmB,EACnBC,sBAAsB,EACvB,GAAGC,gBAAQC,wBAAAA,CAAyB1C,aAAAA,EAAeoB,UAAUJ,OAAAA,EAAS2B,kBAAAA,CAAAA;IAEvE,MAAMC,aAAAA,GAAgBC,uBAAa,kBAAA,EAAoB,CAACtC,QAAUA,KAAAA,CAAMuC,OAAO,CAACC,MAAM,CAAA;AACtF,IAAA,MAAMC,YAAYhC,OAAAA,EAASgC,SAAAA;AAC3BrC,IAAAA,gBAAAA,CAAMW,SAAS,CAAC,IAAA;AACd,QAAA,IAAI0B,SAAAA,EAAW;AACbd,YAAAA,UAAAA,CAAW,sCAAA,EAAwC;AACjDe,gBAAAA,iBAAAA,EAAmBL,gBAAgBM,GAAG,CAAC,CAACC,MAAAA,GAAWA,OAAOC,GAAG,CAAA;AAC7DJ,gBAAAA;AACF,aAAA,CAAA;AACF,QAAA;IACF,CAAA,EAAG;AAACA,QAAAA,SAAAA;AAAWJ,QAAAA,aAAAA;AAAeV,QAAAA;AAAW,KAAA,CAAA;;;AAIzC,IAAA,IAAIE,iBAAiBlB,gBAAAA,EAAkB;QACrC,qBAAOmC,cAAA,CAACC,iBAAKC,OAAO,EAAA,EAAA,CAAA;AACtB,IAAA;AAEA,IAAA,qBACEC,eAAA,CAACC,uBAAAA,EAAAA;AACE,QAAA,GAAGzC,OAAO;QACXP,MAAAA,EAAQA,MAAAA;QACRiD,sBAAAA,EAAwBtC,OAAAA;AACxBuC,QAAAA,kBAAAA,EAAoBjB,yBAAyB1C,aAAAA,EAAeoB,OAAAA,CAAAA;;0BAE5DiC,cAAA,CAACO,mBAAAA,EAAAA,EAAAA,CAAAA;0BACDP,cAAA,CAACQ,qCAAAA,EAAAA;AACC,gBAAA,QAAA,gBAAAR,cAAA,CAACS,oBAAAA,EAAAA;oBAAYC,OAAAA,EAASC,iCAAAA;AACpB,oBAAA,QAAA,gBAAAR,eAAA,CAACS,gBAAAA,EAAAA;wBAAIC,UAAAA,EAAW,YAAA;;0CACdb,cAAA,CAACc,0BAAAA,EAAAA;0CACEhE,aAAAA,CAAc;oCAAE8B,EAAAA,EAAI,eAAA;oCAAiBmC,cAAAA,EAAgB;AAAkB,iCAAA;;0CAE1EZ,eAAA,CAACa,iBAAAA,EAAAA;gCACCC,MAAAA,EAAO,QAAA;gCACPC,SAAAA,EAAW;oCACTC,OAAAA,EAAS,QAAA;oCACTC,KAAAA,EAAO;AACT,iCAAA;gCACAC,UAAAA,EAAW,YAAA;;kDAEXrB,cAAA,CAACsB,iBAAAA,EAAAA;wCACCtC,mBAAAA,EAAqBA,mBAAAA;wCACrBC,mBAAAA,EAAqBA,mBAAAA;wCACrBC,mBAAAA,EAAqBA,mBAAAA;wCACrBC,sBAAAA,EAAwBA;;kDAE1BgB,eAAA,CAACa,iBAAAA,EAAAA;wCACCE,SAAAA,EAAU,QAAA;wCACVG,UAAAA,EAAW,SAAA;wCACXE,IAAAA,EAAM,CAAA;wCACNC,QAAAA,EAAS,MAAA;wCACTC,KAAAA,EAAM,MAAA;wCACNR,MAAAA,EAAQ;4CACNE,OAAAA,EAAS,MAAA;4CACTC,KAAAA,EAAO;AACT,yCAAA;;0DAEApB,cAAA,CAAC0B,yBAAAA,EAAAA,EAAAA,CAAAA;0DAMD1B,cAAA,CAAC2B,qBAAAA,EAAAA;gDAAWC,YAAY,EAAA;;;;;;;;;;;;AAQxC;AAEA,MAAMC,kBAAAA,GAAqB,IAAA;AACzB,IAAA,qBACE7B,cAAA,CAAC8B,yBAAAA,EAAAA;AACC,QAAA,QAAA,gBAAA9B,cAAA,CAACnD,WAAAA,EAAAA,EAAAA;;AAGP;AAEA,MAAMwC,wBAAAA,GAA2B,CAC/B0C,qBAAAA,EACAC,sBAAAA,GAAiC,EAAE,GAAA;AAEnC,IAAA,IAAI,CAACC,sBAAAA,CAAMF,qBAAAA,CAAAA,IAA0B,CAACE,uBAAMD,sBAAAA,CAAAA,EAAyB;QACnE,OAAO,KAAA;AACT,IAAA;AAEA,IAAA,OAAOE,oBAAGH,qBAAAA,EAAuBC,sBAAAA,CAAAA;AACnC,CAAA;;;;;"}
|
|
@@ -60,7 +60,7 @@ const AdminLayout = ()=>{
|
|
|
60
60
|
userInfo
|
|
61
61
|
]);
|
|
62
62
|
const { trackUsage } = useTracking();
|
|
63
|
-
const { isLoading: isLoadingMenu, generalSectionLinks, pluginsSectionLinks, topMobileNavigation, burgerMobileNavigation } = useMenu(checkLatestStrapiVersion(strapiVersion, tagName));
|
|
63
|
+
const { isLoading: isLoadingMenu, generalSectionLinks, pluginsSectionLinks, topMobileNavigation, burgerMobileNavigation } = useMenu(checkLatestStrapiVersion(strapiVersion, tagName), appInfo?.currentEnvironment);
|
|
64
64
|
const getAllWidgets = useStrapiApp('TrackingProvider', (state)=>state.widgets.getAll);
|
|
65
65
|
const projectId = appInfo?.projectId;
|
|
66
66
|
React.useEffect(()=>{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AuthenticatedLayout.mjs","sources":["../../../../../admin/src/layouts/AuthenticatedLayout.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport packageInfo from '@strapi/admin/package.json';\nimport { Box, Flex, SkipToContent } from '@strapi/design-system';\nimport { DndProvider } from 'react-dnd';\nimport { HTML5Backend } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport lt from 'semver/functions/lt';\nimport valid from 'semver/functions/valid';\n\nimport { LazyOutlet } from '../components/LazyOutlet';\nimport { LeftMenu } from '../components/LeftMenu';\nimport { NpsSurvey } from '../components/NpsSurvey';\nimport { Page } from '../components/PageHelpers';\nimport { PluginsInitializer } from '../components/PluginsInitializer';\nimport { PrivateRoute } from '../components/PrivateRoute';\nimport { UpsellBanner } from '../components/UpsellBanner';\nimport { AppInfoProvider } from '../features/AppInfo';\nimport { useAuth } from '../features/Auth';\nimport { useConfiguration } from '../features/Configuration';\nimport { useStrapiApp } from '../features/StrapiApp';\nimport { useTracking } from '../features/Tracking';\nimport { useMenu } from '../hooks/useMenu';\nimport { useInformationQuery } from '../services/admin';\nimport { hashAdminUserEmail } from '../utils/users';\n\nconst { version: strapiVersion } = packageInfo;\n\nconst AdminLayout = () => {\n const { formatMessage } = useIntl();\n const userInfo = useAuth('AuthenticatedApp', (state) => state.user);\n const [userId, setUserId] = React.useState<string>();\n const { showReleaseNotification } = useConfiguration('AuthenticatedApp');\n\n const { data: appInfo, isLoading: isLoadingAppInfo } = useInformationQuery();\n const [tagName, setTagName] = React.useState<string>(strapiVersion);\n\n React.useEffect(() => {\n if (showReleaseNotification) {\n fetch('https://api.github.com/repos/strapi/strapi/releases/latest')\n .then(async (res) => {\n if (!res.ok) {\n return;\n }\n\n const response = (await res.json()) as { tag_name: string | null | undefined };\n\n if (!response.tag_name) {\n throw new Error();\n }\n\n setTagName(response.tag_name);\n })\n .catch(() => {\n /**\n * silence is golden & we'll use the strapiVersion as a fallback\n */\n });\n }\n }, [showReleaseNotification]);\n\n React.useEffect(() => {\n hashAdminUserEmail(userInfo).then((id) => {\n if (id) {\n setUserId(id);\n }\n });\n }, [userInfo]);\n\n const { trackUsage } = useTracking();\n\n const {\n isLoading: isLoadingMenu,\n generalSectionLinks,\n pluginsSectionLinks,\n topMobileNavigation,\n burgerMobileNavigation,\n } = useMenu(checkLatestStrapiVersion(strapiVersion, tagName));\n\n const getAllWidgets = useStrapiApp('TrackingProvider', (state) => state.widgets.getAll);\n const projectId = appInfo?.projectId;\n React.useEffect(() => {\n if (projectId) {\n trackUsage('didAccessAuthenticatedAdministration', {\n registeredWidgets: getAllWidgets().map((widget) => widget.uid),\n projectId,\n });\n }\n }, [projectId, getAllWidgets, trackUsage]);\n\n // We don't need to wait for the release query to be fetched before rendering the plugins\n // however, we need the appInfos and the permissions\n if (isLoadingMenu || isLoadingAppInfo) {\n return <Page.Loading />;\n }\n\n return (\n <AppInfoProvider\n {...appInfo}\n userId={userId}\n latestStrapiReleaseTag={tagName}\n shouldUpdateStrapi={checkLatestStrapiVersion(strapiVersion, tagName)}\n >\n <NpsSurvey />\n <PluginsInitializer>\n <DndProvider backend={HTML5Backend}>\n <Box background=\"neutral100\">\n <SkipToContent>\n {formatMessage({ id: 'skipToContent', defaultMessage: 'Skip to content' })}\n </SkipToContent>\n <Flex\n height=\"100dvh\"\n direction={{\n initial: 'column',\n large: 'row',\n }}\n alignItems=\"flex-start\"\n >\n <LeftMenu\n generalSectionLinks={generalSectionLinks}\n pluginsSectionLinks={pluginsSectionLinks}\n topMobileNavigation={topMobileNavigation}\n burgerMobileNavigation={burgerMobileNavigation}\n />\n <Flex\n direction=\"column\"\n alignItems=\"stretch\"\n flex={1}\n overflow=\"auto\"\n width=\"100%\"\n height={{\n initial: 'auto',\n large: '100%',\n }}\n >\n <UpsellBanner />\n {/*\n * Top-level Suspense only — nested layouts (Settings, Content Manager) use\n * LazyOutlet with useNavigation so in-app navigations show loading in the content\n * column without hiding section side navs.\n */}\n <LazyOutlet suspenseOnly />\n </Flex>\n </Flex>\n </Box>\n </DndProvider>\n </PluginsInitializer>\n </AppInfoProvider>\n );\n};\n\nconst PrivateAdminLayout = () => {\n return (\n <PrivateRoute>\n <AdminLayout />\n </PrivateRoute>\n );\n};\n\nconst checkLatestStrapiVersion = (\n currentPackageVersion: string,\n latestPublishedVersion: string = ''\n): boolean => {\n if (!valid(currentPackageVersion) || !valid(latestPublishedVersion)) {\n return false;\n }\n\n return lt(currentPackageVersion, latestPublishedVersion);\n};\n\nexport { AdminLayout, PrivateAdminLayout };\n"],"names":["version","strapiVersion","packageInfo","AdminLayout","formatMessage","useIntl","userInfo","useAuth","state","user","userId","setUserId","React","useState","showReleaseNotification","useConfiguration","data","appInfo","isLoading","isLoadingAppInfo","useInformationQuery","tagName","setTagName","useEffect","fetch","then","res","ok","response","json","tag_name","Error","catch","hashAdminUserEmail","id","trackUsage","useTracking","isLoadingMenu","generalSectionLinks","pluginsSectionLinks","topMobileNavigation","burgerMobileNavigation","useMenu","checkLatestStrapiVersion","getAllWidgets","useStrapiApp","widgets","getAll","projectId","registeredWidgets","map","widget","uid","_jsx","Page","Loading","_jsxs","AppInfoProvider","latestStrapiReleaseTag","shouldUpdateStrapi","NpsSurvey","PluginsInitializer","DndProvider","backend","HTML5Backend","Box","background","SkipToContent","defaultMessage","Flex","height","direction","initial","large","alignItems","LeftMenu","flex","overflow","width","UpsellBanner","LazyOutlet","suspenseOnly","PrivateAdminLayout","PrivateRoute","currentPackageVersion","latestPublishedVersion","valid","lt"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AuthenticatedLayout.mjs","sources":["../../../../../admin/src/layouts/AuthenticatedLayout.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport packageInfo from '@strapi/admin/package.json';\nimport { Box, Flex, SkipToContent } from '@strapi/design-system';\nimport { DndProvider } from 'react-dnd';\nimport { HTML5Backend } from 'react-dnd-html5-backend';\nimport { useIntl } from 'react-intl';\nimport lt from 'semver/functions/lt';\nimport valid from 'semver/functions/valid';\n\nimport { LazyOutlet } from '../components/LazyOutlet';\nimport { LeftMenu } from '../components/LeftMenu';\nimport { NpsSurvey } from '../components/NpsSurvey';\nimport { Page } from '../components/PageHelpers';\nimport { PluginsInitializer } from '../components/PluginsInitializer';\nimport { PrivateRoute } from '../components/PrivateRoute';\nimport { UpsellBanner } from '../components/UpsellBanner';\nimport { AppInfoProvider } from '../features/AppInfo';\nimport { useAuth } from '../features/Auth';\nimport { useConfiguration } from '../features/Configuration';\nimport { useStrapiApp } from '../features/StrapiApp';\nimport { useTracking } from '../features/Tracking';\nimport { useMenu } from '../hooks/useMenu';\nimport { useInformationQuery } from '../services/admin';\nimport { hashAdminUserEmail } from '../utils/users';\n\nconst { version: strapiVersion } = packageInfo;\n\nconst AdminLayout = () => {\n const { formatMessage } = useIntl();\n const userInfo = useAuth('AuthenticatedApp', (state) => state.user);\n const [userId, setUserId] = React.useState<string>();\n const { showReleaseNotification } = useConfiguration('AuthenticatedApp');\n\n const { data: appInfo, isLoading: isLoadingAppInfo } = useInformationQuery();\n const [tagName, setTagName] = React.useState<string>(strapiVersion);\n\n React.useEffect(() => {\n if (showReleaseNotification) {\n fetch('https://api.github.com/repos/strapi/strapi/releases/latest')\n .then(async (res) => {\n if (!res.ok) {\n return;\n }\n\n const response = (await res.json()) as { tag_name: string | null | undefined };\n\n if (!response.tag_name) {\n throw new Error();\n }\n\n setTagName(response.tag_name);\n })\n .catch(() => {\n /**\n * silence is golden & we'll use the strapiVersion as a fallback\n */\n });\n }\n }, [showReleaseNotification]);\n\n React.useEffect(() => {\n hashAdminUserEmail(userInfo).then((id) => {\n if (id) {\n setUserId(id);\n }\n });\n }, [userInfo]);\n\n const { trackUsage } = useTracking();\n\n const {\n isLoading: isLoadingMenu,\n generalSectionLinks,\n pluginsSectionLinks,\n topMobileNavigation,\n burgerMobileNavigation,\n } = useMenu(checkLatestStrapiVersion(strapiVersion, tagName), appInfo?.currentEnvironment);\n\n const getAllWidgets = useStrapiApp('TrackingProvider', (state) => state.widgets.getAll);\n const projectId = appInfo?.projectId;\n React.useEffect(() => {\n if (projectId) {\n trackUsage('didAccessAuthenticatedAdministration', {\n registeredWidgets: getAllWidgets().map((widget) => widget.uid),\n projectId,\n });\n }\n }, [projectId, getAllWidgets, trackUsage]);\n\n // We don't need to wait for the release query to be fetched before rendering the plugins\n // however, we need the appInfos and the permissions\n if (isLoadingMenu || isLoadingAppInfo) {\n return <Page.Loading />;\n }\n\n return (\n <AppInfoProvider\n {...appInfo}\n userId={userId}\n latestStrapiReleaseTag={tagName}\n shouldUpdateStrapi={checkLatestStrapiVersion(strapiVersion, tagName)}\n >\n <NpsSurvey />\n <PluginsInitializer>\n <DndProvider backend={HTML5Backend}>\n <Box background=\"neutral100\">\n <SkipToContent>\n {formatMessage({ id: 'skipToContent', defaultMessage: 'Skip to content' })}\n </SkipToContent>\n <Flex\n height=\"100dvh\"\n direction={{\n initial: 'column',\n large: 'row',\n }}\n alignItems=\"flex-start\"\n >\n <LeftMenu\n generalSectionLinks={generalSectionLinks}\n pluginsSectionLinks={pluginsSectionLinks}\n topMobileNavigation={topMobileNavigation}\n burgerMobileNavigation={burgerMobileNavigation}\n />\n <Flex\n direction=\"column\"\n alignItems=\"stretch\"\n flex={1}\n overflow=\"auto\"\n width=\"100%\"\n height={{\n initial: 'auto',\n large: '100%',\n }}\n >\n <UpsellBanner />\n {/*\n * Top-level Suspense only — nested layouts (Settings, Content Manager) use\n * LazyOutlet with useNavigation so in-app navigations show loading in the content\n * column without hiding section side navs.\n */}\n <LazyOutlet suspenseOnly />\n </Flex>\n </Flex>\n </Box>\n </DndProvider>\n </PluginsInitializer>\n </AppInfoProvider>\n );\n};\n\nconst PrivateAdminLayout = () => {\n return (\n <PrivateRoute>\n <AdminLayout />\n </PrivateRoute>\n );\n};\n\nconst checkLatestStrapiVersion = (\n currentPackageVersion: string,\n latestPublishedVersion: string = ''\n): boolean => {\n if (!valid(currentPackageVersion) || !valid(latestPublishedVersion)) {\n return false;\n }\n\n return lt(currentPackageVersion, latestPublishedVersion);\n};\n\nexport { AdminLayout, PrivateAdminLayout };\n"],"names":["version","strapiVersion","packageInfo","AdminLayout","formatMessage","useIntl","userInfo","useAuth","state","user","userId","setUserId","React","useState","showReleaseNotification","useConfiguration","data","appInfo","isLoading","isLoadingAppInfo","useInformationQuery","tagName","setTagName","useEffect","fetch","then","res","ok","response","json","tag_name","Error","catch","hashAdminUserEmail","id","trackUsage","useTracking","isLoadingMenu","generalSectionLinks","pluginsSectionLinks","topMobileNavigation","burgerMobileNavigation","useMenu","checkLatestStrapiVersion","currentEnvironment","getAllWidgets","useStrapiApp","widgets","getAll","projectId","registeredWidgets","map","widget","uid","_jsx","Page","Loading","_jsxs","AppInfoProvider","latestStrapiReleaseTag","shouldUpdateStrapi","NpsSurvey","PluginsInitializer","DndProvider","backend","HTML5Backend","Box","background","SkipToContent","defaultMessage","Flex","height","direction","initial","large","alignItems","LeftMenu","flex","overflow","width","UpsellBanner","LazyOutlet","suspenseOnly","PrivateAdminLayout","PrivateRoute","currentPackageVersion","latestPublishedVersion","valid","lt"],"mappings":"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"}
|
|
@@ -4,17 +4,17 @@ var jsxRuntime = require('react/jsx-runtime');
|
|
|
4
4
|
require('react');
|
|
5
5
|
var designSystem = require('@strapi/design-system');
|
|
6
6
|
var reactIntl = require('react-intl');
|
|
7
|
-
var
|
|
7
|
+
var styledComponents = require('styled-components');
|
|
8
8
|
var theme = require('../constants/theme.js');
|
|
9
9
|
var hooks = require('../core/store/hooks.js');
|
|
10
10
|
var reducer = require('../reducer.js');
|
|
11
11
|
|
|
12
|
-
const Wrapper =
|
|
12
|
+
const Wrapper = styledComponents.styled(designSystem.Box)`
|
|
13
13
|
margin: 0 auto;
|
|
14
14
|
width: 100%;
|
|
15
15
|
max-width: 55.2rem;
|
|
16
16
|
`;
|
|
17
|
-
const Column =
|
|
17
|
+
const Column = styledComponents.styled(designSystem.Flex)`
|
|
18
18
|
flex-direction: column;
|
|
19
19
|
`;
|
|
20
20
|
const LocaleToggle = ()=>{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UnauthenticatedLayout.js","sources":["../../../../../admin/src/layouts/UnauthenticatedLayout.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n BoxComponent,\n Flex,\n FlexComponent,\n SingleSelect,\n SingleSelectOption,\n} from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { RESPONSIVE_DEFAULT_SPACING } from '../constants/theme';\nimport { useTypedDispatch, useTypedSelector } from '../core/store/hooks';\nimport { setLocale } from '../reducer';\n\nconst Wrapper = styled<BoxComponent>(Box)`\n margin: 0 auto;\n width: 100%;\n max-width: 55.2rem;\n`;\n\nexport const Column = styled<FlexComponent>(Flex)`\n flex-direction: column;\n`;\n\nconst LocaleToggle = () => {\n const localeNames = useTypedSelector((state) => state.admin_app.language.localeNames);\n const dispatch = useTypedDispatch();\n const { formatMessage, locale } = useIntl();\n\n return (\n <SingleSelect\n aria-label={formatMessage({\n id: 'global.localeToggle.label',\n defaultMessage: 'Select interface language',\n })}\n value={locale}\n onChange={(language) => {\n dispatch(setLocale(language as string));\n }}\n >\n {Object.entries(localeNames).map(([language, name]) => (\n <SingleSelectOption key={language} value={language}>\n {name}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n );\n};\n\ninterface LayoutContentProps {\n children: React.ReactNode;\n}\n\nexport const LayoutContent = ({ children }: LayoutContentProps) => (\n <Wrapper\n shadow=\"tableShadow\"\n hasRadius\n paddingTop={RESPONSIVE_DEFAULT_SPACING}\n paddingBottom={RESPONSIVE_DEFAULT_SPACING}\n paddingLeft={RESPONSIVE_DEFAULT_SPACING}\n paddingRight={RESPONSIVE_DEFAULT_SPACING}\n background=\"neutral0\"\n >\n {children}\n </Wrapper>\n);\n\ninterface UnauthenticatedLayoutProps {\n children: React.ReactNode;\n}\n\nexport const UnauthenticatedLayout = ({ children }: UnauthenticatedLayoutProps) => {\n return (\n <div>\n <Flex tag=\"header\" justifyContent=\"flex-end\">\n <Box paddingTop={6} paddingRight={RESPONSIVE_DEFAULT_SPACING}>\n <LocaleToggle />\n </Box>\n </Flex>\n <Box\n paddingTop={2}\n paddingBottom={RESPONSIVE_DEFAULT_SPACING}\n marginLeft={RESPONSIVE_DEFAULT_SPACING}\n marginRight={RESPONSIVE_DEFAULT_SPACING}\n >\n {children}\n </Box>\n </div>\n );\n};\n"],"names":["Wrapper","styled","Box","Column","Flex","LocaleToggle","localeNames","useTypedSelector","state","admin_app","language","dispatch","useTypedDispatch","formatMessage","locale","useIntl","_jsx","SingleSelect","aria-label","id","defaultMessage","value","onChange","setLocale","Object","entries","map","name","SingleSelectOption","LayoutContent","children","shadow","hasRadius","paddingTop","RESPONSIVE_DEFAULT_SPACING","paddingBottom","paddingLeft","paddingRight","background","UnauthenticatedLayout","_jsxs","div","tag","justifyContent","marginLeft","marginRight"],"mappings":";;;;;;;;;;;AAiBA,MAAMA,OAAAA,GAAUC,
|
|
1
|
+
{"version":3,"file":"UnauthenticatedLayout.js","sources":["../../../../../admin/src/layouts/UnauthenticatedLayout.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n BoxComponent,\n Flex,\n FlexComponent,\n SingleSelect,\n SingleSelectOption,\n} from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { RESPONSIVE_DEFAULT_SPACING } from '../constants/theme';\nimport { useTypedDispatch, useTypedSelector } from '../core/store/hooks';\nimport { setLocale } from '../reducer';\n\nconst Wrapper = styled<BoxComponent>(Box)`\n margin: 0 auto;\n width: 100%;\n max-width: 55.2rem;\n`;\n\nexport const Column = styled<FlexComponent>(Flex)`\n flex-direction: column;\n`;\n\nconst LocaleToggle = () => {\n const localeNames = useTypedSelector((state) => state.admin_app.language.localeNames);\n const dispatch = useTypedDispatch();\n const { formatMessage, locale } = useIntl();\n\n return (\n <SingleSelect\n aria-label={formatMessage({\n id: 'global.localeToggle.label',\n defaultMessage: 'Select interface language',\n })}\n value={locale}\n onChange={(language) => {\n dispatch(setLocale(language as string));\n }}\n >\n {Object.entries(localeNames).map(([language, name]) => (\n <SingleSelectOption key={language} value={language}>\n {name}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n );\n};\n\ninterface LayoutContentProps {\n children: React.ReactNode;\n}\n\nexport const LayoutContent = ({ children }: LayoutContentProps) => (\n <Wrapper\n shadow=\"tableShadow\"\n hasRadius\n paddingTop={RESPONSIVE_DEFAULT_SPACING}\n paddingBottom={RESPONSIVE_DEFAULT_SPACING}\n paddingLeft={RESPONSIVE_DEFAULT_SPACING}\n paddingRight={RESPONSIVE_DEFAULT_SPACING}\n background=\"neutral0\"\n >\n {children}\n </Wrapper>\n);\n\ninterface UnauthenticatedLayoutProps {\n children: React.ReactNode;\n}\n\nexport const UnauthenticatedLayout = ({ children }: UnauthenticatedLayoutProps) => {\n return (\n <div>\n <Flex tag=\"header\" justifyContent=\"flex-end\">\n <Box paddingTop={6} paddingRight={RESPONSIVE_DEFAULT_SPACING}>\n <LocaleToggle />\n </Box>\n </Flex>\n <Box\n paddingTop={2}\n paddingBottom={RESPONSIVE_DEFAULT_SPACING}\n marginLeft={RESPONSIVE_DEFAULT_SPACING}\n marginRight={RESPONSIVE_DEFAULT_SPACING}\n >\n {children}\n </Box>\n </div>\n );\n};\n"],"names":["Wrapper","styled","Box","Column","Flex","LocaleToggle","localeNames","useTypedSelector","state","admin_app","language","dispatch","useTypedDispatch","formatMessage","locale","useIntl","_jsx","SingleSelect","aria-label","id","defaultMessage","value","onChange","setLocale","Object","entries","map","name","SingleSelectOption","LayoutContent","children","shadow","hasRadius","paddingTop","RESPONSIVE_DEFAULT_SPACING","paddingBottom","paddingLeft","paddingRight","background","UnauthenticatedLayout","_jsxs","div","tag","justifyContent","marginLeft","marginRight"],"mappings":";;;;;;;;;;;AAiBA,MAAMA,OAAAA,GAAUC,uBAAAA,CAAqBC,gBAAAA,CAAI;;;;AAIzC,CAAC;AAEM,MAAMC,MAAAA,GAASF,uBAAAA,CAAsBG,iBAAAA,CAAK;;AAEjD;AAEA,MAAMC,YAAAA,GAAe,IAAA;IACnB,MAAMC,WAAAA,GAAcC,uBAAiB,CAACC,KAAAA,GAAUA,MAAMC,SAAS,CAACC,QAAQ,CAACJ,WAAW,CAAA;AACpF,IAAA,MAAMK,QAAAA,GAAWC,sBAAAA,EAAAA;AACjB,IAAA,MAAM,EAAEC,aAAa,EAAEC,MAAM,EAAE,GAAGC,iBAAAA,EAAAA;AAElC,IAAA,qBACEC,cAAA,CAACC,yBAAAA,EAAAA;AACCC,QAAAA,YAAAA,EAAYL,aAAAA,CAAc;YACxBM,EAAAA,EAAI,2BAAA;YACJC,cAAAA,EAAgB;AAClB,SAAA,CAAA;QACAC,KAAAA,EAAOP,MAAAA;AACPQ,QAAAA,QAAAA,EAAU,CAACZ,QAAAA,GAAAA;AACTC,YAAAA,QAAAA,CAASY,iBAAAA,CAAUb,QAAAA,CAAAA,CAAAA;AACrB,QAAA,CAAA;kBAECc,MAAAA,CAAOC,OAAO,CAACnB,WAAAA,CAAAA,CAAaoB,GAAG,CAAC,CAAC,CAAChB,QAAAA,EAAUiB,IAAAA,CAAK,iBAChDX,cAAA,CAACY,+BAAAA,EAAAA;gBAAkCP,KAAAA,EAAOX,QAAAA;AACvCiB,gBAAAA,QAAAA,EAAAA;AADsBjB,aAAAA,EAAAA,QAAAA,CAAAA;;AAMjC,CAAA;MAMamB,aAAAA,GAAgB,CAAC,EAAEC,QAAQ,EAAsB,iBAC5Dd,cAAA,CAAChB,OAAAA,EAAAA;QACC+B,MAAAA,EAAO,aAAA;QACPC,SAAS,EAAA,IAAA;QACTC,UAAAA,EAAYC,gCAAAA;QACZC,aAAAA,EAAeD,gCAAAA;QACfE,WAAAA,EAAaF,gCAAAA;QACbG,YAAAA,EAAcH,gCAAAA;QACdI,UAAAA,EAAW,UAAA;AAEVR,QAAAA,QAAAA,EAAAA;AAEH,KAAA;AAMK,MAAMS,qBAAAA,GAAwB,CAAC,EAAET,QAAQ,EAA8B,GAAA;AAC5E,IAAA,qBACEU,eAAA,CAACC,KAAAA,EAAAA;;0BACCzB,cAAA,CAACZ,iBAAAA,EAAAA;gBAAKsC,GAAAA,EAAI,QAAA;gBAASC,cAAAA,EAAe,UAAA;AAChC,gBAAA,QAAA,gBAAA3B,cAAA,CAACd,gBAAAA,EAAAA;oBAAI+B,UAAAA,EAAY,CAAA;oBAAGI,YAAAA,EAAcH,gCAAAA;AAChC,oBAAA,QAAA,gBAAAlB,cAAA,CAACX,YAAAA,EAAAA,EAAAA;;;0BAGLW,cAAA,CAACd,gBAAAA,EAAAA;gBACC+B,UAAAA,EAAY,CAAA;gBACZE,aAAAA,EAAeD,gCAAAA;gBACfU,UAAAA,EAAYV,gCAAAA;gBACZW,WAAAA,EAAaX,gCAAAA;AAEZJ,gBAAAA,QAAAA,EAAAA;;;;AAIT;;;;;;"}
|
|
@@ -6,7 +6,7 @@ var designSystem = require('@strapi/design-system');
|
|
|
6
6
|
var omit = require('lodash/omit');
|
|
7
7
|
var reactIntl = require('react-intl');
|
|
8
8
|
var reactRouterDom = require('react-router-dom');
|
|
9
|
-
var
|
|
9
|
+
var styledComponents = require('styled-components');
|
|
10
10
|
var yup = require('yup');
|
|
11
11
|
var Form = require('../../../components/Form.js');
|
|
12
12
|
var Renderer = require('../../../components/FormInputs/Renderer.js');
|
|
@@ -174,6 +174,12 @@ const REGISTER_ADMIN_SCHEMA = yup__namespace.object().shape({
|
|
|
174
174
|
defaultMessage: 'Email is required'
|
|
175
175
|
}).nullable()
|
|
176
176
|
});
|
|
177
|
+
const isRecord = (value)=>{
|
|
178
|
+
return typeof value === 'object' && !Array.isArray(value) && value !== null;
|
|
179
|
+
};
|
|
180
|
+
const isMessageDescriptor = (value)=>{
|
|
181
|
+
return isRecord(value) && typeof value.id === 'string' && typeof value.defaultMessage === 'string';
|
|
182
|
+
};
|
|
177
183
|
const Register = ({ hasAdmin })=>{
|
|
178
184
|
const { toggleNotification } = Notifications.useNotification();
|
|
179
185
|
const navigate = reactRouterDom.useNavigate();
|
|
@@ -362,24 +368,26 @@ const Register = ({ hasAdmin })=>{
|
|
|
362
368
|
if (err instanceof yup.ValidationError) {
|
|
363
369
|
const formatDescriptor = (msg)=>{
|
|
364
370
|
try {
|
|
365
|
-
if (
|
|
371
|
+
if (msg === undefined || msg === null) return '';
|
|
366
372
|
if (typeof msg === 'string') return msg;
|
|
367
373
|
// Direct descriptor
|
|
368
|
-
if (
|
|
374
|
+
if (isMessageDescriptor(msg)) return formatMessage(msg);
|
|
369
375
|
// Wrapped descriptor: { message: { id, defaultMessage } }
|
|
370
|
-
if (msg
|
|
376
|
+
if (isRecord(msg) && isMessageDescriptor(msg.message)) {
|
|
371
377
|
return formatMessage(msg.message);
|
|
372
378
|
}
|
|
373
379
|
// errors array: [{ id, defaultMessage }]
|
|
374
|
-
if (Array.isArray(msg.errors) && msg.errors.length > 0) {
|
|
380
|
+
if (isRecord(msg) && Array.isArray(msg.errors) && msg.errors.length > 0) {
|
|
375
381
|
const first = msg.errors[0];
|
|
376
382
|
if (typeof first === 'string') return first;
|
|
377
|
-
if (first
|
|
383
|
+
if (isMessageDescriptor(first)) return formatMessage(first);
|
|
378
384
|
}
|
|
379
385
|
// fallback to defaultMessage if present
|
|
380
|
-
if (
|
|
386
|
+
if (isRecord(msg) && typeof msg.defaultMessage === 'string') {
|
|
387
|
+
return msg.defaultMessage;
|
|
388
|
+
}
|
|
381
389
|
return String(msg);
|
|
382
|
-
} catch
|
|
390
|
+
} catch {
|
|
383
391
|
return String(msg);
|
|
384
392
|
}
|
|
385
393
|
};
|
|
@@ -542,7 +550,7 @@ const Register = ({ hasAdmin })=>{
|
|
|
542
550
|
return acc;
|
|
543
551
|
}, {});
|
|
544
552
|
}
|
|
545
|
-
const A =
|
|
553
|
+
const A = styledComponents.styled.a`
|
|
546
554
|
color: ${({ theme })=>theme.colors.primary600};
|
|
547
555
|
`;
|
|
548
556
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Register.js","sources":["../../../../../../../admin/src/pages/Auth/components/Register.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Flex, Grid, Typography, Link } from '@strapi/design-system';\nimport omit from 'lodash/omit';\nimport { type MessageDescriptor, type PrimitiveType, useIntl } from 'react-intl';\nimport { NavLink, Navigate, useNavigate, useMatch, useLocation } from 'react-router-dom';\nimport { styled } from 'styled-components';\nimport * as yup from 'yup';\nimport { ValidationError } from 'yup';\n\nimport {\n Register as RegisterUser,\n RegisterAdmin,\n} from '../../../../../shared/contracts/authentication';\nimport { Form, FormHelpers } from '../../../components/Form';\nimport { InputRenderer } from '../../../components/FormInputs/Renderer';\nimport { useNpsSurveySettings } from '../../../components/NpsSurvey';\nimport { Logo } from '../../../components/UnauthenticatedLogo';\nimport { useTypedDispatch } from '../../../core/store/hooks';\nimport { useNotification } from '../../../features/Notifications';\nimport { useTracking } from '../../../features/Tracking';\nimport { useAPIErrorHandler } from '../../../hooks/useAPIErrorHandler';\nimport { LayoutContent, UnauthenticatedLayout } from '../../../layouts/UnauthenticatedLayout';\nimport { login } from '../../../reducer';\nimport {\n useGetRegistrationInfoQuery,\n useRegisterAdminMutation,\n useRegisterUserMutation,\n} from '../../../services/auth';\nimport { isBaseQueryError } from '../../../utils/baseQuery';\nimport { getOrCreateDeviceId } from '../../../utils/deviceId';\nimport { getByteSize } from '../../../utils/strings';\nimport { translatedErrors } from '../../../utils/translatedErrors';\n\nconst REGISTER_USER_SCHEMA = yup.object().shape({\n firstname: yup.string().trim().required(translatedErrors.required).nullable(),\n lastname: yup.string().nullable(),\n password: yup\n .string()\n .min(8, {\n id: translatedErrors.minLength.id,\n defaultMessage: 'Password must be at least 8 characters',\n values: { min: 8 },\n })\n .test(\n 'max-bytes',\n {\n id: 'components.Input.error.contain.maxBytes',\n defaultMessage: 'Password must be less than 73 bytes',\n },\n function (value) {\n if (!value || typeof value !== 'string') return true; // validated elsewhere\n\n const byteSize = getByteSize(value);\n return byteSize <= 72;\n }\n )\n .test(\n 'lowercase',\n {\n message: {\n id: 'components.Input.error.contain.lowercase',\n defaultMessage: 'Password must contain at least 1 lowercase letter',\n },\n },\n (value) => {\n if (!value) return true;\n return /[a-z]/.test(value);\n }\n )\n .test(\n 'uppercase',\n {\n message: {\n id: 'components.Input.error.contain.uppercase',\n defaultMessage: 'Password must contain at least 1 uppercase letter',\n },\n },\n (value) => {\n if (!value) return true;\n return /[A-Z]/.test(value);\n }\n )\n .test(\n 'number',\n {\n message: {\n id: 'components.Input.error.contain.number',\n defaultMessage: 'Password must contain at least 1 number',\n },\n },\n (value) => {\n if (!value) return true;\n return /\\d/.test(value);\n }\n )\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'Password is required',\n })\n .nullable(),\n confirmPassword: yup\n .string()\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'Confirm password is required',\n })\n .oneOf([yup.ref('password'), null], {\n id: 'components.Input.error.password.noMatch',\n defaultMessage: 'Passwords must match',\n })\n .nullable(),\n registrationToken: yup.string().required({\n id: translatedErrors.required.id,\n defaultMessage: 'Registration token is required',\n }),\n});\n\nconst REGISTER_ADMIN_SCHEMA = yup.object().shape({\n firstname: yup\n .string()\n .trim()\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'Firstname is required',\n })\n .nullable(),\n lastname: yup.string().nullable(),\n password: yup\n .string()\n .min(8, {\n id: translatedErrors.minLength.id,\n defaultMessage: 'Password must be at least 8 characters',\n values: { min: 8 },\n })\n .test(\n 'max-bytes',\n {\n id: 'components.Input.error.contain.maxBytes',\n defaultMessage: 'Password must be less than 73 bytes',\n },\n function (value) {\n if (!value) return true;\n return new TextEncoder().encode(value).length <= 72;\n }\n )\n .test(\n 'lowercase',\n {\n message: {\n id: 'components.Input.error.contain.lowercase',\n defaultMessage: 'Password must contain at least 1 lowercase letter',\n },\n },\n (value) => {\n if (!value) return true;\n return /[a-z]/.test(value);\n }\n )\n .test(\n 'uppercase',\n {\n message: {\n id: 'components.Input.error.contain.uppercase',\n defaultMessage: 'Password must contain at least 1 uppercase letter',\n },\n },\n (value) => {\n if (!value) return true;\n return /[A-Z]/.test(value);\n }\n )\n .test(\n 'number',\n {\n message: {\n id: 'components.Input.error.contain.number',\n defaultMessage: 'Password must contain at least 1 number',\n },\n },\n (value) => {\n if (!value) return true;\n return /\\d/.test(value);\n }\n )\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'Password is required',\n })\n .nullable(),\n confirmPassword: yup\n .string()\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'Confirm password is required',\n })\n .nullable()\n .oneOf([yup.ref('password'), null], {\n id: 'components.Input.error.password.noMatch',\n defaultMessage: 'Passwords must match',\n }),\n email: yup\n .string()\n .email({\n id: translatedErrors.email.id,\n defaultMessage: 'Not a valid email',\n })\n .strict()\n .lowercase({\n id: translatedErrors.lowercase.id,\n defaultMessage: 'Email must be lowercase',\n })\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'Email is required',\n })\n .nullable(),\n});\n\ninterface RegisterProps {\n hasAdmin?: boolean;\n}\n\ninterface RegisterFormValues {\n firstname: string;\n lastname: string;\n email: string;\n password: string;\n confirmPassword: string;\n registrationToken: string | undefined;\n news: boolean;\n}\n\ninterface IntlFormattedMessage extends MessageDescriptor {\n values?: Record<string, PrimitiveType>;\n}\n\nconst Register = ({ hasAdmin }: RegisterProps) => {\n const { toggleNotification } = useNotification();\n const navigate = useNavigate();\n const [submitCount, setSubmitCount] = React.useState(0);\n const [apiError, setApiError] = React.useState<string>();\n const { trackUsage } = useTracking();\n const { formatMessage } = useIntl();\n const { search: searchString } = useLocation();\n const query = React.useMemo(() => new URLSearchParams(searchString), [searchString]);\n const match = useMatch('/auth/:authType');\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n const { setNpsSurveySettings } = useNpsSurveySettings();\n\n const registrationToken = query.get('registrationToken');\n\n const { data: userInfo, error } = useGetRegistrationInfoQuery(registrationToken as string, {\n skip: !registrationToken,\n });\n\n React.useEffect(() => {\n if (error) {\n const message: string = isBaseQueryError(error)\n ? formatAPIError(error)\n : (error.message ?? '');\n\n toggleNotification({\n type: 'danger',\n message,\n });\n\n navigate(`/auth/oops?info=${encodeURIComponent(message)}`);\n }\n }, [error, formatAPIError, navigate, toggleNotification]);\n\n const [registerAdmin] = useRegisterAdminMutation();\n const [registerUser] = useRegisterUserMutation();\n const dispatch = useTypedDispatch();\n\n const handleRegisterAdmin = async (\n { news, ...body }: RegisterAdmin.Request['body'] & { news: boolean },\n setFormErrors: FormHelpers<RegisterFormValues>['setErrors']\n ) => {\n const res = await registerAdmin({ ...body, deviceId: getOrCreateDeviceId() });\n\n if ('data' in res) {\n dispatch(login({ token: res.data.token }));\n\n if (news) {\n // Only enable EE survey if user accepted the newsletter\n setNpsSurveySettings((s) => ({ ...s, enabled: true }));\n\n navigate({\n pathname: '/usecase',\n search: `?hasAdmin=${true}`,\n });\n } else {\n navigate('/');\n }\n } else {\n if (isBaseQueryError(res.error)) {\n trackUsage('didNotCreateFirstAdmin');\n\n if (res.error.name === 'ValidationError') {\n setFormErrors(formatValidationErrors(res.error));\n return;\n }\n\n setApiError(formatAPIError(res.error));\n }\n }\n };\n\n const handleRegisterUser = async (\n { news, ...body }: RegisterUser.Request['body'] & { news: boolean },\n setFormErrors: FormHelpers<RegisterFormValues>['setErrors']\n ) => {\n const res = await registerUser({ ...body, deviceId: getOrCreateDeviceId() });\n\n if ('data' in res) {\n dispatch(login({ token: res.data.token }));\n\n if (news) {\n // Only enable EE survey if user accepted the newsletter\n setNpsSurveySettings((s) => ({ ...s, enabled: true }));\n\n navigate({\n pathname: '/usecase',\n search: `?hasAdmin=${hasAdmin}`,\n });\n } else {\n navigate('/');\n }\n } else {\n if (isBaseQueryError(res.error)) {\n trackUsage('didNotCreateFirstAdmin');\n\n if (res.error.name === 'ValidationError') {\n setFormErrors(formatValidationErrors(res.error));\n return;\n }\n\n setApiError(formatAPIError(res.error));\n }\n }\n };\n\n if (\n !match ||\n (match.params.authType !== 'register' && match.params.authType !== 'register-admin')\n ) {\n return <Navigate to=\"/\" />;\n }\n\n const isAdminRegistration = match.params.authType === 'register-admin';\n\n const schema = isAdminRegistration ? REGISTER_ADMIN_SCHEMA : REGISTER_USER_SCHEMA;\n\n return (\n <UnauthenticatedLayout>\n <LayoutContent>\n <Flex direction=\"column\" alignItems=\"center\" gap={3}>\n <Logo />\n\n <Typography tag=\"h1\" variant=\"alpha\" textAlign=\"center\">\n {formatMessage({\n id: 'Auth.form.welcome.title',\n defaultMessage: 'Welcome to Strapi!',\n })}\n </Typography>\n <Typography variant=\"epsilon\" textColor=\"neutral600\" textAlign=\"center\">\n {formatMessage({\n id: 'Auth.form.register.subtitle',\n defaultMessage:\n 'Credentials are only used to authenticate in Strapi. All saved data will be stored in your database.',\n })}\n </Typography>\n {apiError ? (\n <Typography id=\"global-form-error\" role=\"alert\" tabIndex={-1} textColor=\"danger600\">\n {apiError}\n </Typography>\n ) : null}\n </Flex>\n <Form\n method=\"POST\"\n initialValues={\n {\n firstname: userInfo?.firstname || '',\n lastname: userInfo?.lastname || '',\n email: userInfo?.email || '',\n password: '',\n confirmPassword: '',\n registrationToken: registrationToken || undefined,\n news: false,\n } satisfies RegisterFormValues\n }\n onSubmit={async (data, helpers) => {\n const normalizedData = normalizeData(data);\n\n try {\n await schema.validate(normalizedData, { abortEarly: false });\n\n if (submitCount > 0 && isAdminRegistration) {\n trackUsage('didSubmitWithErrorsFirstAdmin', { count: submitCount.toString() });\n }\n\n if (normalizedData.registrationToken) {\n handleRegisterUser(\n {\n userInfo: omit(normalizedData, [\n 'registrationToken',\n 'confirmPassword',\n 'email',\n 'news',\n ]),\n registrationToken: normalizedData.registrationToken,\n news: normalizedData.news,\n },\n helpers.setErrors\n );\n } else {\n await handleRegisterAdmin(\n omit(normalizedData, ['registrationToken', 'confirmPassword']),\n helpers.setErrors\n );\n }\n } catch (err) {\n if (err instanceof ValidationError) {\n const formatDescriptor = (msg: any) => {\n try {\n if (!msg) return '';\n if (typeof msg === 'string') return msg;\n // Direct descriptor\n if ('id' in msg && 'defaultMessage' in msg) return formatMessage(msg as any);\n // Wrapped descriptor: { message: { id, defaultMessage } }\n if (msg.message && typeof msg.message === 'object' && 'id' in msg.message) {\n return formatMessage(msg.message as any);\n }\n // errors array: [{ id, defaultMessage }]\n if (Array.isArray(msg.errors) && msg.errors.length > 0) {\n const first = msg.errors[0];\n if (typeof first === 'string') return first;\n if (first && typeof first === 'object' && 'id' in first)\n return formatMessage(first as any);\n }\n // fallback to defaultMessage if present\n if ('defaultMessage' in msg) return msg.defaultMessage;\n return String(msg);\n } catch (e) {\n return String(msg);\n }\n };\n\n const computed = err.inner.reduce<Record<string, string>>(\n (acc, { message, path }) => {\n if (!path) return acc;\n acc[path] = formatDescriptor(message);\n return acc;\n },\n {}\n );\n\n helpers.setErrors(computed);\n }\n\n setSubmitCount(submitCount + 1);\n }\n }}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6} marginTop={7}>\n <Grid.Root gap={4}>\n {[\n {\n label: formatMessage({\n id: 'Auth.form.firstname.label',\n defaultMessage: 'Firstname',\n }),\n name: 'firstname',\n required: true,\n size: 6,\n type: 'string' as const,\n },\n {\n label: formatMessage({\n id: 'Auth.form.lastname.label',\n defaultMessage: 'Lastname',\n }),\n name: 'lastname',\n size: 6,\n type: 'string' as const,\n },\n {\n disabled: !isAdminRegistration,\n label: formatMessage({\n id: 'Auth.form.email.label',\n defaultMessage: 'Email',\n }),\n name: 'email',\n required: true,\n size: 12,\n type: 'email' as const,\n },\n {\n hint: formatMessage({\n id: 'Auth.form.password.hint',\n defaultMessage:\n 'Must be at least 8 characters, 1 uppercase, 1 lowercase & 1 number',\n }),\n label: formatMessage({\n id: 'global.password',\n defaultMessage: 'Password',\n }),\n name: 'password',\n required: true,\n size: 12,\n type: 'password' as const,\n },\n {\n label: formatMessage({\n id: 'Auth.form.confirmPassword.label',\n defaultMessage: 'Confirm Password',\n }),\n name: 'confirmPassword',\n required: true,\n size: 12,\n type: 'password' as const,\n },\n {\n label: formatMessage(\n {\n id: 'Auth.form.register.news.label',\n defaultMessage:\n 'Keep me updated about new features & upcoming improvements (by doing this you accept the {terms} and the {policy}).',\n },\n {\n terms: (\n <A target=\"_blank\" href=\"https://strapi.io/terms\" rel=\"noreferrer\">\n {formatMessage({\n id: 'Auth.privacy-policy-agreement.terms',\n defaultMessage: 'terms',\n })}\n </A>\n ),\n policy: (\n <A target=\"_blank\" href=\"https://strapi.io/privacy\" rel=\"noreferrer\">\n {formatMessage({\n id: 'Auth.privacy-policy-agreement.policy',\n defaultMessage: 'policy',\n })}\n </A>\n ),\n }\n ),\n name: 'news',\n size: 12,\n type: 'checkbox' as const,\n },\n ].map(({ size, ...field }) => (\n <Grid.Item\n key={field.name}\n xs={12}\n m={size}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <InputRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n <Button fullWidth size=\"L\" type=\"submit\">\n {formatMessage({\n id: 'Auth.form.button.register',\n defaultMessage: \"Let's start\",\n })}\n </Button>\n </Flex>\n </Form>\n {match?.params.authType === 'register' && (\n <Box paddingTop={4}>\n <Flex justifyContent=\"center\">\n <Link tag={NavLink} to=\"/auth/login\">\n {formatMessage({\n id: 'Auth.link.signin.account',\n defaultMessage: 'Already have an account?',\n })}\n </Link>\n </Flex>\n </Box>\n )}\n </LayoutContent>\n </UnauthenticatedLayout>\n );\n};\n\ntype StringKeys<T> = {\n [K in keyof T]: T[K] extends string | undefined ? K : never;\n}[keyof T];\n\n/**\n * @description Trims all values but the password & sets lastName to null if it's a falsey value.\n */\nfunction normalizeData(data: RegisterFormValues) {\n return Object.entries(data).reduce(\n (acc, [key, value]) => {\n type PasswordKeys = Extract<keyof RegisterFormValues, 'password' | 'confirmPassword'>;\n type RegisterFormStringValues = Exclude<\n keyof Pick<RegisterFormValues, StringKeys<RegisterFormValues>>,\n PasswordKeys\n >;\n\n if (!['password', 'confirmPassword'].includes(key) && typeof value === 'string') {\n acc[key as RegisterFormStringValues] = value.trim();\n\n if (key === 'lastname') {\n acc[key] = value || undefined;\n }\n } else {\n acc[key as PasswordKeys] = value;\n }\n\n return acc;\n },\n {} as {\n firstname: string;\n lastname: string | undefined;\n email: string;\n password: string;\n confirmPassword: string;\n registrationToken: string | undefined;\n news: boolean;\n }\n );\n}\n\nconst A = styled.a`\n color: ${({ theme }) => theme.colors.primary600};\n`;\n\nexport { Register };\nexport type { RegisterProps };\n"],"names":["REGISTER_USER_SCHEMA","yup","object","shape","firstname","string","trim","required","translatedErrors","nullable","lastname","password","min","id","minLength","defaultMessage","values","test","value","byteSize","getByteSize","message","confirmPassword","oneOf","ref","registrationToken","REGISTER_ADMIN_SCHEMA","TextEncoder","encode","length","email","strict","lowercase","Register","hasAdmin","toggleNotification","useNotification","navigate","useNavigate","submitCount","setSubmitCount","React","useState","apiError","setApiError","trackUsage","useTracking","formatMessage","useIntl","search","searchString","useLocation","query","useMemo","URLSearchParams","match","useMatch","_unstableFormatAPIError","formatAPIError","_unstableFormatValidationErrors","formatValidationErrors","useAPIErrorHandler","setNpsSurveySettings","useNpsSurveySettings","get","data","userInfo","error","useGetRegistrationInfoQuery","skip","useEffect","isBaseQueryError","type","encodeURIComponent","registerAdmin","useRegisterAdminMutation","registerUser","useRegisterUserMutation","dispatch","useTypedDispatch","handleRegisterAdmin","news","body","setFormErrors","res","deviceId","getOrCreateDeviceId","login","token","s","enabled","pathname","name","handleRegisterUser","params","authType","_jsx","Navigate","to","isAdminRegistration","schema","UnauthenticatedLayout","_jsxs","LayoutContent","Flex","direction","alignItems","gap","Logo","Typography","tag","variant","textAlign","textColor","role","tabIndex","Form","method","initialValues","undefined","onSubmit","helpers","normalizedData","normalizeData","validate","abortEarly","count","toString","omit","setErrors","err","ValidationError","formatDescriptor","msg","Array","isArray","errors","first","String","e","computed","inner","reduce","acc","path","marginTop","Grid","Root","label","size","disabled","hint","terms","A","target","href","rel","policy","map","field","Item","xs","m","InputRenderer","Button","fullWidth","Box","paddingTop","justifyContent","Link","NavLink","Object","entries","key","includes","styled","a","theme","colors","primary600"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCA,MAAMA,oBAAAA,GAAuBC,cAAAA,CAAIC,MAAM,EAAA,CAAGC,KAAK,CAAC;IAC9CC,SAAAA,EAAWH,cAAAA,CAAII,MAAM,EAAA,CAAGC,IAAI,EAAA,CAAGC,QAAQ,CAACC,iCAAAA,CAAiBD,QAAQ,CAAA,CAAEE,QAAQ,EAAA;IAC3EC,QAAAA,EAAUT,cAAAA,CAAII,MAAM,EAAA,CAAGI,QAAQ,EAAA;AAC/BE,IAAAA,QAAAA,EAAUV,cAAAA,CACPI,MAAM,EAAA,CACNO,GAAG,CAAC,CAAA,EAAG;QACNC,EAAAA,EAAIL,iCAAAA,CAAiBM,SAAS,CAACD,EAAE;QACjCE,cAAAA,EAAgB,wCAAA;QAChBC,MAAAA,EAAQ;YAAEJ,GAAAA,EAAK;AAAE;KACnB,CAAA,CACCK,IAAI,CACH,WAAA,EACA;QACEJ,EAAAA,EAAI,yCAAA;QACJE,cAAAA,EAAgB;AAClB,KAAA,EACA,SAAUG,KAAK,EAAA;AACb,QAAA,IAAI,CAACA,KAAAA,IAAS,OAAOA,UAAU,QAAA,EAAU,OAAO;AAEhD,QAAA,MAAMC,WAAWC,mBAAAA,CAAYF,KAAAA,CAAAA;AAC7B,QAAA,OAAOC,QAAAA,IAAY,EAAA;IACrB,CAAA,CAAA,CAEDF,IAAI,CACH,WAAA,EACA;QACEI,OAAAA,EAAS;YACPR,EAAAA,EAAI,0CAAA;YACJE,cAAAA,EAAgB;AAClB;AACF,KAAA,EACA,CAACG,KAAAA,GAAAA;QACC,IAAI,CAACA,OAAO,OAAO,IAAA;QACnB,OAAO,OAAA,CAAQD,IAAI,CAACC,KAAAA,CAAAA;IACtB,CAAA,CAAA,CAEDD,IAAI,CACH,WAAA,EACA;QACEI,OAAAA,EAAS;YACPR,EAAAA,EAAI,0CAAA;YACJE,cAAAA,EAAgB;AAClB;AACF,KAAA,EACA,CAACG,KAAAA,GAAAA;QACC,IAAI,CAACA,OAAO,OAAO,IAAA;QACnB,OAAO,OAAA,CAAQD,IAAI,CAACC,KAAAA,CAAAA;IACtB,CAAA,CAAA,CAEDD,IAAI,CACH,QAAA,EACA;QACEI,OAAAA,EAAS;YACPR,EAAAA,EAAI,uCAAA;YACJE,cAAAA,EAAgB;AAClB;AACF,KAAA,EACA,CAACG,KAAAA,GAAAA;QACC,IAAI,CAACA,OAAO,OAAO,IAAA;QACnB,OAAO,IAAA,CAAKD,IAAI,CAACC,KAAAA,CAAAA;AACnB,IAAA,CAAA,CAAA,CAEDX,QAAQ,CAAC;QACRM,EAAAA,EAAIL,iCAAAA,CAAiBD,QAAQ,CAACM,EAAE;QAChCE,cAAAA,EAAgB;AAClB,KAAA,CAAA,CACCN,QAAQ,EAAA;AACXa,IAAAA,eAAAA,EAAiBrB,cAAAA,CACdI,MAAM,EAAA,CACNE,QAAQ,CAAC;QACRM,EAAAA,EAAIL,iCAAAA,CAAiBD,QAAQ,CAACM,EAAE;QAChCE,cAAAA,EAAgB;AAClB,KAAA,CAAA,CACCQ,KAAK,CAAC;AAACtB,QAAAA,cAAAA,CAAIuB,GAAG,CAAC,UAAA,CAAA;AAAa,QAAA;KAAK,EAAE;QAClCX,EAAAA,EAAI,yCAAA;QACJE,cAAAA,EAAgB;AAClB,KAAA,CAAA,CACCN,QAAQ,EAAA;AACXgB,IAAAA,iBAAAA,EAAmBxB,cAAAA,CAAII,MAAM,EAAA,CAAGE,QAAQ,CAAC;QACvCM,EAAAA,EAAIL,iCAAAA,CAAiBD,QAAQ,CAACM,EAAE;QAChCE,cAAAA,EAAgB;AAClB,KAAA;AACF,CAAA,CAAA;AAEA,MAAMW,qBAAAA,GAAwBzB,cAAAA,CAAIC,MAAM,EAAA,CAAGC,KAAK,CAAC;AAC/CC,IAAAA,SAAAA,EAAWH,eACRI,MAAM,EAAA,CACNC,IAAI,EAAA,CACJC,QAAQ,CAAC;QACRM,EAAAA,EAAIL,iCAAAA,CAAiBD,QAAQ,CAACM,EAAE;QAChCE,cAAAA,EAAgB;AAClB,KAAA,CAAA,CACCN,QAAQ,EAAA;IACXC,QAAAA,EAAUT,cAAAA,CAAII,MAAM,EAAA,CAAGI,QAAQ,EAAA;AAC/BE,IAAAA,QAAAA,EAAUV,cAAAA,CACPI,MAAM,EAAA,CACNO,GAAG,CAAC,CAAA,EAAG;QACNC,EAAAA,EAAIL,iCAAAA,CAAiBM,SAAS,CAACD,EAAE;QACjCE,cAAAA,EAAgB,wCAAA;QAChBC,MAAAA,EAAQ;YAAEJ,GAAAA,EAAK;AAAE;KACnB,CAAA,CACCK,IAAI,CACH,WAAA,EACA;QACEJ,EAAAA,EAAI,yCAAA;QACJE,cAAAA,EAAgB;AAClB,KAAA,EACA,SAAUG,KAAK,EAAA;QACb,IAAI,CAACA,OAAO,OAAO,IAAA;AACnB,QAAA,OAAO,IAAIS,WAAAA,EAAAA,CAAcC,MAAM,CAACV,KAAAA,CAAAA,CAAOW,MAAM,IAAI,EAAA;IACnD,CAAA,CAAA,CAEDZ,IAAI,CACH,WAAA,EACA;QACEI,OAAAA,EAAS;YACPR,EAAAA,EAAI,0CAAA;YACJE,cAAAA,EAAgB;AAClB;AACF,KAAA,EACA,CAACG,KAAAA,GAAAA;QACC,IAAI,CAACA,OAAO,OAAO,IAAA;QACnB,OAAO,OAAA,CAAQD,IAAI,CAACC,KAAAA,CAAAA;IACtB,CAAA,CAAA,CAEDD,IAAI,CACH,WAAA,EACA;QACEI,OAAAA,EAAS;YACPR,EAAAA,EAAI,0CAAA;YACJE,cAAAA,EAAgB;AAClB;AACF,KAAA,EACA,CAACG,KAAAA,GAAAA;QACC,IAAI,CAACA,OAAO,OAAO,IAAA;QACnB,OAAO,OAAA,CAAQD,IAAI,CAACC,KAAAA,CAAAA;IACtB,CAAA,CAAA,CAEDD,IAAI,CACH,QAAA,EACA;QACEI,OAAAA,EAAS;YACPR,EAAAA,EAAI,uCAAA;YACJE,cAAAA,EAAgB;AAClB;AACF,KAAA,EACA,CAACG,KAAAA,GAAAA;QACC,IAAI,CAACA,OAAO,OAAO,IAAA;QACnB,OAAO,IAAA,CAAKD,IAAI,CAACC,KAAAA,CAAAA;AACnB,IAAA,CAAA,CAAA,CAEDX,QAAQ,CAAC;QACRM,EAAAA,EAAIL,iCAAAA,CAAiBD,QAAQ,CAACM,EAAE;QAChCE,cAAAA,EAAgB;AAClB,KAAA,CAAA,CACCN,QAAQ,EAAA;AACXa,IAAAA,eAAAA,EAAiBrB,cAAAA,CACdI,MAAM,EAAA,CACNE,QAAQ,CAAC;QACRM,EAAAA,EAAIL,iCAAAA,CAAiBD,QAAQ,CAACM,EAAE;QAChCE,cAAAA,EAAgB;KAClB,CAAA,CACCN,QAAQ,EAAA,CACRc,KAAK,CAAC;AAACtB,QAAAA,cAAAA,CAAIuB,GAAG,CAAC,UAAA,CAAA;AAAa,QAAA;KAAK,EAAE;QAClCX,EAAAA,EAAI,yCAAA;QACJE,cAAAA,EAAgB;AAClB,KAAA,CAAA;AACFe,IAAAA,KAAAA,EAAO7B,cAAAA,CACJI,MAAM,EAAA,CACNyB,KAAK,CAAC;QACLjB,EAAAA,EAAIL,iCAAAA,CAAiBsB,KAAK,CAACjB,EAAE;QAC7BE,cAAAA,EAAgB;KAClB,CAAA,CACCgB,MAAM,EAAA,CACNC,SAAS,CAAC;QACTnB,EAAAA,EAAIL,iCAAAA,CAAiBwB,SAAS,CAACnB,EAAE;QACjCE,cAAAA,EAAgB;AAClB,KAAA,CAAA,CACCR,QAAQ,CAAC;QACRM,EAAAA,EAAIL,iCAAAA,CAAiBD,QAAQ,CAACM,EAAE;QAChCE,cAAAA,EAAgB;AAClB,KAAA,CAAA,CACCN,QAAQ;AACb,CAAA,CAAA;AAoBA,MAAMwB,QAAAA,GAAW,CAAC,EAAEC,QAAQ,EAAiB,GAAA;IAC3C,MAAM,EAAEC,kBAAkB,EAAE,GAAGC,6BAAAA,EAAAA;AAC/B,IAAA,MAAMC,QAAAA,GAAWC,0BAAAA,EAAAA;AACjB,IAAA,MAAM,CAACC,WAAAA,EAAaC,cAAAA,CAAe,GAAGC,gBAAAA,CAAMC,QAAQ,CAAC,CAAA,CAAA;AACrD,IAAA,MAAM,CAACC,QAAAA,EAAUC,WAAAA,CAAY,GAAGH,iBAAMC,QAAQ,EAAA;IAC9C,MAAM,EAAEG,UAAU,EAAE,GAAGC,oBAAAA,EAAAA;IACvB,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAM,EAAEC,MAAAA,EAAQC,YAAY,EAAE,GAAGC,0BAAAA,EAAAA;AACjC,IAAA,MAAMC,QAAQX,gBAAAA,CAAMY,OAAO,CAAC,IAAM,IAAIC,gBAAgBJ,YAAAA,CAAAA,EAAe;AAACA,QAAAA;AAAa,KAAA,CAAA;AACnF,IAAA,MAAMK,QAAQC,uBAAAA,CAAS,iBAAA,CAAA;AACvB,IAAA,MAAM,EACJC,uBAAAA,EAAyBC,cAAc,EACvCC,+BAAAA,EAAiCC,sBAAsB,EACxD,GAAGC,qCAAAA,EAAAA;IACJ,MAAM,EAAEC,oBAAoB,EAAE,GAAGC,8BAAAA,EAAAA;IAEjC,MAAMtC,iBAAAA,GAAoB2B,KAAAA,CAAMY,GAAG,CAAC,mBAAA,CAAA;IAEpC,MAAM,EAAEC,MAAMC,QAAQ,EAAEC,KAAK,EAAE,GAAGC,iCAA4B3C,iBAAAA,EAA6B;AACzF4C,QAAAA,IAAAA,EAAM,CAAC5C;AACT,KAAA,CAAA;AAEAgB,IAAAA,gBAAAA,CAAM6B,SAAS,CAAC,IAAA;AACd,QAAA,IAAIH,KAAAA,EAAO;AACT,YAAA,MAAM9C,UAAkBkD,0BAAAA,CAAiBJ,KAAAA,CAAAA,GACrCT,eAAeS,KAAAA,CAAAA,GACdA,KAAAA,CAAM9C,OAAO,IAAI,EAAA;YAEtBc,kBAAAA,CAAmB;gBACjBqC,IAAAA,EAAM,QAAA;AACNnD,gBAAAA;AACF,aAAA,CAAA;AAEAgB,YAAAA,QAAAA,CAAS,CAAC,gBAAgB,EAAEoC,kBAAAA,CAAmBpD,OAAAA,CAAAA,CAAAA,CAAU,CAAA;AAC3D,QAAA;IACF,CAAA,EAAG;AAAC8C,QAAAA,KAAAA;AAAOT,QAAAA,cAAAA;AAAgBrB,QAAAA,QAAAA;AAAUF,QAAAA;AAAmB,KAAA,CAAA;IAExD,MAAM,CAACuC,cAAc,GAAGC,6BAAAA,EAAAA;IACxB,MAAM,CAACC,aAAa,GAAGC,4BAAAA,EAAAA;AACvB,IAAA,MAAMC,QAAAA,GAAWC,sBAAAA,EAAAA;AAEjB,IAAA,MAAMC,sBAAsB,OAC1B,EAAEC,IAAI,EAAE,GAAGC,MAAyD,EACpEC,aAAAA,GAAAA;QAEA,MAAMC,GAAAA,GAAM,MAAMV,aAAAA,CAAc;AAAE,YAAA,GAAGQ,IAAI;YAAEG,QAAAA,EAAUC,4BAAAA;AAAsB,SAAA,CAAA;AAE3E,QAAA,IAAI,UAAUF,GAAAA,EAAK;AACjBN,YAAAA,QAAAA,CAASS,aAAAA,CAAM;gBAAEC,KAAAA,EAAOJ,GAAAA,CAAInB,IAAI,CAACuB;AAAM,aAAA,CAAA,CAAA;AAEvC,YAAA,IAAIP,IAAAA,EAAM;;gBAERnB,oBAAAA,CAAqB,CAAC2B,KAAO;AAAE,wBAAA,GAAGA,CAAC;wBAAEC,OAAAA,EAAS;qBAAK,CAAA,CAAA;gBAEnDrD,QAAAA,CAAS;oBACPsD,QAAAA,EAAU,UAAA;oBACV1C,MAAAA,EAAQ,CAAC,UAAU,EAAE,IAAA,CAAA;AACvB,iBAAA,CAAA;YACF,CAAA,MAAO;gBACLZ,QAAAA,CAAS,GAAA,CAAA;AACX,YAAA;QACF,CAAA,MAAO;YACL,IAAIkC,0BAAAA,CAAiBa,GAAAA,CAAIjB,KAAK,CAAA,EAAG;gBAC/BtB,UAAAA,CAAW,wBAAA,CAAA;AAEX,gBAAA,IAAIuC,GAAAA,CAAIjB,KAAK,CAACyB,IAAI,KAAK,iBAAA,EAAmB;oBACxCT,aAAAA,CAAcvB,sBAAAA,CAAuBwB,IAAIjB,KAAK,CAAA,CAAA;AAC9C,oBAAA;AACF,gBAAA;gBAEAvB,WAAAA,CAAYc,cAAAA,CAAe0B,IAAIjB,KAAK,CAAA,CAAA;AACtC,YAAA;AACF,QAAA;AACF,IAAA,CAAA;AAEA,IAAA,MAAM0B,qBAAqB,OACzB,EAAEZ,IAAI,EAAE,GAAGC,MAAwD,EACnEC,aAAAA,GAAAA;QAEA,MAAMC,GAAAA,GAAM,MAAMR,YAAAA,CAAa;AAAE,YAAA,GAAGM,IAAI;YAAEG,QAAAA,EAAUC,4BAAAA;AAAsB,SAAA,CAAA;AAE1E,QAAA,IAAI,UAAUF,GAAAA,EAAK;AACjBN,YAAAA,QAAAA,CAASS,aAAAA,CAAM;gBAAEC,KAAAA,EAAOJ,GAAAA,CAAInB,IAAI,CAACuB;AAAM,aAAA,CAAA,CAAA;AAEvC,YAAA,IAAIP,IAAAA,EAAM;;gBAERnB,oBAAAA,CAAqB,CAAC2B,KAAO;AAAE,wBAAA,GAAGA,CAAC;wBAAEC,OAAAA,EAAS;qBAAK,CAAA,CAAA;gBAEnDrD,QAAAA,CAAS;oBACPsD,QAAAA,EAAU,UAAA;oBACV1C,MAAAA,EAAQ,CAAC,UAAU,EAAEf,QAAAA,CAAAA;AACvB,iBAAA,CAAA;YACF,CAAA,MAAO;gBACLG,QAAAA,CAAS,GAAA,CAAA;AACX,YAAA;QACF,CAAA,MAAO;YACL,IAAIkC,0BAAAA,CAAiBa,GAAAA,CAAIjB,KAAK,CAAA,EAAG;gBAC/BtB,UAAAA,CAAW,wBAAA,CAAA;AAEX,gBAAA,IAAIuC,GAAAA,CAAIjB,KAAK,CAACyB,IAAI,KAAK,iBAAA,EAAmB;oBACxCT,aAAAA,CAAcvB,sBAAAA,CAAuBwB,IAAIjB,KAAK,CAAA,CAAA;AAC9C,oBAAA;AACF,gBAAA;gBAEAvB,WAAAA,CAAYc,cAAAA,CAAe0B,IAAIjB,KAAK,CAAA,CAAA;AACtC,YAAA;AACF,QAAA;AACF,IAAA,CAAA;AAEA,IAAA,IACE,CAACZ,KAAAA,IACAA,KAAAA,CAAMuC,MAAM,CAACC,QAAQ,KAAK,UAAA,IAAcxC,KAAAA,CAAMuC,MAAM,CAACC,QAAQ,KAAK,gBAAA,EACnE;AACA,QAAA,qBAAOC,cAAA,CAACC,uBAAAA,EAAAA;YAASC,EAAAA,EAAG;;AACtB,IAAA;AAEA,IAAA,MAAMC,mBAAAA,GAAsB5C,KAAAA,CAAMuC,MAAM,CAACC,QAAQ,KAAK,gBAAA;IAEtD,MAAMK,MAAAA,GAASD,sBAAsBzE,qBAAAA,GAAwB1B,oBAAAA;AAE7D,IAAA,qBACEgG,cAAA,CAACK,2CAAAA,EAAAA;AACC,QAAA,QAAA,gBAAAC,eAAA,CAACC,mCAAAA,EAAAA;;8BACCD,eAAA,CAACE,iBAAAA,EAAAA;oBAAKC,SAAAA,EAAU,QAAA;oBAASC,UAAAA,EAAW,QAAA;oBAASC,GAAAA,EAAK,CAAA;;sCAChDX,cAAA,CAACY,wBAAAA,EAAAA,EAAAA,CAAAA;sCAEDZ,cAAA,CAACa,uBAAAA,EAAAA;4BAAWC,GAAAA,EAAI,IAAA;4BAAKC,OAAAA,EAAQ,OAAA;4BAAQC,SAAAA,EAAU,QAAA;sCAC5CjE,aAAAA,CAAc;gCACblC,EAAAA,EAAI,yBAAA;gCACJE,cAAAA,EAAgB;AAClB,6BAAA;;sCAEFiF,cAAA,CAACa,uBAAAA,EAAAA;4BAAWE,OAAAA,EAAQ,SAAA;4BAAUE,SAAAA,EAAU,YAAA;4BAAaD,SAAAA,EAAU,QAAA;sCAC5DjE,aAAAA,CAAc;gCACblC,EAAAA,EAAI,6BAAA;gCACJE,cAAAA,EACE;AACJ,6BAAA;;AAED4B,wBAAAA,QAAAA,iBACCqD,cAAA,CAACa,uBAAAA,EAAAA;4BAAWhG,EAAAA,EAAG,mBAAA;4BAAoBqG,IAAAA,EAAK,OAAA;AAAQC,4BAAAA,QAAAA,EAAU,EAAC;4BAAGF,SAAAA,EAAU,WAAA;AACrEtE,4BAAAA,QAAAA,EAAAA;AAED,yBAAA,CAAA,GAAA;;;8BAENqD,cAAA,CAACoB,SAAAA,EAAAA;oBACCC,MAAAA,EAAO,MAAA;oBACPC,aAAAA,EACE;AACElH,wBAAAA,SAAAA,EAAW8D,UAAU9D,SAAAA,IAAa,EAAA;AAClCM,wBAAAA,QAAAA,EAAUwD,UAAUxD,QAAAA,IAAY,EAAA;AAChCoB,wBAAAA,KAAAA,EAAOoC,UAAUpC,KAAAA,IAAS,EAAA;wBAC1BnB,QAAAA,EAAU,EAAA;wBACVW,eAAAA,EAAiB,EAAA;AACjBG,wBAAAA,iBAAAA,EAAmBA,iBAAAA,IAAqB8F,SAAAA;wBACxCtC,IAAAA,EAAM;AACR,qBAAA;AAEFuC,oBAAAA,QAAAA,EAAU,OAAOvD,IAAAA,EAAMwD,OAAAA,GAAAA;AACrB,wBAAA,MAAMC,iBAAiBC,aAAAA,CAAc1D,IAAAA,CAAAA;wBAErC,IAAI;4BACF,MAAMmC,MAAAA,CAAOwB,QAAQ,CAACF,cAAAA,EAAgB;gCAAEG,UAAAA,EAAY;AAAM,6BAAA,CAAA;4BAE1D,IAAItF,WAAAA,GAAc,KAAK4D,mBAAAA,EAAqB;AAC1CtD,gCAAAA,UAAAA,CAAW,+BAAA,EAAiC;AAAEiF,oCAAAA,KAAAA,EAAOvF,YAAYwF,QAAQ;AAAG,iCAAA,CAAA;AAC9E,4BAAA;4BAEA,IAAIL,cAAAA,CAAejG,iBAAiB,EAAE;gCACpCoE,kBAAAA,CACE;AACE3B,oCAAAA,QAAAA,EAAU8D,sBAAKN,cAAAA,EAAgB;AAC7B,wCAAA,mBAAA;AACA,wCAAA,iBAAA;AACA,wCAAA,OAAA;AACA,wCAAA;AACD,qCAAA,CAAA;AACDjG,oCAAAA,iBAAAA,EAAmBiG,eAAejG,iBAAiB;AACnDwD,oCAAAA,IAAAA,EAAMyC,eAAezC;AACvB,iCAAA,EACAwC,QAAQQ,SAAS,CAAA;4BAErB,CAAA,MAAO;gCACL,MAAMjD,mBAAAA,CACJgD,sBAAKN,cAAAA,EAAgB;AAAC,oCAAA,mBAAA;AAAqB,oCAAA;AAAkB,iCAAA,CAAA,EAC7DD,QAAQQ,SAAS,CAAA;AAErB,4BAAA;AACF,wBAAA,CAAA,CAAE,OAAOC,GAAAA,EAAK;AACZ,4BAAA,IAAIA,eAAeC,mBAAAA,EAAiB;AAClC,gCAAA,MAAMC,mBAAmB,CAACC,GAAAA,GAAAA;oCACxB,IAAI;wCACF,IAAI,CAACA,KAAK,OAAO,EAAA;wCACjB,IAAI,OAAOA,GAAAA,KAAQ,QAAA,EAAU,OAAOA,GAAAA;;AAEpC,wCAAA,IAAI,IAAA,IAAQA,GAAAA,IAAO,gBAAA,IAAoBA,GAAAA,EAAK,OAAOtF,aAAAA,CAAcsF,GAAAA,CAAAA;;wCAEjE,IAAIA,GAAAA,CAAIhH,OAAO,IAAI,OAAOgH,GAAAA,CAAIhH,OAAO,KAAK,QAAA,IAAY,IAAA,IAAQgH,GAAAA,CAAIhH,OAAO,EAAE;4CACzE,OAAO0B,aAAAA,CAAcsF,IAAIhH,OAAO,CAAA;AAClC,wCAAA;;wCAEA,IAAIiH,KAAAA,CAAMC,OAAO,CAACF,GAAAA,CAAIG,MAAM,CAAA,IAAKH,GAAAA,CAAIG,MAAM,CAAC3G,MAAM,GAAG,CAAA,EAAG;AACtD,4CAAA,MAAM4G,KAAAA,GAAQJ,GAAAA,CAAIG,MAAM,CAAC,CAAA,CAAE;4CAC3B,IAAI,OAAOC,KAAAA,KAAU,QAAA,EAAU,OAAOA,KAAAA;AACtC,4CAAA,IAAIA,SAAS,OAAOA,KAAAA,KAAU,YAAY,IAAA,IAAQA,KAAAA,EAChD,OAAO1F,aAAAA,CAAc0F,KAAAA,CAAAA;AACzB,wCAAA;;AAEA,wCAAA,IAAI,gBAAA,IAAoBJ,GAAAA,EAAK,OAAOA,GAAAA,CAAItH,cAAc;AACtD,wCAAA,OAAO2H,MAAAA,CAAOL,GAAAA,CAAAA;AAChB,oCAAA,CAAA,CAAE,OAAOM,CAAAA,EAAG;AACV,wCAAA,OAAOD,MAAAA,CAAOL,GAAAA,CAAAA;AAChB,oCAAA;AACF,gCAAA,CAAA;AAEA,gCAAA,MAAMO,QAAAA,GAAWV,GAAAA,CAAIW,KAAK,CAACC,MAAM,CAC/B,CAACC,GAAAA,EAAK,EAAE1H,OAAO,EAAE2H,IAAI,EAAE,GAAA;oCACrB,IAAI,CAACA,MAAM,OAAOD,GAAAA;oCAClBA,GAAG,CAACC,IAAAA,CAAK,GAAGZ,gBAAAA,CAAiB/G,OAAAA,CAAAA;oCAC7B,OAAO0H,GAAAA;AACT,gCAAA,CAAA,EACA,EAAC,CAAA;AAGHtB,gCAAAA,OAAAA,CAAQQ,SAAS,CAACW,QAAAA,CAAAA;AACpB,4BAAA;AAEApG,4BAAAA,cAAAA,CAAeD,WAAAA,GAAc,CAAA,CAAA;AAC/B,wBAAA;AACF,oBAAA,CAAA;AAEA,oBAAA,QAAA,gBAAA+D,eAAA,CAACE,iBAAAA,EAAAA;wBAAKC,SAAAA,EAAU,QAAA;wBAASC,UAAAA,EAAW,SAAA;wBAAUC,GAAAA,EAAK,CAAA;wBAAGsC,SAAAA,EAAW,CAAA;;AAC/D,0CAAAjD,cAAA,CAACkD,kBAAKC,IAAI,EAAA;gCAACxC,GAAAA,EAAK,CAAA;AACb,gCAAA,QAAA,EAAA;AACC,oCAAA;AACEyC,wCAAAA,KAAAA,EAAOrG,aAAAA,CAAc;4CACnBlC,EAAAA,EAAI,2BAAA;4CACJE,cAAAA,EAAgB;AAClB,yCAAA,CAAA;wCACA6E,IAAAA,EAAM,WAAA;wCACNrF,QAAAA,EAAU,IAAA;wCACV8I,IAAAA,EAAM,CAAA;wCACN7E,IAAAA,EAAM;AACR,qCAAA;AACA,oCAAA;AACE4E,wCAAAA,KAAAA,EAAOrG,aAAAA,CAAc;4CACnBlC,EAAAA,EAAI,0BAAA;4CACJE,cAAAA,EAAgB;AAClB,yCAAA,CAAA;wCACA6E,IAAAA,EAAM,UAAA;wCACNyD,IAAAA,EAAM,CAAA;wCACN7E,IAAAA,EAAM;AACR,qCAAA;AACA,oCAAA;AACE8E,wCAAAA,QAAAA,EAAU,CAACnD,mBAAAA;AACXiD,wCAAAA,KAAAA,EAAOrG,aAAAA,CAAc;4CACnBlC,EAAAA,EAAI,uBAAA;4CACJE,cAAAA,EAAgB;AAClB,yCAAA,CAAA;wCACA6E,IAAAA,EAAM,OAAA;wCACNrF,QAAAA,EAAU,IAAA;wCACV8I,IAAAA,EAAM,EAAA;wCACN7E,IAAAA,EAAM;AACR,qCAAA;AACA,oCAAA;AACE+E,wCAAAA,IAAAA,EAAMxG,aAAAA,CAAc;4CAClBlC,EAAAA,EAAI,yBAAA;4CACJE,cAAAA,EACE;AACJ,yCAAA,CAAA;AACAqI,wCAAAA,KAAAA,EAAOrG,aAAAA,CAAc;4CACnBlC,EAAAA,EAAI,iBAAA;4CACJE,cAAAA,EAAgB;AAClB,yCAAA,CAAA;wCACA6E,IAAAA,EAAM,UAAA;wCACNrF,QAAAA,EAAU,IAAA;wCACV8I,IAAAA,EAAM,EAAA;wCACN7E,IAAAA,EAAM;AACR,qCAAA;AACA,oCAAA;AACE4E,wCAAAA,KAAAA,EAAOrG,aAAAA,CAAc;4CACnBlC,EAAAA,EAAI,iCAAA;4CACJE,cAAAA,EAAgB;AAClB,yCAAA,CAAA;wCACA6E,IAAAA,EAAM,iBAAA;wCACNrF,QAAAA,EAAU,IAAA;wCACV8I,IAAAA,EAAM,EAAA;wCACN7E,IAAAA,EAAM;AACR,qCAAA;AACA,oCAAA;AACE4E,wCAAAA,KAAAA,EAAOrG,aAAAA,CACL;4CACElC,EAAAA,EAAI,+BAAA;4CACJE,cAAAA,EACE;yCACJ,EACA;AACEyI,4CAAAA,KAAAA,gBACExD,cAAA,CAACyD,CAAAA,EAAAA;gDAAEC,MAAAA,EAAO,QAAA;gDAASC,IAAAA,EAAK,yBAAA;gDAA0BC,GAAAA,EAAI,YAAA;0DACnD7G,aAAAA,CAAc;oDACblC,EAAAA,EAAI,qCAAA;oDACJE,cAAAA,EAAgB;AAClB,iDAAA;;AAGJ8I,4CAAAA,MAAAA,gBACE7D,cAAA,CAACyD,CAAAA,EAAAA;gDAAEC,MAAAA,EAAO,QAAA;gDAASC,IAAAA,EAAK,2BAAA;gDAA4BC,GAAAA,EAAI,YAAA;0DACrD7G,aAAAA,CAAc;oDACblC,EAAAA,EAAI,sCAAA;oDACJE,cAAAA,EAAgB;AAClB,iDAAA;;AAGN,yCAAA,CAAA;wCAEF6E,IAAAA,EAAM,MAAA;wCACNyD,IAAAA,EAAM,EAAA;wCACN7E,IAAAA,EAAM;AACR;iCACD,CAACsF,GAAG,CAAC,CAAC,EAAET,IAAI,EAAE,GAAGU,KAAAA,EAAO,iBACvB/D,cAAA,CAACkD,iBAAAA,CAAKc,IAAI,EAAA;wCAERC,EAAAA,EAAI,EAAA;wCACJC,CAAAA,EAAGb,IAAAA;wCACH5C,SAAAA,EAAU,QAAA;wCACVC,UAAAA,EAAW,SAAA;AAEX,wCAAA,QAAA,gBAAAV,cAAA,CAACmE,sBAAAA,EAAAA;AAAe,4CAAA,GAAGJ;;AANdA,qCAAAA,EAAAA,KAAAA,CAAMnE,IAAI,CAAA;;0CAUrBI,cAAA,CAACoE,mBAAAA,EAAAA;gCAAOC,SAAS,EAAA,IAAA;gCAAChB,IAAAA,EAAK,GAAA;gCAAI7E,IAAAA,EAAK,QAAA;0CAC7BzB,aAAAA,CAAc;oCACblC,EAAAA,EAAI,2BAAA;oCACJE,cAAAA,EAAgB;AAClB,iCAAA;;;;;gBAILwC,KAAAA,EAAOuC,MAAAA,CAAOC,QAAAA,KAAa,UAAA,kBAC1BC,cAAA,CAACsE,gBAAAA,EAAAA;oBAAIC,UAAAA,EAAY,CAAA;AACf,oBAAA,QAAA,gBAAAvE,cAAA,CAACQ,iBAAAA,EAAAA;wBAAKgE,cAAAA,EAAe,QAAA;AACnB,wBAAA,QAAA,gBAAAxE,cAAA,CAACyE,iBAAAA,EAAAA;4BAAK3D,GAAAA,EAAK4D,sBAAAA;4BAASxE,EAAAA,EAAG,aAAA;sCACpBnD,aAAAA,CAAc;gCACblC,EAAAA,EAAI,0BAAA;gCACJE,cAAAA,EAAgB;AAClB,6BAAA;;;;;;;AAQhB;AAMA;;IAGA,SAAS4G,cAAc1D,IAAwB,EAAA;IAC7C,OAAO0G,MAAAA,CAAOC,OAAO,CAAC3G,IAAAA,CAAAA,CAAM6E,MAAM,CAChC,CAACC,GAAAA,EAAK,CAAC8B,GAAAA,EAAK3J,KAAAA,CAAM,GAAA;AAOhB,QAAA,IAAI,CAAC;AAAC,YAAA,UAAA;AAAY,YAAA;AAAkB,SAAA,CAAC4J,QAAQ,CAACD,GAAAA,CAAAA,IAAQ,OAAO3J,UAAU,QAAA,EAAU;AAC/E6H,YAAAA,GAAG,CAAC8B,GAAAA,CAAgC,GAAG3J,KAAAA,CAAMZ,IAAI,EAAA;AAEjD,YAAA,IAAIuK,QAAQ,UAAA,EAAY;gBACtB9B,GAAG,CAAC8B,GAAAA,CAAI,GAAG3J,KAAAA,IAASqG,SAAAA;AACtB,YAAA;QACF,CAAA,MAAO;YACLwB,GAAG,CAAC8B,IAAoB,GAAG3J,KAAAA;AAC7B,QAAA;QAEA,OAAO6H,GAAAA;AACT,IAAA,CAAA,EACA,EAAC,CAAA;AAUL;AAEA,MAAMU,CAAAA,GAAIsB,aAAAA,CAAOC,CAAC;SACT,EAAE,CAAC,EAAEC,KAAK,EAAE,GAAKA,KAAAA,CAAMC,MAAM,CAACC,UAAU,CAAC;AAClD,CAAC;;;;"}
|
|
1
|
+
{"version":3,"file":"Register.js","sources":["../../../../../../../admin/src/pages/Auth/components/Register.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Flex, Grid, Typography, Link } from '@strapi/design-system';\nimport omit from 'lodash/omit';\nimport { useIntl, type MessageDescriptor } from 'react-intl';\nimport { NavLink, Navigate, useNavigate, useMatch, useLocation } from 'react-router-dom';\nimport { styled } from 'styled-components';\nimport * as yup from 'yup';\nimport { ValidationError } from 'yup';\n\nimport {\n Register as RegisterUser,\n RegisterAdmin,\n} from '../../../../../shared/contracts/authentication';\nimport { Form, FormHelpers } from '../../../components/Form';\nimport { InputRenderer } from '../../../components/FormInputs/Renderer';\nimport { useNpsSurveySettings } from '../../../components/NpsSurvey';\nimport { Logo } from '../../../components/UnauthenticatedLogo';\nimport { useTypedDispatch } from '../../../core/store/hooks';\nimport { useNotification } from '../../../features/Notifications';\nimport { useTracking } from '../../../features/Tracking';\nimport { useAPIErrorHandler } from '../../../hooks/useAPIErrorHandler';\nimport { LayoutContent, UnauthenticatedLayout } from '../../../layouts/UnauthenticatedLayout';\nimport { login } from '../../../reducer';\nimport {\n useGetRegistrationInfoQuery,\n useRegisterAdminMutation,\n useRegisterUserMutation,\n} from '../../../services/auth';\nimport { isBaseQueryError } from '../../../utils/baseQuery';\nimport { getOrCreateDeviceId } from '../../../utils/deviceId';\nimport { getByteSize } from '../../../utils/strings';\nimport { translatedErrors } from '../../../utils/translatedErrors';\n\nconst REGISTER_USER_SCHEMA = yup.object().shape({\n firstname: yup.string().trim().required(translatedErrors.required).nullable(),\n lastname: yup.string().nullable(),\n password: yup\n .string()\n .min(8, {\n id: translatedErrors.minLength.id,\n defaultMessage: 'Password must be at least 8 characters',\n values: { min: 8 },\n })\n .test(\n 'max-bytes',\n {\n id: 'components.Input.error.contain.maxBytes',\n defaultMessage: 'Password must be less than 73 bytes',\n },\n function (value) {\n if (!value || typeof value !== 'string') return true; // validated elsewhere\n\n const byteSize = getByteSize(value);\n return byteSize <= 72;\n }\n )\n .test(\n 'lowercase',\n {\n message: {\n id: 'components.Input.error.contain.lowercase',\n defaultMessage: 'Password must contain at least 1 lowercase letter',\n },\n },\n (value) => {\n if (!value) return true;\n return /[a-z]/.test(value);\n }\n )\n .test(\n 'uppercase',\n {\n message: {\n id: 'components.Input.error.contain.uppercase',\n defaultMessage: 'Password must contain at least 1 uppercase letter',\n },\n },\n (value) => {\n if (!value) return true;\n return /[A-Z]/.test(value);\n }\n )\n .test(\n 'number',\n {\n message: {\n id: 'components.Input.error.contain.number',\n defaultMessage: 'Password must contain at least 1 number',\n },\n },\n (value) => {\n if (!value) return true;\n return /\\d/.test(value);\n }\n )\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'Password is required',\n })\n .nullable(),\n confirmPassword: yup\n .string()\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'Confirm password is required',\n })\n .oneOf([yup.ref('password'), null], {\n id: 'components.Input.error.password.noMatch',\n defaultMessage: 'Passwords must match',\n })\n .nullable(),\n registrationToken: yup.string().required({\n id: translatedErrors.required.id,\n defaultMessage: 'Registration token is required',\n }),\n});\n\nconst REGISTER_ADMIN_SCHEMA = yup.object().shape({\n firstname: yup\n .string()\n .trim()\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'Firstname is required',\n })\n .nullable(),\n lastname: yup.string().nullable(),\n password: yup\n .string()\n .min(8, {\n id: translatedErrors.minLength.id,\n defaultMessage: 'Password must be at least 8 characters',\n values: { min: 8 },\n })\n .test(\n 'max-bytes',\n {\n id: 'components.Input.error.contain.maxBytes',\n defaultMessage: 'Password must be less than 73 bytes',\n },\n function (value) {\n if (!value) return true;\n return new TextEncoder().encode(value).length <= 72;\n }\n )\n .test(\n 'lowercase',\n {\n message: {\n id: 'components.Input.error.contain.lowercase',\n defaultMessage: 'Password must contain at least 1 lowercase letter',\n },\n },\n (value) => {\n if (!value) return true;\n return /[a-z]/.test(value);\n }\n )\n .test(\n 'uppercase',\n {\n message: {\n id: 'components.Input.error.contain.uppercase',\n defaultMessage: 'Password must contain at least 1 uppercase letter',\n },\n },\n (value) => {\n if (!value) return true;\n return /[A-Z]/.test(value);\n }\n )\n .test(\n 'number',\n {\n message: {\n id: 'components.Input.error.contain.number',\n defaultMessage: 'Password must contain at least 1 number',\n },\n },\n (value) => {\n if (!value) return true;\n return /\\d/.test(value);\n }\n )\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'Password is required',\n })\n .nullable(),\n confirmPassword: yup\n .string()\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'Confirm password is required',\n })\n .nullable()\n .oneOf([yup.ref('password'), null], {\n id: 'components.Input.error.password.noMatch',\n defaultMessage: 'Passwords must match',\n }),\n email: yup\n .string()\n .email({\n id: translatedErrors.email.id,\n defaultMessage: 'Not a valid email',\n })\n .strict()\n .lowercase({\n id: translatedErrors.lowercase.id,\n defaultMessage: 'Email must be lowercase',\n })\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'Email is required',\n })\n .nullable(),\n});\n\ninterface RegisterProps {\n hasAdmin?: boolean;\n}\n\ninterface RegisterFormValues {\n firstname: string;\n lastname: string;\n email: string;\n password: string;\n confirmPassword: string;\n registrationToken: string | undefined;\n news: boolean;\n}\n\nconst isRecord = (value: unknown): value is Record<string, unknown> => {\n return typeof value === 'object' && !Array.isArray(value) && value !== null;\n};\n\nconst isMessageDescriptor = (value: unknown): value is MessageDescriptor => {\n return (\n isRecord(value) && typeof value.id === 'string' && typeof value.defaultMessage === 'string'\n );\n};\n\nconst Register = ({ hasAdmin }: RegisterProps) => {\n const { toggleNotification } = useNotification();\n const navigate = useNavigate();\n const [submitCount, setSubmitCount] = React.useState(0);\n const [apiError, setApiError] = React.useState<string>();\n const { trackUsage } = useTracking();\n const { formatMessage } = useIntl();\n const { search: searchString } = useLocation();\n const query = React.useMemo(() => new URLSearchParams(searchString), [searchString]);\n const match = useMatch('/auth/:authType');\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n const { setNpsSurveySettings } = useNpsSurveySettings();\n\n const registrationToken = query.get('registrationToken');\n\n const { data: userInfo, error } = useGetRegistrationInfoQuery(registrationToken as string, {\n skip: !registrationToken,\n });\n\n React.useEffect(() => {\n if (error) {\n const message: string = isBaseQueryError(error)\n ? formatAPIError(error)\n : (error.message ?? '');\n\n toggleNotification({\n type: 'danger',\n message,\n });\n\n navigate(`/auth/oops?info=${encodeURIComponent(message)}`);\n }\n }, [error, formatAPIError, navigate, toggleNotification]);\n\n const [registerAdmin] = useRegisterAdminMutation();\n const [registerUser] = useRegisterUserMutation();\n const dispatch = useTypedDispatch();\n\n const handleRegisterAdmin = async (\n { news, ...body }: RegisterAdmin.Request['body'] & { news: boolean },\n setFormErrors: FormHelpers<RegisterFormValues>['setErrors']\n ) => {\n const res = await registerAdmin({ ...body, deviceId: getOrCreateDeviceId() });\n\n if ('data' in res) {\n dispatch(login({ token: res.data.token }));\n\n if (news) {\n // Only enable EE survey if user accepted the newsletter\n setNpsSurveySettings((s) => ({ ...s, enabled: true }));\n\n navigate({\n pathname: '/usecase',\n search: `?hasAdmin=${true}`,\n });\n } else {\n navigate('/');\n }\n } else {\n if (isBaseQueryError(res.error)) {\n trackUsage('didNotCreateFirstAdmin');\n\n if (res.error.name === 'ValidationError') {\n setFormErrors(formatValidationErrors(res.error));\n return;\n }\n\n setApiError(formatAPIError(res.error));\n }\n }\n };\n\n const handleRegisterUser = async (\n { news, ...body }: RegisterUser.Request['body'] & { news: boolean },\n setFormErrors: FormHelpers<RegisterFormValues>['setErrors']\n ) => {\n const res = await registerUser({ ...body, deviceId: getOrCreateDeviceId() });\n\n if ('data' in res) {\n dispatch(login({ token: res.data.token }));\n\n if (news) {\n // Only enable EE survey if user accepted the newsletter\n setNpsSurveySettings((s) => ({ ...s, enabled: true }));\n\n navigate({\n pathname: '/usecase',\n search: `?hasAdmin=${hasAdmin}`,\n });\n } else {\n navigate('/');\n }\n } else {\n if (isBaseQueryError(res.error)) {\n trackUsage('didNotCreateFirstAdmin');\n\n if (res.error.name === 'ValidationError') {\n setFormErrors(formatValidationErrors(res.error));\n return;\n }\n\n setApiError(formatAPIError(res.error));\n }\n }\n };\n\n if (\n !match ||\n (match.params.authType !== 'register' && match.params.authType !== 'register-admin')\n ) {\n return <Navigate to=\"/\" />;\n }\n\n const isAdminRegistration = match.params.authType === 'register-admin';\n\n const schema = isAdminRegistration ? REGISTER_ADMIN_SCHEMA : REGISTER_USER_SCHEMA;\n\n return (\n <UnauthenticatedLayout>\n <LayoutContent>\n <Flex direction=\"column\" alignItems=\"center\" gap={3}>\n <Logo />\n\n <Typography tag=\"h1\" variant=\"alpha\" textAlign=\"center\">\n {formatMessage({\n id: 'Auth.form.welcome.title',\n defaultMessage: 'Welcome to Strapi!',\n })}\n </Typography>\n <Typography variant=\"epsilon\" textColor=\"neutral600\" textAlign=\"center\">\n {formatMessage({\n id: 'Auth.form.register.subtitle',\n defaultMessage:\n 'Credentials are only used to authenticate in Strapi. All saved data will be stored in your database.',\n })}\n </Typography>\n {apiError ? (\n <Typography id=\"global-form-error\" role=\"alert\" tabIndex={-1} textColor=\"danger600\">\n {apiError}\n </Typography>\n ) : null}\n </Flex>\n <Form\n method=\"POST\"\n initialValues={\n {\n firstname: userInfo?.firstname || '',\n lastname: userInfo?.lastname || '',\n email: userInfo?.email || '',\n password: '',\n confirmPassword: '',\n registrationToken: registrationToken || undefined,\n news: false,\n } satisfies RegisterFormValues\n }\n onSubmit={async (data, helpers) => {\n const normalizedData = normalizeData(data);\n\n try {\n await schema.validate(normalizedData, { abortEarly: false });\n\n if (submitCount > 0 && isAdminRegistration) {\n trackUsage('didSubmitWithErrorsFirstAdmin', { count: submitCount.toString() });\n }\n\n if (normalizedData.registrationToken) {\n handleRegisterUser(\n {\n userInfo: omit(normalizedData, [\n 'registrationToken',\n 'confirmPassword',\n 'email',\n 'news',\n ]),\n registrationToken: normalizedData.registrationToken,\n news: normalizedData.news,\n },\n helpers.setErrors\n );\n } else {\n await handleRegisterAdmin(\n omit(normalizedData, ['registrationToken', 'confirmPassword']),\n helpers.setErrors\n );\n }\n } catch (err) {\n if (err instanceof ValidationError) {\n const formatDescriptor = (msg: unknown) => {\n try {\n if (msg === undefined || msg === null) return '';\n if (typeof msg === 'string') return msg;\n // Direct descriptor\n if (isMessageDescriptor(msg)) return formatMessage(msg);\n // Wrapped descriptor: { message: { id, defaultMessage } }\n if (isRecord(msg) && isMessageDescriptor(msg.message)) {\n return formatMessage(msg.message);\n }\n // errors array: [{ id, defaultMessage }]\n if (isRecord(msg) && Array.isArray(msg.errors) && msg.errors.length > 0) {\n const first = msg.errors[0];\n if (typeof first === 'string') return first;\n if (isMessageDescriptor(first)) return formatMessage(first);\n }\n // fallback to defaultMessage if present\n if (isRecord(msg) && typeof msg.defaultMessage === 'string') {\n return msg.defaultMessage;\n }\n return String(msg);\n } catch {\n return String(msg);\n }\n };\n\n const computed = err.inner.reduce<Record<string, string>>(\n (acc, { message, path }) => {\n if (!path) return acc;\n acc[path] = formatDescriptor(message);\n return acc;\n },\n {}\n );\n\n helpers.setErrors(computed);\n }\n\n setSubmitCount(submitCount + 1);\n }\n }}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6} marginTop={7}>\n <Grid.Root gap={4}>\n {[\n {\n label: formatMessage({\n id: 'Auth.form.firstname.label',\n defaultMessage: 'Firstname',\n }),\n name: 'firstname',\n required: true,\n size: 6,\n type: 'string' as const,\n },\n {\n label: formatMessage({\n id: 'Auth.form.lastname.label',\n defaultMessage: 'Lastname',\n }),\n name: 'lastname',\n size: 6,\n type: 'string' as const,\n },\n {\n disabled: !isAdminRegistration,\n label: formatMessage({\n id: 'Auth.form.email.label',\n defaultMessage: 'Email',\n }),\n name: 'email',\n required: true,\n size: 12,\n type: 'email' as const,\n },\n {\n hint: formatMessage({\n id: 'Auth.form.password.hint',\n defaultMessage:\n 'Must be at least 8 characters, 1 uppercase, 1 lowercase & 1 number',\n }),\n label: formatMessage({\n id: 'global.password',\n defaultMessage: 'Password',\n }),\n name: 'password',\n required: true,\n size: 12,\n type: 'password' as const,\n },\n {\n label: formatMessage({\n id: 'Auth.form.confirmPassword.label',\n defaultMessage: 'Confirm Password',\n }),\n name: 'confirmPassword',\n required: true,\n size: 12,\n type: 'password' as const,\n },\n {\n label: formatMessage(\n {\n id: 'Auth.form.register.news.label',\n defaultMessage:\n 'Keep me updated about new features & upcoming improvements (by doing this you accept the {terms} and the {policy}).',\n },\n {\n terms: (\n <A target=\"_blank\" href=\"https://strapi.io/terms\" rel=\"noreferrer\">\n {formatMessage({\n id: 'Auth.privacy-policy-agreement.terms',\n defaultMessage: 'terms',\n })}\n </A>\n ),\n policy: (\n <A target=\"_blank\" href=\"https://strapi.io/privacy\" rel=\"noreferrer\">\n {formatMessage({\n id: 'Auth.privacy-policy-agreement.policy',\n defaultMessage: 'policy',\n })}\n </A>\n ),\n }\n ),\n name: 'news',\n size: 12,\n type: 'checkbox' as const,\n },\n ].map(({ size, ...field }) => (\n <Grid.Item\n key={field.name}\n xs={12}\n m={size}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <InputRenderer {...field} />\n </Grid.Item>\n ))}\n </Grid.Root>\n <Button fullWidth size=\"L\" type=\"submit\">\n {formatMessage({\n id: 'Auth.form.button.register',\n defaultMessage: \"Let's start\",\n })}\n </Button>\n </Flex>\n </Form>\n {match?.params.authType === 'register' && (\n <Box paddingTop={4}>\n <Flex justifyContent=\"center\">\n <Link tag={NavLink} to=\"/auth/login\">\n {formatMessage({\n id: 'Auth.link.signin.account',\n defaultMessage: 'Already have an account?',\n })}\n </Link>\n </Flex>\n </Box>\n )}\n </LayoutContent>\n </UnauthenticatedLayout>\n );\n};\n\ntype StringKeys<T> = {\n [K in keyof T]: T[K] extends string | undefined ? K : never;\n}[keyof T];\n\n/**\n * @description Trims all values but the password & sets lastName to null if it's a falsey value.\n */\nfunction normalizeData(data: RegisterFormValues) {\n return Object.entries(data).reduce(\n (acc, [key, value]) => {\n type PasswordKeys = Extract<keyof RegisterFormValues, 'password' | 'confirmPassword'>;\n type RegisterFormStringValues = Exclude<\n keyof Pick<RegisterFormValues, StringKeys<RegisterFormValues>>,\n PasswordKeys\n >;\n\n if (!['password', 'confirmPassword'].includes(key) && typeof value === 'string') {\n acc[key as RegisterFormStringValues] = value.trim();\n\n if (key === 'lastname') {\n acc[key] = value || undefined;\n }\n } else {\n acc[key as PasswordKeys] = value;\n }\n\n return acc;\n },\n {} as {\n firstname: string;\n lastname: string | undefined;\n email: string;\n password: string;\n confirmPassword: string;\n registrationToken: string | undefined;\n news: boolean;\n }\n );\n}\n\nconst A = styled.a`\n color: ${({ theme }) => theme.colors.primary600};\n`;\n\nexport { Register };\nexport type { RegisterProps };\n"],"names":["REGISTER_USER_SCHEMA","yup","object","shape","firstname","string","trim","required","translatedErrors","nullable","lastname","password","min","id","minLength","defaultMessage","values","test","value","byteSize","getByteSize","message","confirmPassword","oneOf","ref","registrationToken","REGISTER_ADMIN_SCHEMA","TextEncoder","encode","length","email","strict","lowercase","isRecord","Array","isArray","isMessageDescriptor","Register","hasAdmin","toggleNotification","useNotification","navigate","useNavigate","submitCount","setSubmitCount","React","useState","apiError","setApiError","trackUsage","useTracking","formatMessage","useIntl","search","searchString","useLocation","query","useMemo","URLSearchParams","match","useMatch","_unstableFormatAPIError","formatAPIError","_unstableFormatValidationErrors","formatValidationErrors","useAPIErrorHandler","setNpsSurveySettings","useNpsSurveySettings","get","data","userInfo","error","useGetRegistrationInfoQuery","skip","useEffect","isBaseQueryError","type","encodeURIComponent","registerAdmin","useRegisterAdminMutation","registerUser","useRegisterUserMutation","dispatch","useTypedDispatch","handleRegisterAdmin","news","body","setFormErrors","res","deviceId","getOrCreateDeviceId","login","token","s","enabled","pathname","name","handleRegisterUser","params","authType","_jsx","Navigate","to","isAdminRegistration","schema","UnauthenticatedLayout","_jsxs","LayoutContent","Flex","direction","alignItems","gap","Logo","Typography","tag","variant","textAlign","textColor","role","tabIndex","Form","method","initialValues","undefined","onSubmit","helpers","normalizedData","normalizeData","validate","abortEarly","count","toString","omit","setErrors","err","ValidationError","formatDescriptor","msg","errors","first","String","computed","inner","reduce","acc","path","marginTop","Grid","Root","label","size","disabled","hint","terms","A","target","href","rel","policy","map","field","Item","xs","m","InputRenderer","Button","fullWidth","Box","paddingTop","justifyContent","Link","NavLink","Object","entries","key","includes","styled","a","theme","colors","primary600"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCA,MAAMA,oBAAAA,GAAuBC,cAAAA,CAAIC,MAAM,EAAA,CAAGC,KAAK,CAAC;IAC9CC,SAAAA,EAAWH,cAAAA,CAAII,MAAM,EAAA,CAAGC,IAAI,EAAA,CAAGC,QAAQ,CAACC,iCAAAA,CAAiBD,QAAQ,CAAA,CAAEE,QAAQ,EAAA;IAC3EC,QAAAA,EAAUT,cAAAA,CAAII,MAAM,EAAA,CAAGI,QAAQ,EAAA;AAC/BE,IAAAA,QAAAA,EAAUV,cAAAA,CACPI,MAAM,EAAA,CACNO,GAAG,CAAC,CAAA,EAAG;QACNC,EAAAA,EAAIL,iCAAAA,CAAiBM,SAAS,CAACD,EAAE;QACjCE,cAAAA,EAAgB,wCAAA;QAChBC,MAAAA,EAAQ;YAAEJ,GAAAA,EAAK;AAAE;KACnB,CAAA,CACCK,IAAI,CACH,WAAA,EACA;QACEJ,EAAAA,EAAI,yCAAA;QACJE,cAAAA,EAAgB;AAClB,KAAA,EACA,SAAUG,KAAK,EAAA;AACb,QAAA,IAAI,CAACA,KAAAA,IAAS,OAAOA,UAAU,QAAA,EAAU,OAAO;AAEhD,QAAA,MAAMC,WAAWC,mBAAAA,CAAYF,KAAAA,CAAAA;AAC7B,QAAA,OAAOC,QAAAA,IAAY,EAAA;IACrB,CAAA,CAAA,CAEDF,IAAI,CACH,WAAA,EACA;QACEI,OAAAA,EAAS;YACPR,EAAAA,EAAI,0CAAA;YACJE,cAAAA,EAAgB;AAClB;AACF,KAAA,EACA,CAACG,KAAAA,GAAAA;QACC,IAAI,CAACA,OAAO,OAAO,IAAA;QACnB,OAAO,OAAA,CAAQD,IAAI,CAACC,KAAAA,CAAAA;IACtB,CAAA,CAAA,CAEDD,IAAI,CACH,WAAA,EACA;QACEI,OAAAA,EAAS;YACPR,EAAAA,EAAI,0CAAA;YACJE,cAAAA,EAAgB;AAClB;AACF,KAAA,EACA,CAACG,KAAAA,GAAAA;QACC,IAAI,CAACA,OAAO,OAAO,IAAA;QACnB,OAAO,OAAA,CAAQD,IAAI,CAACC,KAAAA,CAAAA;IACtB,CAAA,CAAA,CAEDD,IAAI,CACH,QAAA,EACA;QACEI,OAAAA,EAAS;YACPR,EAAAA,EAAI,uCAAA;YACJE,cAAAA,EAAgB;AAClB;AACF,KAAA,EACA,CAACG,KAAAA,GAAAA;QACC,IAAI,CAACA,OAAO,OAAO,IAAA;QACnB,OAAO,IAAA,CAAKD,IAAI,CAACC,KAAAA,CAAAA;AACnB,IAAA,CAAA,CAAA,CAEDX,QAAQ,CAAC;QACRM,EAAAA,EAAIL,iCAAAA,CAAiBD,QAAQ,CAACM,EAAE;QAChCE,cAAAA,EAAgB;AAClB,KAAA,CAAA,CACCN,QAAQ,EAAA;AACXa,IAAAA,eAAAA,EAAiBrB,cAAAA,CACdI,MAAM,EAAA,CACNE,QAAQ,CAAC;QACRM,EAAAA,EAAIL,iCAAAA,CAAiBD,QAAQ,CAACM,EAAE;QAChCE,cAAAA,EAAgB;AAClB,KAAA,CAAA,CACCQ,KAAK,CAAC;AAACtB,QAAAA,cAAAA,CAAIuB,GAAG,CAAC,UAAA,CAAA;AAAa,QAAA;KAAK,EAAE;QAClCX,EAAAA,EAAI,yCAAA;QACJE,cAAAA,EAAgB;AAClB,KAAA,CAAA,CACCN,QAAQ,EAAA;AACXgB,IAAAA,iBAAAA,EAAmBxB,cAAAA,CAAII,MAAM,EAAA,CAAGE,QAAQ,CAAC;QACvCM,EAAAA,EAAIL,iCAAAA,CAAiBD,QAAQ,CAACM,EAAE;QAChCE,cAAAA,EAAgB;AAClB,KAAA;AACF,CAAA,CAAA;AAEA,MAAMW,qBAAAA,GAAwBzB,cAAAA,CAAIC,MAAM,EAAA,CAAGC,KAAK,CAAC;AAC/CC,IAAAA,SAAAA,EAAWH,eACRI,MAAM,EAAA,CACNC,IAAI,EAAA,CACJC,QAAQ,CAAC;QACRM,EAAAA,EAAIL,iCAAAA,CAAiBD,QAAQ,CAACM,EAAE;QAChCE,cAAAA,EAAgB;AAClB,KAAA,CAAA,CACCN,QAAQ,EAAA;IACXC,QAAAA,EAAUT,cAAAA,CAAII,MAAM,EAAA,CAAGI,QAAQ,EAAA;AAC/BE,IAAAA,QAAAA,EAAUV,cAAAA,CACPI,MAAM,EAAA,CACNO,GAAG,CAAC,CAAA,EAAG;QACNC,EAAAA,EAAIL,iCAAAA,CAAiBM,SAAS,CAACD,EAAE;QACjCE,cAAAA,EAAgB,wCAAA;QAChBC,MAAAA,EAAQ;YAAEJ,GAAAA,EAAK;AAAE;KACnB,CAAA,CACCK,IAAI,CACH,WAAA,EACA;QACEJ,EAAAA,EAAI,yCAAA;QACJE,cAAAA,EAAgB;AAClB,KAAA,EACA,SAAUG,KAAK,EAAA;QACb,IAAI,CAACA,OAAO,OAAO,IAAA;AACnB,QAAA,OAAO,IAAIS,WAAAA,EAAAA,CAAcC,MAAM,CAACV,KAAAA,CAAAA,CAAOW,MAAM,IAAI,EAAA;IACnD,CAAA,CAAA,CAEDZ,IAAI,CACH,WAAA,EACA;QACEI,OAAAA,EAAS;YACPR,EAAAA,EAAI,0CAAA;YACJE,cAAAA,EAAgB;AAClB;AACF,KAAA,EACA,CAACG,KAAAA,GAAAA;QACC,IAAI,CAACA,OAAO,OAAO,IAAA;QACnB,OAAO,OAAA,CAAQD,IAAI,CAACC,KAAAA,CAAAA;IACtB,CAAA,CAAA,CAEDD,IAAI,CACH,WAAA,EACA;QACEI,OAAAA,EAAS;YACPR,EAAAA,EAAI,0CAAA;YACJE,cAAAA,EAAgB;AAClB;AACF,KAAA,EACA,CAACG,KAAAA,GAAAA;QACC,IAAI,CAACA,OAAO,OAAO,IAAA;QACnB,OAAO,OAAA,CAAQD,IAAI,CAACC,KAAAA,CAAAA;IACtB,CAAA,CAAA,CAEDD,IAAI,CACH,QAAA,EACA;QACEI,OAAAA,EAAS;YACPR,EAAAA,EAAI,uCAAA;YACJE,cAAAA,EAAgB;AAClB;AACF,KAAA,EACA,CAACG,KAAAA,GAAAA;QACC,IAAI,CAACA,OAAO,OAAO,IAAA;QACnB,OAAO,IAAA,CAAKD,IAAI,CAACC,KAAAA,CAAAA;AACnB,IAAA,CAAA,CAAA,CAEDX,QAAQ,CAAC;QACRM,EAAAA,EAAIL,iCAAAA,CAAiBD,QAAQ,CAACM,EAAE;QAChCE,cAAAA,EAAgB;AAClB,KAAA,CAAA,CACCN,QAAQ,EAAA;AACXa,IAAAA,eAAAA,EAAiBrB,cAAAA,CACdI,MAAM,EAAA,CACNE,QAAQ,CAAC;QACRM,EAAAA,EAAIL,iCAAAA,CAAiBD,QAAQ,CAACM,EAAE;QAChCE,cAAAA,EAAgB;KAClB,CAAA,CACCN,QAAQ,EAAA,CACRc,KAAK,CAAC;AAACtB,QAAAA,cAAAA,CAAIuB,GAAG,CAAC,UAAA,CAAA;AAAa,QAAA;KAAK,EAAE;QAClCX,EAAAA,EAAI,yCAAA;QACJE,cAAAA,EAAgB;AAClB,KAAA,CAAA;AACFe,IAAAA,KAAAA,EAAO7B,cAAAA,CACJI,MAAM,EAAA,CACNyB,KAAK,CAAC;QACLjB,EAAAA,EAAIL,iCAAAA,CAAiBsB,KAAK,CAACjB,EAAE;QAC7BE,cAAAA,EAAgB;KAClB,CAAA,CACCgB,MAAM,EAAA,CACNC,SAAS,CAAC;QACTnB,EAAAA,EAAIL,iCAAAA,CAAiBwB,SAAS,CAACnB,EAAE;QACjCE,cAAAA,EAAgB;AAClB,KAAA,CAAA,CACCR,QAAQ,CAAC;QACRM,EAAAA,EAAIL,iCAAAA,CAAiBD,QAAQ,CAACM,EAAE;QAChCE,cAAAA,EAAgB;AAClB,KAAA,CAAA,CACCN,QAAQ;AACb,CAAA,CAAA;AAgBA,MAAMwB,WAAW,CAACf,KAAAA,GAAAA;IAChB,OAAO,OAAOA,UAAU,QAAA,IAAY,CAACgB,MAAMC,OAAO,CAACjB,UAAUA,KAAAA,KAAU,IAAA;AACzE,CAAA;AAEA,MAAMkB,sBAAsB,CAAClB,KAAAA,GAAAA;IAC3B,OACEe,QAAAA,CAASf,KAAAA,CAAAA,IAAU,OAAOA,KAAAA,CAAML,EAAE,KAAK,QAAA,IAAY,OAAOK,KAAAA,CAAMH,cAAc,KAAK,QAAA;AAEvF,CAAA;AAEA,MAAMsB,QAAAA,GAAW,CAAC,EAAEC,QAAQ,EAAiB,GAAA;IAC3C,MAAM,EAAEC,kBAAkB,EAAE,GAAGC,6BAAAA,EAAAA;AAC/B,IAAA,MAAMC,QAAAA,GAAWC,0BAAAA,EAAAA;AACjB,IAAA,MAAM,CAACC,WAAAA,EAAaC,cAAAA,CAAe,GAAGC,gBAAAA,CAAMC,QAAQ,CAAC,CAAA,CAAA;AACrD,IAAA,MAAM,CAACC,QAAAA,EAAUC,WAAAA,CAAY,GAAGH,iBAAMC,QAAQ,EAAA;IAC9C,MAAM,EAAEG,UAAU,EAAE,GAAGC,oBAAAA,EAAAA;IACvB,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAM,EAAEC,MAAAA,EAAQC,YAAY,EAAE,GAAGC,0BAAAA,EAAAA;AACjC,IAAA,MAAMC,QAAQX,gBAAAA,CAAMY,OAAO,CAAC,IAAM,IAAIC,gBAAgBJ,YAAAA,CAAAA,EAAe;AAACA,QAAAA;AAAa,KAAA,CAAA;AACnF,IAAA,MAAMK,QAAQC,uBAAAA,CAAS,iBAAA,CAAA;AACvB,IAAA,MAAM,EACJC,uBAAAA,EAAyBC,cAAc,EACvCC,+BAAAA,EAAiCC,sBAAsB,EACxD,GAAGC,qCAAAA,EAAAA;IACJ,MAAM,EAAEC,oBAAoB,EAAE,GAAGC,8BAAAA,EAAAA;IAEjC,MAAM1C,iBAAAA,GAAoB+B,KAAAA,CAAMY,GAAG,CAAC,mBAAA,CAAA;IAEpC,MAAM,EAAEC,MAAMC,QAAQ,EAAEC,KAAK,EAAE,GAAGC,iCAA4B/C,iBAAAA,EAA6B;AACzFgD,QAAAA,IAAAA,EAAM,CAAChD;AACT,KAAA,CAAA;AAEAoB,IAAAA,gBAAAA,CAAM6B,SAAS,CAAC,IAAA;AACd,QAAA,IAAIH,KAAAA,EAAO;AACT,YAAA,MAAMlD,UAAkBsD,0BAAAA,CAAiBJ,KAAAA,CAAAA,GACrCT,eAAeS,KAAAA,CAAAA,GACdA,KAAAA,CAAMlD,OAAO,IAAI,EAAA;YAEtBkB,kBAAAA,CAAmB;gBACjBqC,IAAAA,EAAM,QAAA;AACNvD,gBAAAA;AACF,aAAA,CAAA;AAEAoB,YAAAA,QAAAA,CAAS,CAAC,gBAAgB,EAAEoC,kBAAAA,CAAmBxD,OAAAA,CAAAA,CAAAA,CAAU,CAAA;AAC3D,QAAA;IACF,CAAA,EAAG;AAACkD,QAAAA,KAAAA;AAAOT,QAAAA,cAAAA;AAAgBrB,QAAAA,QAAAA;AAAUF,QAAAA;AAAmB,KAAA,CAAA;IAExD,MAAM,CAACuC,cAAc,GAAGC,6BAAAA,EAAAA;IACxB,MAAM,CAACC,aAAa,GAAGC,4BAAAA,EAAAA;AACvB,IAAA,MAAMC,QAAAA,GAAWC,sBAAAA,EAAAA;AAEjB,IAAA,MAAMC,sBAAsB,OAC1B,EAAEC,IAAI,EAAE,GAAGC,MAAyD,EACpEC,aAAAA,GAAAA;QAEA,MAAMC,GAAAA,GAAM,MAAMV,aAAAA,CAAc;AAAE,YAAA,GAAGQ,IAAI;YAAEG,QAAAA,EAAUC,4BAAAA;AAAsB,SAAA,CAAA;AAE3E,QAAA,IAAI,UAAUF,GAAAA,EAAK;AACjBN,YAAAA,QAAAA,CAASS,aAAAA,CAAM;gBAAEC,KAAAA,EAAOJ,GAAAA,CAAInB,IAAI,CAACuB;AAAM,aAAA,CAAA,CAAA;AAEvC,YAAA,IAAIP,IAAAA,EAAM;;gBAERnB,oBAAAA,CAAqB,CAAC2B,KAAO;AAAE,wBAAA,GAAGA,CAAC;wBAAEC,OAAAA,EAAS;qBAAK,CAAA,CAAA;gBAEnDrD,QAAAA,CAAS;oBACPsD,QAAAA,EAAU,UAAA;oBACV1C,MAAAA,EAAQ,CAAC,UAAU,EAAE,IAAA,CAAA;AACvB,iBAAA,CAAA;YACF,CAAA,MAAO;gBACLZ,QAAAA,CAAS,GAAA,CAAA;AACX,YAAA;QACF,CAAA,MAAO;YACL,IAAIkC,0BAAAA,CAAiBa,GAAAA,CAAIjB,KAAK,CAAA,EAAG;gBAC/BtB,UAAAA,CAAW,wBAAA,CAAA;AAEX,gBAAA,IAAIuC,GAAAA,CAAIjB,KAAK,CAACyB,IAAI,KAAK,iBAAA,EAAmB;oBACxCT,aAAAA,CAAcvB,sBAAAA,CAAuBwB,IAAIjB,KAAK,CAAA,CAAA;AAC9C,oBAAA;AACF,gBAAA;gBAEAvB,WAAAA,CAAYc,cAAAA,CAAe0B,IAAIjB,KAAK,CAAA,CAAA;AACtC,YAAA;AACF,QAAA;AACF,IAAA,CAAA;AAEA,IAAA,MAAM0B,qBAAqB,OACzB,EAAEZ,IAAI,EAAE,GAAGC,MAAwD,EACnEC,aAAAA,GAAAA;QAEA,MAAMC,GAAAA,GAAM,MAAMR,YAAAA,CAAa;AAAE,YAAA,GAAGM,IAAI;YAAEG,QAAAA,EAAUC,4BAAAA;AAAsB,SAAA,CAAA;AAE1E,QAAA,IAAI,UAAUF,GAAAA,EAAK;AACjBN,YAAAA,QAAAA,CAASS,aAAAA,CAAM;gBAAEC,KAAAA,EAAOJ,GAAAA,CAAInB,IAAI,CAACuB;AAAM,aAAA,CAAA,CAAA;AAEvC,YAAA,IAAIP,IAAAA,EAAM;;gBAERnB,oBAAAA,CAAqB,CAAC2B,KAAO;AAAE,wBAAA,GAAGA,CAAC;wBAAEC,OAAAA,EAAS;qBAAK,CAAA,CAAA;gBAEnDrD,QAAAA,CAAS;oBACPsD,QAAAA,EAAU,UAAA;oBACV1C,MAAAA,EAAQ,CAAC,UAAU,EAAEf,QAAAA,CAAAA;AACvB,iBAAA,CAAA;YACF,CAAA,MAAO;gBACLG,QAAAA,CAAS,GAAA,CAAA;AACX,YAAA;QACF,CAAA,MAAO;YACL,IAAIkC,0BAAAA,CAAiBa,GAAAA,CAAIjB,KAAK,CAAA,EAAG;gBAC/BtB,UAAAA,CAAW,wBAAA,CAAA;AAEX,gBAAA,IAAIuC,GAAAA,CAAIjB,KAAK,CAACyB,IAAI,KAAK,iBAAA,EAAmB;oBACxCT,aAAAA,CAAcvB,sBAAAA,CAAuBwB,IAAIjB,KAAK,CAAA,CAAA;AAC9C,oBAAA;AACF,gBAAA;gBAEAvB,WAAAA,CAAYc,cAAAA,CAAe0B,IAAIjB,KAAK,CAAA,CAAA;AACtC,YAAA;AACF,QAAA;AACF,IAAA,CAAA;AAEA,IAAA,IACE,CAACZ,KAAAA,IACAA,KAAAA,CAAMuC,MAAM,CAACC,QAAQ,KAAK,UAAA,IAAcxC,KAAAA,CAAMuC,MAAM,CAACC,QAAQ,KAAK,gBAAA,EACnE;AACA,QAAA,qBAAOC,cAAA,CAACC,uBAAAA,EAAAA;YAASC,EAAAA,EAAG;;AACtB,IAAA;AAEA,IAAA,MAAMC,mBAAAA,GAAsB5C,KAAAA,CAAMuC,MAAM,CAACC,QAAQ,KAAK,gBAAA;IAEtD,MAAMK,MAAAA,GAASD,sBAAsB7E,qBAAAA,GAAwB1B,oBAAAA;AAE7D,IAAA,qBACEoG,cAAA,CAACK,2CAAAA,EAAAA;AACC,QAAA,QAAA,gBAAAC,eAAA,CAACC,mCAAAA,EAAAA;;8BACCD,eAAA,CAACE,iBAAAA,EAAAA;oBAAKC,SAAAA,EAAU,QAAA;oBAASC,UAAAA,EAAW,QAAA;oBAASC,GAAAA,EAAK,CAAA;;sCAChDX,cAAA,CAACY,wBAAAA,EAAAA,EAAAA,CAAAA;sCAEDZ,cAAA,CAACa,uBAAAA,EAAAA;4BAAWC,GAAAA,EAAI,IAAA;4BAAKC,OAAAA,EAAQ,OAAA;4BAAQC,SAAAA,EAAU,QAAA;sCAC5CjE,aAAAA,CAAc;gCACbtC,EAAAA,EAAI,yBAAA;gCACJE,cAAAA,EAAgB;AAClB,6BAAA;;sCAEFqF,cAAA,CAACa,uBAAAA,EAAAA;4BAAWE,OAAAA,EAAQ,SAAA;4BAAUE,SAAAA,EAAU,YAAA;4BAAaD,SAAAA,EAAU,QAAA;sCAC5DjE,aAAAA,CAAc;gCACbtC,EAAAA,EAAI,6BAAA;gCACJE,cAAAA,EACE;AACJ,6BAAA;;AAEDgC,wBAAAA,QAAAA,iBACCqD,cAAA,CAACa,uBAAAA,EAAAA;4BAAWpG,EAAAA,EAAG,mBAAA;4BAAoByG,IAAAA,EAAK,OAAA;AAAQC,4BAAAA,QAAAA,EAAU,EAAC;4BAAGF,SAAAA,EAAU,WAAA;AACrEtE,4BAAAA,QAAAA,EAAAA;AAED,yBAAA,CAAA,GAAA;;;8BAENqD,cAAA,CAACoB,SAAAA,EAAAA;oBACCC,MAAAA,EAAO,MAAA;oBACPC,aAAAA,EACE;AACEtH,wBAAAA,SAAAA,EAAWkE,UAAUlE,SAAAA,IAAa,EAAA;AAClCM,wBAAAA,QAAAA,EAAU4D,UAAU5D,QAAAA,IAAY,EAAA;AAChCoB,wBAAAA,KAAAA,EAAOwC,UAAUxC,KAAAA,IAAS,EAAA;wBAC1BnB,QAAAA,EAAU,EAAA;wBACVW,eAAAA,EAAiB,EAAA;AACjBG,wBAAAA,iBAAAA,EAAmBA,iBAAAA,IAAqBkG,SAAAA;wBACxCtC,IAAAA,EAAM;AACR,qBAAA;AAEFuC,oBAAAA,QAAAA,EAAU,OAAOvD,IAAAA,EAAMwD,OAAAA,GAAAA;AACrB,wBAAA,MAAMC,iBAAiBC,aAAAA,CAAc1D,IAAAA,CAAAA;wBAErC,IAAI;4BACF,MAAMmC,MAAAA,CAAOwB,QAAQ,CAACF,cAAAA,EAAgB;gCAAEG,UAAAA,EAAY;AAAM,6BAAA,CAAA;4BAE1D,IAAItF,WAAAA,GAAc,KAAK4D,mBAAAA,EAAqB;AAC1CtD,gCAAAA,UAAAA,CAAW,+BAAA,EAAiC;AAAEiF,oCAAAA,KAAAA,EAAOvF,YAAYwF,QAAQ;AAAG,iCAAA,CAAA;AAC9E,4BAAA;4BAEA,IAAIL,cAAAA,CAAerG,iBAAiB,EAAE;gCACpCwE,kBAAAA,CACE;AACE3B,oCAAAA,QAAAA,EAAU8D,sBAAKN,cAAAA,EAAgB;AAC7B,wCAAA,mBAAA;AACA,wCAAA,iBAAA;AACA,wCAAA,OAAA;AACA,wCAAA;AACD,qCAAA,CAAA;AACDrG,oCAAAA,iBAAAA,EAAmBqG,eAAerG,iBAAiB;AACnD4D,oCAAAA,IAAAA,EAAMyC,eAAezC;AACvB,iCAAA,EACAwC,QAAQQ,SAAS,CAAA;4BAErB,CAAA,MAAO;gCACL,MAAMjD,mBAAAA,CACJgD,sBAAKN,cAAAA,EAAgB;AAAC,oCAAA,mBAAA;AAAqB,oCAAA;AAAkB,iCAAA,CAAA,EAC7DD,QAAQQ,SAAS,CAAA;AAErB,4BAAA;AACF,wBAAA,CAAA,CAAE,OAAOC,GAAAA,EAAK;AACZ,4BAAA,IAAIA,eAAeC,mBAAAA,EAAiB;AAClC,gCAAA,MAAMC,mBAAmB,CAACC,GAAAA,GAAAA;oCACxB,IAAI;AACF,wCAAA,IAAIA,GAAAA,KAAQd,SAAAA,IAAac,GAAAA,KAAQ,IAAA,EAAM,OAAO,EAAA;wCAC9C,IAAI,OAAOA,GAAAA,KAAQ,QAAA,EAAU,OAAOA,GAAAA;;wCAEpC,IAAIrG,mBAAAA,CAAoBqG,GAAAA,CAAAA,EAAM,OAAOtF,aAAAA,CAAcsF,GAAAA,CAAAA;;AAEnD,wCAAA,IAAIxG,QAAAA,CAASwG,GAAAA,CAAAA,IAAQrG,mBAAAA,CAAoBqG,GAAAA,CAAIpH,OAAO,CAAA,EAAG;4CACrD,OAAO8B,aAAAA,CAAcsF,IAAIpH,OAAO,CAAA;AAClC,wCAAA;;AAEA,wCAAA,IAAIY,QAAAA,CAASwG,GAAAA,CAAAA,IAAQvG,KAAAA,CAAMC,OAAO,CAACsG,GAAAA,CAAIC,MAAM,CAAA,IAAKD,GAAAA,CAAIC,MAAM,CAAC7G,MAAM,GAAG,CAAA,EAAG;AACvE,4CAAA,MAAM8G,KAAAA,GAAQF,GAAAA,CAAIC,MAAM,CAAC,CAAA,CAAE;4CAC3B,IAAI,OAAOC,KAAAA,KAAU,QAAA,EAAU,OAAOA,KAAAA;4CACtC,IAAIvG,mBAAAA,CAAoBuG,KAAAA,CAAAA,EAAQ,OAAOxF,aAAAA,CAAcwF,KAAAA,CAAAA;AACvD,wCAAA;;AAEA,wCAAA,IAAI1G,SAASwG,GAAAA,CAAAA,IAAQ,OAAOA,GAAAA,CAAI1H,cAAc,KAAK,QAAA,EAAU;AAC3D,4CAAA,OAAO0H,IAAI1H,cAAc;AAC3B,wCAAA;AACA,wCAAA,OAAO6H,MAAAA,CAAOH,GAAAA,CAAAA;AAChB,oCAAA,CAAA,CAAE,OAAM;AACN,wCAAA,OAAOG,MAAAA,CAAOH,GAAAA,CAAAA;AAChB,oCAAA;AACF,gCAAA,CAAA;AAEA,gCAAA,MAAMI,QAAAA,GAAWP,GAAAA,CAAIQ,KAAK,CAACC,MAAM,CAC/B,CAACC,GAAAA,EAAK,EAAE3H,OAAO,EAAE4H,IAAI,EAAE,GAAA;oCACrB,IAAI,CAACA,MAAM,OAAOD,GAAAA;oCAClBA,GAAG,CAACC,IAAAA,CAAK,GAAGT,gBAAAA,CAAiBnH,OAAAA,CAAAA;oCAC7B,OAAO2H,GAAAA;AACT,gCAAA,CAAA,EACA,EAAC,CAAA;AAGHnB,gCAAAA,OAAAA,CAAQQ,SAAS,CAACQ,QAAAA,CAAAA;AACpB,4BAAA;AAEAjG,4BAAAA,cAAAA,CAAeD,WAAAA,GAAc,CAAA,CAAA;AAC/B,wBAAA;AACF,oBAAA,CAAA;AAEA,oBAAA,QAAA,gBAAA+D,eAAA,CAACE,iBAAAA,EAAAA;wBAAKC,SAAAA,EAAU,QAAA;wBAASC,UAAAA,EAAW,SAAA;wBAAUC,GAAAA,EAAK,CAAA;wBAAGmC,SAAAA,EAAW,CAAA;;AAC/D,0CAAA9C,cAAA,CAAC+C,kBAAKC,IAAI,EAAA;gCAACrC,GAAAA,EAAK,CAAA;AACb,gCAAA,QAAA,EAAA;AACC,oCAAA;AACEsC,wCAAAA,KAAAA,EAAOlG,aAAAA,CAAc;4CACnBtC,EAAAA,EAAI,2BAAA;4CACJE,cAAAA,EAAgB;AAClB,yCAAA,CAAA;wCACAiF,IAAAA,EAAM,WAAA;wCACNzF,QAAAA,EAAU,IAAA;wCACV+I,IAAAA,EAAM,CAAA;wCACN1E,IAAAA,EAAM;AACR,qCAAA;AACA,oCAAA;AACEyE,wCAAAA,KAAAA,EAAOlG,aAAAA,CAAc;4CACnBtC,EAAAA,EAAI,0BAAA;4CACJE,cAAAA,EAAgB;AAClB,yCAAA,CAAA;wCACAiF,IAAAA,EAAM,UAAA;wCACNsD,IAAAA,EAAM,CAAA;wCACN1E,IAAAA,EAAM;AACR,qCAAA;AACA,oCAAA;AACE2E,wCAAAA,QAAAA,EAAU,CAAChD,mBAAAA;AACX8C,wCAAAA,KAAAA,EAAOlG,aAAAA,CAAc;4CACnBtC,EAAAA,EAAI,uBAAA;4CACJE,cAAAA,EAAgB;AAClB,yCAAA,CAAA;wCACAiF,IAAAA,EAAM,OAAA;wCACNzF,QAAAA,EAAU,IAAA;wCACV+I,IAAAA,EAAM,EAAA;wCACN1E,IAAAA,EAAM;AACR,qCAAA;AACA,oCAAA;AACE4E,wCAAAA,IAAAA,EAAMrG,aAAAA,CAAc;4CAClBtC,EAAAA,EAAI,yBAAA;4CACJE,cAAAA,EACE;AACJ,yCAAA,CAAA;AACAsI,wCAAAA,KAAAA,EAAOlG,aAAAA,CAAc;4CACnBtC,EAAAA,EAAI,iBAAA;4CACJE,cAAAA,EAAgB;AAClB,yCAAA,CAAA;wCACAiF,IAAAA,EAAM,UAAA;wCACNzF,QAAAA,EAAU,IAAA;wCACV+I,IAAAA,EAAM,EAAA;wCACN1E,IAAAA,EAAM;AACR,qCAAA;AACA,oCAAA;AACEyE,wCAAAA,KAAAA,EAAOlG,aAAAA,CAAc;4CACnBtC,EAAAA,EAAI,iCAAA;4CACJE,cAAAA,EAAgB;AAClB,yCAAA,CAAA;wCACAiF,IAAAA,EAAM,iBAAA;wCACNzF,QAAAA,EAAU,IAAA;wCACV+I,IAAAA,EAAM,EAAA;wCACN1E,IAAAA,EAAM;AACR,qCAAA;AACA,oCAAA;AACEyE,wCAAAA,KAAAA,EAAOlG,aAAAA,CACL;4CACEtC,EAAAA,EAAI,+BAAA;4CACJE,cAAAA,EACE;yCACJ,EACA;AACE0I,4CAAAA,KAAAA,gBACErD,cAAA,CAACsD,CAAAA,EAAAA;gDAAEC,MAAAA,EAAO,QAAA;gDAASC,IAAAA,EAAK,yBAAA;gDAA0BC,GAAAA,EAAI,YAAA;0DACnD1G,aAAAA,CAAc;oDACbtC,EAAAA,EAAI,qCAAA;oDACJE,cAAAA,EAAgB;AAClB,iDAAA;;AAGJ+I,4CAAAA,MAAAA,gBACE1D,cAAA,CAACsD,CAAAA,EAAAA;gDAAEC,MAAAA,EAAO,QAAA;gDAASC,IAAAA,EAAK,2BAAA;gDAA4BC,GAAAA,EAAI,YAAA;0DACrD1G,aAAAA,CAAc;oDACbtC,EAAAA,EAAI,sCAAA;oDACJE,cAAAA,EAAgB;AAClB,iDAAA;;AAGN,yCAAA,CAAA;wCAEFiF,IAAAA,EAAM,MAAA;wCACNsD,IAAAA,EAAM,EAAA;wCACN1E,IAAAA,EAAM;AACR;iCACD,CAACmF,GAAG,CAAC,CAAC,EAAET,IAAI,EAAE,GAAGU,KAAAA,EAAO,iBACvB5D,cAAA,CAAC+C,iBAAAA,CAAKc,IAAI,EAAA;wCAERC,EAAAA,EAAI,EAAA;wCACJC,CAAAA,EAAGb,IAAAA;wCACHzC,SAAAA,EAAU,QAAA;wCACVC,UAAAA,EAAW,SAAA;AAEX,wCAAA,QAAA,gBAAAV,cAAA,CAACgE,sBAAAA,EAAAA;AAAe,4CAAA,GAAGJ;;AANdA,qCAAAA,EAAAA,KAAAA,CAAMhE,IAAI,CAAA;;0CAUrBI,cAAA,CAACiE,mBAAAA,EAAAA;gCAAOC,SAAS,EAAA,IAAA;gCAAChB,IAAAA,EAAK,GAAA;gCAAI1E,IAAAA,EAAK,QAAA;0CAC7BzB,aAAAA,CAAc;oCACbtC,EAAAA,EAAI,2BAAA;oCACJE,cAAAA,EAAgB;AAClB,iCAAA;;;;;gBAIL4C,KAAAA,EAAOuC,MAAAA,CAAOC,QAAAA,KAAa,UAAA,kBAC1BC,cAAA,CAACmE,gBAAAA,EAAAA;oBAAIC,UAAAA,EAAY,CAAA;AACf,oBAAA,QAAA,gBAAApE,cAAA,CAACQ,iBAAAA,EAAAA;wBAAK6D,cAAAA,EAAe,QAAA;AACnB,wBAAA,QAAA,gBAAArE,cAAA,CAACsE,iBAAAA,EAAAA;4BAAKxD,GAAAA,EAAKyD,sBAAAA;4BAASrE,EAAAA,EAAG,aAAA;sCACpBnD,aAAAA,CAAc;gCACbtC,EAAAA,EAAI,0BAAA;gCACJE,cAAAA,EAAgB;AAClB,6BAAA;;;;;;;AAQhB;AAMA;;IAGA,SAASgH,cAAc1D,IAAwB,EAAA;IAC7C,OAAOuG,MAAAA,CAAOC,OAAO,CAACxG,IAAAA,CAAAA,CAAM0E,MAAM,CAChC,CAACC,GAAAA,EAAK,CAAC8B,GAAAA,EAAK5J,KAAAA,CAAM,GAAA;AAOhB,QAAA,IAAI,CAAC;AAAC,YAAA,UAAA;AAAY,YAAA;AAAkB,SAAA,CAAC6J,QAAQ,CAACD,GAAAA,CAAAA,IAAQ,OAAO5J,UAAU,QAAA,EAAU;AAC/E8H,YAAAA,GAAG,CAAC8B,GAAAA,CAAgC,GAAG5J,KAAAA,CAAMZ,IAAI,EAAA;AAEjD,YAAA,IAAIwK,QAAQ,UAAA,EAAY;gBACtB9B,GAAG,CAAC8B,GAAAA,CAAI,GAAG5J,KAAAA,IAASyG,SAAAA;AACtB,YAAA;QACF,CAAA,MAAO;YACLqB,GAAG,CAAC8B,IAAoB,GAAG5J,KAAAA;AAC7B,QAAA;QAEA,OAAO8H,GAAAA;AACT,IAAA,CAAA,EACA,EAAC,CAAA;AAUL;AAEA,MAAMU,CAAAA,GAAIsB,uBAAAA,CAAOC,CAAC;SACT,EAAE,CAAC,EAAEC,KAAK,EAAE,GAAKA,KAAAA,CAAMC,MAAM,CAACC,UAAU,CAAC;AAClD,CAAC;;;;"}
|
|
@@ -149,6 +149,12 @@ const REGISTER_ADMIN_SCHEMA = yup.object().shape({
|
|
|
149
149
|
defaultMessage: 'Email is required'
|
|
150
150
|
}).nullable()
|
|
151
151
|
});
|
|
152
|
+
const isRecord = (value)=>{
|
|
153
|
+
return typeof value === 'object' && !Array.isArray(value) && value !== null;
|
|
154
|
+
};
|
|
155
|
+
const isMessageDescriptor = (value)=>{
|
|
156
|
+
return isRecord(value) && typeof value.id === 'string' && typeof value.defaultMessage === 'string';
|
|
157
|
+
};
|
|
152
158
|
const Register = ({ hasAdmin })=>{
|
|
153
159
|
const { toggleNotification } = useNotification();
|
|
154
160
|
const navigate = useNavigate();
|
|
@@ -337,24 +343,26 @@ const Register = ({ hasAdmin })=>{
|
|
|
337
343
|
if (err instanceof ValidationError) {
|
|
338
344
|
const formatDescriptor = (msg)=>{
|
|
339
345
|
try {
|
|
340
|
-
if (
|
|
346
|
+
if (msg === undefined || msg === null) return '';
|
|
341
347
|
if (typeof msg === 'string') return msg;
|
|
342
348
|
// Direct descriptor
|
|
343
|
-
if (
|
|
349
|
+
if (isMessageDescriptor(msg)) return formatMessage(msg);
|
|
344
350
|
// Wrapped descriptor: { message: { id, defaultMessage } }
|
|
345
|
-
if (msg
|
|
351
|
+
if (isRecord(msg) && isMessageDescriptor(msg.message)) {
|
|
346
352
|
return formatMessage(msg.message);
|
|
347
353
|
}
|
|
348
354
|
// errors array: [{ id, defaultMessage }]
|
|
349
|
-
if (Array.isArray(msg.errors) && msg.errors.length > 0) {
|
|
355
|
+
if (isRecord(msg) && Array.isArray(msg.errors) && msg.errors.length > 0) {
|
|
350
356
|
const first = msg.errors[0];
|
|
351
357
|
if (typeof first === 'string') return first;
|
|
352
|
-
if (first
|
|
358
|
+
if (isMessageDescriptor(first)) return formatMessage(first);
|
|
353
359
|
}
|
|
354
360
|
// fallback to defaultMessage if present
|
|
355
|
-
if (
|
|
361
|
+
if (isRecord(msg) && typeof msg.defaultMessage === 'string') {
|
|
362
|
+
return msg.defaultMessage;
|
|
363
|
+
}
|
|
356
364
|
return String(msg);
|
|
357
|
-
} catch
|
|
365
|
+
} catch {
|
|
358
366
|
return String(msg);
|
|
359
367
|
}
|
|
360
368
|
};
|