@strapi/admin 5.30.0 → 5.30.1
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/StrapiApp.js.map +1 -1
- package/dist/admin/admin/src/StrapiApp.mjs.map +1 -1
- package/dist/admin/admin/src/components/ContentBox.js.map +1 -1
- package/dist/admin/admin/src/components/ContentBox.mjs.map +1 -1
- package/dist/admin/admin/src/components/DescriptionComponentRenderer.js.map +1 -1
- package/dist/admin/admin/src/components/DescriptionComponentRenderer.mjs.map +1 -1
- package/dist/admin/admin/src/components/Filters.js +1 -1
- package/dist/admin/admin/src/components/Filters.js.map +1 -1
- package/dist/admin/admin/src/components/Filters.mjs +1 -1
- package/dist/admin/admin/src/components/Filters.mjs.map +1 -1
- package/dist/admin/admin/src/components/Form.js +8 -3
- package/dist/admin/admin/src/components/Form.js.map +1 -1
- package/dist/admin/admin/src/components/Form.mjs +8 -3
- package/dist/admin/admin/src/components/Form.mjs.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Enumeration.js +1 -1
- package/dist/admin/admin/src/components/FormInputs/Enumeration.js.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Enumeration.mjs +1 -1
- package/dist/admin/admin/src/components/FormInputs/Enumeration.mjs.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Number.js +1 -1
- package/dist/admin/admin/src/components/FormInputs/Number.js.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Number.mjs +1 -1
- package/dist/admin/admin/src/components/FormInputs/Number.mjs.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Renderer.js.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Renderer.mjs.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Time.js.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Time.mjs.map +1 -1
- package/dist/admin/admin/src/components/GapDropZone.js.map +1 -1
- package/dist/admin/admin/src/components/GapDropZone.mjs.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Overview.js.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Overview.mjs.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Steps/ContentTypeBuilderSteps.js.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Steps/ContentTypeBuilderSteps.mjs.map +1 -1
- 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/Layouts/GridLayout.js.map +1 -1
- package/dist/admin/admin/src/components/Layouts/GridLayout.mjs.map +1 -1
- package/dist/admin/admin/src/components/Layouts/HeaderLayout.js +8 -4
- package/dist/admin/admin/src/components/Layouts/HeaderLayout.js.map +1 -1
- package/dist/admin/admin/src/components/Layouts/HeaderLayout.mjs +8 -4
- package/dist/admin/admin/src/components/Layouts/HeaderLayout.mjs.map +1 -1
- package/dist/admin/admin/src/components/NpsSurvey.js +5 -3
- package/dist/admin/admin/src/components/NpsSurvey.js.map +1 -1
- package/dist/admin/admin/src/components/NpsSurvey.mjs +5 -3
- package/dist/admin/admin/src/components/NpsSurvey.mjs.map +1 -1
- package/dist/admin/admin/src/components/PageHelpers.js.map +1 -1
- package/dist/admin/admin/src/components/PageHelpers.mjs.map +1 -1
- package/dist/admin/admin/src/components/PrivateRoute.js.map +1 -1
- package/dist/admin/admin/src/components/PrivateRoute.mjs.map +1 -1
- package/dist/admin/admin/src/components/RelativeTime.js.map +1 -1
- package/dist/admin/admin/src/components/RelativeTime.mjs.map +1 -1
- package/dist/admin/admin/src/components/ResizeIndicator.js.map +1 -1
- package/dist/admin/admin/src/components/ResizeIndicator.mjs.map +1 -1
- package/dist/admin/admin/src/components/Table.js +1 -1
- package/dist/admin/admin/src/components/Table.js.map +1 -1
- package/dist/admin/admin/src/components/Table.mjs +1 -1
- package/dist/admin/admin/src/components/Table.mjs.map +1 -1
- package/dist/admin/admin/src/components/Widgets.js.map +1 -1
- package/dist/admin/admin/src/components/Widgets.mjs.map +1 -1
- package/dist/admin/admin/src/core/apis/CustomFields.js.map +1 -1
- package/dist/admin/admin/src/core/apis/CustomFields.mjs.map +1 -1
- package/dist/admin/admin/src/core/apis/Plugin.js +0 -1
- package/dist/admin/admin/src/core/apis/Plugin.js.map +1 -1
- package/dist/admin/admin/src/core/apis/Plugin.mjs +0 -1
- package/dist/admin/admin/src/core/apis/Plugin.mjs.map +1 -1
- package/dist/admin/admin/src/core/apis/Widgets.js.map +1 -1
- package/dist/admin/admin/src/core/apis/Widgets.mjs.map +1 -1
- package/dist/admin/admin/src/core/apis/rbac.js.map +1 -1
- package/dist/admin/admin/src/core/apis/rbac.mjs.map +1 -1
- package/dist/admin/admin/src/core/apis/router.js.map +1 -1
- package/dist/admin/admin/src/core/apis/router.mjs.map +1 -1
- package/dist/admin/admin/src/features/BackButton.js.map +1 -1
- package/dist/admin/admin/src/features/BackButton.mjs.map +1 -1
- package/dist/admin/admin/src/features/Tracking.js.map +1 -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/usePersistentState.js.map +1 -1
- package/dist/admin/admin/src/hooks/usePersistentState.mjs.map +1 -1
- package/dist/admin/admin/src/hooks/useRBAC.js.map +1 -1
- package/dist/admin/admin/src/hooks/useRBAC.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Auth/components/Register.js.map +1 -1
- package/dist/admin/admin/src/pages/Auth/components/Register.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Home/HomePage.js.map +1 -1
- package/dist/admin/admin/src/pages/Home/HomePage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Marketplace/MarketplacePage.js +2 -2
- package/dist/admin/admin/src/pages/Marketplace/MarketplacePage.js.map +1 -1
- package/dist/admin/admin/src/pages/Marketplace/MarketplacePage.mjs +2 -2
- package/dist/admin/admin/src/pages/Marketplace/MarketplacePage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Marketplace/components/NpmPackageCard.js.map +1 -1
- package/dist/admin/admin/src/pages/Marketplace/components/NpmPackageCard.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Marketplace/components/NpmPackagesFilters.js.map +1 -1
- package/dist/admin/admin/src/pages/Marketplace/components/NpmPackagesFilters.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Marketplace/components/PageHeader.js.map +1 -1
- package/dist/admin/admin/src/pages/Marketplace/components/PageHeader.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Marketplace/hooks/useMarketplaceData.js.map +1 -1
- package/dist/admin/admin/src/pages/Marketplace/hooks/useMarketplaceData.mjs.map +1 -1
- 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 +8 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.mjs +9 -2
- package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/LifeSpanInput.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/LifeSpanInput.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.mjs.map +1 -1
- 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/components/CollapsableContentType.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/utils/transformPermissionsData.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/utils/transformPermissionsData.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.js +2 -0
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.mjs +2 -0
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.mjs.map +1 -1
- 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.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/utils/files.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/utils/files.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/InstalledPlugins.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/InstalledPlugins.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.js +9 -2
- package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.mjs +9 -2
- package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.js +9 -2
- package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.mjs +9 -2
- package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/ListPage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/ListPage.mjs.map +1 -1
- 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/CollapsePropertyMatrix.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.mjs.map +1 -1
- 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/ContentTypeCollapses.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/GlobalActions.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/GlobalActions.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/forms.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/forms.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/permissions.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/permissions.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/ListView.js +2 -0
- package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/ListView.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/ListView.mjs +2 -0
- package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/ListView.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/EditPage.js +9 -2
- package/dist/admin/admin/src/pages/Settings/pages/Users/EditPage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/EditPage.mjs +9 -2
- package/dist/admin/admin/src/pages/Settings/pages/Users/EditPage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.js +3 -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 +3 -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/MagicLinkCE.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/components/MagicLinkCE.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/components/SelectRoles.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/components/SelectRoles.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/EditPage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/EditPage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/ListPage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/ListPage.mjs.map +1 -1
- 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/pages/Settings/pages/Webhooks/components/WebhookForm.js +9 -2
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.mjs +9 -2
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.mjs.map +1 -1
- package/dist/admin/admin/src/pages/UseCasePage.js.map +1 -1
- package/dist/admin/admin/src/pages/UseCasePage.mjs.map +1 -1
- package/dist/admin/admin/src/services/api.js +2 -1
- package/dist/admin/admin/src/services/api.js.map +1 -1
- package/dist/admin/admin/src/services/api.mjs +2 -1
- package/dist/admin/admin/src/services/api.mjs.map +1 -1
- package/dist/admin/admin/src/services/apiTokens.js.map +1 -1
- package/dist/admin/admin/src/services/apiTokens.mjs.map +1 -1
- package/dist/admin/admin/src/services/transferTokens.js.map +1 -1
- package/dist/admin/admin/src/services/transferTokens.mjs.map +1 -1
- package/dist/admin/admin/src/services/users.js.map +1 -1
- package/dist/admin/admin/src/services/users.mjs.map +1 -1
- package/dist/admin/admin/src/services/webhooks.js.map +1 -1
- package/dist/admin/admin/src/services/webhooks.mjs.map +1 -1
- package/dist/admin/admin/src/utils/cookies.js.map +1 -1
- package/dist/admin/admin/src/utils/cookies.mjs.map +1 -1
- package/dist/admin/admin/src/utils/getFetchClient.js.map +1 -1
- package/dist/admin/admin/src/utils/getFetchClient.mjs.map +1 -1
- package/dist/admin/admin/src/utils/getPrefixedId.js.map +1 -1
- package/dist/admin/admin/src/utils/getPrefixedId.mjs.map +1 -1
- package/dist/admin/admin/src/utils/rulesEngine.js.map +1 -1
- package/dist/admin/admin/src/utils/rulesEngine.mjs.map +1 -1
- package/dist/admin/admin/src/utils/urls.js.map +1 -1
- package/dist/admin/admin/src/utils/urls.mjs.map +1 -1
- package/dist/admin/admin/src/utils/users.js.map +1 -1
- package/dist/admin/admin/src/utils/users.mjs.map +1 -1
- package/dist/admin/ee/admin/src/components/AuditLogs/Widgets.js.map +1 -1
- package/dist/admin/ee/admin/src/components/AuditLogs/Widgets.mjs.map +1 -1
- package/dist/admin/ee/admin/src/hooks/useLicenseLimitNotification.js.map +1 -1
- package/dist/admin/ee/admin/src/hooks/useLicenseLimitNotification.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/AuthPage/components/SSOProviders.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/AuthPage/components/SSOProviders.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/AuthResponse.js.map +1 -1
- 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.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListPage.js +3 -3
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListPage.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListPage.mjs +3 -3
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListPage.mjs.map +1 -1
- 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/AuditLogs/components/Modal.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useFormatTimeStamp.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useFormatTimeStamp.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getDisplayedFilters.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getDisplayedFilters.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Users/components/MagicLinkEE.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Users/components/MagicLinkEE.mjs.map +1 -1
- package/dist/admin/ee/admin/src/services/ai.js +14 -1
- package/dist/admin/ee/admin/src/services/ai.js.map +1 -1
- package/dist/admin/ee/admin/src/services/ai.mjs +14 -2
- package/dist/admin/ee/admin/src/services/ai.mjs.map +1 -1
- package/dist/admin/ee/admin/src/services/auditLogs.js.map +1 -1
- package/dist/admin/ee/admin/src/services/auditLogs.mjs.map +1 -1
- package/dist/admin/ee.js +1 -0
- package/dist/admin/ee.js.map +1 -1
- package/dist/admin/ee.mjs +1 -1
- package/dist/admin/src/components/Form.d.ts +1 -1
- package/dist/admin/src/core/store/configure.d.ts +2 -2
- package/dist/admin/src/core/store/hooks.d.ts +2 -2
- package/dist/admin/src/ee.d.ts +1 -1
- package/dist/admin/src/hooks/useAdminRoles.d.ts +1 -1
- package/dist/admin/src/pages/Settings/pages/Webhooks/hooks/useWebhooks.d.ts +4 -4
- package/dist/admin/src/selectors.d.ts +2 -2
- 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 +1 -1
- package/dist/admin/src/services/auth.d.ts +13 -13
- 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 +2 -2
- package/dist/admin/tests/utils.d.ts +1 -1
- package/dist/ee/admin/src/services/ai.d.ts +6 -3
- package/dist/ee/admin/src/services/auditLogs.d.ts +1 -1
- package/dist/ee/server/src/ai/containers/ai.d.ts +11 -0
- package/dist/ee/server/src/ai/containers/ai.d.ts.map +1 -0
- package/dist/ee/server/src/ai/controllers/ai.d.ts +1 -0
- package/dist/ee/server/src/ai/controllers/ai.d.ts.map +1 -1
- package/dist/ee/server/src/ai/routes/ai.d.ts.map +1 -1
- package/dist/ee/server/src/index.d.ts +1 -0
- package/dist/ee/server/src/index.d.ts.map +1 -1
- package/dist/server/ee/server/src/ai/containers/ai.js +18 -0
- package/dist/server/ee/server/src/ai/containers/ai.js.map +1 -0
- package/dist/server/ee/server/src/ai/containers/ai.mjs +16 -0
- package/dist/server/ee/server/src/ai/containers/ai.mjs.map +1 -0
- package/dist/server/ee/server/src/ai/controllers/ai.js +6 -0
- package/dist/server/ee/server/src/ai/controllers/ai.js.map +1 -1
- package/dist/server/ee/server/src/ai/controllers/ai.mjs +6 -0
- package/dist/server/ee/server/src/ai/controllers/ai.mjs.map +1 -1
- package/dist/server/ee/server/src/ai/routes/ai.js +11 -0
- package/dist/server/ee/server/src/ai/routes/ai.js.map +1 -1
- package/dist/server/ee/server/src/ai/routes/ai.mjs +11 -0
- package/dist/server/ee/server/src/ai/routes/ai.mjs.map +1 -1
- package/dist/server/ee/server/src/audit-logs/services/audit-logs.js.map +1 -1
- package/dist/server/ee/server/src/audit-logs/services/audit-logs.mjs.map +1 -1
- package/dist/server/ee/server/src/controllers/authentication-utils/constants.js.map +1 -1
- package/dist/server/ee/server/src/controllers/authentication-utils/constants.mjs.map +1 -1
- package/dist/server/ee/server/src/controllers/authentication-utils/utils.js.map +1 -1
- package/dist/server/ee/server/src/controllers/authentication-utils/utils.mjs.map +1 -1
- package/dist/server/ee/server/src/controllers/authentication.js.map +1 -1
- package/dist/server/ee/server/src/controllers/authentication.mjs.map +1 -1
- package/dist/server/ee/server/src/controllers/user.js.map +1 -1
- package/dist/server/ee/server/src/controllers/user.mjs.map +1 -1
- package/dist/server/ee/server/src/index.js +7 -0
- package/dist/server/ee/server/src/index.js.map +1 -1
- package/dist/server/ee/server/src/index.mjs +7 -0
- package/dist/server/ee/server/src/index.mjs.map +1 -1
- package/dist/server/ee/server/src/services/auth.js.map +1 -1
- package/dist/server/ee/server/src/services/auth.mjs.map +1 -1
- package/dist/server/ee/server/src/services/passport/sso.js.map +1 -1
- package/dist/server/ee/server/src/services/passport/sso.mjs.map +1 -1
- package/dist/server/ee/server/src/utils/index.js.map +1 -1
- package/dist/server/ee/server/src/utils/index.mjs.map +1 -1
- package/dist/server/server/src/controllers/transfer/index.js.map +1 -1
- package/dist/server/server/src/controllers/transfer/index.mjs.map +1 -1
- package/dist/server/server/src/controllers/user.js +10 -0
- package/dist/server/server/src/controllers/user.js.map +1 -1
- package/dist/server/server/src/controllers/user.mjs +10 -0
- package/dist/server/server/src/controllers/user.mjs.map +1 -1
- package/dist/server/server/src/domain/action/index.js.map +1 -1
- package/dist/server/server/src/domain/action/index.mjs.map +1 -1
- package/dist/server/server/src/domain/condition/index.js.map +1 -1
- package/dist/server/server/src/domain/condition/index.mjs.map +1 -1
- package/dist/server/server/src/domain/permission/index.js.map +1 -1
- package/dist/server/server/src/domain/permission/index.mjs.map +1 -1
- package/dist/server/server/src/middlewares/rateLimit.js.map +1 -1
- package/dist/server/server/src/middlewares/rateLimit.mjs.map +1 -1
- package/dist/server/server/src/routes/serve-admin-panel.js.map +1 -1
- package/dist/server/server/src/routes/serve-admin-panel.mjs.map +1 -1
- package/dist/server/server/src/services/api-token.js.map +1 -1
- package/dist/server/server/src/services/api-token.mjs.map +1 -1
- package/dist/server/server/src/services/auth.js.map +1 -1
- package/dist/server/server/src/services/auth.mjs.map +1 -1
- package/dist/server/server/src/services/content-type.js.map +1 -1
- package/dist/server/server/src/services/content-type.mjs.map +1 -1
- package/dist/server/server/src/services/encryption.js.map +1 -1
- package/dist/server/server/src/services/encryption.mjs.map +1 -1
- package/dist/server/server/src/services/homepage.js.map +1 -1
- package/dist/server/server/src/services/homepage.mjs.map +1 -1
- package/dist/server/server/src/services/permission/permissions-manager/sanitize.js.map +1 -1
- package/dist/server/server/src/services/permission/permissions-manager/sanitize.mjs.map +1 -1
- package/dist/server/server/src/services/permission/permissions-manager/validate.js.map +1 -1
- package/dist/server/server/src/services/permission/permissions-manager/validate.mjs.map +1 -1
- package/dist/server/server/src/services/role.js.map +1 -1
- package/dist/server/server/src/services/role.mjs.map +1 -1
- package/dist/server/server/src/services/transfer/token.js.map +1 -1
- package/dist/server/server/src/services/transfer/token.mjs.map +1 -1
- package/dist/server/server/src/services/user.js.map +1 -1
- package/dist/server/server/src/services/user.mjs.map +1 -1
- package/dist/server/server/src/utils/index.js.map +1 -1
- package/dist/server/server/src/utils/index.mjs.map +1 -1
- package/dist/server/server/src/validation/action-provider.js.map +1 -1
- package/dist/server/server/src/validation/action-provider.mjs.map +1 -1
- package/dist/server/server/src/validation/common-functions/check-fields-are-correctly-nested.js.map +1 -1
- package/dist/server/server/src/validation/common-functions/check-fields-are-correctly-nested.mjs.map +1 -1
- package/dist/server/server/src/validation/common-validators.js.map +1 -1
- package/dist/server/server/src/validation/common-validators.mjs.map +1 -1
- package/dist/server/src/controllers/user.d.ts.map +1 -1
- package/dist/shared/contracts/ai.d.ts +16 -0
- package/dist/shared/contracts/ai.d.ts.map +1 -1
- package/package.json +7 -7
package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LogoInput.js","sources":["../../../../../../../../../admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { createContext } from '@radix-ui/react-context';\nimport {\n Box,\n Button,\n ButtonProps,\n Card,\n CardAsset,\n CardBadge,\n CardBody,\n CardContent,\n CardHeader,\n CardSubtitle,\n CardTitle,\n CarouselActions,\n CarouselInput,\n CarouselInputProps,\n CarouselSlide,\n Field,\n Flex,\n IconButton,\n Modal,\n Tabs,\n TextInput,\n TextInputProps,\n Typography,\n} from '@strapi/design-system';\nimport { PlusCircle, Plus, ArrowClockwise } from '@strapi/icons';\nimport axios, { AxiosError } from 'axios';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { ConfigurationContextValue } from '../../../../../features/Configuration';\nimport { ACCEPTED_FORMAT, DIMENSION, SIZE } from '../utils/constants';\nimport { ImageAsset, ParsingFileError, parseFileMetadatas } from '../utils/files';\n\n/* -------------------------------------------------------------------------------------------------\n * LogoInputContext\n * -----------------------------------------------------------------------------------------------*/\n\ninterface LogoInputContextValue {\n localImage: ImageAsset | undefined;\n goToStep: (step: Step) => void;\n onClose: () => void;\n setLocalImage: (asset: ImageAsset | undefined) => void;\n}\n\nconst [LogoInputContextProvider, useLogoInputContext] =\n createContext<LogoInputContextValue>('LogoInput');\n\n/* -------------------------------------------------------------------------------------------------\n * LogoInput\n * -----------------------------------------------------------------------------------------------*/\n\ninterface LogoInputProps\n extends Pick<PendingLogoDialogProps, 'onChangeLogo'>,\n Pick<CarouselInputProps, 'label' | 'hint'> {\n canUpdate: boolean;\n customLogo?: ConfigurationContextValue['logos']['auth']['custom'];\n defaultLogo: string;\n}\n\ntype Step = 'pending' | 'upload' | undefined;\n\nconst LogoInput = ({\n canUpdate,\n customLogo,\n defaultLogo,\n hint,\n label,\n onChangeLogo,\n}: LogoInputProps) => {\n const [localImage, setLocalImage] = React.useState<ImageAsset | undefined>();\n const [currentStep, setCurrentStep] = React.useState<Step>();\n const { formatMessage } = useIntl();\n\n const handleClose = () => {\n setLocalImage(undefined);\n setCurrentStep(undefined);\n };\n\n return (\n <Modal.Root\n open={!!currentStep}\n onOpenChange={(state) => {\n if (state === false) {\n handleClose();\n }\n }}\n >\n <LogoInputContextProvider\n setLocalImage={setLocalImage}\n localImage={localImage}\n goToStep={setCurrentStep}\n onClose={handleClose}\n >\n <CarouselInput\n label={label}\n selectedSlide={0}\n hint={hint}\n // Carousel is used here for a single media,\n // we don't need previous and next labels but these props are required\n previousLabel=\"\"\n nextLabel=\"\"\n onNext={() => {}}\n onPrevious={() => {}}\n secondaryLabel={customLogo?.name || 'logo.png'}\n actions={\n <CarouselActions>\n <Modal.Trigger>\n <IconButton\n disabled={!canUpdate}\n onClick={() => setCurrentStep('upload')}\n label={formatMessage({\n id: 'Settings.application.customization.carousel.change-action',\n defaultMessage: 'Change logo',\n })}\n >\n <Plus />\n </IconButton>\n </Modal.Trigger>\n {customLogo?.url && (\n <IconButton\n disabled={!canUpdate}\n onClick={() => onChangeLogo(null)}\n label={formatMessage({\n id: 'Settings.application.customization.carousel.reset-action',\n defaultMessage: 'Reset logo',\n })}\n >\n <ArrowClockwise />\n </IconButton>\n )}\n </CarouselActions>\n }\n >\n <CarouselSlide\n label={formatMessage({\n id: 'Settings.application.customization.carousel-slide.label',\n defaultMessage: 'Logo slide',\n })}\n >\n <Box\n maxHeight=\"40%\"\n maxWidth=\"40%\"\n tag=\"img\"\n src={customLogo?.url || defaultLogo}\n alt={formatMessage({\n id: 'Settings.application.customization.carousel.title',\n defaultMessage: 'Logo',\n })}\n />\n </CarouselSlide>\n </CarouselInput>\n <Modal.Content>\n <Modal.Header>\n <Modal.Title>\n {formatMessage(\n currentStep === 'upload'\n ? {\n id: 'Settings.application.customization.modal.upload',\n defaultMessage: 'Upload logo',\n }\n : {\n id: 'Settings.application.customization.modal.pending',\n defaultMessage: 'Pending logo',\n }\n )}\n </Modal.Title>\n </Modal.Header>\n {currentStep === 'upload' ? (\n <AddLogoDialog />\n ) : (\n <PendingLogoDialog onChangeLogo={onChangeLogo} />\n )}\n </Modal.Content>\n </LogoInputContextProvider>\n </Modal.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * AddLogoDialog\n * -----------------------------------------------------------------------------------------------*/\n\nconst AddLogoDialog = () => {\n const { formatMessage } = useIntl();\n\n return (\n <Tabs.Root variant=\"simple\" defaultValue=\"computer\">\n <Box paddingLeft={8} paddingRight={8}>\n <Tabs.List\n aria-label={formatMessage({\n id: 'Settings.application.customization.modal.tab.label',\n defaultMessage: 'How do you want to upload your assets?',\n })}\n >\n <Tabs.Trigger value=\"computer\">\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.from-computer',\n defaultMessage: 'From computer',\n })}\n </Tabs.Trigger>\n <Tabs.Trigger value=\"url\">\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.from-url',\n defaultMessage: 'From url',\n })}\n </Tabs.Trigger>\n </Tabs.List>\n </Box>\n <Tabs.Content value=\"computer\">\n <ComputerForm />\n </Tabs.Content>\n <Tabs.Content value=\"url\">\n <URLForm />\n </Tabs.Content>\n </Tabs.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * URLForm\n * -----------------------------------------------------------------------------------------------*/\n\nconst URLForm = () => {\n const { formatMessage } = useIntl();\n const [logoUrl, setLogoUrl] = React.useState('');\n const [error, setError] = React.useState<string>();\n const { setLocalImage, goToStep, onClose } = useLogoInputContext('URLForm');\n\n const handleChange: TextInputProps['onChange'] = (e) => {\n setLogoUrl(e.target.value);\n };\n\n const handleSubmit: React.FormEventHandler<HTMLFormElement> = async (event) => {\n event.preventDefault();\n\n const data = new FormData(event.target as HTMLFormElement);\n\n const url = data.get('logo-url');\n\n if (!url) {\n return;\n }\n\n try {\n const res = await axios.get(url.toString(), { responseType: 'blob', timeout: 8000 });\n\n const file = new File([res.data], res.config.url ?? '', {\n type: res.headers['content-type'],\n });\n\n const asset = await parseFileMetadatas(file);\n\n setLocalImage(asset);\n goToStep('pending');\n } catch (err) {\n if (err instanceof AxiosError) {\n setError(\n formatMessage({\n id: 'Settings.application.customization.modal.upload.error-network',\n defaultMessage: 'Network error',\n })\n );\n } else if (err instanceof ParsingFileError) {\n setError(formatMessage(err.displayMessage, { size: SIZE, dimension: DIMENSION }));\n } else {\n throw err;\n }\n }\n };\n\n return (\n <form onSubmit={handleSubmit}>\n <Box paddingLeft={8} paddingRight={8} paddingTop={6} paddingBottom={6}>\n <Field.Root error={error} name=\"logo-url\">\n <Field.Label>\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.from-url.input-label',\n defaultMessage: 'URL',\n })}\n </Field.Label>\n <TextInput type=\"url\" onChange={handleChange} value={logoUrl} />\n <Field.Error />\n </Field.Root>\n </Box>\n <Modal.Footer>\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({ id: 'app.components.Button.cancel', defaultMessage: 'Cancel' })}\n </Button>\n <Button type=\"submit\">\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.next',\n defaultMessage: 'Next',\n })}\n </Button>\n </Modal.Footer>\n </form>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ComputerForm\n * -----------------------------------------------------------------------------------------------*/\n\nconst ComputerForm = () => {\n const { formatMessage } = useIntl();\n const [dragOver, setDragOver] = React.useState(false);\n const [fileError, setFileError] = React.useState<string>();\n const inputRef = React.useRef<HTMLInputElement>(null!);\n const id = React.useId();\n\n const { setLocalImage, goToStep, onClose } = useLogoInputContext('ComputerForm');\n\n const handleDragEnter = () => {\n setDragOver(true);\n };\n const handleDragLeave = () => {\n setDragOver(false);\n };\n\n const handleClick: ButtonProps['onClick'] = (e) => {\n e.preventDefault();\n inputRef.current.click();\n };\n\n const handleChange = async () => {\n handleDragLeave();\n\n if (!inputRef.current.files) {\n return;\n }\n\n const [file] = inputRef.current.files;\n\n try {\n const asset = await parseFileMetadatas(file);\n setLocalImage(asset);\n goToStep('pending');\n } catch (err) {\n if (err instanceof ParsingFileError) {\n setFileError(formatMessage(err.displayMessage, { size: SIZE, dimension: DIMENSION }));\n inputRef.current.focus();\n } else {\n throw err;\n }\n }\n };\n\n return (\n <>\n <form>\n <Box paddingLeft={8} paddingRight={8} paddingTop={6} paddingBottom={6}>\n <Field.Root name={id} error={fileError}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Flex\n paddingTop={9}\n paddingBottom={7}\n hasRadius\n justifyContent=\"center\"\n direction=\"column\"\n background={dragOver ? 'primary100' : 'neutral100'}\n borderColor={dragOver ? 'primary500' : fileError ? 'danger600' : 'neutral300'}\n borderStyle=\"dashed\"\n borderWidth=\"1px\"\n position=\"relative\"\n onDragEnter={handleDragEnter}\n onDragLeave={handleDragLeave}\n >\n <PlusCircle fill=\"primary600\" width=\"6rem\" height=\"6rem\" aria-hidden />\n <Box paddingTop={3} paddingBottom={5}>\n <Typography variant=\"delta\" tag=\"label\" htmlFor={id}>\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.drag-drop',\n defaultMessage: 'Drag and Drop here or',\n })}\n </Typography>\n </Box>\n <Box position=\"relative\">\n <FileInput\n accept={ACCEPTED_FORMAT.join(', ')}\n type=\"file\"\n name=\"files\"\n tabIndex={-1}\n onChange={handleChange}\n ref={inputRef}\n id={id}\n />\n </Box>\n <Button type=\"button\" onClick={handleClick}>\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.cta.browse',\n defaultMessage: 'Browse files',\n })}\n </Button>\n <Box paddingTop={6}>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage(\n {\n id: 'Settings.application.customization.modal.upload.file-validation',\n defaultMessage:\n 'Max dimension: {dimension}x{dimension}, Max size: {size}KB',\n },\n { size: SIZE, dimension: DIMENSION }\n )}\n </Typography>\n </Box>\n </Flex>\n <Field.Error />\n </Flex>\n </Field.Root>\n </Box>\n </form>\n <Modal.Footer>\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({ id: 'app.components.Button.cancel', defaultMessage: 'Cancel' })}\n </Button>\n </Modal.Footer>\n </>\n );\n};\n\nconst FileInput = styled(Field.Input)`\n opacity: 0;\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 1;\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * PendingLogoDialog\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PendingLogoDialogProps {\n onChangeLogo: (file: ImageAsset | null) => void;\n}\n\nconst PendingLogoDialog = ({ onChangeLogo }: PendingLogoDialogProps) => {\n const { formatMessage } = useIntl();\n const { localImage, setLocalImage, goToStep, onClose } = useLogoInputContext('PendingLogoDialog');\n\n const handleGoBack = () => {\n setLocalImage(undefined);\n goToStep('upload');\n };\n\n const handleUpload = () => {\n if (localImage) {\n onChangeLogo(localImage);\n }\n onClose();\n };\n\n return (\n <>\n <Modal.Body>\n <Box paddingLeft={8} paddingRight={8} paddingTop={6} paddingBottom={6}>\n <Flex justifyContent=\"space-between\" paddingBottom={6}>\n <Flex direction=\"column\" alignItems=\"flex-start\">\n <Typography variant=\"pi\" fontWeight=\"bold\">\n {formatMessage({\n id: 'Settings.application.customization.modal.pending.title',\n defaultMessage: 'Logo ready to upload',\n })}\n </Typography>\n <Typography variant=\"pi\" textColor=\"neutral500\">\n {formatMessage({\n id: 'Settings.application.customization.modal.pending.subtitle',\n defaultMessage: 'Manage the chosen logo before uploading it',\n })}\n </Typography>\n </Flex>\n <Button onClick={handleGoBack} variant=\"secondary\">\n {formatMessage({\n id: 'Settings.application.customization.modal.pending.choose-another',\n defaultMessage: 'Choose another logo',\n })}\n </Button>\n </Flex>\n <Box maxWidth={`18rem`}>\n {localImage?.url ? <ImageCardAsset asset={localImage} /> : null}\n </Box>\n </Box>\n </Modal.Body>\n <Modal.Footer>\n <Modal.Close>\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({\n id: 'Settings.application.customization.modal.cancel',\n defaultMessage: 'Cancel',\n })}\n </Button>\n </Modal.Close>\n <Button onClick={handleUpload}>\n {formatMessage({\n id: 'Settings.application.customization.modal.pending.upload',\n defaultMessage: 'Upload logo',\n })}\n </Button>\n </Modal.Footer>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ImageCardAsset\n * -----------------------------------------------------------------------------------------------*/\n\ninterface ImageCardAssetProps {\n asset: ImageAsset;\n}\n\nconst ImageCardAsset = ({ asset }: ImageCardAssetProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Card>\n <CardHeader>\n <CardAsset size=\"S\" src={asset.url} />\n </CardHeader>\n <CardBody>\n <CardContent>\n <CardTitle>{asset.name}</CardTitle>\n <CardSubtitle>\n {`${asset.ext?.toUpperCase()} - ${asset.width}✕${asset.height}`}\n </CardSubtitle>\n </CardContent>\n <CardBadge>\n {formatMessage({\n id: 'Settings.application.customization.modal.pending.card-badge',\n defaultMessage: 'image',\n })}\n </CardBadge>\n </CardBody>\n </Card>\n );\n};\n\nexport { LogoInput };\nexport type { LogoInputProps };\n"],"names":["LogoInputContextProvider","useLogoInputContext","createContext","LogoInput","canUpdate","customLogo","defaultLogo","hint","label","onChangeLogo","localImage","setLocalImage","React","useState","currentStep","setCurrentStep","formatMessage","useIntl","handleClose","undefined","_jsx","Modal","Root","open","onOpenChange","state","_jsxs","goToStep","onClose","CarouselInput","selectedSlide","previousLabel","nextLabel","onNext","onPrevious","secondaryLabel","name","actions","CarouselActions","Trigger","IconButton","disabled","onClick","id","defaultMessage","Plus","url","ArrowClockwise","CarouselSlide","Box","maxHeight","maxWidth","tag","src","alt","Content","Header","Title","AddLogoDialog","PendingLogoDialog","Tabs","variant","defaultValue","paddingLeft","paddingRight","List","aria-label","value","ComputerForm","URLForm","logoUrl","setLogoUrl","error","setError","handleChange","e","target","handleSubmit","event","preventDefault","data","FormData","get","res","axios","toString","responseType","timeout","file","File","config","type","headers","asset","parseFileMetadatas","err","AxiosError","ParsingFileError","displayMessage","size","SIZE","dimension","DIMENSION","form","onSubmit","paddingTop","paddingBottom","Field","Label","TextInput","onChange","Error","Footer","Button","dragOver","setDragOver","fileError","setFileError","inputRef","useRef","useId","handleDragEnter","handleDragLeave","handleClick","current","click","files","focus","_Fragment","Flex","direction","alignItems","gap","hasRadius","justifyContent","background","borderColor","borderStyle","borderWidth","position","onDragEnter","onDragLeave","PlusCircle","fill","width","height","aria-hidden","Typography","htmlFor","FileInput","accept","ACCEPTED_FORMAT","join","tabIndex","ref","textColor","styled","Input","handleGoBack","handleUpload","Body","fontWeight","ImageCardAsset","Close","Card","CardHeader","CardAsset","CardBody","CardContent","CardTitle","CardSubtitle","ext","toUpperCase","CardBadge"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"LogoInput.js","sources":["../../../../../../../../../admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { createContext } from '@radix-ui/react-context';\nimport {\n Box,\n Button,\n ButtonProps,\n Card,\n CardAsset,\n CardBadge,\n CardBody,\n CardContent,\n CardHeader,\n CardSubtitle,\n CardTitle,\n CarouselActions,\n CarouselInput,\n CarouselInputProps,\n CarouselSlide,\n Field,\n Flex,\n IconButton,\n Modal,\n Tabs,\n TextInput,\n TextInputProps,\n Typography,\n} from '@strapi/design-system';\nimport { PlusCircle, Plus, ArrowClockwise } from '@strapi/icons';\nimport axios, { AxiosError } from 'axios';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { ConfigurationContextValue } from '../../../../../features/Configuration';\nimport { ACCEPTED_FORMAT, DIMENSION, SIZE } from '../utils/constants';\nimport { ImageAsset, ParsingFileError, parseFileMetadatas } from '../utils/files';\n\n/* -------------------------------------------------------------------------------------------------\n * LogoInputContext\n * -----------------------------------------------------------------------------------------------*/\n\ninterface LogoInputContextValue {\n localImage: ImageAsset | undefined;\n goToStep: (step: Step) => void;\n onClose: () => void;\n setLocalImage: (asset: ImageAsset | undefined) => void;\n}\n\nconst [LogoInputContextProvider, useLogoInputContext] =\n createContext<LogoInputContextValue>('LogoInput');\n\n/* -------------------------------------------------------------------------------------------------\n * LogoInput\n * -----------------------------------------------------------------------------------------------*/\n\ninterface LogoInputProps\n extends Pick<PendingLogoDialogProps, 'onChangeLogo'>,\n Pick<CarouselInputProps, 'label' | 'hint'> {\n canUpdate: boolean;\n customLogo?: ConfigurationContextValue['logos']['auth']['custom'];\n defaultLogo: string;\n}\n\ntype Step = 'pending' | 'upload' | undefined;\n\nconst LogoInput = ({\n canUpdate,\n customLogo,\n defaultLogo,\n hint,\n label,\n onChangeLogo,\n}: LogoInputProps) => {\n const [localImage, setLocalImage] = React.useState<ImageAsset | undefined>();\n const [currentStep, setCurrentStep] = React.useState<Step>();\n const { formatMessage } = useIntl();\n\n const handleClose = () => {\n setLocalImage(undefined);\n setCurrentStep(undefined);\n };\n\n return (\n <Modal.Root\n open={!!currentStep}\n onOpenChange={(state) => {\n if (state === false) {\n handleClose();\n }\n }}\n >\n <LogoInputContextProvider\n setLocalImage={setLocalImage}\n localImage={localImage}\n goToStep={setCurrentStep}\n onClose={handleClose}\n >\n <CarouselInput\n label={label}\n selectedSlide={0}\n hint={hint}\n // Carousel is used here for a single media,\n // we don't need previous and next labels but these props are required\n previousLabel=\"\"\n nextLabel=\"\"\n onNext={() => {}}\n onPrevious={() => {}}\n secondaryLabel={customLogo?.name || 'logo.png'}\n actions={\n <CarouselActions>\n <Modal.Trigger>\n <IconButton\n disabled={!canUpdate}\n onClick={() => setCurrentStep('upload')}\n label={formatMessage({\n id: 'Settings.application.customization.carousel.change-action',\n defaultMessage: 'Change logo',\n })}\n >\n <Plus />\n </IconButton>\n </Modal.Trigger>\n {customLogo?.url && (\n <IconButton\n disabled={!canUpdate}\n onClick={() => onChangeLogo(null)}\n label={formatMessage({\n id: 'Settings.application.customization.carousel.reset-action',\n defaultMessage: 'Reset logo',\n })}\n >\n <ArrowClockwise />\n </IconButton>\n )}\n </CarouselActions>\n }\n >\n <CarouselSlide\n label={formatMessage({\n id: 'Settings.application.customization.carousel-slide.label',\n defaultMessage: 'Logo slide',\n })}\n >\n <Box\n maxHeight=\"40%\"\n maxWidth=\"40%\"\n tag=\"img\"\n src={customLogo?.url || defaultLogo}\n alt={formatMessage({\n id: 'Settings.application.customization.carousel.title',\n defaultMessage: 'Logo',\n })}\n />\n </CarouselSlide>\n </CarouselInput>\n <Modal.Content>\n <Modal.Header>\n <Modal.Title>\n {formatMessage(\n currentStep === 'upload'\n ? {\n id: 'Settings.application.customization.modal.upload',\n defaultMessage: 'Upload logo',\n }\n : {\n id: 'Settings.application.customization.modal.pending',\n defaultMessage: 'Pending logo',\n }\n )}\n </Modal.Title>\n </Modal.Header>\n {currentStep === 'upload' ? (\n <AddLogoDialog />\n ) : (\n <PendingLogoDialog onChangeLogo={onChangeLogo} />\n )}\n </Modal.Content>\n </LogoInputContextProvider>\n </Modal.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * AddLogoDialog\n * -----------------------------------------------------------------------------------------------*/\n\nconst AddLogoDialog = () => {\n const { formatMessage } = useIntl();\n\n return (\n <Tabs.Root variant=\"simple\" defaultValue=\"computer\">\n <Box paddingLeft={8} paddingRight={8}>\n <Tabs.List\n aria-label={formatMessage({\n id: 'Settings.application.customization.modal.tab.label',\n defaultMessage: 'How do you want to upload your assets?',\n })}\n >\n <Tabs.Trigger value=\"computer\">\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.from-computer',\n defaultMessage: 'From computer',\n })}\n </Tabs.Trigger>\n <Tabs.Trigger value=\"url\">\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.from-url',\n defaultMessage: 'From url',\n })}\n </Tabs.Trigger>\n </Tabs.List>\n </Box>\n <Tabs.Content value=\"computer\">\n <ComputerForm />\n </Tabs.Content>\n <Tabs.Content value=\"url\">\n <URLForm />\n </Tabs.Content>\n </Tabs.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * URLForm\n * -----------------------------------------------------------------------------------------------*/\n\nconst URLForm = () => {\n const { formatMessage } = useIntl();\n const [logoUrl, setLogoUrl] = React.useState('');\n const [error, setError] = React.useState<string>();\n const { setLocalImage, goToStep, onClose } = useLogoInputContext('URLForm');\n\n const handleChange: TextInputProps['onChange'] = (e) => {\n setLogoUrl(e.target.value);\n };\n\n const handleSubmit: React.FormEventHandler<HTMLFormElement> = async (event) => {\n event.preventDefault();\n\n const data = new FormData(event.target as HTMLFormElement);\n\n const url = data.get('logo-url');\n\n if (!url) {\n return;\n }\n\n try {\n const res = await axios.get(url.toString(), { responseType: 'blob', timeout: 8000 });\n\n const file = new File([res.data], res.config.url ?? '', {\n type: res.headers['content-type'],\n });\n\n const asset = await parseFileMetadatas(file);\n\n setLocalImage(asset);\n goToStep('pending');\n } catch (err) {\n if (err instanceof AxiosError) {\n setError(\n formatMessage({\n id: 'Settings.application.customization.modal.upload.error-network',\n defaultMessage: 'Network error',\n })\n );\n } else if (err instanceof ParsingFileError) {\n setError(formatMessage(err.displayMessage, { size: SIZE, dimension: DIMENSION }));\n } else {\n throw err;\n }\n }\n };\n\n return (\n <form onSubmit={handleSubmit}>\n <Box paddingLeft={8} paddingRight={8} paddingTop={6} paddingBottom={6}>\n <Field.Root error={error} name=\"logo-url\">\n <Field.Label>\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.from-url.input-label',\n defaultMessage: 'URL',\n })}\n </Field.Label>\n <TextInput type=\"url\" onChange={handleChange} value={logoUrl} />\n <Field.Error />\n </Field.Root>\n </Box>\n <Modal.Footer>\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({ id: 'app.components.Button.cancel', defaultMessage: 'Cancel' })}\n </Button>\n <Button type=\"submit\">\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.next',\n defaultMessage: 'Next',\n })}\n </Button>\n </Modal.Footer>\n </form>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ComputerForm\n * -----------------------------------------------------------------------------------------------*/\n\nconst ComputerForm = () => {\n const { formatMessage } = useIntl();\n const [dragOver, setDragOver] = React.useState(false);\n const [fileError, setFileError] = React.useState<string>();\n const inputRef = React.useRef<HTMLInputElement>(null!);\n const id = React.useId();\n\n const { setLocalImage, goToStep, onClose } = useLogoInputContext('ComputerForm');\n\n const handleDragEnter = () => {\n setDragOver(true);\n };\n const handleDragLeave = () => {\n setDragOver(false);\n };\n\n const handleClick: ButtonProps['onClick'] = (e) => {\n e.preventDefault();\n inputRef.current.click();\n };\n\n const handleChange = async () => {\n handleDragLeave();\n\n if (!inputRef.current.files) {\n return;\n }\n\n const [file] = inputRef.current.files;\n\n try {\n const asset = await parseFileMetadatas(file);\n setLocalImage(asset);\n goToStep('pending');\n } catch (err) {\n if (err instanceof ParsingFileError) {\n setFileError(formatMessage(err.displayMessage, { size: SIZE, dimension: DIMENSION }));\n inputRef.current.focus();\n } else {\n throw err;\n }\n }\n };\n\n return (\n <>\n <form>\n <Box paddingLeft={8} paddingRight={8} paddingTop={6} paddingBottom={6}>\n <Field.Root name={id} error={fileError}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Flex\n paddingTop={9}\n paddingBottom={7}\n hasRadius\n justifyContent=\"center\"\n direction=\"column\"\n background={dragOver ? 'primary100' : 'neutral100'}\n borderColor={dragOver ? 'primary500' : fileError ? 'danger600' : 'neutral300'}\n borderStyle=\"dashed\"\n borderWidth=\"1px\"\n position=\"relative\"\n onDragEnter={handleDragEnter}\n onDragLeave={handleDragLeave}\n >\n <PlusCircle fill=\"primary600\" width=\"6rem\" height=\"6rem\" aria-hidden />\n <Box paddingTop={3} paddingBottom={5}>\n <Typography variant=\"delta\" tag=\"label\" htmlFor={id}>\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.drag-drop',\n defaultMessage: 'Drag and Drop here or',\n })}\n </Typography>\n </Box>\n <Box position=\"relative\">\n <FileInput\n accept={ACCEPTED_FORMAT.join(', ')}\n type=\"file\"\n name=\"files\"\n tabIndex={-1}\n onChange={handleChange}\n ref={inputRef}\n id={id}\n />\n </Box>\n <Button type=\"button\" onClick={handleClick}>\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.cta.browse',\n defaultMessage: 'Browse files',\n })}\n </Button>\n <Box paddingTop={6}>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage(\n {\n id: 'Settings.application.customization.modal.upload.file-validation',\n defaultMessage:\n 'Max dimension: {dimension}x{dimension}, Max size: {size}KB',\n },\n { size: SIZE, dimension: DIMENSION }\n )}\n </Typography>\n </Box>\n </Flex>\n <Field.Error />\n </Flex>\n </Field.Root>\n </Box>\n </form>\n <Modal.Footer>\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({ id: 'app.components.Button.cancel', defaultMessage: 'Cancel' })}\n </Button>\n </Modal.Footer>\n </>\n );\n};\n\nconst FileInput = styled(Field.Input)`\n opacity: 0;\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 1;\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * PendingLogoDialog\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PendingLogoDialogProps {\n onChangeLogo: (file: ImageAsset | null) => void;\n}\n\nconst PendingLogoDialog = ({ onChangeLogo }: PendingLogoDialogProps) => {\n const { formatMessage } = useIntl();\n const { localImage, setLocalImage, goToStep, onClose } = useLogoInputContext('PendingLogoDialog');\n\n const handleGoBack = () => {\n setLocalImage(undefined);\n goToStep('upload');\n };\n\n const handleUpload = () => {\n if (localImage) {\n onChangeLogo(localImage);\n }\n onClose();\n };\n\n return (\n <>\n <Modal.Body>\n <Box paddingLeft={8} paddingRight={8} paddingTop={6} paddingBottom={6}>\n <Flex justifyContent=\"space-between\" paddingBottom={6}>\n <Flex direction=\"column\" alignItems=\"flex-start\">\n <Typography variant=\"pi\" fontWeight=\"bold\">\n {formatMessage({\n id: 'Settings.application.customization.modal.pending.title',\n defaultMessage: 'Logo ready to upload',\n })}\n </Typography>\n <Typography variant=\"pi\" textColor=\"neutral500\">\n {formatMessage({\n id: 'Settings.application.customization.modal.pending.subtitle',\n defaultMessage: 'Manage the chosen logo before uploading it',\n })}\n </Typography>\n </Flex>\n <Button onClick={handleGoBack} variant=\"secondary\">\n {formatMessage({\n id: 'Settings.application.customization.modal.pending.choose-another',\n defaultMessage: 'Choose another logo',\n })}\n </Button>\n </Flex>\n <Box maxWidth={`18rem`}>\n {localImage?.url ? <ImageCardAsset asset={localImage} /> : null}\n </Box>\n </Box>\n </Modal.Body>\n <Modal.Footer>\n <Modal.Close>\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({\n id: 'Settings.application.customization.modal.cancel',\n defaultMessage: 'Cancel',\n })}\n </Button>\n </Modal.Close>\n <Button onClick={handleUpload}>\n {formatMessage({\n id: 'Settings.application.customization.modal.pending.upload',\n defaultMessage: 'Upload logo',\n })}\n </Button>\n </Modal.Footer>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ImageCardAsset\n * -----------------------------------------------------------------------------------------------*/\n\ninterface ImageCardAssetProps {\n asset: ImageAsset;\n}\n\nconst ImageCardAsset = ({ asset }: ImageCardAssetProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Card>\n <CardHeader>\n <CardAsset size=\"S\" src={asset.url} />\n </CardHeader>\n <CardBody>\n <CardContent>\n <CardTitle>{asset.name}</CardTitle>\n <CardSubtitle>\n {`${asset.ext?.toUpperCase()} - ${asset.width}✕${asset.height}`}\n </CardSubtitle>\n </CardContent>\n <CardBadge>\n {formatMessage({\n id: 'Settings.application.customization.modal.pending.card-badge',\n defaultMessage: 'image',\n })}\n </CardBadge>\n </CardBody>\n </Card>\n );\n};\n\nexport { LogoInput };\nexport type { LogoInputProps };\n"],"names":["LogoInputContextProvider","useLogoInputContext","createContext","LogoInput","canUpdate","customLogo","defaultLogo","hint","label","onChangeLogo","localImage","setLocalImage","React","useState","currentStep","setCurrentStep","formatMessage","useIntl","handleClose","undefined","_jsx","Modal","Root","open","onOpenChange","state","_jsxs","goToStep","onClose","CarouselInput","selectedSlide","previousLabel","nextLabel","onNext","onPrevious","secondaryLabel","name","actions","CarouselActions","Trigger","IconButton","disabled","onClick","id","defaultMessage","Plus","url","ArrowClockwise","CarouselSlide","Box","maxHeight","maxWidth","tag","src","alt","Content","Header","Title","AddLogoDialog","PendingLogoDialog","Tabs","variant","defaultValue","paddingLeft","paddingRight","List","aria-label","value","ComputerForm","URLForm","logoUrl","setLogoUrl","error","setError","handleChange","e","target","handleSubmit","event","preventDefault","data","FormData","get","res","axios","toString","responseType","timeout","file","File","config","type","headers","asset","parseFileMetadatas","err","AxiosError","ParsingFileError","displayMessage","size","SIZE","dimension","DIMENSION","form","onSubmit","paddingTop","paddingBottom","Field","Label","TextInput","onChange","Error","Footer","Button","dragOver","setDragOver","fileError","setFileError","inputRef","useRef","useId","handleDragEnter","handleDragLeave","handleClick","current","click","files","focus","_Fragment","Flex","direction","alignItems","gap","hasRadius","justifyContent","background","borderColor","borderStyle","borderWidth","position","onDragEnter","onDragLeave","PlusCircle","fill","width","height","aria-hidden","Typography","htmlFor","FileInput","accept","ACCEPTED_FORMAT","join","tabIndex","ref","textColor","styled","Input","handleGoBack","handleUpload","Body","fontWeight","ImageCardAsset","Close","Card","CardHeader","CardAsset","CardBody","CardContent","CardTitle","CardSubtitle","ext","toUpperCase","CardBadge"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgDA,MAAM,CAACA,wBAAAA,EAA0BC,mBAAoB,CAAA,GACnDC,0BAAqC,CAAA,WAAA,CAAA;AAgBvC,MAAMC,SAAY,GAAA,CAAC,EACjBC,SAAS,EACTC,UAAU,EACVC,WAAW,EACXC,IAAI,EACJC,KAAK,EACLC,YAAY,EACG,GAAA;AACf,IAAA,MAAM,CAACC,UAAAA,EAAYC,aAAc,CAAA,GAAGC,iBAAMC,QAAQ,EAAA;AAClD,IAAA,MAAM,CAACC,WAAAA,EAAaC,cAAe,CAAA,GAAGH,iBAAMC,QAAQ,EAAA;IACpD,MAAM,EAAEG,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAE1B,IAAA,MAAMC,WAAc,GAAA,IAAA;QAClBP,aAAcQ,CAAAA,SAAAA,CAAAA;QACdJ,cAAeI,CAAAA,SAAAA,CAAAA;AACjB,KAAA;IAEA,qBACEC,cAAA,CAACC,mBAAMC,IAAI,EAAA;AACTC,QAAAA,IAAAA,EAAM,CAAC,CAACT,WAAAA;AACRU,QAAAA,YAAAA,EAAc,CAACC,KAAAA,GAAAA;AACb,YAAA,IAAIA,UAAU,KAAO,EAAA;AACnBP,gBAAAA,WAAAA,EAAAA;AACF;AACF,SAAA;AAEA,QAAA,QAAA,gBAAAQ,eAAC1B,CAAAA,wBAAAA,EAAAA;YACCW,aAAeA,EAAAA,aAAAA;YACfD,UAAYA,EAAAA,UAAAA;YACZiB,QAAUZ,EAAAA,cAAAA;YACVa,OAASV,EAAAA,WAAAA;;8BAETE,cAACS,CAAAA,0BAAAA,EAAAA;oBACCrB,KAAOA,EAAAA,KAAAA;oBACPsB,aAAe,EAAA,CAAA;oBACfvB,IAAMA,EAAAA,IAAAA;;;oBAGNwB,aAAc,EAAA,EAAA;oBACdC,SAAU,EAAA,EAAA;AACVC,oBAAAA,MAAAA,EAAQ,IAAO,EAAA;AACfC,oBAAAA,UAAAA,EAAY,IAAO,EAAA;AACnBC,oBAAAA,cAAAA,EAAgB9B,YAAY+B,IAAQ,IAAA,UAAA;AACpCC,oBAAAA,OAAAA,gBACEX,eAACY,CAAAA,4BAAAA,EAAAA;;AACC,0CAAAlB,cAAA,CAACC,mBAAMkB,OAAO,EAAA;AACZ,gCAAA,QAAA,gBAAAnB,cAACoB,CAAAA,uBAAAA,EAAAA;AACCC,oCAAAA,QAAAA,EAAU,CAACrC,SAAAA;AACXsC,oCAAAA,OAAAA,EAAS,IAAM3B,cAAe,CAAA,QAAA,CAAA;AAC9BP,oCAAAA,KAAAA,EAAOQ,aAAc,CAAA;wCACnB2B,EAAI,EAAA,2DAAA;wCACJC,cAAgB,EAAA;AAClB,qCAAA,CAAA;AAEA,oCAAA,QAAA,gBAAAxB,cAACyB,CAAAA,UAAAA,EAAAA,EAAAA;;;AAGJxC,4BAAAA,UAAAA,EAAYyC,qBACX1B,cAACoB,CAAAA,uBAAAA,EAAAA;AACCC,gCAAAA,QAAAA,EAAU,CAACrC,SAAAA;AACXsC,gCAAAA,OAAAA,EAAS,IAAMjC,YAAa,CAAA,IAAA,CAAA;AAC5BD,gCAAAA,KAAAA,EAAOQ,aAAc,CAAA;oCACnB2B,EAAI,EAAA,0DAAA;oCACJC,cAAgB,EAAA;AAClB,iCAAA,CAAA;AAEA,gCAAA,QAAA,gBAAAxB,cAAC2B,CAAAA,oBAAAA,EAAAA,EAAAA;;;;AAMT,oBAAA,QAAA,gBAAA3B,cAAC4B,CAAAA,0BAAAA,EAAAA;AACCxC,wBAAAA,KAAAA,EAAOQ,aAAc,CAAA;4BACnB2B,EAAI,EAAA,yDAAA;4BACJC,cAAgB,EAAA;AAClB,yBAAA,CAAA;AAEA,wBAAA,QAAA,gBAAAxB,cAAC6B,CAAAA,gBAAAA,EAAAA;4BACCC,SAAU,EAAA,KAAA;4BACVC,QAAS,EAAA,KAAA;4BACTC,GAAI,EAAA,KAAA;AACJC,4BAAAA,GAAAA,EAAKhD,YAAYyC,GAAOxC,IAAAA,WAAAA;AACxBgD,4BAAAA,GAAAA,EAAKtC,aAAc,CAAA;gCACjB2B,EAAI,EAAA,mDAAA;gCACJC,cAAgB,EAAA;AAClB,6BAAA;;;;AAIN,8BAAAlB,eAAA,CAACL,mBAAMkC,OAAO,EAAA;;AACZ,sCAAAnC,cAAA,CAACC,mBAAMmC,MAAM,EAAA;oDACXpC,cAAA,CAACC,mBAAMoC,KAAK,EAAA;AACTzC,gCAAAA,QAAAA,EAAAA,aAAAA,CACCF,gBAAgB,QACZ,GAAA;oCACE6B,EAAI,EAAA,iDAAA;oCACJC,cAAgB,EAAA;iCAElB,GAAA;oCACED,EAAI,EAAA,kDAAA;oCACJC,cAAgB,EAAA;AAClB,iCAAA;;;wBAIT9B,WAAgB,KAAA,QAAA,iBACfM,cAACsC,CAAAA,aAAAA,EAAAA,EAAAA,CAAAA,iBAEDtC,cAACuC,CAAAA,iBAAAA,EAAAA;4BAAkBlD,YAAcA,EAAAA;;;;;;;AAM7C;AAEA;;AAEkG,qGAElG,MAAMiD,aAAgB,GAAA,IAAA;IACpB,MAAM,EAAE1C,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAE1B,qBACES,eAAA,CAACkC,kBAAKtC,IAAI,EAAA;QAACuC,OAAQ,EAAA,QAAA;QAASC,YAAa,EAAA,UAAA;;0BACvC1C,cAAC6B,CAAAA,gBAAAA,EAAAA;gBAAIc,WAAa,EAAA,CAAA;gBAAGC,YAAc,EAAA,CAAA;wCACjCtC,eAAA,CAACkC,kBAAKK,IAAI,EAAA;AACRC,oBAAAA,YAAAA,EAAYlD,aAAc,CAAA;wBACxB2B,EAAI,EAAA,oDAAA;wBACJC,cAAgB,EAAA;AAClB,qBAAA,CAAA;;AAEA,sCAAAxB,cAAA,CAACwC,kBAAKrB,OAAO,EAAA;4BAAC4B,KAAM,EAAA,UAAA;sCACjBnD,aAAc,CAAA;gCACb2B,EAAI,EAAA,+DAAA;gCACJC,cAAgB,EAAA;AAClB,6BAAA;;AAEF,sCAAAxB,cAAA,CAACwC,kBAAKrB,OAAO,EAAA;4BAAC4B,KAAM,EAAA,KAAA;sCACjBnD,aAAc,CAAA;gCACb2B,EAAI,EAAA,0DAAA;gCACJC,cAAgB,EAAA;AAClB,6BAAA;;;;;AAIN,0BAAAxB,cAAA,CAACwC,kBAAKL,OAAO,EAAA;gBAACY,KAAM,EAAA,UAAA;AAClB,gBAAA,QAAA,gBAAA/C,cAACgD,CAAAA,YAAAA,EAAAA,EAAAA;;AAEH,0BAAAhD,cAAA,CAACwC,kBAAKL,OAAO,EAAA;gBAACY,KAAM,EAAA,KAAA;AAClB,gBAAA,QAAA,gBAAA/C,cAACiD,CAAAA,OAAAA,EAAAA,EAAAA;;;;AAIT,CAAA;AAEA;;AAEkG,qGAElG,MAAMA,OAAU,GAAA,IAAA;IACd,MAAM,EAAErD,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAM,CAACqD,OAASC,EAAAA,UAAAA,CAAW,GAAG3D,gBAAAA,CAAMC,QAAQ,CAAC,EAAA,CAAA;AAC7C,IAAA,MAAM,CAAC2D,KAAAA,EAAOC,QAAS,CAAA,GAAG7D,iBAAMC,QAAQ,EAAA;IACxC,MAAM,EAAEF,aAAa,EAAEgB,QAAQ,EAAEC,OAAO,EAAE,GAAG3B,mBAAoB,CAAA,SAAA,CAAA;AAEjE,IAAA,MAAMyE,eAA2C,CAACC,CAAAA,GAAAA;QAChDJ,UAAWI,CAAAA,CAAAA,CAAEC,MAAM,CAACT,KAAK,CAAA;AAC3B,KAAA;AAEA,IAAA,MAAMU,eAAwD,OAAOC,KAAAA,GAAAA;AACnEA,QAAAA,KAAAA,CAAMC,cAAc,EAAA;AAEpB,QAAA,MAAMC,IAAO,GAAA,IAAIC,QAASH,CAAAA,KAAAA,CAAMF,MAAM,CAAA;QAEtC,MAAM9B,GAAAA,GAAMkC,IAAKE,CAAAA,GAAG,CAAC,UAAA,CAAA;AAErB,QAAA,IAAI,CAACpC,GAAK,EAAA;AACR,YAAA;AACF;QAEA,IAAI;AACF,YAAA,MAAMqC,MAAM,MAAMC,KAAAA,CAAMF,GAAG,CAACpC,GAAAA,CAAIuC,QAAQ,EAAI,EAAA;gBAAEC,YAAc,EAAA,MAAA;gBAAQC,OAAS,EAAA;AAAK,aAAA,CAAA;YAElF,MAAMC,IAAAA,GAAO,IAAIC,IAAK,CAAA;AAACN,gBAAAA,GAAAA,CAAIH;AAAK,aAAA,EAAEG,GAAIO,CAAAA,MAAM,CAAC5C,GAAG,IAAI,EAAI,EAAA;gBACtD6C,IAAMR,EAAAA,GAAAA,CAAIS,OAAO,CAAC,cAAe;AACnC,aAAA,CAAA;YAEA,MAAMC,KAAAA,GAAQ,MAAMC,wBAAmBN,CAAAA,IAAAA,CAAAA;YAEvC7E,aAAckF,CAAAA,KAAAA,CAAAA;YACdlE,QAAS,CAAA,SAAA,CAAA;AACX,SAAA,CAAE,OAAOoE,GAAK,EAAA;AACZ,YAAA,IAAIA,eAAeC,gBAAY,EAAA;AAC7BvB,gBAAAA,QAAAA,CACEzD,aAAc,CAAA;oBACZ2B,EAAI,EAAA,+DAAA;oBACJC,cAAgB,EAAA;AAClB,iBAAA,CAAA,CAAA;aAEG,MAAA,IAAImD,eAAeE,sBAAkB,EAAA;gBAC1CxB,QAASzD,CAAAA,aAAAA,CAAc+E,GAAIG,CAAAA,cAAc,EAAE;oBAAEC,IAAMC,EAAAA,cAAAA;oBAAMC,SAAWC,EAAAA;AAAU,iBAAA,CAAA,CAAA;aACzE,MAAA;gBACL,MAAMP,GAAAA;AACR;AACF;AACF,KAAA;AAEA,IAAA,qBACErE,eAAC6E,CAAAA,MAAAA,EAAAA;QAAKC,QAAU3B,EAAAA,YAAAA;;0BACdzD,cAAC6B,CAAAA,gBAAAA,EAAAA;gBAAIc,WAAa,EAAA,CAAA;gBAAGC,YAAc,EAAA,CAAA;gBAAGyC,UAAY,EAAA,CAAA;gBAAGC,aAAe,EAAA,CAAA;wCAClEhF,eAAA,CAACiF,mBAAMrF,IAAI,EAAA;oBAACkD,KAAOA,EAAAA,KAAAA;oBAAOpC,IAAK,EAAA,UAAA;;AAC7B,sCAAAhB,cAAA,CAACuF,mBAAMC,KAAK,EAAA;sCACT5F,aAAc,CAAA;gCACb2B,EAAI,EAAA,sEAAA;gCACJC,cAAgB,EAAA;AAClB,6BAAA;;sCAEFxB,cAACyF,CAAAA,sBAAAA,EAAAA;4BAAUlB,IAAK,EAAA,KAAA;4BAAMmB,QAAUpC,EAAAA,YAAAA;4BAAcP,KAAOG,EAAAA;;AACrD,sCAAAlD,cAAA,CAACuF,mBAAMI,KAAK,EAAA,EAAA;;;;AAGhB,0BAAArF,eAAA,CAACL,mBAAM2F,MAAM,EAAA;;kCACX5F,cAAC6F,CAAAA,mBAAAA,EAAAA;wBAAOvE,OAASd,EAAAA,OAAAA;wBAASiC,OAAQ,EAAA,UAAA;kCAC/B7C,aAAc,CAAA;4BAAE2B,EAAI,EAAA,8BAAA;4BAAgCC,cAAgB,EAAA;AAAS,yBAAA;;kCAEhFxB,cAAC6F,CAAAA,mBAAAA,EAAAA;wBAAOtB,IAAK,EAAA,QAAA;kCACV3E,aAAc,CAAA;4BACb2B,EAAI,EAAA,sDAAA;4BACJC,cAAgB,EAAA;AAClB,yBAAA;;;;;;AAKV,CAAA;AAEA;;AAEkG,qGAElG,MAAMwB,YAAe,GAAA,IAAA;IACnB,MAAM,EAAEpD,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAM,CAACiG,QAAUC,EAAAA,WAAAA,CAAY,GAAGvG,gBAAAA,CAAMC,QAAQ,CAAC,KAAA,CAAA;AAC/C,IAAA,MAAM,CAACuG,SAAAA,EAAWC,YAAa,CAAA,GAAGzG,iBAAMC,QAAQ,EAAA;IAChD,MAAMyG,QAAAA,GAAW1G,gBAAM2G,CAAAA,MAAM,CAAmB,IAAA,CAAA;IAChD,MAAM5E,EAAAA,GAAK/B,iBAAM4G,KAAK,EAAA;IAEtB,MAAM,EAAE7G,aAAa,EAAEgB,QAAQ,EAAEC,OAAO,EAAE,GAAG3B,mBAAoB,CAAA,cAAA,CAAA;AAEjE,IAAA,MAAMwH,eAAkB,GAAA,IAAA;QACtBN,WAAY,CAAA,IAAA,CAAA;AACd,KAAA;AACA,IAAA,MAAMO,eAAkB,GAAA,IAAA;QACtBP,WAAY,CAAA,KAAA,CAAA;AACd,KAAA;AAEA,IAAA,MAAMQ,cAAsC,CAAChD,CAAAA,GAAAA;AAC3CA,QAAAA,CAAAA,CAAEI,cAAc,EAAA;QAChBuC,QAASM,CAAAA,OAAO,CAACC,KAAK,EAAA;AACxB,KAAA;AAEA,IAAA,MAAMnD,YAAe,GAAA,UAAA;AACnBgD,QAAAA,eAAAA,EAAAA;AAEA,QAAA,IAAI,CAACJ,QAAAA,CAASM,OAAO,CAACE,KAAK,EAAE;AAC3B,YAAA;AACF;AAEA,QAAA,MAAM,CAACtC,IAAK,CAAA,GAAG8B,QAASM,CAAAA,OAAO,CAACE,KAAK;QAErC,IAAI;YACF,MAAMjC,KAAAA,GAAQ,MAAMC,wBAAmBN,CAAAA,IAAAA,CAAAA;YACvC7E,aAAckF,CAAAA,KAAAA,CAAAA;YACdlE,QAAS,CAAA,SAAA,CAAA;AACX,SAAA,CAAE,OAAOoE,GAAK,EAAA;AACZ,YAAA,IAAIA,eAAeE,sBAAkB,EAAA;gBACnCoB,YAAarG,CAAAA,aAAAA,CAAc+E,GAAIG,CAAAA,cAAc,EAAE;oBAAEC,IAAMC,EAAAA,cAAAA;oBAAMC,SAAWC,EAAAA;AAAU,iBAAA,CAAA,CAAA;gBAClFgB,QAASM,CAAAA,OAAO,CAACG,KAAK,EAAA;aACjB,MAAA;gBACL,MAAMhC,GAAAA;AACR;AACF;AACF,KAAA;IAEA,qBACErE,eAAA,CAAAsG,mBAAA,EAAA;;0BACE5G,cAACmF,CAAAA,MAAAA,EAAAA;AACC,gBAAA,QAAA,gBAAAnF,cAAC6B,CAAAA,gBAAAA,EAAAA;oBAAIc,WAAa,EAAA,CAAA;oBAAGC,YAAc,EAAA,CAAA;oBAAGyC,UAAY,EAAA,CAAA;oBAAGC,aAAe,EAAA,CAAA;4CAClEtF,cAAA,CAACuF,mBAAMrF,IAAI,EAAA;wBAACc,IAAMO,EAAAA,EAAAA;wBAAI6B,KAAO4C,EAAAA,SAAAA;AAC3B,wBAAA,QAAA,gBAAA1F,eAACuG,CAAAA,iBAAAA,EAAAA;4BAAKC,SAAU,EAAA,QAAA;4BAASC,UAAW,EAAA,SAAA;4BAAUC,GAAK,EAAA,CAAA;;8CACjD1G,eAACuG,CAAAA,iBAAAA,EAAAA;oCACCxB,UAAY,EAAA,CAAA;oCACZC,aAAe,EAAA,CAAA;oCACf2B,SAAS,EAAA,IAAA;oCACTC,cAAe,EAAA,QAAA;oCACfJ,SAAU,EAAA,QAAA;AACVK,oCAAAA,UAAAA,EAAYrB,WAAW,YAAe,GAAA,YAAA;oCACtCsB,WAAatB,EAAAA,QAAAA,GAAW,YAAeE,GAAAA,SAAAA,GAAY,WAAc,GAAA,YAAA;oCACjEqB,WAAY,EAAA,QAAA;oCACZC,WAAY,EAAA,KAAA;oCACZC,QAAS,EAAA,UAAA;oCACTC,WAAanB,EAAAA,eAAAA;oCACboB,WAAanB,EAAAA,eAAAA;;sDAEbtG,cAAC0H,CAAAA,gBAAAA,EAAAA;4CAAWC,IAAK,EAAA,YAAA;4CAAaC,KAAM,EAAA,MAAA;4CAAOC,MAAO,EAAA,MAAA;4CAAOC,aAAW,EAAA;;sDACpE9H,cAAC6B,CAAAA,gBAAAA,EAAAA;4CAAIwD,UAAY,EAAA,CAAA;4CAAGC,aAAe,EAAA,CAAA;AACjC,4CAAA,QAAA,gBAAAtF,cAAC+H,CAAAA,uBAAAA,EAAAA;gDAAWtF,OAAQ,EAAA,OAAA;gDAAQT,GAAI,EAAA,OAAA;gDAAQgG,OAASzG,EAAAA,EAAAA;0DAC9C3B,aAAc,CAAA;oDACb2B,EAAI,EAAA,2DAAA;oDACJC,cAAgB,EAAA;AAClB,iDAAA;;;sDAGJxB,cAAC6B,CAAAA,gBAAAA,EAAAA;4CAAI0F,QAAS,EAAA,UAAA;AACZ,4CAAA,QAAA,gBAAAvH,cAACiI,CAAAA,SAAAA,EAAAA;gDACCC,MAAQC,EAAAA,yBAAAA,CAAgBC,IAAI,CAAC,IAAA,CAAA;gDAC7B7D,IAAK,EAAA,MAAA;gDACLvD,IAAK,EAAA,OAAA;AACLqH,gDAAAA,QAAAA,EAAU,CAAC,CAAA;gDACX3C,QAAUpC,EAAAA,YAAAA;gDACVgF,GAAKpC,EAAAA,QAAAA;gDACL3E,EAAIA,EAAAA;;;sDAGRvB,cAAC6F,CAAAA,mBAAAA,EAAAA;4CAAOtB,IAAK,EAAA,QAAA;4CAASjD,OAASiF,EAAAA,WAAAA;sDAC5B3G,aAAc,CAAA;gDACb2B,EAAI,EAAA,4DAAA;gDACJC,cAAgB,EAAA;AAClB,6CAAA;;sDAEFxB,cAAC6B,CAAAA,gBAAAA,EAAAA;4CAAIwD,UAAY,EAAA,CAAA;AACf,4CAAA,QAAA,gBAAArF,cAAC+H,CAAAA,uBAAAA,EAAAA;gDAAWtF,OAAQ,EAAA,IAAA;gDAAK8F,SAAU,EAAA,YAAA;0DAChC3I,aACC,CAAA;oDACE2B,EAAI,EAAA,iEAAA;oDACJC,cACE,EAAA;iDAEJ,EAAA;oDAAEuD,IAAMC,EAAAA,cAAAA;oDAAMC,SAAWC,EAAAA;AAAU,iDAAA;;;;;AAK3C,8CAAAlF,cAAA,CAACuF,mBAAMI,KAAK,EAAA,EAAA;;;;;;AAKpB,0BAAA3F,cAAA,CAACC,mBAAM2F,MAAM,EAAA;AACX,gBAAA,QAAA,gBAAA5F,cAAC6F,CAAAA,mBAAAA,EAAAA;oBAAOvE,OAASd,EAAAA,OAAAA;oBAASiC,OAAQ,EAAA,UAAA;8BAC/B7C,aAAc,CAAA;wBAAE2B,EAAI,EAAA,8BAAA;wBAAgCC,cAAgB,EAAA;AAAS,qBAAA;;;;;AAKxF,CAAA;AAEA,MAAMyG,SAAYO,GAAAA,aAAAA,CAAOjD,kBAAMkD,CAAAA,KAAK,CAAC;;;;;;;;AAQrC,CAAC;AAUD,MAAMlG,iBAAoB,GAAA,CAAC,EAAElD,YAAY,EAA0B,GAAA;IACjE,MAAM,EAAEO,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAC1B,MAAM,EAAEP,UAAU,EAAEC,aAAa,EAAEgB,QAAQ,EAAEC,OAAO,EAAE,GAAG3B,mBAAoB,CAAA,mBAAA,CAAA;AAE7E,IAAA,MAAM6J,YAAe,GAAA,IAAA;QACnBnJ,aAAcQ,CAAAA,SAAAA,CAAAA;QACdQ,QAAS,CAAA,QAAA,CAAA;AACX,KAAA;AAEA,IAAA,MAAMoI,YAAe,GAAA,IAAA;AACnB,QAAA,IAAIrJ,UAAY,EAAA;YACdD,YAAaC,CAAAA,UAAAA,CAAAA;AACf;AACAkB,QAAAA,OAAAA,EAAAA;AACF,KAAA;IAEA,qBACEF,eAAA,CAAAsG,mBAAA,EAAA;;AACE,0BAAA5G,cAAA,CAACC,mBAAM2I,IAAI,EAAA;AACT,gBAAA,QAAA,gBAAAtI,eAACuB,CAAAA,gBAAAA,EAAAA;oBAAIc,WAAa,EAAA,CAAA;oBAAGC,YAAc,EAAA,CAAA;oBAAGyC,UAAY,EAAA,CAAA;oBAAGC,aAAe,EAAA,CAAA;;sCAClEhF,eAACuG,CAAAA,iBAAAA,EAAAA;4BAAKK,cAAe,EAAA,eAAA;4BAAgB5B,aAAe,EAAA,CAAA;;8CAClDhF,eAACuG,CAAAA,iBAAAA,EAAAA;oCAAKC,SAAU,EAAA,QAAA;oCAASC,UAAW,EAAA,YAAA;;sDAClC/G,cAAC+H,CAAAA,uBAAAA,EAAAA;4CAAWtF,OAAQ,EAAA,IAAA;4CAAKoG,UAAW,EAAA,MAAA;sDACjCjJ,aAAc,CAAA;gDACb2B,EAAI,EAAA,wDAAA;gDACJC,cAAgB,EAAA;AAClB,6CAAA;;sDAEFxB,cAAC+H,CAAAA,uBAAAA,EAAAA;4CAAWtF,OAAQ,EAAA,IAAA;4CAAK8F,SAAU,EAAA,YAAA;sDAChC3I,aAAc,CAAA;gDACb2B,EAAI,EAAA,2DAAA;gDACJC,cAAgB,EAAA;AAClB,6CAAA;;;;8CAGJxB,cAAC6F,CAAAA,mBAAAA,EAAAA;oCAAOvE,OAASoH,EAAAA,YAAAA;oCAAcjG,OAAQ,EAAA,WAAA;8CACpC7C,aAAc,CAAA;wCACb2B,EAAI,EAAA,iEAAA;wCACJC,cAAgB,EAAA;AAClB,qCAAA;;;;sCAGJxB,cAAC6B,CAAAA,gBAAAA,EAAAA;4BAAIE,QAAU,EAAA,CAAC,KAAK,CAAC;AACnBzC,4BAAAA,QAAAA,EAAAA,UAAAA,EAAYoC,oBAAM1B,cAAC8I,CAAAA,cAAAA,EAAAA;gCAAerE,KAAOnF,EAAAA;AAAiB,6BAAA,CAAA,GAAA;;;;;AAIjE,0BAAAgB,eAAA,CAACL,mBAAM2F,MAAM,EAAA;;AACX,kCAAA5F,cAAA,CAACC,mBAAM8I,KAAK,EAAA;AACV,wBAAA,QAAA,gBAAA/I,cAAC6F,CAAAA,mBAAAA,EAAAA;4BAAOvE,OAASd,EAAAA,OAAAA;4BAASiC,OAAQ,EAAA,UAAA;sCAC/B7C,aAAc,CAAA;gCACb2B,EAAI,EAAA,iDAAA;gCACJC,cAAgB,EAAA;AAClB,6BAAA;;;kCAGJxB,cAAC6F,CAAAA,mBAAAA,EAAAA;wBAAOvE,OAASqH,EAAAA,YAAAA;kCACd/I,aAAc,CAAA;4BACb2B,EAAI,EAAA,yDAAA;4BACJC,cAAgB,EAAA;AAClB,yBAAA;;;;;;AAKV,CAAA;AAUA,MAAMsH,cAAiB,GAAA,CAAC,EAAErE,KAAK,EAAuB,GAAA;IACpD,MAAM,EAAE7E,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAE1B,IAAA,qBACES,eAAC0I,CAAAA,iBAAAA,EAAAA;;0BACChJ,cAACiJ,CAAAA,uBAAAA,EAAAA;AACC,gBAAA,QAAA,gBAAAjJ,cAACkJ,CAAAA,sBAAAA,EAAAA;oBAAUnE,IAAK,EAAA,GAAA;AAAI9C,oBAAAA,GAAAA,EAAKwC,MAAM/C;;;0BAEjCpB,eAAC6I,CAAAA,qBAAAA,EAAAA;;kCACC7I,eAAC8I,CAAAA,wBAAAA,EAAAA;;0CACCpJ,cAACqJ,CAAAA,sBAAAA,EAAAA;AAAW5E,gCAAAA,QAAAA,EAAAA,KAAAA,CAAMzD;;0CAClBhB,cAACsJ,CAAAA,yBAAAA,EAAAA;AACE,gCAAA,QAAA,EAAA,CAAA,EAAG7E,KAAM8E,CAAAA,GAAG,EAAEC,WAAAA,EAAAA,CAAc,GAAG,EAAE/E,KAAMmD,CAAAA,KAAK,CAAC,CAAC,EAAEnD,KAAAA,CAAMoD,MAAM,CAAE;;;;kCAGnE7H,cAACyJ,CAAAA,sBAAAA,EAAAA;kCACE7J,aAAc,CAAA;4BACb2B,EAAI,EAAA,6DAAA;4BACJC,cAAgB,EAAA;AAClB,yBAAA;;;;;;AAKV,CAAA;;;;"}
|
package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LogoInput.mjs","sources":["../../../../../../../../../admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { createContext } from '@radix-ui/react-context';\nimport {\n Box,\n Button,\n ButtonProps,\n Card,\n CardAsset,\n CardBadge,\n CardBody,\n CardContent,\n CardHeader,\n CardSubtitle,\n CardTitle,\n CarouselActions,\n CarouselInput,\n CarouselInputProps,\n CarouselSlide,\n Field,\n Flex,\n IconButton,\n Modal,\n Tabs,\n TextInput,\n TextInputProps,\n Typography,\n} from '@strapi/design-system';\nimport { PlusCircle, Plus, ArrowClockwise } from '@strapi/icons';\nimport axios, { AxiosError } from 'axios';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { ConfigurationContextValue } from '../../../../../features/Configuration';\nimport { ACCEPTED_FORMAT, DIMENSION, SIZE } from '../utils/constants';\nimport { ImageAsset, ParsingFileError, parseFileMetadatas } from '../utils/files';\n\n/* -------------------------------------------------------------------------------------------------\n * LogoInputContext\n * -----------------------------------------------------------------------------------------------*/\n\ninterface LogoInputContextValue {\n localImage: ImageAsset | undefined;\n goToStep: (step: Step) => void;\n onClose: () => void;\n setLocalImage: (asset: ImageAsset | undefined) => void;\n}\n\nconst [LogoInputContextProvider, useLogoInputContext] =\n createContext<LogoInputContextValue>('LogoInput');\n\n/* -------------------------------------------------------------------------------------------------\n * LogoInput\n * -----------------------------------------------------------------------------------------------*/\n\ninterface LogoInputProps\n extends Pick<PendingLogoDialogProps, 'onChangeLogo'>,\n Pick<CarouselInputProps, 'label' | 'hint'> {\n canUpdate: boolean;\n customLogo?: ConfigurationContextValue['logos']['auth']['custom'];\n defaultLogo: string;\n}\n\ntype Step = 'pending' | 'upload' | undefined;\n\nconst LogoInput = ({\n canUpdate,\n customLogo,\n defaultLogo,\n hint,\n label,\n onChangeLogo,\n}: LogoInputProps) => {\n const [localImage, setLocalImage] = React.useState<ImageAsset | undefined>();\n const [currentStep, setCurrentStep] = React.useState<Step>();\n const { formatMessage } = useIntl();\n\n const handleClose = () => {\n setLocalImage(undefined);\n setCurrentStep(undefined);\n };\n\n return (\n <Modal.Root\n open={!!currentStep}\n onOpenChange={(state) => {\n if (state === false) {\n handleClose();\n }\n }}\n >\n <LogoInputContextProvider\n setLocalImage={setLocalImage}\n localImage={localImage}\n goToStep={setCurrentStep}\n onClose={handleClose}\n >\n <CarouselInput\n label={label}\n selectedSlide={0}\n hint={hint}\n // Carousel is used here for a single media,\n // we don't need previous and next labels but these props are required\n previousLabel=\"\"\n nextLabel=\"\"\n onNext={() => {}}\n onPrevious={() => {}}\n secondaryLabel={customLogo?.name || 'logo.png'}\n actions={\n <CarouselActions>\n <Modal.Trigger>\n <IconButton\n disabled={!canUpdate}\n onClick={() => setCurrentStep('upload')}\n label={formatMessage({\n id: 'Settings.application.customization.carousel.change-action',\n defaultMessage: 'Change logo',\n })}\n >\n <Plus />\n </IconButton>\n </Modal.Trigger>\n {customLogo?.url && (\n <IconButton\n disabled={!canUpdate}\n onClick={() => onChangeLogo(null)}\n label={formatMessage({\n id: 'Settings.application.customization.carousel.reset-action',\n defaultMessage: 'Reset logo',\n })}\n >\n <ArrowClockwise />\n </IconButton>\n )}\n </CarouselActions>\n }\n >\n <CarouselSlide\n label={formatMessage({\n id: 'Settings.application.customization.carousel-slide.label',\n defaultMessage: 'Logo slide',\n })}\n >\n <Box\n maxHeight=\"40%\"\n maxWidth=\"40%\"\n tag=\"img\"\n src={customLogo?.url || defaultLogo}\n alt={formatMessage({\n id: 'Settings.application.customization.carousel.title',\n defaultMessage: 'Logo',\n })}\n />\n </CarouselSlide>\n </CarouselInput>\n <Modal.Content>\n <Modal.Header>\n <Modal.Title>\n {formatMessage(\n currentStep === 'upload'\n ? {\n id: 'Settings.application.customization.modal.upload',\n defaultMessage: 'Upload logo',\n }\n : {\n id: 'Settings.application.customization.modal.pending',\n defaultMessage: 'Pending logo',\n }\n )}\n </Modal.Title>\n </Modal.Header>\n {currentStep === 'upload' ? (\n <AddLogoDialog />\n ) : (\n <PendingLogoDialog onChangeLogo={onChangeLogo} />\n )}\n </Modal.Content>\n </LogoInputContextProvider>\n </Modal.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * AddLogoDialog\n * -----------------------------------------------------------------------------------------------*/\n\nconst AddLogoDialog = () => {\n const { formatMessage } = useIntl();\n\n return (\n <Tabs.Root variant=\"simple\" defaultValue=\"computer\">\n <Box paddingLeft={8} paddingRight={8}>\n <Tabs.List\n aria-label={formatMessage({\n id: 'Settings.application.customization.modal.tab.label',\n defaultMessage: 'How do you want to upload your assets?',\n })}\n >\n <Tabs.Trigger value=\"computer\">\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.from-computer',\n defaultMessage: 'From computer',\n })}\n </Tabs.Trigger>\n <Tabs.Trigger value=\"url\">\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.from-url',\n defaultMessage: 'From url',\n })}\n </Tabs.Trigger>\n </Tabs.List>\n </Box>\n <Tabs.Content value=\"computer\">\n <ComputerForm />\n </Tabs.Content>\n <Tabs.Content value=\"url\">\n <URLForm />\n </Tabs.Content>\n </Tabs.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * URLForm\n * -----------------------------------------------------------------------------------------------*/\n\nconst URLForm = () => {\n const { formatMessage } = useIntl();\n const [logoUrl, setLogoUrl] = React.useState('');\n const [error, setError] = React.useState<string>();\n const { setLocalImage, goToStep, onClose } = useLogoInputContext('URLForm');\n\n const handleChange: TextInputProps['onChange'] = (e) => {\n setLogoUrl(e.target.value);\n };\n\n const handleSubmit: React.FormEventHandler<HTMLFormElement> = async (event) => {\n event.preventDefault();\n\n const data = new FormData(event.target as HTMLFormElement);\n\n const url = data.get('logo-url');\n\n if (!url) {\n return;\n }\n\n try {\n const res = await axios.get(url.toString(), { responseType: 'blob', timeout: 8000 });\n\n const file = new File([res.data], res.config.url ?? '', {\n type: res.headers['content-type'],\n });\n\n const asset = await parseFileMetadatas(file);\n\n setLocalImage(asset);\n goToStep('pending');\n } catch (err) {\n if (err instanceof AxiosError) {\n setError(\n formatMessage({\n id: 'Settings.application.customization.modal.upload.error-network',\n defaultMessage: 'Network error',\n })\n );\n } else if (err instanceof ParsingFileError) {\n setError(formatMessage(err.displayMessage, { size: SIZE, dimension: DIMENSION }));\n } else {\n throw err;\n }\n }\n };\n\n return (\n <form onSubmit={handleSubmit}>\n <Box paddingLeft={8} paddingRight={8} paddingTop={6} paddingBottom={6}>\n <Field.Root error={error} name=\"logo-url\">\n <Field.Label>\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.from-url.input-label',\n defaultMessage: 'URL',\n })}\n </Field.Label>\n <TextInput type=\"url\" onChange={handleChange} value={logoUrl} />\n <Field.Error />\n </Field.Root>\n </Box>\n <Modal.Footer>\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({ id: 'app.components.Button.cancel', defaultMessage: 'Cancel' })}\n </Button>\n <Button type=\"submit\">\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.next',\n defaultMessage: 'Next',\n })}\n </Button>\n </Modal.Footer>\n </form>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ComputerForm\n * -----------------------------------------------------------------------------------------------*/\n\nconst ComputerForm = () => {\n const { formatMessage } = useIntl();\n const [dragOver, setDragOver] = React.useState(false);\n const [fileError, setFileError] = React.useState<string>();\n const inputRef = React.useRef<HTMLInputElement>(null!);\n const id = React.useId();\n\n const { setLocalImage, goToStep, onClose } = useLogoInputContext('ComputerForm');\n\n const handleDragEnter = () => {\n setDragOver(true);\n };\n const handleDragLeave = () => {\n setDragOver(false);\n };\n\n const handleClick: ButtonProps['onClick'] = (e) => {\n e.preventDefault();\n inputRef.current.click();\n };\n\n const handleChange = async () => {\n handleDragLeave();\n\n if (!inputRef.current.files) {\n return;\n }\n\n const [file] = inputRef.current.files;\n\n try {\n const asset = await parseFileMetadatas(file);\n setLocalImage(asset);\n goToStep('pending');\n } catch (err) {\n if (err instanceof ParsingFileError) {\n setFileError(formatMessage(err.displayMessage, { size: SIZE, dimension: DIMENSION }));\n inputRef.current.focus();\n } else {\n throw err;\n }\n }\n };\n\n return (\n <>\n <form>\n <Box paddingLeft={8} paddingRight={8} paddingTop={6} paddingBottom={6}>\n <Field.Root name={id} error={fileError}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Flex\n paddingTop={9}\n paddingBottom={7}\n hasRadius\n justifyContent=\"center\"\n direction=\"column\"\n background={dragOver ? 'primary100' : 'neutral100'}\n borderColor={dragOver ? 'primary500' : fileError ? 'danger600' : 'neutral300'}\n borderStyle=\"dashed\"\n borderWidth=\"1px\"\n position=\"relative\"\n onDragEnter={handleDragEnter}\n onDragLeave={handleDragLeave}\n >\n <PlusCircle fill=\"primary600\" width=\"6rem\" height=\"6rem\" aria-hidden />\n <Box paddingTop={3} paddingBottom={5}>\n <Typography variant=\"delta\" tag=\"label\" htmlFor={id}>\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.drag-drop',\n defaultMessage: 'Drag and Drop here or',\n })}\n </Typography>\n </Box>\n <Box position=\"relative\">\n <FileInput\n accept={ACCEPTED_FORMAT.join(', ')}\n type=\"file\"\n name=\"files\"\n tabIndex={-1}\n onChange={handleChange}\n ref={inputRef}\n id={id}\n />\n </Box>\n <Button type=\"button\" onClick={handleClick}>\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.cta.browse',\n defaultMessage: 'Browse files',\n })}\n </Button>\n <Box paddingTop={6}>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage(\n {\n id: 'Settings.application.customization.modal.upload.file-validation',\n defaultMessage:\n 'Max dimension: {dimension}x{dimension}, Max size: {size}KB',\n },\n { size: SIZE, dimension: DIMENSION }\n )}\n </Typography>\n </Box>\n </Flex>\n <Field.Error />\n </Flex>\n </Field.Root>\n </Box>\n </form>\n <Modal.Footer>\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({ id: 'app.components.Button.cancel', defaultMessage: 'Cancel' })}\n </Button>\n </Modal.Footer>\n </>\n );\n};\n\nconst FileInput = styled(Field.Input)`\n opacity: 0;\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 1;\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * PendingLogoDialog\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PendingLogoDialogProps {\n onChangeLogo: (file: ImageAsset | null) => void;\n}\n\nconst PendingLogoDialog = ({ onChangeLogo }: PendingLogoDialogProps) => {\n const { formatMessage } = useIntl();\n const { localImage, setLocalImage, goToStep, onClose } = useLogoInputContext('PendingLogoDialog');\n\n const handleGoBack = () => {\n setLocalImage(undefined);\n goToStep('upload');\n };\n\n const handleUpload = () => {\n if (localImage) {\n onChangeLogo(localImage);\n }\n onClose();\n };\n\n return (\n <>\n <Modal.Body>\n <Box paddingLeft={8} paddingRight={8} paddingTop={6} paddingBottom={6}>\n <Flex justifyContent=\"space-between\" paddingBottom={6}>\n <Flex direction=\"column\" alignItems=\"flex-start\">\n <Typography variant=\"pi\" fontWeight=\"bold\">\n {formatMessage({\n id: 'Settings.application.customization.modal.pending.title',\n defaultMessage: 'Logo ready to upload',\n })}\n </Typography>\n <Typography variant=\"pi\" textColor=\"neutral500\">\n {formatMessage({\n id: 'Settings.application.customization.modal.pending.subtitle',\n defaultMessage: 'Manage the chosen logo before uploading it',\n })}\n </Typography>\n </Flex>\n <Button onClick={handleGoBack} variant=\"secondary\">\n {formatMessage({\n id: 'Settings.application.customization.modal.pending.choose-another',\n defaultMessage: 'Choose another logo',\n })}\n </Button>\n </Flex>\n <Box maxWidth={`18rem`}>\n {localImage?.url ? <ImageCardAsset asset={localImage} /> : null}\n </Box>\n </Box>\n </Modal.Body>\n <Modal.Footer>\n <Modal.Close>\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({\n id: 'Settings.application.customization.modal.cancel',\n defaultMessage: 'Cancel',\n })}\n </Button>\n </Modal.Close>\n <Button onClick={handleUpload}>\n {formatMessage({\n id: 'Settings.application.customization.modal.pending.upload',\n defaultMessage: 'Upload logo',\n })}\n </Button>\n </Modal.Footer>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ImageCardAsset\n * -----------------------------------------------------------------------------------------------*/\n\ninterface ImageCardAssetProps {\n asset: ImageAsset;\n}\n\nconst ImageCardAsset = ({ asset }: ImageCardAssetProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Card>\n <CardHeader>\n <CardAsset size=\"S\" src={asset.url} />\n </CardHeader>\n <CardBody>\n <CardContent>\n <CardTitle>{asset.name}</CardTitle>\n <CardSubtitle>\n {`${asset.ext?.toUpperCase()} - ${asset.width}✕${asset.height}`}\n </CardSubtitle>\n </CardContent>\n <CardBadge>\n {formatMessage({\n id: 'Settings.application.customization.modal.pending.card-badge',\n defaultMessage: 'image',\n })}\n </CardBadge>\n </CardBody>\n </Card>\n );\n};\n\nexport { LogoInput };\nexport type { LogoInputProps };\n"],"names":["LogoInputContextProvider","useLogoInputContext","createContext","LogoInput","canUpdate","customLogo","defaultLogo","hint","label","onChangeLogo","localImage","setLocalImage","React","useState","currentStep","setCurrentStep","formatMessage","useIntl","handleClose","undefined","_jsx","Modal","Root","open","onOpenChange","state","_jsxs","goToStep","onClose","CarouselInput","selectedSlide","previousLabel","nextLabel","onNext","onPrevious","secondaryLabel","name","actions","CarouselActions","Trigger","IconButton","disabled","onClick","id","defaultMessage","Plus","url","ArrowClockwise","CarouselSlide","Box","maxHeight","maxWidth","tag","src","alt","Content","Header","Title","AddLogoDialog","PendingLogoDialog","Tabs","variant","defaultValue","paddingLeft","paddingRight","List","aria-label","value","ComputerForm","URLForm","logoUrl","setLogoUrl","error","setError","handleChange","e","target","handleSubmit","event","preventDefault","data","FormData","get","res","axios","toString","responseType","timeout","file","File","config","type","headers","asset","parseFileMetadatas","err","AxiosError","ParsingFileError","displayMessage","size","SIZE","dimension","DIMENSION","form","onSubmit","paddingTop","paddingBottom","Field","Label","TextInput","onChange","Error","Footer","Button","dragOver","setDragOver","fileError","setFileError","inputRef","useRef","useId","handleDragEnter","handleDragLeave","handleClick","current","click","files","focus","_Fragment","Flex","direction","alignItems","gap","hasRadius","justifyContent","background","borderColor","borderStyle","borderWidth","position","onDragEnter","onDragLeave","PlusCircle","fill","width","height","aria-hidden","Typography","htmlFor","FileInput","accept","ACCEPTED_FORMAT","join","tabIndex","ref","textColor","styled","Input","handleGoBack","handleUpload","Body","fontWeight","ImageCardAsset","Close","Card","CardHeader","CardAsset","CardBody","CardContent","CardTitle","CardSubtitle","ext","toUpperCase","CardBadge"],"mappings":";;;;;;;;;;;AAgDA,MAAM,CAACA,wBAAAA,EAA0BC,mBAAoB,CAAA,GACnDC,aAAqC,CAAA,WAAA,CAAA;AAgBvC,MAAMC,SAAY,GAAA,CAAC,EACjBC,SAAS,EACTC,UAAU,EACVC,WAAW,EACXC,IAAI,EACJC,KAAK,EACLC,YAAY,EACG,GAAA;AACf,IAAA,MAAM,CAACC,UAAAA,EAAYC,aAAc,CAAA,GAAGC,MAAMC,QAAQ,EAAA;AAClD,IAAA,MAAM,CAACC,WAAAA,EAAaC,cAAe,CAAA,GAAGH,MAAMC,QAAQ,EAAA;IACpD,MAAM,EAAEG,aAAa,EAAE,GAAGC,OAAAA,EAAAA;AAE1B,IAAA,MAAMC,WAAc,GAAA,IAAA;QAClBP,aAAcQ,CAAAA,SAAAA,CAAAA;QACdJ,cAAeI,CAAAA,SAAAA,CAAAA;AACjB,KAAA;IAEA,qBACEC,GAAA,CAACC,MAAMC,IAAI,EAAA;AACTC,QAAAA,IAAAA,EAAM,CAAC,CAACT,WAAAA;AACRU,QAAAA,YAAAA,EAAc,CAACC,KAAAA,GAAAA;AACb,YAAA,IAAIA,UAAU,KAAO,EAAA;AACnBP,gBAAAA,WAAAA,EAAAA;AACF;AACF,SAAA;AAEA,QAAA,QAAA,gBAAAQ,IAAC1B,CAAAA,wBAAAA,EAAAA;YACCW,aAAeA,EAAAA,aAAAA;YACfD,UAAYA,EAAAA,UAAAA;YACZiB,QAAUZ,EAAAA,cAAAA;YACVa,OAASV,EAAAA,WAAAA;;8BAETE,GAACS,CAAAA,aAAAA,EAAAA;oBACCrB,KAAOA,EAAAA,KAAAA;oBACPsB,aAAe,EAAA,CAAA;oBACfvB,IAAMA,EAAAA,IAAAA;;;oBAGNwB,aAAc,EAAA,EAAA;oBACdC,SAAU,EAAA,EAAA;AACVC,oBAAAA,MAAAA,EAAQ,IAAO,EAAA;AACfC,oBAAAA,UAAAA,EAAY,IAAO,EAAA;AACnBC,oBAAAA,cAAAA,EAAgB9B,YAAY+B,IAAQ,IAAA,UAAA;AACpCC,oBAAAA,OAAAA,gBACEX,IAACY,CAAAA,eAAAA,EAAAA;;AACC,0CAAAlB,GAAA,CAACC,MAAMkB,OAAO,EAAA;AACZ,gCAAA,QAAA,gBAAAnB,GAACoB,CAAAA,UAAAA,EAAAA;AACCC,oCAAAA,QAAAA,EAAU,CAACrC,SAAAA;AACXsC,oCAAAA,OAAAA,EAAS,IAAM3B,cAAe,CAAA,QAAA,CAAA;AAC9BP,oCAAAA,KAAAA,EAAOQ,aAAc,CAAA;wCACnB2B,EAAI,EAAA,2DAAA;wCACJC,cAAgB,EAAA;AAClB,qCAAA,CAAA;AAEA,oCAAA,QAAA,gBAAAxB,GAACyB,CAAAA,IAAAA,EAAAA,EAAAA;;;AAGJxC,4BAAAA,UAAAA,EAAYyC,qBACX1B,GAACoB,CAAAA,UAAAA,EAAAA;AACCC,gCAAAA,QAAAA,EAAU,CAACrC,SAAAA;AACXsC,gCAAAA,OAAAA,EAAS,IAAMjC,YAAa,CAAA,IAAA,CAAA;AAC5BD,gCAAAA,KAAAA,EAAOQ,aAAc,CAAA;oCACnB2B,EAAI,EAAA,0DAAA;oCACJC,cAAgB,EAAA;AAClB,iCAAA,CAAA;AAEA,gCAAA,QAAA,gBAAAxB,GAAC2B,CAAAA,cAAAA,EAAAA,EAAAA;;;;AAMT,oBAAA,QAAA,gBAAA3B,GAAC4B,CAAAA,aAAAA,EAAAA;AACCxC,wBAAAA,KAAAA,EAAOQ,aAAc,CAAA;4BACnB2B,EAAI,EAAA,yDAAA;4BACJC,cAAgB,EAAA;AAClB,yBAAA,CAAA;AAEA,wBAAA,QAAA,gBAAAxB,GAAC6B,CAAAA,GAAAA,EAAAA;4BACCC,SAAU,EAAA,KAAA;4BACVC,QAAS,EAAA,KAAA;4BACTC,GAAI,EAAA,KAAA;AACJC,4BAAAA,GAAAA,EAAKhD,YAAYyC,GAAOxC,IAAAA,WAAAA;AACxBgD,4BAAAA,GAAAA,EAAKtC,aAAc,CAAA;gCACjB2B,EAAI,EAAA,mDAAA;gCACJC,cAAgB,EAAA;AAClB,6BAAA;;;;AAIN,8BAAAlB,IAAA,CAACL,MAAMkC,OAAO,EAAA;;AACZ,sCAAAnC,GAAA,CAACC,MAAMmC,MAAM,EAAA;oDACXpC,GAAA,CAACC,MAAMoC,KAAK,EAAA;AACTzC,gCAAAA,QAAAA,EAAAA,aAAAA,CACCF,gBAAgB,QACZ,GAAA;oCACE6B,EAAI,EAAA,iDAAA;oCACJC,cAAgB,EAAA;iCAElB,GAAA;oCACED,EAAI,EAAA,kDAAA;oCACJC,cAAgB,EAAA;AAClB,iCAAA;;;wBAIT9B,WAAgB,KAAA,QAAA,iBACfM,GAACsC,CAAAA,aAAAA,EAAAA,EAAAA,CAAAA,iBAEDtC,GAACuC,CAAAA,iBAAAA,EAAAA;4BAAkBlD,YAAcA,EAAAA;;;;;;;AAM7C;AAEA;;AAEkG,qGAElG,MAAMiD,aAAgB,GAAA,IAAA;IACpB,MAAM,EAAE1C,aAAa,EAAE,GAAGC,OAAAA,EAAAA;IAE1B,qBACES,IAAA,CAACkC,KAAKtC,IAAI,EAAA;QAACuC,OAAQ,EAAA,QAAA;QAASC,YAAa,EAAA,UAAA;;0BACvC1C,GAAC6B,CAAAA,GAAAA,EAAAA;gBAAIc,WAAa,EAAA,CAAA;gBAAGC,YAAc,EAAA,CAAA;wCACjCtC,IAAA,CAACkC,KAAKK,IAAI,EAAA;AACRC,oBAAAA,YAAAA,EAAYlD,aAAc,CAAA;wBACxB2B,EAAI,EAAA,oDAAA;wBACJC,cAAgB,EAAA;AAClB,qBAAA,CAAA;;AAEA,sCAAAxB,GAAA,CAACwC,KAAKrB,OAAO,EAAA;4BAAC4B,KAAM,EAAA,UAAA;sCACjBnD,aAAc,CAAA;gCACb2B,EAAI,EAAA,+DAAA;gCACJC,cAAgB,EAAA;AAClB,6BAAA;;AAEF,sCAAAxB,GAAA,CAACwC,KAAKrB,OAAO,EAAA;4BAAC4B,KAAM,EAAA,KAAA;sCACjBnD,aAAc,CAAA;gCACb2B,EAAI,EAAA,0DAAA;gCACJC,cAAgB,EAAA;AAClB,6BAAA;;;;;AAIN,0BAAAxB,GAAA,CAACwC,KAAKL,OAAO,EAAA;gBAACY,KAAM,EAAA,UAAA;AAClB,gBAAA,QAAA,gBAAA/C,GAACgD,CAAAA,YAAAA,EAAAA,EAAAA;;AAEH,0BAAAhD,GAAA,CAACwC,KAAKL,OAAO,EAAA;gBAACY,KAAM,EAAA,KAAA;AAClB,gBAAA,QAAA,gBAAA/C,GAACiD,CAAAA,OAAAA,EAAAA,EAAAA;;;;AAIT,CAAA;AAEA;;AAEkG,qGAElG,MAAMA,OAAU,GAAA,IAAA;IACd,MAAM,EAAErD,aAAa,EAAE,GAAGC,OAAAA,EAAAA;AAC1B,IAAA,MAAM,CAACqD,OAASC,EAAAA,UAAAA,CAAW,GAAG3D,KAAAA,CAAMC,QAAQ,CAAC,EAAA,CAAA;AAC7C,IAAA,MAAM,CAAC2D,KAAAA,EAAOC,QAAS,CAAA,GAAG7D,MAAMC,QAAQ,EAAA;IACxC,MAAM,EAAEF,aAAa,EAAEgB,QAAQ,EAAEC,OAAO,EAAE,GAAG3B,mBAAoB,CAAA,SAAA,CAAA;AAEjE,IAAA,MAAMyE,eAA2C,CAACC,CAAAA,GAAAA;QAChDJ,UAAWI,CAAAA,CAAAA,CAAEC,MAAM,CAACT,KAAK,CAAA;AAC3B,KAAA;AAEA,IAAA,MAAMU,eAAwD,OAAOC,KAAAA,GAAAA;AACnEA,QAAAA,KAAAA,CAAMC,cAAc,EAAA;AAEpB,QAAA,MAAMC,IAAO,GAAA,IAAIC,QAASH,CAAAA,KAAAA,CAAMF,MAAM,CAAA;QAEtC,MAAM9B,GAAAA,GAAMkC,IAAKE,CAAAA,GAAG,CAAC,UAAA,CAAA;AAErB,QAAA,IAAI,CAACpC,GAAK,EAAA;AACR,YAAA;AACF;QAEA,IAAI;AACF,YAAA,MAAMqC,MAAM,MAAMC,KAAAA,CAAMF,GAAG,CAACpC,GAAAA,CAAIuC,QAAQ,EAAI,EAAA;gBAAEC,YAAc,EAAA,MAAA;gBAAQC,OAAS,EAAA;AAAK,aAAA,CAAA;YAElF,MAAMC,IAAAA,GAAO,IAAIC,IAAK,CAAA;AAACN,gBAAAA,GAAAA,CAAIH;AAAK,aAAA,EAAEG,GAAIO,CAAAA,MAAM,CAAC5C,GAAG,IAAI,EAAI,EAAA;gBACtD6C,IAAMR,EAAAA,GAAAA,CAAIS,OAAO,CAAC,cAAe;AACnC,aAAA,CAAA;YAEA,MAAMC,KAAAA,GAAQ,MAAMC,kBAAmBN,CAAAA,IAAAA,CAAAA;YAEvC7E,aAAckF,CAAAA,KAAAA,CAAAA;YACdlE,QAAS,CAAA,SAAA,CAAA;AACX,SAAA,CAAE,OAAOoE,GAAK,EAAA;AACZ,YAAA,IAAIA,eAAeC,UAAY,EAAA;AAC7BvB,gBAAAA,QAAAA,CACEzD,aAAc,CAAA;oBACZ2B,EAAI,EAAA,+DAAA;oBACJC,cAAgB,EAAA;AAClB,iBAAA,CAAA,CAAA;aAEG,MAAA,IAAImD,eAAeE,gBAAkB,EAAA;gBAC1CxB,QAASzD,CAAAA,aAAAA,CAAc+E,GAAIG,CAAAA,cAAc,EAAE;oBAAEC,IAAMC,EAAAA,IAAAA;oBAAMC,SAAWC,EAAAA;AAAU,iBAAA,CAAA,CAAA;aACzE,MAAA;gBACL,MAAMP,GAAAA;AACR;AACF;AACF,KAAA;AAEA,IAAA,qBACErE,IAAC6E,CAAAA,MAAAA,EAAAA;QAAKC,QAAU3B,EAAAA,YAAAA;;0BACdzD,GAAC6B,CAAAA,GAAAA,EAAAA;gBAAIc,WAAa,EAAA,CAAA;gBAAGC,YAAc,EAAA,CAAA;gBAAGyC,UAAY,EAAA,CAAA;gBAAGC,aAAe,EAAA,CAAA;wCAClEhF,IAAA,CAACiF,MAAMrF,IAAI,EAAA;oBAACkD,KAAOA,EAAAA,KAAAA;oBAAOpC,IAAK,EAAA,UAAA;;AAC7B,sCAAAhB,GAAA,CAACuF,MAAMC,KAAK,EAAA;sCACT5F,aAAc,CAAA;gCACb2B,EAAI,EAAA,sEAAA;gCACJC,cAAgB,EAAA;AAClB,6BAAA;;sCAEFxB,GAACyF,CAAAA,SAAAA,EAAAA;4BAAUlB,IAAK,EAAA,KAAA;4BAAMmB,QAAUpC,EAAAA,YAAAA;4BAAcP,KAAOG,EAAAA;;AACrD,sCAAAlD,GAAA,CAACuF,MAAMI,KAAK,EAAA,EAAA;;;;AAGhB,0BAAArF,IAAA,CAACL,MAAM2F,MAAM,EAAA;;kCACX5F,GAAC6F,CAAAA,MAAAA,EAAAA;wBAAOvE,OAASd,EAAAA,OAAAA;wBAASiC,OAAQ,EAAA,UAAA;kCAC/B7C,aAAc,CAAA;4BAAE2B,EAAI,EAAA,8BAAA;4BAAgCC,cAAgB,EAAA;AAAS,yBAAA;;kCAEhFxB,GAAC6F,CAAAA,MAAAA,EAAAA;wBAAOtB,IAAK,EAAA,QAAA;kCACV3E,aAAc,CAAA;4BACb2B,EAAI,EAAA,sDAAA;4BACJC,cAAgB,EAAA;AAClB,yBAAA;;;;;;AAKV,CAAA;AAEA;;AAEkG,qGAElG,MAAMwB,YAAe,GAAA,IAAA;IACnB,MAAM,EAAEpD,aAAa,EAAE,GAAGC,OAAAA,EAAAA;AAC1B,IAAA,MAAM,CAACiG,QAAUC,EAAAA,WAAAA,CAAY,GAAGvG,KAAAA,CAAMC,QAAQ,CAAC,KAAA,CAAA;AAC/C,IAAA,MAAM,CAACuG,SAAAA,EAAWC,YAAa,CAAA,GAAGzG,MAAMC,QAAQ,EAAA;IAChD,MAAMyG,QAAAA,GAAW1G,KAAM2G,CAAAA,MAAM,CAAmB,IAAA,CAAA;IAChD,MAAM5E,EAAAA,GAAK/B,MAAM4G,KAAK,EAAA;IAEtB,MAAM,EAAE7G,aAAa,EAAEgB,QAAQ,EAAEC,OAAO,EAAE,GAAG3B,mBAAoB,CAAA,cAAA,CAAA;AAEjE,IAAA,MAAMwH,eAAkB,GAAA,IAAA;QACtBN,WAAY,CAAA,IAAA,CAAA;AACd,KAAA;AACA,IAAA,MAAMO,eAAkB,GAAA,IAAA;QACtBP,WAAY,CAAA,KAAA,CAAA;AACd,KAAA;AAEA,IAAA,MAAMQ,cAAsC,CAAChD,CAAAA,GAAAA;AAC3CA,QAAAA,CAAAA,CAAEI,cAAc,EAAA;QAChBuC,QAASM,CAAAA,OAAO,CAACC,KAAK,EAAA;AACxB,KAAA;AAEA,IAAA,MAAMnD,YAAe,GAAA,UAAA;AACnBgD,QAAAA,eAAAA,EAAAA;AAEA,QAAA,IAAI,CAACJ,QAAAA,CAASM,OAAO,CAACE,KAAK,EAAE;AAC3B,YAAA;AACF;AAEA,QAAA,MAAM,CAACtC,IAAK,CAAA,GAAG8B,QAASM,CAAAA,OAAO,CAACE,KAAK;QAErC,IAAI;YACF,MAAMjC,KAAAA,GAAQ,MAAMC,kBAAmBN,CAAAA,IAAAA,CAAAA;YACvC7E,aAAckF,CAAAA,KAAAA,CAAAA;YACdlE,QAAS,CAAA,SAAA,CAAA;AACX,SAAA,CAAE,OAAOoE,GAAK,EAAA;AACZ,YAAA,IAAIA,eAAeE,gBAAkB,EAAA;gBACnCoB,YAAarG,CAAAA,aAAAA,CAAc+E,GAAIG,CAAAA,cAAc,EAAE;oBAAEC,IAAMC,EAAAA,IAAAA;oBAAMC,SAAWC,EAAAA;AAAU,iBAAA,CAAA,CAAA;gBAClFgB,QAASM,CAAAA,OAAO,CAACG,KAAK,EAAA;aACjB,MAAA;gBACL,MAAMhC,GAAAA;AACR;AACF;AACF,KAAA;IAEA,qBACErE,IAAA,CAAAsG,QAAA,EAAA;;0BACE5G,GAACmF,CAAAA,MAAAA,EAAAA;AACC,gBAAA,QAAA,gBAAAnF,GAAC6B,CAAAA,GAAAA,EAAAA;oBAAIc,WAAa,EAAA,CAAA;oBAAGC,YAAc,EAAA,CAAA;oBAAGyC,UAAY,EAAA,CAAA;oBAAGC,aAAe,EAAA,CAAA;4CAClEtF,GAAA,CAACuF,MAAMrF,IAAI,EAAA;wBAACc,IAAMO,EAAAA,EAAAA;wBAAI6B,KAAO4C,EAAAA,SAAAA;AAC3B,wBAAA,QAAA,gBAAA1F,IAACuG,CAAAA,IAAAA,EAAAA;4BAAKC,SAAU,EAAA,QAAA;4BAASC,UAAW,EAAA,SAAA;4BAAUC,GAAK,EAAA,CAAA;;8CACjD1G,IAACuG,CAAAA,IAAAA,EAAAA;oCACCxB,UAAY,EAAA,CAAA;oCACZC,aAAe,EAAA,CAAA;oCACf2B,SAAS,EAAA,IAAA;oCACTC,cAAe,EAAA,QAAA;oCACfJ,SAAU,EAAA,QAAA;AACVK,oCAAAA,UAAAA,EAAYrB,WAAW,YAAe,GAAA,YAAA;oCACtCsB,WAAatB,EAAAA,QAAAA,GAAW,YAAeE,GAAAA,SAAAA,GAAY,WAAc,GAAA,YAAA;oCACjEqB,WAAY,EAAA,QAAA;oCACZC,WAAY,EAAA,KAAA;oCACZC,QAAS,EAAA,UAAA;oCACTC,WAAanB,EAAAA,eAAAA;oCACboB,WAAanB,EAAAA,eAAAA;;sDAEbtG,GAAC0H,CAAAA,UAAAA,EAAAA;4CAAWC,IAAK,EAAA,YAAA;4CAAaC,KAAM,EAAA,MAAA;4CAAOC,MAAO,EAAA,MAAA;4CAAOC,aAAW,EAAA;;sDACpE9H,GAAC6B,CAAAA,GAAAA,EAAAA;4CAAIwD,UAAY,EAAA,CAAA;4CAAGC,aAAe,EAAA,CAAA;AACjC,4CAAA,QAAA,gBAAAtF,GAAC+H,CAAAA,UAAAA,EAAAA;gDAAWtF,OAAQ,EAAA,OAAA;gDAAQT,GAAI,EAAA,OAAA;gDAAQgG,OAASzG,EAAAA,EAAAA;0DAC9C3B,aAAc,CAAA;oDACb2B,EAAI,EAAA,2DAAA;oDACJC,cAAgB,EAAA;AAClB,iDAAA;;;sDAGJxB,GAAC6B,CAAAA,GAAAA,EAAAA;4CAAI0F,QAAS,EAAA,UAAA;AACZ,4CAAA,QAAA,gBAAAvH,GAACiI,CAAAA,SAAAA,EAAAA;gDACCC,MAAQC,EAAAA,eAAAA,CAAgBC,IAAI,CAAC,IAAA,CAAA;gDAC7B7D,IAAK,EAAA,MAAA;gDACLvD,IAAK,EAAA,OAAA;AACLqH,gDAAAA,QAAAA,EAAU,CAAC,CAAA;gDACX3C,QAAUpC,EAAAA,YAAAA;gDACVgF,GAAKpC,EAAAA,QAAAA;gDACL3E,EAAIA,EAAAA;;;sDAGRvB,GAAC6F,CAAAA,MAAAA,EAAAA;4CAAOtB,IAAK,EAAA,QAAA;4CAASjD,OAASiF,EAAAA,WAAAA;sDAC5B3G,aAAc,CAAA;gDACb2B,EAAI,EAAA,4DAAA;gDACJC,cAAgB,EAAA;AAClB,6CAAA;;sDAEFxB,GAAC6B,CAAAA,GAAAA,EAAAA;4CAAIwD,UAAY,EAAA,CAAA;AACf,4CAAA,QAAA,gBAAArF,GAAC+H,CAAAA,UAAAA,EAAAA;gDAAWtF,OAAQ,EAAA,IAAA;gDAAK8F,SAAU,EAAA,YAAA;0DAChC3I,aACC,CAAA;oDACE2B,EAAI,EAAA,iEAAA;oDACJC,cACE,EAAA;iDAEJ,EAAA;oDAAEuD,IAAMC,EAAAA,IAAAA;oDAAMC,SAAWC,EAAAA;AAAU,iDAAA;;;;;AAK3C,8CAAAlF,GAAA,CAACuF,MAAMI,KAAK,EAAA,EAAA;;;;;;AAKpB,0BAAA3F,GAAA,CAACC,MAAM2F,MAAM,EAAA;AACX,gBAAA,QAAA,gBAAA5F,GAAC6F,CAAAA,MAAAA,EAAAA;oBAAOvE,OAASd,EAAAA,OAAAA;oBAASiC,OAAQ,EAAA,UAAA;8BAC/B7C,aAAc,CAAA;wBAAE2B,EAAI,EAAA,8BAAA;wBAAgCC,cAAgB,EAAA;AAAS,qBAAA;;;;;AAKxF,CAAA;AAEA,MAAMyG,SAAYO,GAAAA,MAAAA,CAAOjD,KAAMkD,CAAAA,KAAK,CAAC;;;;;;;;AAQrC,CAAC;AAUD,MAAMlG,iBAAoB,GAAA,CAAC,EAAElD,YAAY,EAA0B,GAAA;IACjE,MAAM,EAAEO,aAAa,EAAE,GAAGC,OAAAA,EAAAA;IAC1B,MAAM,EAAEP,UAAU,EAAEC,aAAa,EAAEgB,QAAQ,EAAEC,OAAO,EAAE,GAAG3B,mBAAoB,CAAA,mBAAA,CAAA;AAE7E,IAAA,MAAM6J,YAAe,GAAA,IAAA;QACnBnJ,aAAcQ,CAAAA,SAAAA,CAAAA;QACdQ,QAAS,CAAA,QAAA,CAAA;AACX,KAAA;AAEA,IAAA,MAAMoI,YAAe,GAAA,IAAA;AACnB,QAAA,IAAIrJ,UAAY,EAAA;YACdD,YAAaC,CAAAA,UAAAA,CAAAA;AACf;AACAkB,QAAAA,OAAAA,EAAAA;AACF,KAAA;IAEA,qBACEF,IAAA,CAAAsG,QAAA,EAAA;;AACE,0BAAA5G,GAAA,CAACC,MAAM2I,IAAI,EAAA;AACT,gBAAA,QAAA,gBAAAtI,IAACuB,CAAAA,GAAAA,EAAAA;oBAAIc,WAAa,EAAA,CAAA;oBAAGC,YAAc,EAAA,CAAA;oBAAGyC,UAAY,EAAA,CAAA;oBAAGC,aAAe,EAAA,CAAA;;sCAClEhF,IAACuG,CAAAA,IAAAA,EAAAA;4BAAKK,cAAe,EAAA,eAAA;4BAAgB5B,aAAe,EAAA,CAAA;;8CAClDhF,IAACuG,CAAAA,IAAAA,EAAAA;oCAAKC,SAAU,EAAA,QAAA;oCAASC,UAAW,EAAA,YAAA;;sDAClC/G,GAAC+H,CAAAA,UAAAA,EAAAA;4CAAWtF,OAAQ,EAAA,IAAA;4CAAKoG,UAAW,EAAA,MAAA;sDACjCjJ,aAAc,CAAA;gDACb2B,EAAI,EAAA,wDAAA;gDACJC,cAAgB,EAAA;AAClB,6CAAA;;sDAEFxB,GAAC+H,CAAAA,UAAAA,EAAAA;4CAAWtF,OAAQ,EAAA,IAAA;4CAAK8F,SAAU,EAAA,YAAA;sDAChC3I,aAAc,CAAA;gDACb2B,EAAI,EAAA,2DAAA;gDACJC,cAAgB,EAAA;AAClB,6CAAA;;;;8CAGJxB,GAAC6F,CAAAA,MAAAA,EAAAA;oCAAOvE,OAASoH,EAAAA,YAAAA;oCAAcjG,OAAQ,EAAA,WAAA;8CACpC7C,aAAc,CAAA;wCACb2B,EAAI,EAAA,iEAAA;wCACJC,cAAgB,EAAA;AAClB,qCAAA;;;;sCAGJxB,GAAC6B,CAAAA,GAAAA,EAAAA;4BAAIE,QAAU,EAAA,CAAC,KAAK,CAAC;AACnBzC,4BAAAA,QAAAA,EAAAA,UAAAA,EAAYoC,oBAAM1B,GAAC8I,CAAAA,cAAAA,EAAAA;gCAAerE,KAAOnF,EAAAA;AAAiB,6BAAA,CAAA,GAAA;;;;;AAIjE,0BAAAgB,IAAA,CAACL,MAAM2F,MAAM,EAAA;;AACX,kCAAA5F,GAAA,CAACC,MAAM8I,KAAK,EAAA;AACV,wBAAA,QAAA,gBAAA/I,GAAC6F,CAAAA,MAAAA,EAAAA;4BAAOvE,OAASd,EAAAA,OAAAA;4BAASiC,OAAQ,EAAA,UAAA;sCAC/B7C,aAAc,CAAA;gCACb2B,EAAI,EAAA,iDAAA;gCACJC,cAAgB,EAAA;AAClB,6BAAA;;;kCAGJxB,GAAC6F,CAAAA,MAAAA,EAAAA;wBAAOvE,OAASqH,EAAAA,YAAAA;kCACd/I,aAAc,CAAA;4BACb2B,EAAI,EAAA,yDAAA;4BACJC,cAAgB,EAAA;AAClB,yBAAA;;;;;;AAKV,CAAA;AAUA,MAAMsH,cAAiB,GAAA,CAAC,EAAErE,KAAK,EAAuB,GAAA;IACpD,MAAM,EAAE7E,aAAa,EAAE,GAAGC,OAAAA,EAAAA;AAE1B,IAAA,qBACES,IAAC0I,CAAAA,IAAAA,EAAAA;;0BACChJ,GAACiJ,CAAAA,UAAAA,EAAAA;AACC,gBAAA,QAAA,gBAAAjJ,GAACkJ,CAAAA,SAAAA,EAAAA;oBAAUnE,IAAK,EAAA,GAAA;AAAI9C,oBAAAA,GAAAA,EAAKwC,MAAM/C;;;0BAEjCpB,IAAC6I,CAAAA,QAAAA,EAAAA;;kCACC7I,IAAC8I,CAAAA,WAAAA,EAAAA;;0CACCpJ,GAACqJ,CAAAA,SAAAA,EAAAA;AAAW5E,gCAAAA,QAAAA,EAAAA,KAAAA,CAAMzD;;0CAClBhB,GAACsJ,CAAAA,YAAAA,EAAAA;AACE,gCAAA,QAAA,EAAA,CAAC,EAAE7E,KAAAA,CAAM8E,GAAG,EAAEC,cAAc,GAAG,EAAE/E,KAAMmD,CAAAA,KAAK,CAAC,CAAC,EAAEnD,KAAMoD,CAAAA,MAAM,CAAC;;;;kCAGlE7H,GAACyJ,CAAAA,SAAAA,EAAAA;kCACE7J,aAAc,CAAA;4BACb2B,EAAI,EAAA,6DAAA;4BACJC,cAAgB,EAAA;AAClB,yBAAA;;;;;;AAKV,CAAA;;;;"}
|
|
1
|
+
{"version":3,"file":"LogoInput.mjs","sources":["../../../../../../../../../admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { createContext } from '@radix-ui/react-context';\nimport {\n Box,\n Button,\n ButtonProps,\n Card,\n CardAsset,\n CardBadge,\n CardBody,\n CardContent,\n CardHeader,\n CardSubtitle,\n CardTitle,\n CarouselActions,\n CarouselInput,\n CarouselInputProps,\n CarouselSlide,\n Field,\n Flex,\n IconButton,\n Modal,\n Tabs,\n TextInput,\n TextInputProps,\n Typography,\n} from '@strapi/design-system';\nimport { PlusCircle, Plus, ArrowClockwise } from '@strapi/icons';\nimport axios, { AxiosError } from 'axios';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { ConfigurationContextValue } from '../../../../../features/Configuration';\nimport { ACCEPTED_FORMAT, DIMENSION, SIZE } from '../utils/constants';\nimport { ImageAsset, ParsingFileError, parseFileMetadatas } from '../utils/files';\n\n/* -------------------------------------------------------------------------------------------------\n * LogoInputContext\n * -----------------------------------------------------------------------------------------------*/\n\ninterface LogoInputContextValue {\n localImage: ImageAsset | undefined;\n goToStep: (step: Step) => void;\n onClose: () => void;\n setLocalImage: (asset: ImageAsset | undefined) => void;\n}\n\nconst [LogoInputContextProvider, useLogoInputContext] =\n createContext<LogoInputContextValue>('LogoInput');\n\n/* -------------------------------------------------------------------------------------------------\n * LogoInput\n * -----------------------------------------------------------------------------------------------*/\n\ninterface LogoInputProps\n extends Pick<PendingLogoDialogProps, 'onChangeLogo'>,\n Pick<CarouselInputProps, 'label' | 'hint'> {\n canUpdate: boolean;\n customLogo?: ConfigurationContextValue['logos']['auth']['custom'];\n defaultLogo: string;\n}\n\ntype Step = 'pending' | 'upload' | undefined;\n\nconst LogoInput = ({\n canUpdate,\n customLogo,\n defaultLogo,\n hint,\n label,\n onChangeLogo,\n}: LogoInputProps) => {\n const [localImage, setLocalImage] = React.useState<ImageAsset | undefined>();\n const [currentStep, setCurrentStep] = React.useState<Step>();\n const { formatMessage } = useIntl();\n\n const handleClose = () => {\n setLocalImage(undefined);\n setCurrentStep(undefined);\n };\n\n return (\n <Modal.Root\n open={!!currentStep}\n onOpenChange={(state) => {\n if (state === false) {\n handleClose();\n }\n }}\n >\n <LogoInputContextProvider\n setLocalImage={setLocalImage}\n localImage={localImage}\n goToStep={setCurrentStep}\n onClose={handleClose}\n >\n <CarouselInput\n label={label}\n selectedSlide={0}\n hint={hint}\n // Carousel is used here for a single media,\n // we don't need previous and next labels but these props are required\n previousLabel=\"\"\n nextLabel=\"\"\n onNext={() => {}}\n onPrevious={() => {}}\n secondaryLabel={customLogo?.name || 'logo.png'}\n actions={\n <CarouselActions>\n <Modal.Trigger>\n <IconButton\n disabled={!canUpdate}\n onClick={() => setCurrentStep('upload')}\n label={formatMessage({\n id: 'Settings.application.customization.carousel.change-action',\n defaultMessage: 'Change logo',\n })}\n >\n <Plus />\n </IconButton>\n </Modal.Trigger>\n {customLogo?.url && (\n <IconButton\n disabled={!canUpdate}\n onClick={() => onChangeLogo(null)}\n label={formatMessage({\n id: 'Settings.application.customization.carousel.reset-action',\n defaultMessage: 'Reset logo',\n })}\n >\n <ArrowClockwise />\n </IconButton>\n )}\n </CarouselActions>\n }\n >\n <CarouselSlide\n label={formatMessage({\n id: 'Settings.application.customization.carousel-slide.label',\n defaultMessage: 'Logo slide',\n })}\n >\n <Box\n maxHeight=\"40%\"\n maxWidth=\"40%\"\n tag=\"img\"\n src={customLogo?.url || defaultLogo}\n alt={formatMessage({\n id: 'Settings.application.customization.carousel.title',\n defaultMessage: 'Logo',\n })}\n />\n </CarouselSlide>\n </CarouselInput>\n <Modal.Content>\n <Modal.Header>\n <Modal.Title>\n {formatMessage(\n currentStep === 'upload'\n ? {\n id: 'Settings.application.customization.modal.upload',\n defaultMessage: 'Upload logo',\n }\n : {\n id: 'Settings.application.customization.modal.pending',\n defaultMessage: 'Pending logo',\n }\n )}\n </Modal.Title>\n </Modal.Header>\n {currentStep === 'upload' ? (\n <AddLogoDialog />\n ) : (\n <PendingLogoDialog onChangeLogo={onChangeLogo} />\n )}\n </Modal.Content>\n </LogoInputContextProvider>\n </Modal.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * AddLogoDialog\n * -----------------------------------------------------------------------------------------------*/\n\nconst AddLogoDialog = () => {\n const { formatMessage } = useIntl();\n\n return (\n <Tabs.Root variant=\"simple\" defaultValue=\"computer\">\n <Box paddingLeft={8} paddingRight={8}>\n <Tabs.List\n aria-label={formatMessage({\n id: 'Settings.application.customization.modal.tab.label',\n defaultMessage: 'How do you want to upload your assets?',\n })}\n >\n <Tabs.Trigger value=\"computer\">\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.from-computer',\n defaultMessage: 'From computer',\n })}\n </Tabs.Trigger>\n <Tabs.Trigger value=\"url\">\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.from-url',\n defaultMessage: 'From url',\n })}\n </Tabs.Trigger>\n </Tabs.List>\n </Box>\n <Tabs.Content value=\"computer\">\n <ComputerForm />\n </Tabs.Content>\n <Tabs.Content value=\"url\">\n <URLForm />\n </Tabs.Content>\n </Tabs.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * URLForm\n * -----------------------------------------------------------------------------------------------*/\n\nconst URLForm = () => {\n const { formatMessage } = useIntl();\n const [logoUrl, setLogoUrl] = React.useState('');\n const [error, setError] = React.useState<string>();\n const { setLocalImage, goToStep, onClose } = useLogoInputContext('URLForm');\n\n const handleChange: TextInputProps['onChange'] = (e) => {\n setLogoUrl(e.target.value);\n };\n\n const handleSubmit: React.FormEventHandler<HTMLFormElement> = async (event) => {\n event.preventDefault();\n\n const data = new FormData(event.target as HTMLFormElement);\n\n const url = data.get('logo-url');\n\n if (!url) {\n return;\n }\n\n try {\n const res = await axios.get(url.toString(), { responseType: 'blob', timeout: 8000 });\n\n const file = new File([res.data], res.config.url ?? '', {\n type: res.headers['content-type'],\n });\n\n const asset = await parseFileMetadatas(file);\n\n setLocalImage(asset);\n goToStep('pending');\n } catch (err) {\n if (err instanceof AxiosError) {\n setError(\n formatMessage({\n id: 'Settings.application.customization.modal.upload.error-network',\n defaultMessage: 'Network error',\n })\n );\n } else if (err instanceof ParsingFileError) {\n setError(formatMessage(err.displayMessage, { size: SIZE, dimension: DIMENSION }));\n } else {\n throw err;\n }\n }\n };\n\n return (\n <form onSubmit={handleSubmit}>\n <Box paddingLeft={8} paddingRight={8} paddingTop={6} paddingBottom={6}>\n <Field.Root error={error} name=\"logo-url\">\n <Field.Label>\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.from-url.input-label',\n defaultMessage: 'URL',\n })}\n </Field.Label>\n <TextInput type=\"url\" onChange={handleChange} value={logoUrl} />\n <Field.Error />\n </Field.Root>\n </Box>\n <Modal.Footer>\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({ id: 'app.components.Button.cancel', defaultMessage: 'Cancel' })}\n </Button>\n <Button type=\"submit\">\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.next',\n defaultMessage: 'Next',\n })}\n </Button>\n </Modal.Footer>\n </form>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ComputerForm\n * -----------------------------------------------------------------------------------------------*/\n\nconst ComputerForm = () => {\n const { formatMessage } = useIntl();\n const [dragOver, setDragOver] = React.useState(false);\n const [fileError, setFileError] = React.useState<string>();\n const inputRef = React.useRef<HTMLInputElement>(null!);\n const id = React.useId();\n\n const { setLocalImage, goToStep, onClose } = useLogoInputContext('ComputerForm');\n\n const handleDragEnter = () => {\n setDragOver(true);\n };\n const handleDragLeave = () => {\n setDragOver(false);\n };\n\n const handleClick: ButtonProps['onClick'] = (e) => {\n e.preventDefault();\n inputRef.current.click();\n };\n\n const handleChange = async () => {\n handleDragLeave();\n\n if (!inputRef.current.files) {\n return;\n }\n\n const [file] = inputRef.current.files;\n\n try {\n const asset = await parseFileMetadatas(file);\n setLocalImage(asset);\n goToStep('pending');\n } catch (err) {\n if (err instanceof ParsingFileError) {\n setFileError(formatMessage(err.displayMessage, { size: SIZE, dimension: DIMENSION }));\n inputRef.current.focus();\n } else {\n throw err;\n }\n }\n };\n\n return (\n <>\n <form>\n <Box paddingLeft={8} paddingRight={8} paddingTop={6} paddingBottom={6}>\n <Field.Root name={id} error={fileError}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Flex\n paddingTop={9}\n paddingBottom={7}\n hasRadius\n justifyContent=\"center\"\n direction=\"column\"\n background={dragOver ? 'primary100' : 'neutral100'}\n borderColor={dragOver ? 'primary500' : fileError ? 'danger600' : 'neutral300'}\n borderStyle=\"dashed\"\n borderWidth=\"1px\"\n position=\"relative\"\n onDragEnter={handleDragEnter}\n onDragLeave={handleDragLeave}\n >\n <PlusCircle fill=\"primary600\" width=\"6rem\" height=\"6rem\" aria-hidden />\n <Box paddingTop={3} paddingBottom={5}>\n <Typography variant=\"delta\" tag=\"label\" htmlFor={id}>\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.drag-drop',\n defaultMessage: 'Drag and Drop here or',\n })}\n </Typography>\n </Box>\n <Box position=\"relative\">\n <FileInput\n accept={ACCEPTED_FORMAT.join(', ')}\n type=\"file\"\n name=\"files\"\n tabIndex={-1}\n onChange={handleChange}\n ref={inputRef}\n id={id}\n />\n </Box>\n <Button type=\"button\" onClick={handleClick}>\n {formatMessage({\n id: 'Settings.application.customization.modal.upload.cta.browse',\n defaultMessage: 'Browse files',\n })}\n </Button>\n <Box paddingTop={6}>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage(\n {\n id: 'Settings.application.customization.modal.upload.file-validation',\n defaultMessage:\n 'Max dimension: {dimension}x{dimension}, Max size: {size}KB',\n },\n { size: SIZE, dimension: DIMENSION }\n )}\n </Typography>\n </Box>\n </Flex>\n <Field.Error />\n </Flex>\n </Field.Root>\n </Box>\n </form>\n <Modal.Footer>\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({ id: 'app.components.Button.cancel', defaultMessage: 'Cancel' })}\n </Button>\n </Modal.Footer>\n </>\n );\n};\n\nconst FileInput = styled(Field.Input)`\n opacity: 0;\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 1;\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * PendingLogoDialog\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PendingLogoDialogProps {\n onChangeLogo: (file: ImageAsset | null) => void;\n}\n\nconst PendingLogoDialog = ({ onChangeLogo }: PendingLogoDialogProps) => {\n const { formatMessage } = useIntl();\n const { localImage, setLocalImage, goToStep, onClose } = useLogoInputContext('PendingLogoDialog');\n\n const handleGoBack = () => {\n setLocalImage(undefined);\n goToStep('upload');\n };\n\n const handleUpload = () => {\n if (localImage) {\n onChangeLogo(localImage);\n }\n onClose();\n };\n\n return (\n <>\n <Modal.Body>\n <Box paddingLeft={8} paddingRight={8} paddingTop={6} paddingBottom={6}>\n <Flex justifyContent=\"space-between\" paddingBottom={6}>\n <Flex direction=\"column\" alignItems=\"flex-start\">\n <Typography variant=\"pi\" fontWeight=\"bold\">\n {formatMessage({\n id: 'Settings.application.customization.modal.pending.title',\n defaultMessage: 'Logo ready to upload',\n })}\n </Typography>\n <Typography variant=\"pi\" textColor=\"neutral500\">\n {formatMessage({\n id: 'Settings.application.customization.modal.pending.subtitle',\n defaultMessage: 'Manage the chosen logo before uploading it',\n })}\n </Typography>\n </Flex>\n <Button onClick={handleGoBack} variant=\"secondary\">\n {formatMessage({\n id: 'Settings.application.customization.modal.pending.choose-another',\n defaultMessage: 'Choose another logo',\n })}\n </Button>\n </Flex>\n <Box maxWidth={`18rem`}>\n {localImage?.url ? <ImageCardAsset asset={localImage} /> : null}\n </Box>\n </Box>\n </Modal.Body>\n <Modal.Footer>\n <Modal.Close>\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({\n id: 'Settings.application.customization.modal.cancel',\n defaultMessage: 'Cancel',\n })}\n </Button>\n </Modal.Close>\n <Button onClick={handleUpload}>\n {formatMessage({\n id: 'Settings.application.customization.modal.pending.upload',\n defaultMessage: 'Upload logo',\n })}\n </Button>\n </Modal.Footer>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ImageCardAsset\n * -----------------------------------------------------------------------------------------------*/\n\ninterface ImageCardAssetProps {\n asset: ImageAsset;\n}\n\nconst ImageCardAsset = ({ asset }: ImageCardAssetProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Card>\n <CardHeader>\n <CardAsset size=\"S\" src={asset.url} />\n </CardHeader>\n <CardBody>\n <CardContent>\n <CardTitle>{asset.name}</CardTitle>\n <CardSubtitle>\n {`${asset.ext?.toUpperCase()} - ${asset.width}✕${asset.height}`}\n </CardSubtitle>\n </CardContent>\n <CardBadge>\n {formatMessage({\n id: 'Settings.application.customization.modal.pending.card-badge',\n defaultMessage: 'image',\n })}\n </CardBadge>\n </CardBody>\n </Card>\n );\n};\n\nexport { LogoInput };\nexport type { LogoInputProps };\n"],"names":["LogoInputContextProvider","useLogoInputContext","createContext","LogoInput","canUpdate","customLogo","defaultLogo","hint","label","onChangeLogo","localImage","setLocalImage","React","useState","currentStep","setCurrentStep","formatMessage","useIntl","handleClose","undefined","_jsx","Modal","Root","open","onOpenChange","state","_jsxs","goToStep","onClose","CarouselInput","selectedSlide","previousLabel","nextLabel","onNext","onPrevious","secondaryLabel","name","actions","CarouselActions","Trigger","IconButton","disabled","onClick","id","defaultMessage","Plus","url","ArrowClockwise","CarouselSlide","Box","maxHeight","maxWidth","tag","src","alt","Content","Header","Title","AddLogoDialog","PendingLogoDialog","Tabs","variant","defaultValue","paddingLeft","paddingRight","List","aria-label","value","ComputerForm","URLForm","logoUrl","setLogoUrl","error","setError","handleChange","e","target","handleSubmit","event","preventDefault","data","FormData","get","res","axios","toString","responseType","timeout","file","File","config","type","headers","asset","parseFileMetadatas","err","AxiosError","ParsingFileError","displayMessage","size","SIZE","dimension","DIMENSION","form","onSubmit","paddingTop","paddingBottom","Field","Label","TextInput","onChange","Error","Footer","Button","dragOver","setDragOver","fileError","setFileError","inputRef","useRef","useId","handleDragEnter","handleDragLeave","handleClick","current","click","files","focus","_Fragment","Flex","direction","alignItems","gap","hasRadius","justifyContent","background","borderColor","borderStyle","borderWidth","position","onDragEnter","onDragLeave","PlusCircle","fill","width","height","aria-hidden","Typography","htmlFor","FileInput","accept","ACCEPTED_FORMAT","join","tabIndex","ref","textColor","styled","Input","handleGoBack","handleUpload","Body","fontWeight","ImageCardAsset","Close","Card","CardHeader","CardAsset","CardBody","CardContent","CardTitle","CardSubtitle","ext","toUpperCase","CardBadge"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"files.js","sources":["../../../../../../../../../admin/src/pages/Settings/pages/ApplicationInfo/utils/files.ts"],"sourcesContent":["import { ACCEPTED_FORMAT, DIMENSION, SIZE } from './constants';\n\nimport type { MessageDescriptor } from 'react-intl';\n\nconst FILE_FORMAT_ERROR_MESSAGE = {\n id: 'Settings.application.customization.modal.upload.error-format',\n defaultMessage: 'Wrong format uploaded (accepted formats only: jpeg, jpg, png, svg).',\n};\n\nconst FILE_SIZING_ERROR_MESSAGE = {\n id: 'Settings.application.customization.modal.upload.error-size',\n defaultMessage:\n 'The file uploaded is too large (max dimension: {dimension}x{dimension}, max file size: {size}KB)',\n};\n\ninterface ImageDimensions {\n height: number;\n width: number;\n}\n\ninterface ImageAsset extends ImageDimensions {\n ext: string | undefined;\n size: number;\n name: string;\n url: string;\n rawFile: File;\n}\n\nconst parseFileMetadatas = async (file: File): Promise<ImageAsset> => {\n const isFormatAuthorized = ACCEPTED_FORMAT.includes(file.type);\n\n if (!isFormatAuthorized) {\n throw new ParsingFileError('File format', FILE_FORMAT_ERROR_MESSAGE);\n }\n\n const fileDimensions = await new Promise<ImageDimensions>((resolve) => {\n const reader = new FileReader();\n reader.onload = () => {\n const img = new Image();\n img.onload = () => {\n resolve({ width: img.width, height: img.height });\n };\n img.src = reader.result as string;\n };\n reader.readAsDataURL(file);\n });\n\n const areDimensionsAuthorized =\n fileDimensions.width <= DIMENSION && fileDimensions.height <= DIMENSION;\n\n if (!areDimensionsAuthorized) {\n throw new ParsingFileError('File sizing', FILE_SIZING_ERROR_MESSAGE);\n }\n\n const asset = {\n ext: file.name.split('.').pop(),\n size: file.size / 1000,\n name: file.name,\n url: URL.createObjectURL(file),\n rawFile: file,\n width: fileDimensions.width,\n height: fileDimensions.height,\n };\n\n const isSizeAuthorized = asset.size <= SIZE;\n\n if (!isSizeAuthorized) {\n throw new ParsingFileError('File sizing', FILE_SIZING_ERROR_MESSAGE);\n }\n\n return asset;\n};\n\nclass ParsingFileError extends Error {\n displayMessage: MessageDescriptor;\n\n constructor(message: string, displayMessage: MessageDescriptor, options?: ErrorOptions) {\n super(message, options);\n this.displayMessage = displayMessage;\n }\n}\n\nexport { parseFileMetadatas, ParsingFileError };\nexport type { ImageAsset };\n"],"names":["FILE_FORMAT_ERROR_MESSAGE","id","defaultMessage","FILE_SIZING_ERROR_MESSAGE","parseFileMetadatas","file","isFormatAuthorized","ACCEPTED_FORMAT","includes","type","ParsingFileError","fileDimensions","Promise","resolve","reader","FileReader","onload","img","Image","width","height","src","result","readAsDataURL","areDimensionsAuthorized","DIMENSION","asset","ext","name","split","pop","size","url","URL","createObjectURL","rawFile","isSizeAuthorized","SIZE","Error","
|
|
1
|
+
{"version":3,"file":"files.js","sources":["../../../../../../../../../admin/src/pages/Settings/pages/ApplicationInfo/utils/files.ts"],"sourcesContent":["import { ACCEPTED_FORMAT, DIMENSION, SIZE } from './constants';\n\nimport type { MessageDescriptor } from 'react-intl';\n\nconst FILE_FORMAT_ERROR_MESSAGE = {\n id: 'Settings.application.customization.modal.upload.error-format',\n defaultMessage: 'Wrong format uploaded (accepted formats only: jpeg, jpg, png, svg).',\n};\n\nconst FILE_SIZING_ERROR_MESSAGE = {\n id: 'Settings.application.customization.modal.upload.error-size',\n defaultMessage:\n 'The file uploaded is too large (max dimension: {dimension}x{dimension}, max file size: {size}KB)',\n};\n\ninterface ImageDimensions {\n height: number;\n width: number;\n}\n\ninterface ImageAsset extends ImageDimensions {\n ext: string | undefined;\n size: number;\n name: string;\n url: string;\n rawFile: File;\n}\n\nconst parseFileMetadatas = async (file: File): Promise<ImageAsset> => {\n const isFormatAuthorized = ACCEPTED_FORMAT.includes(file.type);\n\n if (!isFormatAuthorized) {\n throw new ParsingFileError('File format', FILE_FORMAT_ERROR_MESSAGE);\n }\n\n const fileDimensions = await new Promise<ImageDimensions>((resolve) => {\n const reader = new FileReader();\n reader.onload = () => {\n const img = new Image();\n img.onload = () => {\n resolve({ width: img.width, height: img.height });\n };\n img.src = reader.result as string;\n };\n reader.readAsDataURL(file);\n });\n\n const areDimensionsAuthorized =\n fileDimensions.width <= DIMENSION && fileDimensions.height <= DIMENSION;\n\n if (!areDimensionsAuthorized) {\n throw new ParsingFileError('File sizing', FILE_SIZING_ERROR_MESSAGE);\n }\n\n const asset = {\n ext: file.name.split('.').pop(),\n size: file.size / 1000,\n name: file.name,\n url: URL.createObjectURL(file),\n rawFile: file,\n width: fileDimensions.width,\n height: fileDimensions.height,\n };\n\n const isSizeAuthorized = asset.size <= SIZE;\n\n if (!isSizeAuthorized) {\n throw new ParsingFileError('File sizing', FILE_SIZING_ERROR_MESSAGE);\n }\n\n return asset;\n};\n\nclass ParsingFileError extends Error {\n displayMessage: MessageDescriptor;\n\n constructor(message: string, displayMessage: MessageDescriptor, options?: ErrorOptions) {\n super(message, options);\n this.displayMessage = displayMessage;\n }\n}\n\nexport { parseFileMetadatas, ParsingFileError };\nexport type { ImageAsset };\n"],"names":["FILE_FORMAT_ERROR_MESSAGE","id","defaultMessage","FILE_SIZING_ERROR_MESSAGE","parseFileMetadatas","file","isFormatAuthorized","ACCEPTED_FORMAT","includes","type","ParsingFileError","fileDimensions","Promise","resolve","reader","FileReader","onload","img","Image","width","height","src","result","readAsDataURL","areDimensionsAuthorized","DIMENSION","asset","ext","name","split","pop","size","url","URL","createObjectURL","rawFile","isSizeAuthorized","SIZE","Error","message","displayMessage","options"],"mappings":";;;;AAIA,MAAMA,yBAA4B,GAAA;IAChCC,EAAI,EAAA,8DAAA;IACJC,cAAgB,EAAA;AAClB,CAAA;AAEA,MAAMC,yBAA4B,GAAA;IAChCF,EAAI,EAAA,4DAAA;IACJC,cACE,EAAA;AACJ,CAAA;AAeA,MAAME,qBAAqB,OAAOC,IAAAA,GAAAA;AAChC,IAAA,MAAMC,kBAAqBC,GAAAA,yBAAAA,CAAgBC,QAAQ,CAACH,KAAKI,IAAI,CAAA;AAE7D,IAAA,IAAI,CAACH,kBAAoB,EAAA;QACvB,MAAM,IAAII,iBAAiB,aAAeV,EAAAA,yBAAAA,CAAAA;AAC5C;AAEA,IAAA,MAAMW,cAAiB,GAAA,MAAM,IAAIC,OAAAA,CAAyB,CAACC,OAAAA,GAAAA;AACzD,QAAA,MAAMC,SAAS,IAAIC,UAAAA,EAAAA;AACnBD,QAAAA,MAAAA,CAAOE,MAAM,GAAG,IAAA;AACd,YAAA,MAAMC,MAAM,IAAIC,KAAAA,EAAAA;AAChBD,YAAAA,GAAAA,CAAID,MAAM,GAAG,IAAA;gBACXH,OAAQ,CAAA;AAAEM,oBAAAA,KAAAA,EAAOF,IAAIE,KAAK;AAAEC,oBAAAA,MAAAA,EAAQH,IAAIG;AAAO,iBAAA,CAAA;AACjD,aAAA;YACAH,GAAII,CAAAA,GAAG,GAAGP,MAAAA,CAAOQ,MAAM;AACzB,SAAA;AACAR,QAAAA,MAAAA,CAAOS,aAAa,CAAClB,IAAAA,CAAAA;AACvB,KAAA,CAAA;AAEA,IAAA,MAAMmB,0BACJb,cAAeQ,CAAAA,KAAK,IAAIM,mBAAad,IAAAA,cAAAA,CAAeS,MAAM,IAAIK,mBAAAA;AAEhE,IAAA,IAAI,CAACD,uBAAyB,EAAA;QAC5B,MAAM,IAAId,iBAAiB,aAAeP,EAAAA,yBAAAA,CAAAA;AAC5C;AAEA,IAAA,MAAMuB,KAAQ,GAAA;AACZC,QAAAA,GAAAA,EAAKtB,KAAKuB,IAAI,CAACC,KAAK,CAAC,KAAKC,GAAG,EAAA;QAC7BC,IAAM1B,EAAAA,IAAAA,CAAK0B,IAAI,GAAG,IAAA;AAClBH,QAAAA,IAAAA,EAAMvB,KAAKuB,IAAI;QACfI,GAAKC,EAAAA,GAAAA,CAAIC,eAAe,CAAC7B,IAAAA,CAAAA;QACzB8B,OAAS9B,EAAAA,IAAAA;AACTc,QAAAA,KAAAA,EAAOR,eAAeQ,KAAK;AAC3BC,QAAAA,MAAAA,EAAQT,eAAeS;AACzB,KAAA;IAEA,MAAMgB,gBAAAA,GAAmBV,KAAMK,CAAAA,IAAI,IAAIM,cAAAA;AAEvC,IAAA,IAAI,CAACD,gBAAkB,EAAA;QACrB,MAAM,IAAI1B,iBAAiB,aAAeP,EAAAA,yBAAAA,CAAAA;AAC5C;IAEA,OAAOuB,KAAAA;AACT;AAEA,MAAMhB,gBAAyB4B,SAAAA,KAAAA,CAAAA;AAG7B,IAAA,WAAA,CAAYC,OAAe,EAAEC,cAAiC,EAAEC,OAAsB,CAAE;AACtF,QAAA,KAAK,CAACF,OAASE,EAAAA,OAAAA,CAAAA;QACf,IAAI,CAACD,cAAc,GAAGA,cAAAA;AACxB;AACF;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"files.mjs","sources":["../../../../../../../../../admin/src/pages/Settings/pages/ApplicationInfo/utils/files.ts"],"sourcesContent":["import { ACCEPTED_FORMAT, DIMENSION, SIZE } from './constants';\n\nimport type { MessageDescriptor } from 'react-intl';\n\nconst FILE_FORMAT_ERROR_MESSAGE = {\n id: 'Settings.application.customization.modal.upload.error-format',\n defaultMessage: 'Wrong format uploaded (accepted formats only: jpeg, jpg, png, svg).',\n};\n\nconst FILE_SIZING_ERROR_MESSAGE = {\n id: 'Settings.application.customization.modal.upload.error-size',\n defaultMessage:\n 'The file uploaded is too large (max dimension: {dimension}x{dimension}, max file size: {size}KB)',\n};\n\ninterface ImageDimensions {\n height: number;\n width: number;\n}\n\ninterface ImageAsset extends ImageDimensions {\n ext: string | undefined;\n size: number;\n name: string;\n url: string;\n rawFile: File;\n}\n\nconst parseFileMetadatas = async (file: File): Promise<ImageAsset> => {\n const isFormatAuthorized = ACCEPTED_FORMAT.includes(file.type);\n\n if (!isFormatAuthorized) {\n throw new ParsingFileError('File format', FILE_FORMAT_ERROR_MESSAGE);\n }\n\n const fileDimensions = await new Promise<ImageDimensions>((resolve) => {\n const reader = new FileReader();\n reader.onload = () => {\n const img = new Image();\n img.onload = () => {\n resolve({ width: img.width, height: img.height });\n };\n img.src = reader.result as string;\n };\n reader.readAsDataURL(file);\n });\n\n const areDimensionsAuthorized =\n fileDimensions.width <= DIMENSION && fileDimensions.height <= DIMENSION;\n\n if (!areDimensionsAuthorized) {\n throw new ParsingFileError('File sizing', FILE_SIZING_ERROR_MESSAGE);\n }\n\n const asset = {\n ext: file.name.split('.').pop(),\n size: file.size / 1000,\n name: file.name,\n url: URL.createObjectURL(file),\n rawFile: file,\n width: fileDimensions.width,\n height: fileDimensions.height,\n };\n\n const isSizeAuthorized = asset.size <= SIZE;\n\n if (!isSizeAuthorized) {\n throw new ParsingFileError('File sizing', FILE_SIZING_ERROR_MESSAGE);\n }\n\n return asset;\n};\n\nclass ParsingFileError extends Error {\n displayMessage: MessageDescriptor;\n\n constructor(message: string, displayMessage: MessageDescriptor, options?: ErrorOptions) {\n super(message, options);\n this.displayMessage = displayMessage;\n }\n}\n\nexport { parseFileMetadatas, ParsingFileError };\nexport type { ImageAsset };\n"],"names":["FILE_FORMAT_ERROR_MESSAGE","id","defaultMessage","FILE_SIZING_ERROR_MESSAGE","parseFileMetadatas","file","isFormatAuthorized","ACCEPTED_FORMAT","includes","type","ParsingFileError","fileDimensions","Promise","resolve","reader","FileReader","onload","img","Image","width","height","src","result","readAsDataURL","areDimensionsAuthorized","DIMENSION","asset","ext","name","split","pop","size","url","URL","createObjectURL","rawFile","isSizeAuthorized","SIZE","Error","
|
|
1
|
+
{"version":3,"file":"files.mjs","sources":["../../../../../../../../../admin/src/pages/Settings/pages/ApplicationInfo/utils/files.ts"],"sourcesContent":["import { ACCEPTED_FORMAT, DIMENSION, SIZE } from './constants';\n\nimport type { MessageDescriptor } from 'react-intl';\n\nconst FILE_FORMAT_ERROR_MESSAGE = {\n id: 'Settings.application.customization.modal.upload.error-format',\n defaultMessage: 'Wrong format uploaded (accepted formats only: jpeg, jpg, png, svg).',\n};\n\nconst FILE_SIZING_ERROR_MESSAGE = {\n id: 'Settings.application.customization.modal.upload.error-size',\n defaultMessage:\n 'The file uploaded is too large (max dimension: {dimension}x{dimension}, max file size: {size}KB)',\n};\n\ninterface ImageDimensions {\n height: number;\n width: number;\n}\n\ninterface ImageAsset extends ImageDimensions {\n ext: string | undefined;\n size: number;\n name: string;\n url: string;\n rawFile: File;\n}\n\nconst parseFileMetadatas = async (file: File): Promise<ImageAsset> => {\n const isFormatAuthorized = ACCEPTED_FORMAT.includes(file.type);\n\n if (!isFormatAuthorized) {\n throw new ParsingFileError('File format', FILE_FORMAT_ERROR_MESSAGE);\n }\n\n const fileDimensions = await new Promise<ImageDimensions>((resolve) => {\n const reader = new FileReader();\n reader.onload = () => {\n const img = new Image();\n img.onload = () => {\n resolve({ width: img.width, height: img.height });\n };\n img.src = reader.result as string;\n };\n reader.readAsDataURL(file);\n });\n\n const areDimensionsAuthorized =\n fileDimensions.width <= DIMENSION && fileDimensions.height <= DIMENSION;\n\n if (!areDimensionsAuthorized) {\n throw new ParsingFileError('File sizing', FILE_SIZING_ERROR_MESSAGE);\n }\n\n const asset = {\n ext: file.name.split('.').pop(),\n size: file.size / 1000,\n name: file.name,\n url: URL.createObjectURL(file),\n rawFile: file,\n width: fileDimensions.width,\n height: fileDimensions.height,\n };\n\n const isSizeAuthorized = asset.size <= SIZE;\n\n if (!isSizeAuthorized) {\n throw new ParsingFileError('File sizing', FILE_SIZING_ERROR_MESSAGE);\n }\n\n return asset;\n};\n\nclass ParsingFileError extends Error {\n displayMessage: MessageDescriptor;\n\n constructor(message: string, displayMessage: MessageDescriptor, options?: ErrorOptions) {\n super(message, options);\n this.displayMessage = displayMessage;\n }\n}\n\nexport { parseFileMetadatas, ParsingFileError };\nexport type { ImageAsset };\n"],"names":["FILE_FORMAT_ERROR_MESSAGE","id","defaultMessage","FILE_SIZING_ERROR_MESSAGE","parseFileMetadatas","file","isFormatAuthorized","ACCEPTED_FORMAT","includes","type","ParsingFileError","fileDimensions","Promise","resolve","reader","FileReader","onload","img","Image","width","height","src","result","readAsDataURL","areDimensionsAuthorized","DIMENSION","asset","ext","name","split","pop","size","url","URL","createObjectURL","rawFile","isSizeAuthorized","SIZE","Error","message","displayMessage","options"],"mappings":";;AAIA,MAAMA,yBAA4B,GAAA;IAChCC,EAAI,EAAA,8DAAA;IACJC,cAAgB,EAAA;AAClB,CAAA;AAEA,MAAMC,yBAA4B,GAAA;IAChCF,EAAI,EAAA,4DAAA;IACJC,cACE,EAAA;AACJ,CAAA;AAeA,MAAME,qBAAqB,OAAOC,IAAAA,GAAAA;AAChC,IAAA,MAAMC,kBAAqBC,GAAAA,eAAAA,CAAgBC,QAAQ,CAACH,KAAKI,IAAI,CAAA;AAE7D,IAAA,IAAI,CAACH,kBAAoB,EAAA;QACvB,MAAM,IAAII,iBAAiB,aAAeV,EAAAA,yBAAAA,CAAAA;AAC5C;AAEA,IAAA,MAAMW,cAAiB,GAAA,MAAM,IAAIC,OAAAA,CAAyB,CAACC,OAAAA,GAAAA;AACzD,QAAA,MAAMC,SAAS,IAAIC,UAAAA,EAAAA;AACnBD,QAAAA,MAAAA,CAAOE,MAAM,GAAG,IAAA;AACd,YAAA,MAAMC,MAAM,IAAIC,KAAAA,EAAAA;AAChBD,YAAAA,GAAAA,CAAID,MAAM,GAAG,IAAA;gBACXH,OAAQ,CAAA;AAAEM,oBAAAA,KAAAA,EAAOF,IAAIE,KAAK;AAAEC,oBAAAA,MAAAA,EAAQH,IAAIG;AAAO,iBAAA,CAAA;AACjD,aAAA;YACAH,GAAII,CAAAA,GAAG,GAAGP,MAAAA,CAAOQ,MAAM;AACzB,SAAA;AACAR,QAAAA,MAAAA,CAAOS,aAAa,CAAClB,IAAAA,CAAAA;AACvB,KAAA,CAAA;AAEA,IAAA,MAAMmB,0BACJb,cAAeQ,CAAAA,KAAK,IAAIM,SAAad,IAAAA,cAAAA,CAAeS,MAAM,IAAIK,SAAAA;AAEhE,IAAA,IAAI,CAACD,uBAAyB,EAAA;QAC5B,MAAM,IAAId,iBAAiB,aAAeP,EAAAA,yBAAAA,CAAAA;AAC5C;AAEA,IAAA,MAAMuB,KAAQ,GAAA;AACZC,QAAAA,GAAAA,EAAKtB,KAAKuB,IAAI,CAACC,KAAK,CAAC,KAAKC,GAAG,EAAA;QAC7BC,IAAM1B,EAAAA,IAAAA,CAAK0B,IAAI,GAAG,IAAA;AAClBH,QAAAA,IAAAA,EAAMvB,KAAKuB,IAAI;QACfI,GAAKC,EAAAA,GAAAA,CAAIC,eAAe,CAAC7B,IAAAA,CAAAA;QACzB8B,OAAS9B,EAAAA,IAAAA;AACTc,QAAAA,KAAAA,EAAOR,eAAeQ,KAAK;AAC3BC,QAAAA,MAAAA,EAAQT,eAAeS;AACzB,KAAA;IAEA,MAAMgB,gBAAAA,GAAmBV,KAAMK,CAAAA,IAAI,IAAIM,IAAAA;AAEvC,IAAA,IAAI,CAACD,gBAAkB,EAAA;QACrB,MAAM,IAAI1B,iBAAiB,aAAeP,EAAAA,yBAAAA,CAAAA;AAC5C;IAEA,OAAOuB,KAAAA;AACT;AAEA,MAAMhB,gBAAyB4B,SAAAA,KAAAA,CAAAA;AAG7B,IAAA,WAAA,CAAYC,OAAe,EAAEC,cAAiC,EAAEC,OAAsB,CAAE;AACtF,QAAA,KAAK,CAACF,OAASE,EAAAA,OAAAA,CAAAA;QACf,IAAI,CAACD,cAAc,GAAGA,cAAAA;AACxB;AACF;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InstalledPlugins.js","sources":["../../../../../../../admin/src/pages/Settings/pages/InstalledPlugins.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Table, Tbody, Td, Th, Thead, Tr, Typography, useNotifyAT } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { Layouts } from '../../../components/Layouts/Layout';\nimport { Page } from '../../../components/PageHelpers';\nimport { useTypedSelector } from '../../../core/store/hooks';\nimport { useNotification } from '../../../features/Notifications';\nimport { useAPIErrorHandler } from '../../../hooks/useAPIErrorHandler';\nimport { useGetPluginsQuery } from '../../../services/admin';\n\nconst InstalledPlugins = () => {\n const { formatMessage } = useIntl();\n const { notifyStatus } = useNotifyAT();\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const { isLoading, data, error } = useGetPluginsQuery();\n\n React.useEffect(() => {\n if (data) {\n notifyStatus(\n formatMessage(\n {\n id: 'app.utils.notify.data-loaded',\n defaultMessage: 'The {target} has loaded',\n },\n {\n target: formatMessage({\n id: 'global.plugins',\n defaultMessage: 'Plugins',\n }),\n }\n )\n );\n }\n\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }, [data, error, formatAPIError, formatMessage, notifyStatus, toggleNotification]);\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n return (\n <>\n <Page.Main>\n <Layouts.Header\n title={formatMessage({\n id: 'global.plugins',\n defaultMessage: 'Plugins',\n })}\n subtitle={formatMessage({\n id: 'app.components.ListPluginsPage.description',\n defaultMessage: 'List of the installed plugins in the project.',\n })}\n />\n <Layouts.Content>\n <Table colCount={2} rowCount={data?.plugins?.length ?? 0 + 1}>\n <Thead>\n <Tr>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n })}\n </Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.description',\n defaultMessage: 'description',\n })}\n </Typography>\n </Th>\n </Tr>\n </Thead>\n <Tbody>\n {data?.plugins.map(({ name, displayName, description }) => {\n return (\n <Tr key={name}>\n <Td>\n <Typography textColor=\"neutral800\" variant=\"omega\" fontWeight=\"bold\">\n {formatMessage({\n id: `global.plugins.${name}`,\n defaultMessage: displayName,\n })}\n </Typography>\n </Td>\n <Td>\n <Typography textColor=\"neutral800\">\n {formatMessage({\n id: `global.plugins.${name}.description`,\n defaultMessage: description,\n })}\n </Typography>\n </Td>\n </Tr>\n );\n })}\n </Tbody>\n </Table>\n </Layouts.Content>\n </Page.Main>\n </>\n );\n};\n\nconst ProtectedInstalledPlugins = () => {\n const { formatMessage } = useIntl();\n const permissions = useTypedSelector((state) => state.admin_app.permissions);\n\n return (\n <Page.Protect permissions={permissions.marketplace?.main}>\n <Page.Title>\n {formatMessage({\n id: 'global.plugins',\n defaultMessage: 'Plugins',\n })}\n </Page.Title>\n <InstalledPlugins />\n </Page.Protect>\n );\n};\n\nexport { ProtectedInstalledPlugins, InstalledPlugins };\n"],"names":["InstalledPlugins","formatMessage","useIntl","notifyStatus","useNotifyAT","toggleNotification","useNotification","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","isLoading","data","error","useGetPluginsQuery","React","useEffect","id","defaultMessage","target","type","message","_jsx","Page","Loading","_Fragment","_jsxs","Main","Layouts","Header","title","subtitle","Content","Table","colCount","rowCount","plugins","length","Thead","Tr","Th","Typography","variant","textColor","Tbody","map","name","displayName","description","Td","fontWeight","ProtectedInstalledPlugins","permissions","useTypedSelector","state","admin_app","Protect","marketplace","main","Title"],"mappings":"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
|
|
1
|
+
{"version":3,"file":"InstalledPlugins.js","sources":["../../../../../../../admin/src/pages/Settings/pages/InstalledPlugins.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Table, Tbody, Td, Th, Thead, Tr, Typography, useNotifyAT } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { Layouts } from '../../../components/Layouts/Layout';\nimport { Page } from '../../../components/PageHelpers';\nimport { useTypedSelector } from '../../../core/store/hooks';\nimport { useNotification } from '../../../features/Notifications';\nimport { useAPIErrorHandler } from '../../../hooks/useAPIErrorHandler';\nimport { useGetPluginsQuery } from '../../../services/admin';\n\nconst InstalledPlugins = () => {\n const { formatMessage } = useIntl();\n const { notifyStatus } = useNotifyAT();\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const { isLoading, data, error } = useGetPluginsQuery();\n\n React.useEffect(() => {\n if (data) {\n notifyStatus(\n formatMessage(\n {\n id: 'app.utils.notify.data-loaded',\n defaultMessage: 'The {target} has loaded',\n },\n {\n target: formatMessage({\n id: 'global.plugins',\n defaultMessage: 'Plugins',\n }),\n }\n )\n );\n }\n\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }, [data, error, formatAPIError, formatMessage, notifyStatus, toggleNotification]);\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n return (\n <>\n <Page.Main>\n <Layouts.Header\n title={formatMessage({\n id: 'global.plugins',\n defaultMessage: 'Plugins',\n })}\n subtitle={formatMessage({\n id: 'app.components.ListPluginsPage.description',\n defaultMessage: 'List of the installed plugins in the project.',\n })}\n />\n <Layouts.Content>\n <Table colCount={2} rowCount={data?.plugins?.length ?? 0 + 1}>\n <Thead>\n <Tr>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n })}\n </Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.description',\n defaultMessage: 'description',\n })}\n </Typography>\n </Th>\n </Tr>\n </Thead>\n <Tbody>\n {data?.plugins.map(({ name, displayName, description }) => {\n return (\n <Tr key={name}>\n <Td>\n <Typography textColor=\"neutral800\" variant=\"omega\" fontWeight=\"bold\">\n {formatMessage({\n id: `global.plugins.${name}`,\n defaultMessage: displayName,\n })}\n </Typography>\n </Td>\n <Td>\n <Typography textColor=\"neutral800\">\n {formatMessage({\n id: `global.plugins.${name}.description`,\n defaultMessage: description,\n })}\n </Typography>\n </Td>\n </Tr>\n );\n })}\n </Tbody>\n </Table>\n </Layouts.Content>\n </Page.Main>\n </>\n );\n};\n\nconst ProtectedInstalledPlugins = () => {\n const { formatMessage } = useIntl();\n const permissions = useTypedSelector((state) => state.admin_app.permissions);\n\n return (\n <Page.Protect permissions={permissions.marketplace?.main}>\n <Page.Title>\n {formatMessage({\n id: 'global.plugins',\n defaultMessage: 'Plugins',\n })}\n </Page.Title>\n <InstalledPlugins />\n </Page.Protect>\n );\n};\n\nexport { ProtectedInstalledPlugins, InstalledPlugins };\n"],"names":["InstalledPlugins","formatMessage","useIntl","notifyStatus","useNotifyAT","toggleNotification","useNotification","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","isLoading","data","error","useGetPluginsQuery","React","useEffect","id","defaultMessage","target","type","message","_jsx","Page","Loading","_Fragment","_jsxs","Main","Layouts","Header","title","subtitle","Content","Table","colCount","rowCount","plugins","length","Thead","Tr","Th","Typography","variant","textColor","Tbody","map","name","displayName","description","Td","fontWeight","ProtectedInstalledPlugins","permissions","useTypedSelector","state","admin_app","Protect","marketplace","main","Title"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InstalledPlugins.mjs","sources":["../../../../../../../admin/src/pages/Settings/pages/InstalledPlugins.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Table, Tbody, Td, Th, Thead, Tr, Typography, useNotifyAT } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { Layouts } from '../../../components/Layouts/Layout';\nimport { Page } from '../../../components/PageHelpers';\nimport { useTypedSelector } from '../../../core/store/hooks';\nimport { useNotification } from '../../../features/Notifications';\nimport { useAPIErrorHandler } from '../../../hooks/useAPIErrorHandler';\nimport { useGetPluginsQuery } from '../../../services/admin';\n\nconst InstalledPlugins = () => {\n const { formatMessage } = useIntl();\n const { notifyStatus } = useNotifyAT();\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const { isLoading, data, error } = useGetPluginsQuery();\n\n React.useEffect(() => {\n if (data) {\n notifyStatus(\n formatMessage(\n {\n id: 'app.utils.notify.data-loaded',\n defaultMessage: 'The {target} has loaded',\n },\n {\n target: formatMessage({\n id: 'global.plugins',\n defaultMessage: 'Plugins',\n }),\n }\n )\n );\n }\n\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }, [data, error, formatAPIError, formatMessage, notifyStatus, toggleNotification]);\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n return (\n <>\n <Page.Main>\n <Layouts.Header\n title={formatMessage({\n id: 'global.plugins',\n defaultMessage: 'Plugins',\n })}\n subtitle={formatMessage({\n id: 'app.components.ListPluginsPage.description',\n defaultMessage: 'List of the installed plugins in the project.',\n })}\n />\n <Layouts.Content>\n <Table colCount={2} rowCount={data?.plugins?.length ?? 0 + 1}>\n <Thead>\n <Tr>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n })}\n </Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.description',\n defaultMessage: 'description',\n })}\n </Typography>\n </Th>\n </Tr>\n </Thead>\n <Tbody>\n {data?.plugins.map(({ name, displayName, description }) => {\n return (\n <Tr key={name}>\n <Td>\n <Typography textColor=\"neutral800\" variant=\"omega\" fontWeight=\"bold\">\n {formatMessage({\n id: `global.plugins.${name}`,\n defaultMessage: displayName,\n })}\n </Typography>\n </Td>\n <Td>\n <Typography textColor=\"neutral800\">\n {formatMessage({\n id: `global.plugins.${name}.description`,\n defaultMessage: description,\n })}\n </Typography>\n </Td>\n </Tr>\n );\n })}\n </Tbody>\n </Table>\n </Layouts.Content>\n </Page.Main>\n </>\n );\n};\n\nconst ProtectedInstalledPlugins = () => {\n const { formatMessage } = useIntl();\n const permissions = useTypedSelector((state) => state.admin_app.permissions);\n\n return (\n <Page.Protect permissions={permissions.marketplace?.main}>\n <Page.Title>\n {formatMessage({\n id: 'global.plugins',\n defaultMessage: 'Plugins',\n })}\n </Page.Title>\n <InstalledPlugins />\n </Page.Protect>\n );\n};\n\nexport { ProtectedInstalledPlugins, InstalledPlugins };\n"],"names":["InstalledPlugins","formatMessage","useIntl","notifyStatus","useNotifyAT","toggleNotification","useNotification","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","isLoading","data","error","useGetPluginsQuery","React","useEffect","id","defaultMessage","target","type","message","_jsx","Page","Loading","_Fragment","_jsxs","Main","Layouts","Header","title","subtitle","Content","Table","colCount","rowCount","plugins","length","Thead","Tr","Th","Typography","variant","textColor","Tbody","map","name","displayName","description","Td","fontWeight","ProtectedInstalledPlugins","permissions","useTypedSelector","state","admin_app","Protect","marketplace","main","Title"],"mappings":"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
|
|
1
|
+
{"version":3,"file":"InstalledPlugins.mjs","sources":["../../../../../../../admin/src/pages/Settings/pages/InstalledPlugins.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Table, Tbody, Td, Th, Thead, Tr, Typography, useNotifyAT } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { Layouts } from '../../../components/Layouts/Layout';\nimport { Page } from '../../../components/PageHelpers';\nimport { useTypedSelector } from '../../../core/store/hooks';\nimport { useNotification } from '../../../features/Notifications';\nimport { useAPIErrorHandler } from '../../../hooks/useAPIErrorHandler';\nimport { useGetPluginsQuery } from '../../../services/admin';\n\nconst InstalledPlugins = () => {\n const { formatMessage } = useIntl();\n const { notifyStatus } = useNotifyAT();\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const { isLoading, data, error } = useGetPluginsQuery();\n\n React.useEffect(() => {\n if (data) {\n notifyStatus(\n formatMessage(\n {\n id: 'app.utils.notify.data-loaded',\n defaultMessage: 'The {target} has loaded',\n },\n {\n target: formatMessage({\n id: 'global.plugins',\n defaultMessage: 'Plugins',\n }),\n }\n )\n );\n }\n\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }, [data, error, formatAPIError, formatMessage, notifyStatus, toggleNotification]);\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n return (\n <>\n <Page.Main>\n <Layouts.Header\n title={formatMessage({\n id: 'global.plugins',\n defaultMessage: 'Plugins',\n })}\n subtitle={formatMessage({\n id: 'app.components.ListPluginsPage.description',\n defaultMessage: 'List of the installed plugins in the project.',\n })}\n />\n <Layouts.Content>\n <Table colCount={2} rowCount={data?.plugins?.length ?? 0 + 1}>\n <Thead>\n <Tr>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n })}\n </Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.description',\n defaultMessage: 'description',\n })}\n </Typography>\n </Th>\n </Tr>\n </Thead>\n <Tbody>\n {data?.plugins.map(({ name, displayName, description }) => {\n return (\n <Tr key={name}>\n <Td>\n <Typography textColor=\"neutral800\" variant=\"omega\" fontWeight=\"bold\">\n {formatMessage({\n id: `global.plugins.${name}`,\n defaultMessage: displayName,\n })}\n </Typography>\n </Td>\n <Td>\n <Typography textColor=\"neutral800\">\n {formatMessage({\n id: `global.plugins.${name}.description`,\n defaultMessage: description,\n })}\n </Typography>\n </Td>\n </Tr>\n );\n })}\n </Tbody>\n </Table>\n </Layouts.Content>\n </Page.Main>\n </>\n );\n};\n\nconst ProtectedInstalledPlugins = () => {\n const { formatMessage } = useIntl();\n const permissions = useTypedSelector((state) => state.admin_app.permissions);\n\n return (\n <Page.Protect permissions={permissions.marketplace?.main}>\n <Page.Title>\n {formatMessage({\n id: 'global.plugins',\n defaultMessage: 'Plugins',\n })}\n </Page.Title>\n <InstalledPlugins />\n </Page.Protect>\n );\n};\n\nexport { ProtectedInstalledPlugins, InstalledPlugins };\n"],"names":["InstalledPlugins","formatMessage","useIntl","notifyStatus","useNotifyAT","toggleNotification","useNotification","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","isLoading","data","error","useGetPluginsQuery","React","useEffect","id","defaultMessage","target","type","message","_jsx","Page","Loading","_Fragment","_jsxs","Main","Layouts","Header","title","subtitle","Content","Table","colCount","rowCount","plugins","length","Thead","Tr","Th","Typography","variant","textColor","Tbody","map","name","displayName","description","Td","fontWeight","ProtectedInstalledPlugins","permissions","useTypedSelector","state","admin_app","Protect","marketplace","main","Title"],"mappings":"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"}
|
|
@@ -194,8 +194,15 @@ var yup__namespace = /*#__PURE__*/_interopNamespaceDefault(yup);
|
|
|
194
194
|
id: 'Settings.roles.create.description',
|
|
195
195
|
defaultMessage: 'Define the rights given to the role'
|
|
196
196
|
}),
|
|
197
|
-
navigationAction:
|
|
198
|
-
|
|
197
|
+
navigationAction: // The back link for mobile works differently; it is placed higher up in the DOM.
|
|
198
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
|
|
199
|
+
display: {
|
|
200
|
+
initial: 'none',
|
|
201
|
+
medium: 'block'
|
|
202
|
+
},
|
|
203
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(BackButton.BackButton, {
|
|
204
|
+
fallback: "../roles"
|
|
205
|
+
})
|
|
199
206
|
})
|
|
200
207
|
}),
|
|
201
208
|
/*#__PURE__*/ jsxRuntime.jsx(Layout.Layouts.Content, {
|