@strapi/admin 5.50.0 → 5.50.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/components/ConfirmDialog.js +2 -2
- package/dist/admin/admin/src/components/ConfirmDialog.js.map +1 -1
- package/dist/admin/admin/src/components/ContentBox.js +3 -3
- package/dist/admin/admin/src/components/ContentBox.js.map +1 -1
- package/dist/admin/admin/src/components/DescriptionComponentRenderer.js +8 -8
- package/dist/admin/admin/src/components/DescriptionComponentRenderer.js.map +1 -1
- package/dist/admin/admin/src/components/DescriptionComponentRenderer.mjs +8 -8
- package/dist/admin/admin/src/components/DescriptionComponentRenderer.mjs.map +1 -1
- package/dist/admin/admin/src/components/ErrorElement.js +4 -4
- package/dist/admin/admin/src/components/ErrorElement.js.map +1 -1
- package/dist/admin/admin/src/components/Form.js +41 -27
- package/dist/admin/admin/src/components/Form.js.map +1 -1
- package/dist/admin/admin/src/components/Form.mjs +41 -27
- package/dist/admin/admin/src/components/Form.mjs.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Date.js +1 -1
- package/dist/admin/admin/src/components/FormInputs/Date.js.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Date.mjs +1 -1
- package/dist/admin/admin/src/components/FormInputs/Date.mjs.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Email.js.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Email.mjs.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Enumeration.js +4 -1
- package/dist/admin/admin/src/components/FormInputs/Enumeration.js.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Enumeration.mjs +4 -1
- package/dist/admin/admin/src/components/FormInputs/Enumeration.mjs.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Json.js +2 -1
- package/dist/admin/admin/src/components/FormInputs/Json.js.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Json.mjs +2 -1
- package/dist/admin/admin/src/components/FormInputs/Json.mjs.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Password.js.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Password.mjs.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Renderer.js +18 -26
- package/dist/admin/admin/src/components/FormInputs/Renderer.js.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Renderer.mjs +20 -28
- package/dist/admin/admin/src/components/FormInputs/Renderer.mjs.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/String.js.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/String.mjs.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Textarea.js.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Textarea.mjs.map +1 -1
- package/dist/admin/admin/src/components/GapDropZone.js +2 -2
- package/dist/admin/admin/src/components/GapDropZone.js.map +1 -1
- package/dist/admin/admin/src/components/GradientBadge.js +3 -3
- package/dist/admin/admin/src/components/GradientBadge.js.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Overview.js +8 -8
- package/dist/admin/admin/src/components/GuidedTour/Overview.js.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Steps/Step.js +4 -4
- package/dist/admin/admin/src/components/GuidedTour/Steps/Step.js.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Steps/Step.mjs.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Tours.js +2 -2
- package/dist/admin/admin/src/components/GuidedTour/Tours.js.map +1 -1
- package/dist/admin/admin/src/components/Layouts/ActionLayout.js +2 -2
- package/dist/admin/admin/src/components/Layouts/ActionLayout.js.map +1 -1
- package/dist/admin/admin/src/components/Layouts/GridLayout.js +2 -2
- package/dist/admin/admin/src/components/Layouts/GridLayout.js.map +1 -1
- package/dist/admin/admin/src/components/Layouts/Layout.js +4 -4
- package/dist/admin/admin/src/components/Layouts/Layout.js.map +1 -1
- package/dist/admin/admin/src/components/LeftMenu.js +3 -3
- package/dist/admin/admin/src/components/LeftMenu.js.map +1 -1
- package/dist/admin/admin/src/components/MainNav/MainNav.js +2 -2
- package/dist/admin/admin/src/components/MainNav/MainNav.js.map +1 -1
- package/dist/admin/admin/src/components/MainNav/MainNavLinks.js +4 -4
- package/dist/admin/admin/src/components/MainNav/MainNavLinks.js.map +1 -1
- package/dist/admin/admin/src/components/MainNav/NavBrand.js +2 -2
- package/dist/admin/admin/src/components/MainNav/NavBrand.js.map +1 -1
- package/dist/admin/admin/src/components/MainNav/NavBurgerMenu.js +3 -3
- package/dist/admin/admin/src/components/MainNav/NavBurgerMenu.js.map +1 -1
- package/dist/admin/admin/src/components/MainNav/NavLink.js +8 -8
- package/dist/admin/admin/src/components/MainNav/NavLink.js.map +1 -1
- package/dist/admin/admin/src/components/MainNav/NavUser.js +7 -7
- package/dist/admin/admin/src/components/MainNav/NavUser.js.map +1 -1
- package/dist/admin/admin/src/components/MainNav/TrialCountdown.js +3 -3
- package/dist/admin/admin/src/components/MainNav/TrialCountdown.js.map +1 -1
- package/dist/admin/admin/src/components/NpsSurvey.js +2 -2
- package/dist/admin/admin/src/components/NpsSurvey.js.map +1 -1
- package/dist/admin/admin/src/components/ResizeIndicator.js +6 -6
- package/dist/admin/admin/src/components/ResizeIndicator.js.map +1 -1
- package/dist/admin/admin/src/components/SubNav.js +11 -9
- package/dist/admin/admin/src/components/SubNav.js.map +1 -1
- package/dist/admin/admin/src/components/SubNav.mjs +4 -2
- package/dist/admin/admin/src/components/SubNav.mjs.map +1 -1
- package/dist/admin/admin/src/components/Table.js +9 -5
- package/dist/admin/admin/src/components/Table.js.map +1 -1
- package/dist/admin/admin/src/components/Table.mjs +6 -2
- package/dist/admin/admin/src/components/Table.mjs.map +1 -1
- package/dist/admin/admin/src/components/Theme.js +2 -2
- package/dist/admin/admin/src/components/Theme.js.map +1 -1
- package/dist/admin/admin/src/components/UnauthenticatedLogo.js +2 -2
- package/dist/admin/admin/src/components/UnauthenticatedLogo.js.map +1 -1
- package/dist/admin/admin/src/components/UpsellBanner.js +3 -3
- package/dist/admin/admin/src/components/UpsellBanner.js.map +1 -1
- package/dist/admin/admin/src/components/WidgetRoot.js +4 -7
- package/dist/admin/admin/src/components/WidgetRoot.js.map +1 -1
- package/dist/admin/admin/src/components/WidgetRoot.mjs +1 -1
- package/dist/admin/admin/src/components/WidgetRoot.mjs.map +1 -1
- package/dist/admin/admin/src/components/Widgets.js +5 -5
- package/dist/admin/admin/src/components/Widgets.js.map +1 -1
- package/dist/admin/admin/src/core/apis/Plugin.js.map +1 -1
- package/dist/admin/admin/src/core/apis/Plugin.mjs.map +1 -1
- package/dist/admin/admin/src/core/apis/Widgets.js +1 -1
- package/dist/admin/admin/src/core/apis/Widgets.js.map +1 -1
- package/dist/admin/admin/src/core/apis/Widgets.mjs +1 -1
- package/dist/admin/admin/src/core/apis/Widgets.mjs.map +1 -1
- package/dist/admin/admin/src/core/store/configure.js.map +1 -1
- package/dist/admin/admin/src/core/store/configure.mjs.map +1 -1
- package/dist/admin/admin/src/core/utils/createHook.js.map +1 -1
- package/dist/admin/admin/src/core/utils/createHook.mjs.map +1 -1
- package/dist/admin/admin/src/features/Tracking.js +3 -1
- package/dist/admin/admin/src/features/Tracking.js.map +1 -1
- package/dist/admin/admin/src/features/Tracking.mjs +3 -1
- package/dist/admin/admin/src/features/Tracking.mjs.map +1 -1
- package/dist/admin/admin/src/features/Widgets.js.map +1 -1
- package/dist/admin/admin/src/features/Widgets.mjs.map +1 -1
- package/dist/admin/admin/src/hooks/useMediaQuery.js +4 -4
- package/dist/admin/admin/src/hooks/useMediaQuery.js.map +1 -1
- package/dist/admin/admin/src/hooks/useMenu.js +5 -3
- package/dist/admin/admin/src/hooks/useMenu.js.map +1 -1
- package/dist/admin/admin/src/hooks/useMenu.mjs +5 -3
- package/dist/admin/admin/src/hooks/useMenu.mjs.map +1 -1
- package/dist/admin/admin/src/hooks/useQueryParams.js.map +1 -1
- package/dist/admin/admin/src/hooks/useQueryParams.mjs.map +1 -1
- package/dist/admin/admin/src/hooks/useThrottledCallback.js.map +1 -1
- package/dist/admin/admin/src/hooks/useThrottledCallback.mjs.map +1 -1
- package/dist/admin/admin/src/layouts/AuthenticatedLayout.js +1 -1
- package/dist/admin/admin/src/layouts/AuthenticatedLayout.js.map +1 -1
- package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs +1 -1
- package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs.map +1 -1
- package/dist/admin/admin/src/layouts/UnauthenticatedLayout.js +3 -3
- package/dist/admin/admin/src/layouts/UnauthenticatedLayout.js.map +1 -1
- package/dist/admin/admin/src/pages/Auth/components/Register.js +17 -9
- package/dist/admin/admin/src/pages/Auth/components/Register.js.map +1 -1
- package/dist/admin/admin/src/pages/Auth/components/Register.mjs +15 -7
- package/dist/admin/admin/src/pages/Auth/components/Register.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Home/HomePage.js +2 -2
- package/dist/admin/admin/src/pages/Home/HomePage.js.map +1 -1
- package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.js +3 -6
- package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.js.map +1 -1
- package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.mjs +1 -1
- package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.js +4 -8
- package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.js.map +1 -1
- package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.mjs +1 -1
- package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.js +4 -8
- package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.js.map +1 -1
- package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.mjs +1 -1
- package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/SettingsNav.js +2 -2
- package/dist/admin/admin/src/pages/Settings/components/SettingsNav.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/SettingsNav.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.js +2 -2
- package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.js +2 -2
- package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.js +2 -2
- package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.js +2 -2
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.js +4 -4
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/reducer.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/reducer.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js +0 -2
- 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 +0 -2
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.js +2 -2
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.js +2 -2
- package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapseLabel.js +2 -2
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapseLabel.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.js +10 -10
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsButton.js +3 -3
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsButton.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.js +5 -5
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/HiddenAction.js +2 -2
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/HiddenAction.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.js +3 -3
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/createArrayOfValues.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/createArrayOfValues.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/components/SelectRoles.js +3 -3
- package/dist/admin/admin/src/pages/Settings/pages/Users/components/SelectRoles.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/Events.js +2 -2
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/Events.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.js +2 -2
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.mjs.map +1 -1
- package/dist/admin/admin/src/translations/ja.json.js +693 -687
- package/dist/admin/admin/src/translations/ja.json.js.map +1 -1
- package/dist/admin/admin/src/translations/ja.json.mjs +693 -687
- package/dist/admin/admin/src/translations/ja.json.mjs.map +1 -1
- package/dist/admin/admin/src/translations/pl.json.js +22 -0
- package/dist/admin/admin/src/translations/pl.json.js.map +1 -1
- package/dist/admin/admin/src/translations/pl.json.mjs +22 -0
- package/dist/admin/admin/src/translations/pl.json.mjs.map +1 -1
- package/dist/admin/admin/src/utils/arrays.js.map +1 -1
- package/dist/admin/admin/src/utils/arrays.mjs.map +1 -1
- package/dist/admin/admin/src/utils/baseQuery.js +1 -1
- package/dist/admin/admin/src/utils/baseQuery.js.map +1 -1
- package/dist/admin/admin/src/utils/baseQuery.mjs +1 -1
- package/dist/admin/admin/src/utils/baseQuery.mjs.map +1 -1
- package/dist/admin/admin/src/utils/getFetchClient.js.map +1 -1
- package/dist/admin/admin/src/utils/getFetchClient.mjs.map +1 -1
- package/dist/admin/admin/src/utils/objects.js +43 -11
- package/dist/admin/admin/src/utils/objects.js.map +1 -1
- package/dist/admin/admin/src/utils/objects.mjs +43 -11
- package/dist/admin/admin/src/utils/objects.mjs.map +1 -1
- package/dist/admin/admin/src/utils/once.js.map +1 -1
- package/dist/admin/admin/src/utils/once.mjs.map +1 -1
- package/dist/admin/admin/src/utils/rulesEngine.js +2 -1
- package/dist/admin/admin/src/utils/rulesEngine.js.map +1 -1
- package/dist/admin/admin/src/utils/rulesEngine.mjs +2 -1
- package/dist/admin/admin/src/utils/rulesEngine.mjs.map +1 -1
- package/dist/admin/admin/src/utils/shims.js.map +1 -1
- package/dist/admin/admin/src/utils/shims.mjs.map +1 -1
- package/dist/admin/admin/src/utils/widgetVisibility.js +16 -1
- package/dist/admin/admin/src/utils/widgetVisibility.js.map +1 -1
- package/dist/admin/admin/src/utils/widgetVisibility.mjs +14 -2
- package/dist/admin/admin/src/utils/widgetVisibility.mjs.map +1 -1
- package/dist/admin/ee/admin/src/components/AuditLogs/Widgets.js +2 -2
- package/dist/admin/ee/admin/src/components/AuditLogs/Widgets.js.map +1 -1
- package/dist/admin/ee/admin/src/hooks/useLicenseLimitNotification.js +2 -2
- package/dist/admin/ee/admin/src/hooks/useLicenseLimitNotification.js.map +1 -1
- package/dist/admin/ee/admin/src/hooks/useLicenseLimitNotification.mjs +2 -2
- package/dist/admin/ee/admin/src/hooks/useLicenseLimitNotification.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/AuthPage/components/Login.js +2 -2
- package/dist/admin/ee/admin/src/pages/AuthPage/components/Login.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/AuthPage/components/Providers.js +2 -2
- package/dist/admin/ee/admin/src/pages/AuthPage/components/Providers.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/AuthPage/components/SSOProviders.js +3 -3
- package/dist/admin/ee/admin/src/pages/AuthPage/components/SSOProviders.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.js +3 -3
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/ComboboxFilter.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/ComboboxFilter.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/Modal.js +2 -2
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/Modal.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.mjs.map +1 -1
- package/dist/admin/src/StrapiApp.d.ts +2 -2
- package/dist/admin/src/components/DescriptionComponentRenderer.d.ts +2 -1
- package/dist/admin/src/components/Form.d.ts +14 -12
- package/dist/admin/src/components/FormInputs/Renderer.d.ts +1 -1
- package/dist/admin/src/components/GuidedTour/Steps/Step.d.ts +1 -1
- package/dist/admin/src/components/SubNav.d.ts +1 -1
- package/dist/admin/src/components/Table.d.ts +3 -2
- package/dist/admin/src/core/apis/Plugin.d.ts +1 -1
- package/dist/admin/src/core/utils/createHook.d.ts +6 -6
- package/dist/admin/src/hooks/useAdminRoles.d.ts +1 -1
- package/dist/admin/src/hooks/useMenu.d.ts +1 -1
- package/dist/admin/src/hooks/useQueryParams.d.ts +2 -1
- package/dist/admin/src/hooks/useThrottledCallback.d.ts +1 -1
- package/dist/admin/src/pages/Settings/pages/ApiTokens/EditView/reducer.d.ts +1 -1
- package/dist/admin/src/pages/Settings/pages/Roles/utils/createArrayOfValues.d.ts +1 -1
- package/dist/admin/src/pages/Settings/pages/Webhooks/hooks/useWebhooks.d.ts +4 -4
- package/dist/admin/src/services/admin.d.ts +6 -6
- package/dist/admin/src/services/api.d.ts +1 -1
- package/dist/admin/src/services/apiTokens.d.ts +2 -2
- package/dist/admin/src/services/auth.d.ts +12 -12
- package/dist/admin/src/services/contentApi.d.ts +1 -1
- package/dist/admin/src/services/contentManager.d.ts +1 -1
- package/dist/admin/src/services/homepage.d.ts +3 -3
- package/dist/admin/src/services/transferTokens.d.ts +1 -1
- package/dist/admin/src/services/users.d.ts +8 -8
- package/dist/admin/src/services/webhooks.d.ts +2 -2
- package/dist/admin/src/utils/arrays.d.ts +1 -1
- package/dist/admin/src/utils/baseQuery.d.ts +1 -1
- package/dist/admin/src/utils/getFetchClient.d.ts +7 -7
- package/dist/admin/src/utils/objects.d.ts +6 -4
- package/dist/admin/src/utils/once.d.ts +1 -1
- package/dist/admin/src/utils/widgetVisibility.d.ts +11 -0
- package/dist/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/tableHeaders.d.ts +2 -1
- package/dist/ee/admin/src/services/ai.d.ts +3 -3
- package/dist/ee/admin/src/services/auditLogs.d.ts +1 -1
- package/dist/server/server/src/services/permission/sections-builder/handlers.js +9 -2
- package/dist/server/server/src/services/permission/sections-builder/handlers.js.map +1 -1
- package/dist/server/server/src/services/permission/sections-builder/handlers.mjs +9 -2
- package/dist/server/server/src/services/permission/sections-builder/handlers.mjs.map +1 -1
- package/dist/server/server/src/services/role.js +5 -1
- package/dist/server/server/src/services/role.js.map +1 -1
- package/dist/server/server/src/services/role.mjs +5 -1
- package/dist/server/server/src/services/role.mjs.map +1 -1
- package/dist/server/server/src/validation/common-validators.js +19 -11
- package/dist/server/server/src/validation/common-validators.js.map +1 -1
- package/dist/server/server/src/validation/common-validators.mjs +19 -11
- package/dist/server/server/src/validation/common-validators.mjs.map +1 -1
- package/dist/server/server/src/validation/permission.js +1 -1
- package/dist/server/server/src/validation/permission.js.map +1 -1
- package/dist/server/server/src/validation/permission.mjs +1 -1
- package/dist/server/server/src/validation/permission.mjs.map +1 -1
- package/dist/server/server/src/validation/role.js +2 -2
- package/dist/server/server/src/validation/role.js.map +1 -1
- package/dist/server/server/src/validation/role.mjs +2 -2
- package/dist/server/server/src/validation/role.mjs.map +1 -1
- package/dist/server/src/services/permission/sections-builder/handlers.d.ts.map +1 -1
- package/dist/server/src/services/role.d.ts.map +1 -1
- package/dist/server/src/validation/common-validators.d.ts.map +1 -1
- package/dist/server/src/validation/role.d.ts.map +1 -1
- package/package.json +8 -8
|
@@ -8,18 +8,45 @@ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
|
8
8
|
var clone__default = /*#__PURE__*/_interopDefault(clone);
|
|
9
9
|
var toPath__default = /*#__PURE__*/_interopDefault(toPath);
|
|
10
10
|
|
|
11
|
+
const isPathContainer = (obj)=>isObject(obj) || Array.isArray(obj);
|
|
12
|
+
const isPathTraversable = (obj)=>{
|
|
13
|
+
if (obj === null || obj === undefined) {
|
|
14
|
+
return false;
|
|
15
|
+
}
|
|
16
|
+
if (typeof obj === 'boolean') {
|
|
17
|
+
return obj === true;
|
|
18
|
+
}
|
|
19
|
+
if (typeof obj === 'number') {
|
|
20
|
+
return obj !== 0 && Number.isNaN(obj) === false;
|
|
21
|
+
}
|
|
22
|
+
if (typeof obj === 'bigint') {
|
|
23
|
+
return obj !== 0n;
|
|
24
|
+
}
|
|
25
|
+
if (typeof obj === 'string') {
|
|
26
|
+
return obj !== '';
|
|
27
|
+
}
|
|
28
|
+
return true;
|
|
29
|
+
};
|
|
30
|
+
const getPathValue = (container, key)=>Object(container)[key];
|
|
31
|
+
const setPathValue = (container, key, value)=>{
|
|
32
|
+
container[key] = value;
|
|
33
|
+
};
|
|
34
|
+
const deletePathValue = (container, key)=>{
|
|
35
|
+
delete container[key];
|
|
36
|
+
};
|
|
11
37
|
/**
|
|
12
38
|
* Deeply get a value from an object via its path.
|
|
13
39
|
*/ function getIn(obj, key, def, pathStartIndex = 0) {
|
|
14
40
|
const path = toPath__default.default(key);
|
|
15
|
-
|
|
16
|
-
|
|
41
|
+
let currentValue = obj;
|
|
42
|
+
while(isPathTraversable(currentValue) && pathStartIndex < path.length){
|
|
43
|
+
currentValue = getPathValue(currentValue, path[pathStartIndex++]);
|
|
17
44
|
}
|
|
18
45
|
// check if path is not in the end
|
|
19
|
-
if (pathStartIndex !== path.length &&
|
|
46
|
+
if (pathStartIndex !== path.length && isPathTraversable(currentValue) === false) {
|
|
20
47
|
return def;
|
|
21
48
|
}
|
|
22
|
-
return
|
|
49
|
+
return currentValue === undefined ? def : currentValue;
|
|
23
50
|
}
|
|
24
51
|
/** @internal is the given object an Object? */ const isObject = (obj)=>obj !== null && typeof obj === 'object' && !Array.isArray(obj);
|
|
25
52
|
/** @internal is the given object an integer? */ const isInteger = (obj)=>String(Math.floor(Number(obj))) === obj;
|
|
@@ -54,26 +81,31 @@ var toPath__default = /*#__PURE__*/_interopDefault(toPath);
|
|
|
54
81
|
for(; i < pathArray.length - 1; i++){
|
|
55
82
|
const currentPath = pathArray[i];
|
|
56
83
|
const currentObj = getIn(obj, pathArray.slice(0, i + 1));
|
|
57
|
-
if (
|
|
58
|
-
|
|
84
|
+
if (isObject(currentObj) || Array.isArray(currentObj)) {
|
|
85
|
+
const clonedValue = clone__default.default(currentObj);
|
|
86
|
+
setPathValue(resVal, currentPath, clonedValue);
|
|
87
|
+
resVal = clonedValue;
|
|
59
88
|
} else {
|
|
60
89
|
const nextPath = pathArray[i + 1];
|
|
61
|
-
|
|
90
|
+
const nextValue = isInteger(nextPath) && Number(nextPath) >= 0 ? [] : {};
|
|
91
|
+
setPathValue(resVal, currentPath, nextValue);
|
|
92
|
+
resVal = nextValue;
|
|
62
93
|
}
|
|
63
94
|
}
|
|
64
95
|
// Return original object if new value is the same as current
|
|
65
|
-
|
|
96
|
+
const currentValue = isPathContainer(obj) && i === 0 ? getPathValue(obj, pathArray[i]) : getPathValue(resVal, pathArray[i]);
|
|
97
|
+
if (currentValue === value) {
|
|
66
98
|
return obj;
|
|
67
99
|
}
|
|
68
100
|
if (value === undefined) {
|
|
69
|
-
|
|
101
|
+
deletePathValue(resVal, pathArray[i]);
|
|
70
102
|
} else {
|
|
71
|
-
resVal
|
|
103
|
+
setPathValue(resVal, pathArray[i], value);
|
|
72
104
|
}
|
|
73
105
|
// If the path array has a single element, the loop did not run.
|
|
74
106
|
// Deleting on `resVal` had no effect in this scenario, so we delete on the result instead.
|
|
75
107
|
if (i === 0 && value === undefined) {
|
|
76
|
-
|
|
108
|
+
deletePathValue(res, pathArray[i]);
|
|
77
109
|
}
|
|
78
110
|
return res;
|
|
79
111
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"objects.js","sources":["../../../../../admin/src/utils/objects.ts"],"sourcesContent":["import clone from 'lodash/clone';\nimport toPath from 'lodash/toPath';\n\n/**\n * Deeply get a value from an object via its path.\n */\nexport function getIn(obj:
|
|
1
|
+
{"version":3,"file":"objects.js","sources":["../../../../../admin/src/utils/objects.ts"],"sourcesContent":["import clone from 'lodash/clone';\nimport toPath from 'lodash/toPath';\n\ntype PathObject = Record<string, unknown>;\ntype PathContainer = PathObject | unknown[];\n\nconst isPathContainer = (obj: unknown): obj is PathContainer => isObject(obj) || Array.isArray(obj);\nconst isPathTraversable = (obj: unknown): boolean => {\n if (obj === null || obj === undefined) {\n return false;\n }\n\n if (typeof obj === 'boolean') {\n return obj === true;\n }\n\n if (typeof obj === 'number') {\n return obj !== 0 && Number.isNaN(obj) === false;\n }\n\n if (typeof obj === 'bigint') {\n return obj !== 0n;\n }\n\n if (typeof obj === 'string') {\n return obj !== '';\n }\n\n return true;\n};\nconst getPathValue = (container: unknown, key: string): unknown =>\n (Object(container) as PathObject)[key];\nconst setPathValue = (container: PathContainer, key: string, value: unknown) => {\n (container as PathObject)[key] = value;\n};\nconst deletePathValue = (container: PathContainer, key: string) => {\n delete (container as PathObject)[key];\n};\n\n/**\n * Deeply get a value from an object via its path.\n */\nexport function getIn<T = unknown>(\n obj: unknown,\n key: string | string[],\n def?: T,\n pathStartIndex: number = 0\n) {\n const path = toPath(key);\n let currentValue = obj;\n\n while (isPathTraversable(currentValue) && pathStartIndex < path.length) {\n currentValue = getPathValue(currentValue, path[pathStartIndex++]);\n }\n\n // check if path is not in the end\n if (pathStartIndex !== path.length && isPathTraversable(currentValue) === false) {\n return def;\n }\n\n return currentValue === undefined ? def : currentValue;\n}\n\n/** @internal is the given object an Object? */\nexport const isObject = (obj: unknown): obj is PathObject =>\n obj !== null && typeof obj === 'object' && !Array.isArray(obj);\n\n/** @internal is the given object an integer? */\nexport const isInteger = (obj: unknown): boolean => String(Math.floor(Number(obj))) === obj;\n\n/**\n * Deeply set a value from in object via its path. If the value at `path`\n * has changed, return a shallow copy of obj with `value` set at `path`.\n * If `value` has not changed, return the original `obj`.\n *\n * Existing objects / arrays along `path` are also shallow copied. Sibling\n * objects along path retain the same internal js reference. Since new\n * objects / arrays are only created along `path`, we can test if anything\n * changed in a nested structure by comparing the object's reference in\n * the old and new object, similar to how russian doll cache invalidation\n * works.\n *\n * In earlier versions of this function, which used cloneDeep, there were\n * issues whereby settings a nested value would mutate the parent\n * instead of creating a new object. `clone` avoids that bug making a\n * shallow copy of the objects along the update path\n * so no object is mutated in place.\n *\n * Before changing this function, please read through the following\n * discussions.\n *\n * @see https://github.com/developit/linkstate\n * @see https://github.com/jaredpalmer/formik/pull/123\n */\nexport function setIn<T>(obj: T, path: string, value: unknown): T {\n const res = clone(obj); // this keeps inheritance when obj is a class\n let resVal = res as PathContainer;\n let i = 0;\n const pathArray = toPath(path);\n\n for (; i < pathArray.length - 1; i++) {\n const currentPath: string = pathArray[i];\n const currentObj = getIn(obj, pathArray.slice(0, i + 1));\n\n if (isObject(currentObj) || Array.isArray(currentObj)) {\n const clonedValue = clone(currentObj) as PathContainer;\n setPathValue(resVal, currentPath, clonedValue);\n resVal = clonedValue;\n } else {\n const nextPath: string = pathArray[i + 1];\n const nextValue: PathContainer = isInteger(nextPath) && Number(nextPath) >= 0 ? [] : {};\n setPathValue(resVal, currentPath, nextValue);\n resVal = nextValue;\n }\n }\n\n // Return original object if new value is the same as current\n const currentValue =\n isPathContainer(obj) && i === 0\n ? getPathValue(obj, pathArray[i])\n : getPathValue(resVal, pathArray[i]);\n if (currentValue === value) {\n return obj;\n }\n\n if (value === undefined) {\n deletePathValue(resVal, pathArray[i]);\n } else {\n setPathValue(resVal, pathArray[i], value);\n }\n\n // If the path array has a single element, the loop did not run.\n // Deleting on `resVal` had no effect in this scenario, so we delete on the result instead.\n if (i === 0 && value === undefined) {\n deletePathValue(res as PathContainer, pathArray[i]);\n }\n\n return res;\n}\n"],"names":["isPathContainer","obj","isObject","Array","isArray","isPathTraversable","undefined","Number","isNaN","getPathValue","container","key","Object","setPathValue","value","deletePathValue","getIn","def","pathStartIndex","path","toPath","currentValue","length","isInteger","String","Math","floor","setIn","res","clone","resVal","i","pathArray","currentPath","currentObj","slice","clonedValue","nextPath","nextValue"],"mappings":"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"}
|
|
@@ -1,18 +1,45 @@
|
|
|
1
1
|
import clone from 'lodash/clone';
|
|
2
2
|
import toPath from 'lodash/toPath';
|
|
3
3
|
|
|
4
|
+
const isPathContainer = (obj)=>isObject(obj) || Array.isArray(obj);
|
|
5
|
+
const isPathTraversable = (obj)=>{
|
|
6
|
+
if (obj === null || obj === undefined) {
|
|
7
|
+
return false;
|
|
8
|
+
}
|
|
9
|
+
if (typeof obj === 'boolean') {
|
|
10
|
+
return obj === true;
|
|
11
|
+
}
|
|
12
|
+
if (typeof obj === 'number') {
|
|
13
|
+
return obj !== 0 && Number.isNaN(obj) === false;
|
|
14
|
+
}
|
|
15
|
+
if (typeof obj === 'bigint') {
|
|
16
|
+
return obj !== 0n;
|
|
17
|
+
}
|
|
18
|
+
if (typeof obj === 'string') {
|
|
19
|
+
return obj !== '';
|
|
20
|
+
}
|
|
21
|
+
return true;
|
|
22
|
+
};
|
|
23
|
+
const getPathValue = (container, key)=>Object(container)[key];
|
|
24
|
+
const setPathValue = (container, key, value)=>{
|
|
25
|
+
container[key] = value;
|
|
26
|
+
};
|
|
27
|
+
const deletePathValue = (container, key)=>{
|
|
28
|
+
delete container[key];
|
|
29
|
+
};
|
|
4
30
|
/**
|
|
5
31
|
* Deeply get a value from an object via its path.
|
|
6
32
|
*/ function getIn(obj, key, def, pathStartIndex = 0) {
|
|
7
33
|
const path = toPath(key);
|
|
8
|
-
|
|
9
|
-
|
|
34
|
+
let currentValue = obj;
|
|
35
|
+
while(isPathTraversable(currentValue) && pathStartIndex < path.length){
|
|
36
|
+
currentValue = getPathValue(currentValue, path[pathStartIndex++]);
|
|
10
37
|
}
|
|
11
38
|
// check if path is not in the end
|
|
12
|
-
if (pathStartIndex !== path.length &&
|
|
39
|
+
if (pathStartIndex !== path.length && isPathTraversable(currentValue) === false) {
|
|
13
40
|
return def;
|
|
14
41
|
}
|
|
15
|
-
return
|
|
42
|
+
return currentValue === undefined ? def : currentValue;
|
|
16
43
|
}
|
|
17
44
|
/** @internal is the given object an Object? */ const isObject = (obj)=>obj !== null && typeof obj === 'object' && !Array.isArray(obj);
|
|
18
45
|
/** @internal is the given object an integer? */ const isInteger = (obj)=>String(Math.floor(Number(obj))) === obj;
|
|
@@ -47,26 +74,31 @@ import toPath from 'lodash/toPath';
|
|
|
47
74
|
for(; i < pathArray.length - 1; i++){
|
|
48
75
|
const currentPath = pathArray[i];
|
|
49
76
|
const currentObj = getIn(obj, pathArray.slice(0, i + 1));
|
|
50
|
-
if (
|
|
51
|
-
|
|
77
|
+
if (isObject(currentObj) || Array.isArray(currentObj)) {
|
|
78
|
+
const clonedValue = clone(currentObj);
|
|
79
|
+
setPathValue(resVal, currentPath, clonedValue);
|
|
80
|
+
resVal = clonedValue;
|
|
52
81
|
} else {
|
|
53
82
|
const nextPath = pathArray[i + 1];
|
|
54
|
-
|
|
83
|
+
const nextValue = isInteger(nextPath) && Number(nextPath) >= 0 ? [] : {};
|
|
84
|
+
setPathValue(resVal, currentPath, nextValue);
|
|
85
|
+
resVal = nextValue;
|
|
55
86
|
}
|
|
56
87
|
}
|
|
57
88
|
// Return original object if new value is the same as current
|
|
58
|
-
|
|
89
|
+
const currentValue = isPathContainer(obj) && i === 0 ? getPathValue(obj, pathArray[i]) : getPathValue(resVal, pathArray[i]);
|
|
90
|
+
if (currentValue === value) {
|
|
59
91
|
return obj;
|
|
60
92
|
}
|
|
61
93
|
if (value === undefined) {
|
|
62
|
-
|
|
94
|
+
deletePathValue(resVal, pathArray[i]);
|
|
63
95
|
} else {
|
|
64
|
-
resVal
|
|
96
|
+
setPathValue(resVal, pathArray[i], value);
|
|
65
97
|
}
|
|
66
98
|
// If the path array has a single element, the loop did not run.
|
|
67
99
|
// Deleting on `resVal` had no effect in this scenario, so we delete on the result instead.
|
|
68
100
|
if (i === 0 && value === undefined) {
|
|
69
|
-
|
|
101
|
+
deletePathValue(res, pathArray[i]);
|
|
70
102
|
}
|
|
71
103
|
return res;
|
|
72
104
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"objects.mjs","sources":["../../../../../admin/src/utils/objects.ts"],"sourcesContent":["import clone from 'lodash/clone';\nimport toPath from 'lodash/toPath';\n\n/**\n * Deeply get a value from an object via its path.\n */\nexport function getIn(obj:
|
|
1
|
+
{"version":3,"file":"objects.mjs","sources":["../../../../../admin/src/utils/objects.ts"],"sourcesContent":["import clone from 'lodash/clone';\nimport toPath from 'lodash/toPath';\n\ntype PathObject = Record<string, unknown>;\ntype PathContainer = PathObject | unknown[];\n\nconst isPathContainer = (obj: unknown): obj is PathContainer => isObject(obj) || Array.isArray(obj);\nconst isPathTraversable = (obj: unknown): boolean => {\n if (obj === null || obj === undefined) {\n return false;\n }\n\n if (typeof obj === 'boolean') {\n return obj === true;\n }\n\n if (typeof obj === 'number') {\n return obj !== 0 && Number.isNaN(obj) === false;\n }\n\n if (typeof obj === 'bigint') {\n return obj !== 0n;\n }\n\n if (typeof obj === 'string') {\n return obj !== '';\n }\n\n return true;\n};\nconst getPathValue = (container: unknown, key: string): unknown =>\n (Object(container) as PathObject)[key];\nconst setPathValue = (container: PathContainer, key: string, value: unknown) => {\n (container as PathObject)[key] = value;\n};\nconst deletePathValue = (container: PathContainer, key: string) => {\n delete (container as PathObject)[key];\n};\n\n/**\n * Deeply get a value from an object via its path.\n */\nexport function getIn<T = unknown>(\n obj: unknown,\n key: string | string[],\n def?: T,\n pathStartIndex: number = 0\n) {\n const path = toPath(key);\n let currentValue = obj;\n\n while (isPathTraversable(currentValue) && pathStartIndex < path.length) {\n currentValue = getPathValue(currentValue, path[pathStartIndex++]);\n }\n\n // check if path is not in the end\n if (pathStartIndex !== path.length && isPathTraversable(currentValue) === false) {\n return def;\n }\n\n return currentValue === undefined ? def : currentValue;\n}\n\n/** @internal is the given object an Object? */\nexport const isObject = (obj: unknown): obj is PathObject =>\n obj !== null && typeof obj === 'object' && !Array.isArray(obj);\n\n/** @internal is the given object an integer? */\nexport const isInteger = (obj: unknown): boolean => String(Math.floor(Number(obj))) === obj;\n\n/**\n * Deeply set a value from in object via its path. If the value at `path`\n * has changed, return a shallow copy of obj with `value` set at `path`.\n * If `value` has not changed, return the original `obj`.\n *\n * Existing objects / arrays along `path` are also shallow copied. Sibling\n * objects along path retain the same internal js reference. Since new\n * objects / arrays are only created along `path`, we can test if anything\n * changed in a nested structure by comparing the object's reference in\n * the old and new object, similar to how russian doll cache invalidation\n * works.\n *\n * In earlier versions of this function, which used cloneDeep, there were\n * issues whereby settings a nested value would mutate the parent\n * instead of creating a new object. `clone` avoids that bug making a\n * shallow copy of the objects along the update path\n * so no object is mutated in place.\n *\n * Before changing this function, please read through the following\n * discussions.\n *\n * @see https://github.com/developit/linkstate\n * @see https://github.com/jaredpalmer/formik/pull/123\n */\nexport function setIn<T>(obj: T, path: string, value: unknown): T {\n const res = clone(obj); // this keeps inheritance when obj is a class\n let resVal = res as PathContainer;\n let i = 0;\n const pathArray = toPath(path);\n\n for (; i < pathArray.length - 1; i++) {\n const currentPath: string = pathArray[i];\n const currentObj = getIn(obj, pathArray.slice(0, i + 1));\n\n if (isObject(currentObj) || Array.isArray(currentObj)) {\n const clonedValue = clone(currentObj) as PathContainer;\n setPathValue(resVal, currentPath, clonedValue);\n resVal = clonedValue;\n } else {\n const nextPath: string = pathArray[i + 1];\n const nextValue: PathContainer = isInteger(nextPath) && Number(nextPath) >= 0 ? [] : {};\n setPathValue(resVal, currentPath, nextValue);\n resVal = nextValue;\n }\n }\n\n // Return original object if new value is the same as current\n const currentValue =\n isPathContainer(obj) && i === 0\n ? getPathValue(obj, pathArray[i])\n : getPathValue(resVal, pathArray[i]);\n if (currentValue === value) {\n return obj;\n }\n\n if (value === undefined) {\n deletePathValue(resVal, pathArray[i]);\n } else {\n setPathValue(resVal, pathArray[i], value);\n }\n\n // If the path array has a single element, the loop did not run.\n // Deleting on `resVal` had no effect in this scenario, so we delete on the result instead.\n if (i === 0 && value === undefined) {\n deletePathValue(res as PathContainer, pathArray[i]);\n }\n\n return res;\n}\n"],"names":["isPathContainer","obj","isObject","Array","isArray","isPathTraversable","undefined","Number","isNaN","getPathValue","container","key","Object","setPathValue","value","deletePathValue","getIn","def","pathStartIndex","path","toPath","currentValue","length","isInteger","String","Math","floor","setIn","res","clone","resVal","i","pathArray","currentPath","currentObj","slice","clonedValue","nextPath","nextValue"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"once.js","sources":["../../../../../admin/src/utils/once.ts"],"sourcesContent":["export const once = <TFunc extends (...args:
|
|
1
|
+
{"version":3,"file":"once.js","sources":["../../../../../admin/src/utils/once.ts"],"sourcesContent":["export const once = <TFunc extends (...args: never[]) => unknown>(fn: TFunc) => {\n const func = fn;\n let called = false;\n\n if (typeof func !== 'function') {\n throw new TypeError(`once requires a function parameter`);\n }\n\n return (...args: Parameters<TFunc>) => {\n if (!called && process.env.NODE_ENV === 'development') {\n func(...args);\n called = true;\n }\n };\n};\n"],"names":["once","fn","func","called","TypeError","args","process","env","NODE_ENV"],"mappings":";;AAAO,MAAMA,OAAO,CAA8CC,EAAAA,GAAAA;AAChE,IAAA,MAAMC,IAAAA,GAAOD,EAAAA;AACb,IAAA,IAAIE,MAAAA,GAAS,KAAA;IAEb,IAAI,OAAOD,SAAS,UAAA,EAAY;AAC9B,QAAA,MAAM,IAAIE,SAAAA,CAAU,CAAC,kCAAkC,CAAC,CAAA;AAC1D,IAAA;AAEA,IAAA,OAAO,CAAC,GAAGC,IAAAA,GAAAA;AACT,QAAA,IAAI,CAACF,MAAAA,IAAUG,OAAAA,CAAQC,GAAG,CAACC,QAAQ,KAAK,aAAA,EAAe;YACrDN,IAAAA,CAAAA,GAAQG,IAAAA,CAAAA;YACRF,MAAAA,GAAS,IAAA;AACX,QAAA;AACF,IAAA,CAAA;AACF;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"once.mjs","sources":["../../../../../admin/src/utils/once.ts"],"sourcesContent":["export const once = <TFunc extends (...args:
|
|
1
|
+
{"version":3,"file":"once.mjs","sources":["../../../../../admin/src/utils/once.ts"],"sourcesContent":["export const once = <TFunc extends (...args: never[]) => unknown>(fn: TFunc) => {\n const func = fn;\n let called = false;\n\n if (typeof func !== 'function') {\n throw new TypeError(`once requires a function parameter`);\n }\n\n return (...args: Parameters<TFunc>) => {\n if (!called && process.env.NODE_ENV === 'development') {\n func(...args);\n called = true;\n }\n };\n};\n"],"names":["once","fn","func","called","TypeError","args","process","env","NODE_ENV"],"mappings":"AAAO,MAAMA,OAAO,CAA8CC,EAAAA,GAAAA;AAChE,IAAA,MAAMC,IAAAA,GAAOD,EAAAA;AACb,IAAA,IAAIE,MAAAA,GAAS,KAAA;IAEb,IAAI,OAAOD,SAAS,UAAA,EAAY;AAC9B,QAAA,MAAM,IAAIE,SAAAA,CAAU,CAAC,kCAAkC,CAAC,CAAA;AAC1D,IAAA;AAEA,IAAA,OAAO,CAAC,GAAGC,IAAAA,GAAAA;AACT,QAAA,IAAI,CAACF,MAAAA,IAAUG,OAAAA,CAAQC,GAAG,CAACC,QAAQ,KAAK,aAAA,EAAe;YACrDN,IAAAA,CAAAA,GAAQG,IAAAA,CAAAA;YACRF,MAAAA,GAAS,IAAA;AACX,QAAA;AACF,IAAA,CAAA;AACF;;;;"}
|
|
@@ -64,7 +64,8 @@ function createRulesEngine() {
|
|
|
64
64
|
try {
|
|
65
65
|
return jsonLogic__default.default.apply(condition, data);
|
|
66
66
|
} catch (err) {
|
|
67
|
-
|
|
67
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
68
|
+
throw new Error(`Invalid condition: ${message}`);
|
|
68
69
|
}
|
|
69
70
|
};
|
|
70
71
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rulesEngine.js","sources":["../../../../../admin/src/utils/rulesEngine.ts"],"sourcesContent":["import jsonLogic from 'json-logic-js';\nimport { z } from 'zod';\n\nexport const ConditionSchema = z.object({\n dependsOn: z.string().min(1),\n operator: z.enum(['is', 'isNot']),\n value: z.union([z.string(), z.number(), z.boolean()]),\n});\n\nexport type Condition = z.infer<typeof ConditionSchema>;\nexport type JsonLogicCondition = jsonLogic.RulesLogic<jsonLogic.AdditionalOperation>;\nexport type RulesEngine = {\n generate: (condition: Condition) => JsonLogicCondition;\n validate: (condition: Condition) => void;\n evaluate: (condition: JsonLogicCondition, data: unknown) => boolean;\n};\n\nexport function createRulesEngine(): RulesEngine {\n /**\n * Transforms a high-level `Condition` object into a JSON Logic-compatible condition.\n *\n * Converts operators like 'is' and 'isNot' into their JSON Logic equivalents ('==' and '!=').\n * Throws an error if the operator is not supported.\n *\n * @param condition - The condition object to convert.\n * @returns A JSON Logic AST representing the condition.\n * @throws {Error} If the operator is not recognized.\n */\n const generate = (condition: Condition): JsonLogicCondition => {\n const { dependsOn, operator, value } = condition;\n const operatorsMap = {\n is: '==',\n isNot: '!=',\n };\n if (!operatorsMap[operator]) {\n throw new Error(`Invalid operator: ${operator}`);\n }\n return { [operatorsMap[operator]]: [{ var: dependsOn }, value] };\n };\n\n /**\n * Validates a condition object against the `ConditionSchema`.\n *\n * Ensures that the condition adheres to the expected structure and types.\n *\n * @param condition - The condition object to validate.\n * @throws {ZodError} If the condition is invalid.\n */\n const validate = (condition: Condition) => {\n ConditionSchema.parse(condition);\n };\n\n /**\n * Evaluates a JSON Logic condition against provided data.\n * @throws {Error} If the condition is invalid.\n */\n const evaluate = (\n condition: jsonLogic.RulesLogic<jsonLogic.AdditionalOperation>,\n data: unknown\n ): boolean => {\n try {\n return jsonLogic.apply(condition, data);\n } catch (err:
|
|
1
|
+
{"version":3,"file":"rulesEngine.js","sources":["../../../../../admin/src/utils/rulesEngine.ts"],"sourcesContent":["import jsonLogic from 'json-logic-js';\nimport { z } from 'zod';\n\nexport const ConditionSchema = z.object({\n dependsOn: z.string().min(1),\n operator: z.enum(['is', 'isNot']),\n value: z.union([z.string(), z.number(), z.boolean()]),\n});\n\nexport type Condition = z.infer<typeof ConditionSchema>;\nexport type JsonLogicCondition = jsonLogic.RulesLogic<jsonLogic.AdditionalOperation>;\nexport type RulesEngine = {\n generate: (condition: Condition) => JsonLogicCondition;\n validate: (condition: Condition) => void;\n evaluate: (condition: JsonLogicCondition, data: unknown) => boolean;\n};\n\nexport function createRulesEngine(): RulesEngine {\n /**\n * Transforms a high-level `Condition` object into a JSON Logic-compatible condition.\n *\n * Converts operators like 'is' and 'isNot' into their JSON Logic equivalents ('==' and '!=').\n * Throws an error if the operator is not supported.\n *\n * @param condition - The condition object to convert.\n * @returns A JSON Logic AST representing the condition.\n * @throws {Error} If the operator is not recognized.\n */\n const generate = (condition: Condition): JsonLogicCondition => {\n const { dependsOn, operator, value } = condition;\n const operatorsMap = {\n is: '==',\n isNot: '!=',\n };\n if (!operatorsMap[operator]) {\n throw new Error(`Invalid operator: ${operator}`);\n }\n return { [operatorsMap[operator]]: [{ var: dependsOn }, value] };\n };\n\n /**\n * Validates a condition object against the `ConditionSchema`.\n *\n * Ensures that the condition adheres to the expected structure and types.\n *\n * @param condition - The condition object to validate.\n * @throws {ZodError} If the condition is invalid.\n */\n const validate = (condition: Condition) => {\n ConditionSchema.parse(condition);\n };\n\n /**\n * Evaluates a JSON Logic condition against provided data.\n * @throws {Error} If the condition is invalid.\n */\n const evaluate = (\n condition: jsonLogic.RulesLogic<jsonLogic.AdditionalOperation>,\n data: unknown\n ): boolean => {\n try {\n return jsonLogic.apply(condition, data);\n } catch (err: unknown) {\n const message = err instanceof Error ? err.message : String(err);\n\n throw new Error(`Invalid condition: ${message}`);\n }\n };\n\n return {\n generate,\n validate,\n evaluate,\n };\n}\n"],"names":["ConditionSchema","z","object","dependsOn","string","min","operator","enum","value","union","number","boolean","createRulesEngine","generate","condition","operatorsMap","is","isNot","Error","var","validate","parse","evaluate","data","jsonLogic","apply","err","message","String"],"mappings":";;;;;;;;;AAGO,MAAMA,eAAAA,GAAkBC,KAAAA,CAAEC,MAAM,CAAC;AACtCC,IAAAA,SAAAA,EAAWF,KAAAA,CAAEG,MAAM,EAAA,CAAGC,GAAG,CAAC,CAAA,CAAA;IAC1BC,QAAAA,EAAUL,KAAAA,CAAEM,IAAI,CAAC;AAAC,QAAA,IAAA;AAAM,QAAA;AAAQ,KAAA,CAAA;IAChCC,KAAAA,EAAOP,KAAAA,CAAEQ,KAAK,CAAC;AAACR,QAAAA,KAAAA,CAAEG,MAAM,EAAA;AAAIH,QAAAA,KAAAA,CAAES,MAAM,EAAA;AAAIT,QAAAA,KAAAA,CAAEU,OAAO;AAAG,KAAA;AACtD,CAAA;AAUO,SAASC,iBAAAA,GAAAA;AACd;;;;;;;;;MAUA,MAAMC,WAAW,CAACC,SAAAA,GAAAA;AAChB,QAAA,MAAM,EAAEX,SAAS,EAAEG,QAAQ,EAAEE,KAAK,EAAE,GAAGM,SAAAA;AACvC,QAAA,MAAMC,YAAAA,GAAe;YACnBC,EAAAA,EAAI,IAAA;YACJC,KAAAA,EAAO;AACT,SAAA;AACA,QAAA,IAAI,CAACF,YAAY,CAACT,QAAAA,CAAS,EAAE;AAC3B,YAAA,MAAM,IAAIY,KAAAA,CAAM,CAAC,kBAAkB,EAAEZ,QAAAA,CAAAA,CAAU,CAAA;AACjD,QAAA;QACA,OAAO;AAAE,YAAA,CAACS,YAAY,CAACT,QAAAA,CAAS,GAAG;AAAC,gBAAA;oBAAEa,GAAAA,EAAKhB;AAAU,iBAAA;AAAGK,gBAAAA;AAAM;AAAC,SAAA;AACjE,IAAA,CAAA;AAEA;;;;;;;MAQA,MAAMY,WAAW,CAACN,SAAAA,GAAAA;AAChBd,QAAAA,eAAAA,CAAgBqB,KAAK,CAACP,SAAAA,CAAAA;AACxB,IAAA,CAAA;AAEA;;;MAIA,MAAMQ,QAAAA,GAAW,CACfR,SAAAA,EACAS,IAAAA,GAAAA;QAEA,IAAI;YACF,OAAOC,0BAAAA,CAAUC,KAAK,CAACX,SAAAA,EAAWS,IAAAA,CAAAA;AACpC,QAAA,CAAA,CAAE,OAAOG,GAAAA,EAAc;AACrB,YAAA,MAAMC,UAAUD,GAAAA,YAAeR,KAAAA,GAAQQ,GAAAA,CAAIC,OAAO,GAAGC,MAAAA,CAAOF,GAAAA,CAAAA;AAE5D,YAAA,MAAM,IAAIR,KAAAA,CAAM,CAAC,mBAAmB,EAAES,OAAAA,CAAAA,CAAS,CAAA;AACjD,QAAA;AACF,IAAA,CAAA;IAEA,OAAO;AACLd,QAAAA,QAAAA;AACAO,QAAAA,QAAAA;AACAE,QAAAA;AACF,KAAA;AACF;;;;;"}
|
|
@@ -58,7 +58,8 @@ function createRulesEngine() {
|
|
|
58
58
|
try {
|
|
59
59
|
return jsonLogic.apply(condition, data);
|
|
60
60
|
} catch (err) {
|
|
61
|
-
|
|
61
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
62
|
+
throw new Error(`Invalid condition: ${message}`);
|
|
62
63
|
}
|
|
63
64
|
};
|
|
64
65
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rulesEngine.mjs","sources":["../../../../../admin/src/utils/rulesEngine.ts"],"sourcesContent":["import jsonLogic from 'json-logic-js';\nimport { z } from 'zod';\n\nexport const ConditionSchema = z.object({\n dependsOn: z.string().min(1),\n operator: z.enum(['is', 'isNot']),\n value: z.union([z.string(), z.number(), z.boolean()]),\n});\n\nexport type Condition = z.infer<typeof ConditionSchema>;\nexport type JsonLogicCondition = jsonLogic.RulesLogic<jsonLogic.AdditionalOperation>;\nexport type RulesEngine = {\n generate: (condition: Condition) => JsonLogicCondition;\n validate: (condition: Condition) => void;\n evaluate: (condition: JsonLogicCondition, data: unknown) => boolean;\n};\n\nexport function createRulesEngine(): RulesEngine {\n /**\n * Transforms a high-level `Condition` object into a JSON Logic-compatible condition.\n *\n * Converts operators like 'is' and 'isNot' into their JSON Logic equivalents ('==' and '!=').\n * Throws an error if the operator is not supported.\n *\n * @param condition - The condition object to convert.\n * @returns A JSON Logic AST representing the condition.\n * @throws {Error} If the operator is not recognized.\n */\n const generate = (condition: Condition): JsonLogicCondition => {\n const { dependsOn, operator, value } = condition;\n const operatorsMap = {\n is: '==',\n isNot: '!=',\n };\n if (!operatorsMap[operator]) {\n throw new Error(`Invalid operator: ${operator}`);\n }\n return { [operatorsMap[operator]]: [{ var: dependsOn }, value] };\n };\n\n /**\n * Validates a condition object against the `ConditionSchema`.\n *\n * Ensures that the condition adheres to the expected structure and types.\n *\n * @param condition - The condition object to validate.\n * @throws {ZodError} If the condition is invalid.\n */\n const validate = (condition: Condition) => {\n ConditionSchema.parse(condition);\n };\n\n /**\n * Evaluates a JSON Logic condition against provided data.\n * @throws {Error} If the condition is invalid.\n */\n const evaluate = (\n condition: jsonLogic.RulesLogic<jsonLogic.AdditionalOperation>,\n data: unknown\n ): boolean => {\n try {\n return jsonLogic.apply(condition, data);\n } catch (err:
|
|
1
|
+
{"version":3,"file":"rulesEngine.mjs","sources":["../../../../../admin/src/utils/rulesEngine.ts"],"sourcesContent":["import jsonLogic from 'json-logic-js';\nimport { z } from 'zod';\n\nexport const ConditionSchema = z.object({\n dependsOn: z.string().min(1),\n operator: z.enum(['is', 'isNot']),\n value: z.union([z.string(), z.number(), z.boolean()]),\n});\n\nexport type Condition = z.infer<typeof ConditionSchema>;\nexport type JsonLogicCondition = jsonLogic.RulesLogic<jsonLogic.AdditionalOperation>;\nexport type RulesEngine = {\n generate: (condition: Condition) => JsonLogicCondition;\n validate: (condition: Condition) => void;\n evaluate: (condition: JsonLogicCondition, data: unknown) => boolean;\n};\n\nexport function createRulesEngine(): RulesEngine {\n /**\n * Transforms a high-level `Condition` object into a JSON Logic-compatible condition.\n *\n * Converts operators like 'is' and 'isNot' into their JSON Logic equivalents ('==' and '!=').\n * Throws an error if the operator is not supported.\n *\n * @param condition - The condition object to convert.\n * @returns A JSON Logic AST representing the condition.\n * @throws {Error} If the operator is not recognized.\n */\n const generate = (condition: Condition): JsonLogicCondition => {\n const { dependsOn, operator, value } = condition;\n const operatorsMap = {\n is: '==',\n isNot: '!=',\n };\n if (!operatorsMap[operator]) {\n throw new Error(`Invalid operator: ${operator}`);\n }\n return { [operatorsMap[operator]]: [{ var: dependsOn }, value] };\n };\n\n /**\n * Validates a condition object against the `ConditionSchema`.\n *\n * Ensures that the condition adheres to the expected structure and types.\n *\n * @param condition - The condition object to validate.\n * @throws {ZodError} If the condition is invalid.\n */\n const validate = (condition: Condition) => {\n ConditionSchema.parse(condition);\n };\n\n /**\n * Evaluates a JSON Logic condition against provided data.\n * @throws {Error} If the condition is invalid.\n */\n const evaluate = (\n condition: jsonLogic.RulesLogic<jsonLogic.AdditionalOperation>,\n data: unknown\n ): boolean => {\n try {\n return jsonLogic.apply(condition, data);\n } catch (err: unknown) {\n const message = err instanceof Error ? err.message : String(err);\n\n throw new Error(`Invalid condition: ${message}`);\n }\n };\n\n return {\n generate,\n validate,\n evaluate,\n };\n}\n"],"names":["ConditionSchema","z","object","dependsOn","string","min","operator","enum","value","union","number","boolean","createRulesEngine","generate","condition","operatorsMap","is","isNot","Error","var","validate","parse","evaluate","data","jsonLogic","apply","err","message","String"],"mappings":";;;AAGO,MAAMA,eAAAA,GAAkBC,CAAAA,CAAEC,MAAM,CAAC;AACtCC,IAAAA,SAAAA,EAAWF,CAAAA,CAAEG,MAAM,EAAA,CAAGC,GAAG,CAAC,CAAA,CAAA;IAC1BC,QAAAA,EAAUL,CAAAA,CAAEM,IAAI,CAAC;AAAC,QAAA,IAAA;AAAM,QAAA;AAAQ,KAAA,CAAA;IAChCC,KAAAA,EAAOP,CAAAA,CAAEQ,KAAK,CAAC;AAACR,QAAAA,CAAAA,CAAEG,MAAM,EAAA;AAAIH,QAAAA,CAAAA,CAAES,MAAM,EAAA;AAAIT,QAAAA,CAAAA,CAAEU,OAAO;AAAG,KAAA;AACtD,CAAA;AAUO,SAASC,iBAAAA,GAAAA;AACd;;;;;;;;;MAUA,MAAMC,WAAW,CAACC,SAAAA,GAAAA;AAChB,QAAA,MAAM,EAAEX,SAAS,EAAEG,QAAQ,EAAEE,KAAK,EAAE,GAAGM,SAAAA;AACvC,QAAA,MAAMC,YAAAA,GAAe;YACnBC,EAAAA,EAAI,IAAA;YACJC,KAAAA,EAAO;AACT,SAAA;AACA,QAAA,IAAI,CAACF,YAAY,CAACT,QAAAA,CAAS,EAAE;AAC3B,YAAA,MAAM,IAAIY,KAAAA,CAAM,CAAC,kBAAkB,EAAEZ,QAAAA,CAAAA,CAAU,CAAA;AACjD,QAAA;QACA,OAAO;AAAE,YAAA,CAACS,YAAY,CAACT,QAAAA,CAAS,GAAG;AAAC,gBAAA;oBAAEa,GAAAA,EAAKhB;AAAU,iBAAA;AAAGK,gBAAAA;AAAM;AAAC,SAAA;AACjE,IAAA,CAAA;AAEA;;;;;;;MAQA,MAAMY,WAAW,CAACN,SAAAA,GAAAA;AAChBd,QAAAA,eAAAA,CAAgBqB,KAAK,CAACP,SAAAA,CAAAA;AACxB,IAAA,CAAA;AAEA;;;MAIA,MAAMQ,QAAAA,GAAW,CACfR,SAAAA,EACAS,IAAAA,GAAAA;QAEA,IAAI;YACF,OAAOC,SAAAA,CAAUC,KAAK,CAACX,SAAAA,EAAWS,IAAAA,CAAAA;AACpC,QAAA,CAAA,CAAE,OAAOG,GAAAA,EAAc;AACrB,YAAA,MAAMC,UAAUD,GAAAA,YAAeR,KAAAA,GAAQQ,GAAAA,CAAIC,OAAO,GAAGC,MAAAA,CAAOF,GAAAA,CAAAA;AAE5D,YAAA,MAAM,IAAIR,KAAAA,CAAM,CAAC,mBAAmB,EAAES,OAAAA,CAAAA,CAAS,CAAA;AACjD,QAAA;AACF,IAAA,CAAA;IAEA,OAAO;AACLd,QAAAA,QAAAA;AACAO,QAAAA,QAAAA;AACAE,QAAAA;AACF,KAAA;AACF;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shims.js","sources":["../../../../../admin/src/utils/shims.ts"],"sourcesContent":["/* -------------------------------------------------------------------------------------------------\n * requestIdleCallbackShim\n * -----------------------------------------------------------------------------------------------*/\nconst requestIdleCallbackShim: Window['requestIdleCallback'] = (callback) => {\n const start = Date.now();\n\n return setTimeout(() => {\n callback({\n didTimeout: false,\n timeRemaining() {\n return Math.max(0, Date.now() - start);\n },\n });\n }, 1) as unknown as ReturnType<Window['requestIdleCallback']>;\n};\n\nconst _requestIdleCallback =\n typeof requestIdleCallback === 'undefined' ? requestIdleCallbackShim : requestIdleCallback;\n\n/* -------------------------------------------------------------------------------------------------\n * cancelIdleCallbackShim\n * -----------------------------------------------------------------------------------------------*/\nconst cancelIdleCallbackShim: Window['cancelIdleCallback'] = (handle
|
|
1
|
+
{"version":3,"file":"shims.js","sources":["../../../../../admin/src/utils/shims.ts"],"sourcesContent":["/* -------------------------------------------------------------------------------------------------\n * requestIdleCallbackShim\n * -----------------------------------------------------------------------------------------------*/\nconst requestIdleCallbackShim: Window['requestIdleCallback'] = (callback) => {\n const start = Date.now();\n\n return setTimeout(() => {\n callback({\n didTimeout: false,\n timeRemaining() {\n return Math.max(0, Date.now() - start);\n },\n });\n }, 1) as unknown as ReturnType<Window['requestIdleCallback']>;\n};\n\nconst _requestIdleCallback =\n typeof requestIdleCallback === 'undefined' ? requestIdleCallbackShim : requestIdleCallback;\n\n/* -------------------------------------------------------------------------------------------------\n * cancelIdleCallbackShim\n * -----------------------------------------------------------------------------------------------*/\nconst cancelIdleCallbackShim: Window['cancelIdleCallback'] = (handle) => {\n return clearTimeout(handle);\n};\n\nconst _cancelIdleCallback =\n typeof cancelIdleCallback === 'undefined' ? cancelIdleCallbackShim : cancelIdleCallback;\n\nexport { _requestIdleCallback as requestIdleCallback };\nexport { _cancelIdleCallback as cancelIdleCallback };\n"],"names":["requestIdleCallbackShim","callback","start","Date","now","setTimeout","didTimeout","timeRemaining","Math","max","_requestIdleCallback","requestIdleCallback","cancelIdleCallbackShim","handle","clearTimeout","_cancelIdleCallback","cancelIdleCallback"],"mappings":";;AAAA;;qGAGA,MAAMA,0BAAyD,CAACC,QAAAA,GAAAA;IAC9D,MAAMC,KAAAA,GAAQC,KAAKC,GAAG,EAAA;AAEtB,IAAA,OAAOC,UAAAA,CAAW,IAAA;QAChBJ,QAAAA,CAAS;YACPK,UAAAA,EAAY,KAAA;AACZC,YAAAA,aAAAA,CAAAA,GAAAA;AACE,gBAAA,OAAOC,KAAKC,GAAG,CAAC,CAAA,EAAGN,IAAAA,CAAKC,GAAG,EAAA,GAAKF,KAAAA,CAAAA;AAClC,YAAA;AACF,SAAA,CAAA;IACF,CAAA,EAAG,CAAA,CAAA;AACL,CAAA;AAEA,MAAMQ,oBAAAA,GACJ,OAAOC,mBAAAA,KAAwB,WAAA,GAAcX,uBAAAA,GAA0BW;AAEzE;;qGAGA,MAAMC,yBAAuD,CAACC,MAAAA,GAAAA;AAC5D,IAAA,OAAOC,YAAAA,CAAaD,MAAAA,CAAAA;AACtB,CAAA;AAEA,MAAME,mBAAAA,GACJ,OAAOC,kBAAAA,KAAuB,WAAA,GAAcJ,sBAAAA,GAAyBI;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shims.mjs","sources":["../../../../../admin/src/utils/shims.ts"],"sourcesContent":["/* -------------------------------------------------------------------------------------------------\n * requestIdleCallbackShim\n * -----------------------------------------------------------------------------------------------*/\nconst requestIdleCallbackShim: Window['requestIdleCallback'] = (callback) => {\n const start = Date.now();\n\n return setTimeout(() => {\n callback({\n didTimeout: false,\n timeRemaining() {\n return Math.max(0, Date.now() - start);\n },\n });\n }, 1) as unknown as ReturnType<Window['requestIdleCallback']>;\n};\n\nconst _requestIdleCallback =\n typeof requestIdleCallback === 'undefined' ? requestIdleCallbackShim : requestIdleCallback;\n\n/* -------------------------------------------------------------------------------------------------\n * cancelIdleCallbackShim\n * -----------------------------------------------------------------------------------------------*/\nconst cancelIdleCallbackShim: Window['cancelIdleCallback'] = (handle
|
|
1
|
+
{"version":3,"file":"shims.mjs","sources":["../../../../../admin/src/utils/shims.ts"],"sourcesContent":["/* -------------------------------------------------------------------------------------------------\n * requestIdleCallbackShim\n * -----------------------------------------------------------------------------------------------*/\nconst requestIdleCallbackShim: Window['requestIdleCallback'] = (callback) => {\n const start = Date.now();\n\n return setTimeout(() => {\n callback({\n didTimeout: false,\n timeRemaining() {\n return Math.max(0, Date.now() - start);\n },\n });\n }, 1) as unknown as ReturnType<Window['requestIdleCallback']>;\n};\n\nconst _requestIdleCallback =\n typeof requestIdleCallback === 'undefined' ? requestIdleCallbackShim : requestIdleCallback;\n\n/* -------------------------------------------------------------------------------------------------\n * cancelIdleCallbackShim\n * -----------------------------------------------------------------------------------------------*/\nconst cancelIdleCallbackShim: Window['cancelIdleCallback'] = (handle) => {\n return clearTimeout(handle);\n};\n\nconst _cancelIdleCallback =\n typeof cancelIdleCallback === 'undefined' ? cancelIdleCallbackShim : cancelIdleCallback;\n\nexport { _requestIdleCallback as requestIdleCallback };\nexport { _cancelIdleCallback as cancelIdleCallback };\n"],"names":["requestIdleCallbackShim","callback","start","Date","now","setTimeout","didTimeout","timeRemaining","Math","max","_requestIdleCallback","requestIdleCallback","cancelIdleCallbackShim","handle","clearTimeout","_cancelIdleCallback","cancelIdleCallback"],"mappings":"AAAA;;qGAGA,MAAMA,0BAAyD,CAACC,QAAAA,GAAAA;IAC9D,MAAMC,KAAAA,GAAQC,KAAKC,GAAG,EAAA;AAEtB,IAAA,OAAOC,UAAAA,CAAW,IAAA;QAChBJ,QAAAA,CAAS;YACPK,UAAAA,EAAY,KAAA;AACZC,YAAAA,aAAAA,CAAAA,GAAAA;AACE,gBAAA,OAAOC,KAAKC,GAAG,CAAC,CAAA,EAAGN,IAAAA,CAAKC,GAAG,EAAA,GAAKF,KAAAA,CAAAA;AAClC,YAAA;AACF,SAAA,CAAA;IACF,CAAA,EAAG,CAAA,CAAA;AACL,CAAA;AAEA,MAAMQ,oBAAAA,GACJ,OAAOC,mBAAAA,KAAwB,WAAA,GAAcX,uBAAAA,GAA0BW;AAEzE;;qGAGA,MAAMC,yBAAuD,CAACC,MAAAA,GAAAA;AAC5D,IAAA,OAAOC,YAAAA,CAAaD,MAAAA,CAAAA;AACtB,CAAA;AAEA,MAAME,mBAAAA,GACJ,OAAOC,kBAAAA,KAAuB,WAAA,GAAcJ,sBAAAA,GAAyBI;;;;"}
|
|
@@ -6,6 +6,10 @@
|
|
|
6
6
|
*/ /**
|
|
7
7
|
* UID of the deploy-now widget, a Strapi Cloud upsell promoting a first deployment.
|
|
8
8
|
*/ const DEPLOY_NOW_WIDGET_UID = 'plugin::admin.deploy-now';
|
|
9
|
+
/**
|
|
10
|
+
* Sidebar route for the Strapi Cloud deploy upsell page.
|
|
11
|
+
*/ const CLOUD_DEPLOY_MENU_LINK = 'plugins/cloud';
|
|
12
|
+
const isProductionEnvironment = (currentEnvironment)=>currentEnvironment === 'production';
|
|
9
13
|
/**
|
|
10
14
|
* Hides the deploy-now upsell widget when the project runs in production.
|
|
11
15
|
*
|
|
@@ -14,12 +18,23 @@
|
|
|
14
18
|
* (`currentEnvironment` from `/admin/information`) rather than any frontend
|
|
15
19
|
* production heuristic, and keeps the widget visible when the environment is unknown.
|
|
16
20
|
*/ const hideDeployNowWidgetInProduction = (widgets, currentEnvironment)=>{
|
|
17
|
-
if (currentEnvironment
|
|
21
|
+
if (!isProductionEnvironment(currentEnvironment)) {
|
|
18
22
|
return widgets;
|
|
19
23
|
}
|
|
20
24
|
return widgets.filter((widget)=>widget.uid !== DEPLOY_NOW_WIDGET_UID);
|
|
21
25
|
};
|
|
26
|
+
/**
|
|
27
|
+
* Hides the Strapi Cloud deploy sidebar link when the project runs in production.
|
|
28
|
+
*/ const hideCloudDeployMenuLinkInProduction = (menuLinks, currentEnvironment)=>{
|
|
29
|
+
if (!isProductionEnvironment(currentEnvironment)) {
|
|
30
|
+
return menuLinks;
|
|
31
|
+
}
|
|
32
|
+
return menuLinks.filter((link)=>link.to !== CLOUD_DEPLOY_MENU_LINK);
|
|
33
|
+
};
|
|
22
34
|
|
|
35
|
+
exports.CLOUD_DEPLOY_MENU_LINK = CLOUD_DEPLOY_MENU_LINK;
|
|
23
36
|
exports.DEPLOY_NOW_WIDGET_UID = DEPLOY_NOW_WIDGET_UID;
|
|
37
|
+
exports.hideCloudDeployMenuLinkInProduction = hideCloudDeployMenuLinkInProduction;
|
|
24
38
|
exports.hideDeployNowWidgetInProduction = hideDeployNowWidgetInProduction;
|
|
39
|
+
exports.isProductionEnvironment = isProductionEnvironment;
|
|
25
40
|
//# sourceMappingURL=widgetVisibility.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"widgetVisibility.js","sources":["../../../../../admin/src/utils/widgetVisibility.ts"],"sourcesContent":["/**\n * Helpers that decide which widgets should be displayed (when/where), as opposed to\n * `widgetLayout.ts`, which handles how widgets are sized and positioned.\n */\n\nimport type { WidgetWithUID } from '../core/apis/Widgets';\n\n/**\n * UID of the deploy-now widget, a Strapi Cloud upsell promoting a first deployment.\n */\nexport const DEPLOY_NOW_WIDGET_UID = 'plugin::admin.deploy-now';\n\n/**\n * Hides the deploy-now upsell widget when the project runs in production.\n *\n * The widget promotes deploying the project for the first time, which is no longer\n * relevant once the project is live. This relies on the server-reported environment\n * (`currentEnvironment` from `/admin/information`) rather than any frontend\n * production heuristic, and keeps the widget visible when the environment is unknown.\n */\nexport const hideDeployNowWidgetInProduction = (\n widgets: WidgetWithUID[],\n currentEnvironment?: string\n): WidgetWithUID[] => {\n if (currentEnvironment
|
|
1
|
+
{"version":3,"file":"widgetVisibility.js","sources":["../../../../../admin/src/utils/widgetVisibility.ts"],"sourcesContent":["/**\n * Helpers that decide which widgets should be displayed (when/where), as opposed to\n * `widgetLayout.ts`, which handles how widgets are sized and positioned.\n */\n\nimport type { WidgetWithUID } from '../core/apis/Widgets';\n\n/**\n * UID of the deploy-now widget, a Strapi Cloud upsell promoting a first deployment.\n */\nexport const DEPLOY_NOW_WIDGET_UID = 'plugin::admin.deploy-now';\n\n/**\n * Sidebar route for the Strapi Cloud deploy upsell page.\n */\nexport const CLOUD_DEPLOY_MENU_LINK = 'plugins/cloud';\n\nexport const isProductionEnvironment = (currentEnvironment?: string): boolean =>\n currentEnvironment === 'production';\n\n/**\n * Hides the deploy-now upsell widget when the project runs in production.\n *\n * The widget promotes deploying the project for the first time, which is no longer\n * relevant once the project is live. This relies on the server-reported environment\n * (`currentEnvironment` from `/admin/information`) rather than any frontend\n * production heuristic, and keeps the widget visible when the environment is unknown.\n */\nexport const hideDeployNowWidgetInProduction = (\n widgets: WidgetWithUID[],\n currentEnvironment?: string\n): WidgetWithUID[] => {\n if (!isProductionEnvironment(currentEnvironment)) {\n return widgets;\n }\n\n return widgets.filter((widget) => widget.uid !== DEPLOY_NOW_WIDGET_UID);\n};\n\n/**\n * Hides the Strapi Cloud deploy sidebar link when the project runs in production.\n */\nexport const hideCloudDeployMenuLinkInProduction = <T extends { to: string }>(\n menuLinks: T[],\n currentEnvironment?: string\n): T[] => {\n if (!isProductionEnvironment(currentEnvironment)) {\n return menuLinks;\n }\n\n return menuLinks.filter((link) => link.to !== CLOUD_DEPLOY_MENU_LINK);\n};\n"],"names":["DEPLOY_NOW_WIDGET_UID","CLOUD_DEPLOY_MENU_LINK","isProductionEnvironment","currentEnvironment","hideDeployNowWidgetInProduction","widgets","filter","widget","uid","hideCloudDeployMenuLinkInProduction","menuLinks","link","to"],"mappings":";;AAAA;;;;;IAUO,MAAMA,qBAAAA,GAAwB;AAErC;;IAGO,MAAMC,sBAAAA,GAAyB;AAE/B,MAAMC,uBAAAA,GAA0B,CAACC,kBAAAA,GACtCA,uBAAuB;AAEzB;;;;;;;AAOC,IACM,MAAMC,+BAAAA,GAAkC,CAC7CC,OAAAA,EACAF,kBAAAA,GAAAA;IAEA,IAAI,CAACD,wBAAwBC,kBAAAA,CAAAA,EAAqB;QAChD,OAAOE,OAAAA;AACT,IAAA;AAEA,IAAA,OAAOA,QAAQC,MAAM,CAAC,CAACC,MAAAA,GAAWA,MAAAA,CAAOC,GAAG,KAAKR,qBAAAA,CAAAA;AACnD;AAEA;;AAEC,IACM,MAAMS,mCAAAA,GAAsC,CACjDC,SAAAA,EACAP,kBAAAA,GAAAA;IAEA,IAAI,CAACD,wBAAwBC,kBAAAA,CAAAA,EAAqB;QAChD,OAAOO,SAAAA;AACT,IAAA;AAEA,IAAA,OAAOA,UAAUJ,MAAM,CAAC,CAACK,IAAAA,GAASA,IAAAA,CAAKC,EAAE,KAAKX,sBAAAA,CAAAA;AAChD;;;;;;;;"}
|
|
@@ -4,6 +4,10 @@
|
|
|
4
4
|
*/ /**
|
|
5
5
|
* UID of the deploy-now widget, a Strapi Cloud upsell promoting a first deployment.
|
|
6
6
|
*/ const DEPLOY_NOW_WIDGET_UID = 'plugin::admin.deploy-now';
|
|
7
|
+
/**
|
|
8
|
+
* Sidebar route for the Strapi Cloud deploy upsell page.
|
|
9
|
+
*/ const CLOUD_DEPLOY_MENU_LINK = 'plugins/cloud';
|
|
10
|
+
const isProductionEnvironment = (currentEnvironment)=>currentEnvironment === 'production';
|
|
7
11
|
/**
|
|
8
12
|
* Hides the deploy-now upsell widget when the project runs in production.
|
|
9
13
|
*
|
|
@@ -12,11 +16,19 @@
|
|
|
12
16
|
* (`currentEnvironment` from `/admin/information`) rather than any frontend
|
|
13
17
|
* production heuristic, and keeps the widget visible when the environment is unknown.
|
|
14
18
|
*/ const hideDeployNowWidgetInProduction = (widgets, currentEnvironment)=>{
|
|
15
|
-
if (currentEnvironment
|
|
19
|
+
if (!isProductionEnvironment(currentEnvironment)) {
|
|
16
20
|
return widgets;
|
|
17
21
|
}
|
|
18
22
|
return widgets.filter((widget)=>widget.uid !== DEPLOY_NOW_WIDGET_UID);
|
|
19
23
|
};
|
|
24
|
+
/**
|
|
25
|
+
* Hides the Strapi Cloud deploy sidebar link when the project runs in production.
|
|
26
|
+
*/ const hideCloudDeployMenuLinkInProduction = (menuLinks, currentEnvironment)=>{
|
|
27
|
+
if (!isProductionEnvironment(currentEnvironment)) {
|
|
28
|
+
return menuLinks;
|
|
29
|
+
}
|
|
30
|
+
return menuLinks.filter((link)=>link.to !== CLOUD_DEPLOY_MENU_LINK);
|
|
31
|
+
};
|
|
20
32
|
|
|
21
|
-
export { DEPLOY_NOW_WIDGET_UID, hideDeployNowWidgetInProduction };
|
|
33
|
+
export { CLOUD_DEPLOY_MENU_LINK, DEPLOY_NOW_WIDGET_UID, hideCloudDeployMenuLinkInProduction, hideDeployNowWidgetInProduction, isProductionEnvironment };
|
|
22
34
|
//# sourceMappingURL=widgetVisibility.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"widgetVisibility.mjs","sources":["../../../../../admin/src/utils/widgetVisibility.ts"],"sourcesContent":["/**\n * Helpers that decide which widgets should be displayed (when/where), as opposed to\n * `widgetLayout.ts`, which handles how widgets are sized and positioned.\n */\n\nimport type { WidgetWithUID } from '../core/apis/Widgets';\n\n/**\n * UID of the deploy-now widget, a Strapi Cloud upsell promoting a first deployment.\n */\nexport const DEPLOY_NOW_WIDGET_UID = 'plugin::admin.deploy-now';\n\n/**\n * Hides the deploy-now upsell widget when the project runs in production.\n *\n * The widget promotes deploying the project for the first time, which is no longer\n * relevant once the project is live. This relies on the server-reported environment\n * (`currentEnvironment` from `/admin/information`) rather than any frontend\n * production heuristic, and keeps the widget visible when the environment is unknown.\n */\nexport const hideDeployNowWidgetInProduction = (\n widgets: WidgetWithUID[],\n currentEnvironment?: string\n): WidgetWithUID[] => {\n if (currentEnvironment
|
|
1
|
+
{"version":3,"file":"widgetVisibility.mjs","sources":["../../../../../admin/src/utils/widgetVisibility.ts"],"sourcesContent":["/**\n * Helpers that decide which widgets should be displayed (when/where), as opposed to\n * `widgetLayout.ts`, which handles how widgets are sized and positioned.\n */\n\nimport type { WidgetWithUID } from '../core/apis/Widgets';\n\n/**\n * UID of the deploy-now widget, a Strapi Cloud upsell promoting a first deployment.\n */\nexport const DEPLOY_NOW_WIDGET_UID = 'plugin::admin.deploy-now';\n\n/**\n * Sidebar route for the Strapi Cloud deploy upsell page.\n */\nexport const CLOUD_DEPLOY_MENU_LINK = 'plugins/cloud';\n\nexport const isProductionEnvironment = (currentEnvironment?: string): boolean =>\n currentEnvironment === 'production';\n\n/**\n * Hides the deploy-now upsell widget when the project runs in production.\n *\n * The widget promotes deploying the project for the first time, which is no longer\n * relevant once the project is live. This relies on the server-reported environment\n * (`currentEnvironment` from `/admin/information`) rather than any frontend\n * production heuristic, and keeps the widget visible when the environment is unknown.\n */\nexport const hideDeployNowWidgetInProduction = (\n widgets: WidgetWithUID[],\n currentEnvironment?: string\n): WidgetWithUID[] => {\n if (!isProductionEnvironment(currentEnvironment)) {\n return widgets;\n }\n\n return widgets.filter((widget) => widget.uid !== DEPLOY_NOW_WIDGET_UID);\n};\n\n/**\n * Hides the Strapi Cloud deploy sidebar link when the project runs in production.\n */\nexport const hideCloudDeployMenuLinkInProduction = <T extends { to: string }>(\n menuLinks: T[],\n currentEnvironment?: string\n): T[] => {\n if (!isProductionEnvironment(currentEnvironment)) {\n return menuLinks;\n }\n\n return menuLinks.filter((link) => link.to !== CLOUD_DEPLOY_MENU_LINK);\n};\n"],"names":["DEPLOY_NOW_WIDGET_UID","CLOUD_DEPLOY_MENU_LINK","isProductionEnvironment","currentEnvironment","hideDeployNowWidgetInProduction","widgets","filter","widget","uid","hideCloudDeployMenuLinkInProduction","menuLinks","link","to"],"mappings":"AAAA;;;;;IAUO,MAAMA,qBAAAA,GAAwB;AAErC;;IAGO,MAAMC,sBAAAA,GAAyB;AAE/B,MAAMC,uBAAAA,GAA0B,CAACC,kBAAAA,GACtCA,uBAAuB;AAEzB;;;;;;;AAOC,IACM,MAAMC,+BAAAA,GAAkC,CAC7CC,OAAAA,EACAF,kBAAAA,GAAAA;IAEA,IAAI,CAACD,wBAAwBC,kBAAAA,CAAAA,EAAqB;QAChD,OAAOE,OAAAA;AACT,IAAA;AAEA,IAAA,OAAOA,QAAQC,MAAM,CAAC,CAACC,MAAAA,GAAWA,MAAAA,CAAOC,GAAG,KAAKR,qBAAAA,CAAAA;AACnD;AAEA;;AAEC,IACM,MAAMS,mCAAAA,GAAsC,CACjDC,SAAAA,EACAP,kBAAAA,GAAAA;IAEA,IAAI,CAACD,wBAAwBC,kBAAAA,CAAAA,EAAqB;QAChD,OAAOO,SAAAA;AACT,IAAA;AAEA,IAAA,OAAOA,UAAUJ,MAAM,CAAC,CAACK,IAAAA,GAASA,IAAAA,CAAKC,EAAE,KAAKX,sBAAAA,CAAAA;AAChD;;;;"}
|
|
@@ -6,14 +6,14 @@ var designSystem = require('@strapi/design-system');
|
|
|
6
6
|
var icons = require('@strapi/icons');
|
|
7
7
|
var reactIntl = require('react-intl');
|
|
8
8
|
var reactRouterDom = require('react-router-dom');
|
|
9
|
-
var
|
|
9
|
+
var styledComponents = require('styled-components');
|
|
10
10
|
var RelativeTime$1 = require('../../../../../admin/src/components/RelativeTime.js');
|
|
11
11
|
var useQueryParams = require('../../../../../admin/src/hooks/useQueryParams.js');
|
|
12
12
|
var constants = require('../../constants.js');
|
|
13
13
|
var getActionTypesDefaultMessages = require('../../pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.js');
|
|
14
14
|
var auditLogs = require('../../services/auditLogs.js');
|
|
15
15
|
|
|
16
|
-
const RelativeTime =
|
|
16
|
+
const RelativeTime = styledComponents.styled(RelativeTime$1.RelativeTime)`
|
|
17
17
|
display: inline-block;
|
|
18
18
|
|
|
19
19
|
&::first-letter {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Widgets.js","sources":["../../../../../../../ee/admin/src/components/AuditLogs/Widgets.tsx"],"sourcesContent":["import { useTracking, Widget } from '@strapi/admin/strapi-admin';\nimport { Box, IconButton, Table, Tbody, Td, Tr, Typography } from '@strapi/design-system';\nimport { Eye } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { Link, useNavigate } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { RelativeTime as BaseRelativeTime } from '../../../../../admin/src/components/RelativeTime';\nimport { useQueryParams } from '../../../../../admin/src/hooks/useQueryParams';\nimport { AuditLog } from '../../../../../shared/contracts/audit-logs';\nimport { AUDIT_LOGS_DEFAULT_PAGE_SIZE } from '../../constants';\nimport { getDefaultMessage } from '../../pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages';\nimport { useGetAuditLogsQuery } from '../../services/auditLogs';\n\nconst RelativeTime = styled(BaseRelativeTime)`\n display: inline-block;\n\n &::first-letter {\n text-transform: uppercase;\n }\n`;\n\nconst LastActivityTable = ({ items }: { items: AuditLog[] }) => {\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const navigate = useNavigate();\n\n const getAuditLogDetailsLink = (item: AuditLog): string => {\n return `/settings/audit-logs?pageSize=${AUDIT_LOGS_DEFAULT_PAGE_SIZE}&page=1&sort=date:DESC&id=${item.id}`;\n };\n\n const handleRowClick = (document: AuditLog) => () => {\n trackUsage('willOpenAuditLogDetailsFromHome');\n const link = getAuditLogDetailsLink(document);\n navigate(link);\n };\n\n return (\n <Table colCount={4} rowCount={items?.length ?? 0}>\n <Tbody>\n {items?.map((item) => {\n const action = formatMessage(\n {\n id: `Settings.permissions.auditLogs.${item.action}`,\n // @ts-expect-error – getDefaultMessage probably doesn't benefit from being so strongly typed unless we just add string at the end.\n defaultMessage: getDefaultMessage(item.action),\n },\n { model: (item.payload.model as string) ?? '' }\n );\n const userDisplayName = item.user?.displayName ?? '-';\n return (\n <Tr\n onClick={handleRowClick(item)}\n cursor=\"pointer\"\n key={`lastActivity_auditLog_${item.id}`}\n >\n <Td>\n <Typography title={action} variant=\"omega\" textColor=\"neutral800\">\n {action}\n </Typography>\n </Td>\n <Td>\n <Typography variant=\"omega\" textColor=\"neutral800\">\n <RelativeTime timestamp={new Date(item.date)} />\n </Typography>\n </Td>\n <Td>\n <Typography title={userDisplayName} variant=\"omega\" textColor=\"neutral800\">\n {userDisplayName}\n </Typography>\n </Td>\n <Td onClick={(e) => e.stopPropagation()}>\n <Box display=\"inline-block\">\n <IconButton\n tag={Link}\n to={getAuditLogDetailsLink(item)}\n onClick={() => trackUsage('willOpenAuditLogDetailsFromHome')}\n label={formatMessage({\n id: 'global.details',\n defaultMessage: 'Details',\n })}\n variant=\"ghost\"\n >\n <Eye />\n </IconButton>\n </Box>\n </Td>\n </Tr>\n );\n })}\n </Tbody>\n </Table>\n );\n};\n\nconst AuditLogsWidget = () => {\n const { formatMessage } = useIntl();\n const [{ query }] = useQueryParams();\n const { data, isLoading, error } = useGetAuditLogsQuery(\n {\n ...query,\n page: 1,\n pageSize: 4,\n sort: 'date:DESC',\n },\n {\n refetchOnMountOrArgChange: true,\n }\n );\n\n if (isLoading) {\n return <Widget.Loading />;\n }\n\n if (error || !data?.results) {\n return <Widget.Error />;\n }\n\n if (data.results.length === 0) {\n return (\n <Widget.NoData>\n {formatMessage({\n id: 'widget.last-activity.no-activity',\n defaultMessage: 'No activity',\n })}\n </Widget.NoData>\n );\n }\n\n return <LastActivityTable items={data.results ?? []} />;\n};\n\nexport { AuditLogsWidget };\n"],"names":["RelativeTime","styled","BaseRelativeTime","LastActivityTable","items","formatMessage","useIntl","trackUsage","useTracking","navigate","useNavigate","getAuditLogDetailsLink","item","AUDIT_LOGS_DEFAULT_PAGE_SIZE","id","handleRowClick","document","link","_jsx","Table","colCount","rowCount","length","Tbody","map","action","defaultMessage","getDefaultMessage","model","payload","userDisplayName","user","displayName","_jsxs","Tr","onClick","cursor","Td","Typography","title","variant","textColor","timestamp","Date","date","e","stopPropagation","Box","display","IconButton","tag","Link","to","label","Eye","AuditLogsWidget","query","useQueryParams","data","isLoading","error","useGetAuditLogsQuery","page","pageSize","sort","refetchOnMountOrArgChange","Widget","Loading","results","Error","NoData"],"mappings":";;;;;;;;;;;;;;;AAcA,MAAMA,YAAAA,GAAeC,
|
|
1
|
+
{"version":3,"file":"Widgets.js","sources":["../../../../../../../ee/admin/src/components/AuditLogs/Widgets.tsx"],"sourcesContent":["import { useTracking, Widget } from '@strapi/admin/strapi-admin';\nimport { Box, IconButton, Table, Tbody, Td, Tr, Typography } from '@strapi/design-system';\nimport { Eye } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { Link, useNavigate } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { RelativeTime as BaseRelativeTime } from '../../../../../admin/src/components/RelativeTime';\nimport { useQueryParams } from '../../../../../admin/src/hooks/useQueryParams';\nimport { AuditLog } from '../../../../../shared/contracts/audit-logs';\nimport { AUDIT_LOGS_DEFAULT_PAGE_SIZE } from '../../constants';\nimport { getDefaultMessage } from '../../pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages';\nimport { useGetAuditLogsQuery } from '../../services/auditLogs';\n\nconst RelativeTime = styled(BaseRelativeTime)`\n display: inline-block;\n\n &::first-letter {\n text-transform: uppercase;\n }\n`;\n\nconst LastActivityTable = ({ items }: { items: AuditLog[] }) => {\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const navigate = useNavigate();\n\n const getAuditLogDetailsLink = (item: AuditLog): string => {\n return `/settings/audit-logs?pageSize=${AUDIT_LOGS_DEFAULT_PAGE_SIZE}&page=1&sort=date:DESC&id=${item.id}`;\n };\n\n const handleRowClick = (document: AuditLog) => () => {\n trackUsage('willOpenAuditLogDetailsFromHome');\n const link = getAuditLogDetailsLink(document);\n navigate(link);\n };\n\n return (\n <Table colCount={4} rowCount={items?.length ?? 0}>\n <Tbody>\n {items?.map((item) => {\n const action = formatMessage(\n {\n id: `Settings.permissions.auditLogs.${item.action}`,\n // @ts-expect-error – getDefaultMessage probably doesn't benefit from being so strongly typed unless we just add string at the end.\n defaultMessage: getDefaultMessage(item.action),\n },\n { model: (item.payload.model as string) ?? '' }\n );\n const userDisplayName = item.user?.displayName ?? '-';\n return (\n <Tr\n onClick={handleRowClick(item)}\n cursor=\"pointer\"\n key={`lastActivity_auditLog_${item.id}`}\n >\n <Td>\n <Typography title={action} variant=\"omega\" textColor=\"neutral800\">\n {action}\n </Typography>\n </Td>\n <Td>\n <Typography variant=\"omega\" textColor=\"neutral800\">\n <RelativeTime timestamp={new Date(item.date)} />\n </Typography>\n </Td>\n <Td>\n <Typography title={userDisplayName} variant=\"omega\" textColor=\"neutral800\">\n {userDisplayName}\n </Typography>\n </Td>\n <Td onClick={(e) => e.stopPropagation()}>\n <Box display=\"inline-block\">\n <IconButton\n tag={Link}\n to={getAuditLogDetailsLink(item)}\n onClick={() => trackUsage('willOpenAuditLogDetailsFromHome')}\n label={formatMessage({\n id: 'global.details',\n defaultMessage: 'Details',\n })}\n variant=\"ghost\"\n >\n <Eye />\n </IconButton>\n </Box>\n </Td>\n </Tr>\n );\n })}\n </Tbody>\n </Table>\n );\n};\n\nconst AuditLogsWidget = () => {\n const { formatMessage } = useIntl();\n const [{ query }] = useQueryParams();\n const { data, isLoading, error } = useGetAuditLogsQuery(\n {\n ...query,\n page: 1,\n pageSize: 4,\n sort: 'date:DESC',\n },\n {\n refetchOnMountOrArgChange: true,\n }\n );\n\n if (isLoading) {\n return <Widget.Loading />;\n }\n\n if (error || !data?.results) {\n return <Widget.Error />;\n }\n\n if (data.results.length === 0) {\n return (\n <Widget.NoData>\n {formatMessage({\n id: 'widget.last-activity.no-activity',\n defaultMessage: 'No activity',\n })}\n </Widget.NoData>\n );\n }\n\n return <LastActivityTable items={data.results ?? []} />;\n};\n\nexport { AuditLogsWidget };\n"],"names":["RelativeTime","styled","BaseRelativeTime","LastActivityTable","items","formatMessage","useIntl","trackUsage","useTracking","navigate","useNavigate","getAuditLogDetailsLink","item","AUDIT_LOGS_DEFAULT_PAGE_SIZE","id","handleRowClick","document","link","_jsx","Table","colCount","rowCount","length","Tbody","map","action","defaultMessage","getDefaultMessage","model","payload","userDisplayName","user","displayName","_jsxs","Tr","onClick","cursor","Td","Typography","title","variant","textColor","timestamp","Date","date","e","stopPropagation","Box","display","IconButton","tag","Link","to","label","Eye","AuditLogsWidget","query","useQueryParams","data","isLoading","error","useGetAuditLogsQuery","page","pageSize","sort","refetchOnMountOrArgChange","Widget","Loading","results","Error","NoData"],"mappings":"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"}
|
|
@@ -31,8 +31,8 @@ var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
|
31
31
|
var isNil__default = /*#__PURE__*/_interopDefault(isNil);
|
|
32
32
|
|
|
33
33
|
const STORAGE_KEY_PREFIX = 'strapi-notification-seat-limit';
|
|
34
|
-
const BILLING_SELF_HOSTED_URL = '
|
|
35
|
-
const MANAGE_SEATS_URL = 'https://strapi.io
|
|
34
|
+
const BILLING_SELF_HOSTED_URL = 'mailto:sales@strapi.io';
|
|
35
|
+
const MANAGE_SEATS_URL = 'https://billing.strapi.io';
|
|
36
36
|
const useLicenseLimitNotification = ()=>{
|
|
37
37
|
const { formatMessage } = reactIntl.useIntl();
|
|
38
38
|
const { license, isError, isLoading } = useLicenseLimits.useLicenseLimits();
|