@strapi/admin 5.26.0 → 5.28.0
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/DragLayer.js +67 -0
- package/dist/admin/admin/src/components/DragLayer.js.map +1 -0
- package/dist/admin/admin/src/components/DragLayer.mjs +64 -0
- package/dist/admin/admin/src/components/DragLayer.mjs.map +1 -0
- package/dist/admin/admin/src/components/ErrorElement.js +10 -3
- package/dist/admin/admin/src/components/ErrorElement.js.map +1 -1
- package/dist/admin/admin/src/components/ErrorElement.mjs +10 -3
- package/dist/admin/admin/src/components/ErrorElement.mjs.map +1 -1
- package/dist/admin/admin/src/components/GapDropZone.js +292 -0
- package/dist/admin/admin/src/components/GapDropZone.js.map +1 -0
- package/dist/admin/admin/src/components/GapDropZone.mjs +268 -0
- package/dist/admin/admin/src/components/GapDropZone.mjs.map +1 -0
- package/dist/admin/admin/src/components/GuidedTour/Context.js +15 -0
- package/dist/admin/admin/src/components/GuidedTour/Context.js.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Context.mjs +15 -0
- package/dist/admin/admin/src/components/GuidedTour/Context.mjs.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/GuidedTourProvider.js +15 -0
- package/dist/admin/admin/src/components/GuidedTour/GuidedTourProvider.js.map +1 -0
- package/dist/admin/admin/src/components/GuidedTour/GuidedTourProvider.mjs +13 -0
- package/dist/admin/admin/src/components/GuidedTour/GuidedTourProvider.mjs.map +1 -0
- package/dist/admin/admin/src/components/GuidedTour/Overview.js +2 -1
- package/dist/admin/admin/src/components/GuidedTour/Overview.js.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Overview.mjs +2 -1
- package/dist/admin/admin/src/components/GuidedTour/Overview.mjs.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Steps/ContentTypeBuilderSteps.js +2 -2
- package/dist/admin/admin/src/components/GuidedTour/Steps/ContentTypeBuilderSteps.js.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Steps/ContentTypeBuilderSteps.mjs +2 -2
- package/dist/admin/admin/src/components/GuidedTour/Steps/ContentTypeBuilderSteps.mjs.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Tours.js +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Tours.js.map +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Tours.mjs +1 -1
- package/dist/admin/admin/src/components/GuidedTour/Tours.mjs.map +1 -1
- package/dist/admin/admin/src/components/Layouts/ActionLayout.js +3 -2
- package/dist/admin/admin/src/components/Layouts/ActionLayout.js.map +1 -1
- package/dist/admin/admin/src/components/Layouts/ActionLayout.mjs +3 -2
- package/dist/admin/admin/src/components/Layouts/ActionLayout.mjs.map +1 -1
- package/dist/admin/admin/src/components/Layouts/ContentLayout.js +3 -2
- package/dist/admin/admin/src/components/Layouts/ContentLayout.js.map +1 -1
- package/dist/admin/admin/src/components/Layouts/ContentLayout.mjs +3 -2
- package/dist/admin/admin/src/components/Layouts/ContentLayout.mjs.map +1 -1
- package/dist/admin/admin/src/components/Layouts/HeaderLayout.js +65 -32
- package/dist/admin/admin/src/components/Layouts/HeaderLayout.js.map +1 -1
- package/dist/admin/admin/src/components/Layouts/HeaderLayout.mjs +66 -33
- package/dist/admin/admin/src/components/Layouts/HeaderLayout.mjs.map +1 -1
- package/dist/admin/admin/src/components/Layouts/Layout.js +29 -6
- package/dist/admin/admin/src/components/Layouts/Layout.js.map +1 -1
- package/dist/admin/admin/src/components/Layouts/Layout.mjs +30 -7
- package/dist/admin/admin/src/components/Layouts/Layout.mjs.map +1 -1
- package/dist/admin/admin/src/components/LeftMenu.js +147 -92
- package/dist/admin/admin/src/components/LeftMenu.js.map +1 -1
- package/dist/admin/admin/src/components/LeftMenu.mjs +131 -95
- package/dist/admin/admin/src/components/LeftMenu.mjs.map +1 -1
- package/dist/admin/admin/src/components/MainNav/MainNav.js +20 -6
- package/dist/admin/admin/src/components/MainNav/MainNav.js.map +1 -1
- package/dist/admin/admin/src/components/MainNav/MainNav.mjs +20 -6
- package/dist/admin/admin/src/components/MainNav/MainNav.mjs.map +1 -1
- package/dist/admin/admin/src/components/MainNav/MainNavLinks.js +157 -0
- package/dist/admin/admin/src/components/MainNav/MainNavLinks.js.map +1 -0
- package/dist/admin/admin/src/components/MainNav/MainNavLinks.mjs +154 -0
- package/dist/admin/admin/src/components/MainNav/MainNavLinks.mjs.map +1 -0
- package/dist/admin/admin/src/components/MainNav/NavBurgerMenu.js +65 -0
- package/dist/admin/admin/src/components/MainNav/NavBurgerMenu.js.map +1 -0
- package/dist/admin/admin/src/components/MainNav/NavBurgerMenu.mjs +63 -0
- package/dist/admin/admin/src/components/MainNav/NavBurgerMenu.mjs.map +1 -0
- package/dist/admin/admin/src/components/MainNav/NavLink.js +2 -1
- package/dist/admin/admin/src/components/MainNav/NavLink.js.map +1 -1
- package/dist/admin/admin/src/components/MainNav/NavLink.mjs +2 -1
- package/dist/admin/admin/src/components/MainNav/NavLink.mjs.map +1 -1
- package/dist/admin/admin/src/components/MainNav/NavUser.js +39 -22
- package/dist/admin/admin/src/components/MainNav/NavUser.js.map +1 -1
- package/dist/admin/admin/src/components/MainNav/NavUser.mjs +39 -22
- package/dist/admin/admin/src/components/MainNav/NavUser.mjs.map +1 -1
- package/dist/admin/admin/src/components/MainNav/TrialCountdown.js +8 -1
- package/dist/admin/admin/src/components/MainNav/TrialCountdown.js.map +1 -1
- package/dist/admin/admin/src/components/MainNav/TrialCountdown.mjs +9 -2
- package/dist/admin/admin/src/components/MainNav/TrialCountdown.mjs.map +1 -1
- package/dist/admin/admin/src/components/NpsSurvey.js +159 -119
- package/dist/admin/admin/src/components/NpsSurvey.js.map +1 -1
- package/dist/admin/admin/src/components/NpsSurvey.mjs +160 -120
- package/dist/admin/admin/src/components/NpsSurvey.mjs.map +1 -1
- package/dist/admin/admin/src/components/PageHelpers.js +1 -1
- package/dist/admin/admin/src/components/PageHelpers.js.map +1 -1
- package/dist/admin/admin/src/components/PageHelpers.mjs +1 -1
- package/dist/admin/admin/src/components/PageHelpers.mjs.map +1 -1
- package/dist/admin/admin/src/components/Providers.js +2 -4
- package/dist/admin/admin/src/components/Providers.js.map +1 -1
- package/dist/admin/admin/src/components/Providers.mjs +2 -4
- package/dist/admin/admin/src/components/Providers.mjs.map +1 -1
- package/dist/admin/admin/src/components/ResizeIndicator.js +353 -0
- package/dist/admin/admin/src/components/ResizeIndicator.js.map +1 -0
- package/dist/admin/admin/src/components/ResizeIndicator.mjs +332 -0
- package/dist/admin/admin/src/components/ResizeIndicator.mjs.map +1 -0
- package/dist/admin/admin/src/components/SubNav.js +98 -33
- package/dist/admin/admin/src/components/SubNav.js.map +1 -1
- package/dist/admin/admin/src/components/SubNav.mjs +99 -34
- package/dist/admin/admin/src/components/SubNav.mjs.map +1 -1
- package/dist/admin/admin/src/components/UpsellBanner.js +3 -2
- package/dist/admin/admin/src/components/UpsellBanner.js.map +1 -1
- package/dist/admin/admin/src/components/UpsellBanner.mjs +3 -2
- package/dist/admin/admin/src/components/UpsellBanner.mjs.map +1 -1
- package/dist/admin/admin/src/components/WidgetRoot.js +216 -0
- package/dist/admin/admin/src/components/WidgetRoot.js.map +1 -0
- package/dist/admin/admin/src/components/WidgetRoot.mjs +195 -0
- package/dist/admin/admin/src/components/WidgetRoot.mjs.map +1 -0
- package/dist/admin/admin/src/constants/theme.js +12 -0
- package/dist/admin/admin/src/constants/theme.js.map +1 -0
- package/dist/admin/admin/src/constants/theme.mjs +9 -0
- package/dist/admin/admin/src/constants/theme.mjs.map +1 -0
- package/dist/admin/admin/src/features/Notifications.js +14 -7
- package/dist/admin/admin/src/features/Notifications.js.map +1 -1
- package/dist/admin/admin/src/features/Notifications.mjs +15 -8
- package/dist/admin/admin/src/features/Notifications.mjs.map +1 -1
- package/dist/admin/admin/src/features/Tracking.js +5 -1
- package/dist/admin/admin/src/features/Tracking.js.map +1 -1
- package/dist/admin/admin/src/features/Tracking.mjs +5 -1
- package/dist/admin/admin/src/features/Tracking.mjs.map +1 -1
- package/dist/admin/admin/src/features/Widgets.js +276 -0
- package/dist/admin/admin/src/features/Widgets.js.map +1 -0
- package/dist/admin/admin/src/features/Widgets.mjs +255 -0
- package/dist/admin/admin/src/features/Widgets.mjs.map +1 -0
- package/dist/admin/admin/src/hooks/useAPIErrorHandler.js +1 -1
- package/dist/admin/admin/src/hooks/useAPIErrorHandler.js.map +1 -1
- package/dist/admin/admin/src/hooks/useAPIErrorHandler.mjs +1 -1
- package/dist/admin/admin/src/hooks/useAPIErrorHandler.mjs.map +1 -1
- package/dist/admin/admin/src/hooks/useDeviceType.js +43 -0
- package/dist/admin/admin/src/hooks/useDeviceType.js.map +1 -0
- package/dist/admin/admin/src/hooks/useDeviceType.mjs +22 -0
- package/dist/admin/admin/src/hooks/useDeviceType.mjs.map +1 -0
- package/dist/admin/admin/src/hooks/useMediaQuery.js +70 -0
- package/dist/admin/admin/src/hooks/useMediaQuery.js.map +1 -0
- package/dist/admin/admin/src/hooks/useMediaQuery.mjs +46 -0
- package/dist/admin/admin/src/hooks/useMediaQuery.mjs.map +1 -0
- package/dist/admin/admin/src/hooks/useMenu.js +19 -0
- package/dist/admin/admin/src/hooks/useMenu.js.map +1 -1
- package/dist/admin/admin/src/hooks/useMenu.mjs +19 -0
- package/dist/admin/admin/src/hooks/useMenu.mjs.map +1 -1
- package/dist/admin/admin/src/layouts/AuthenticatedLayout.js +15 -2
- package/dist/admin/admin/src/layouts/AuthenticatedLayout.js.map +1 -1
- package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs +15 -2
- package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs.map +1 -1
- package/dist/admin/admin/src/layouts/UnauthenticatedLayout.js +11 -7
- package/dist/admin/admin/src/layouts/UnauthenticatedLayout.js.map +1 -1
- package/dist/admin/admin/src/layouts/UnauthenticatedLayout.mjs +11 -7
- package/dist/admin/admin/src/layouts/UnauthenticatedLayout.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Auth/components/Login.js +3 -0
- package/dist/admin/admin/src/pages/Auth/components/Login.js.map +1 -1
- package/dist/admin/admin/src/pages/Auth/components/Login.mjs +3 -0
- package/dist/admin/admin/src/pages/Auth/components/Login.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Home/HomePage.js +200 -130
- package/dist/admin/admin/src/pages/Home/HomePage.js.map +1 -1
- package/dist/admin/admin/src/pages/Home/HomePage.mjs +202 -132
- package/dist/admin/admin/src/pages/Home/HomePage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.js +189 -0
- package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.js.map +1 -0
- package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.mjs +168 -0
- package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.mjs.map +1 -0
- package/dist/admin/admin/src/pages/ProfilePage.js +54 -51
- package/dist/admin/admin/src/pages/ProfilePage.js.map +1 -1
- package/dist/admin/admin/src/pages/ProfilePage.mjs +55 -52
- package/dist/admin/admin/src/pages/ProfilePage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/Layout.js +42 -6
- package/dist/admin/admin/src/pages/Settings/Layout.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/Layout.mjs +43 -7
- package/dist/admin/admin/src/pages/Settings/Layout.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/SettingsNav.js +44 -32
- package/dist/admin/admin/src/pages/Settings/components/SettingsNav.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/SettingsNav.mjs +45 -33
- package/dist/admin/admin/src/pages/Settings/components/SettingsNav.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js +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 +2 -2
- package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/InstalledPlugins.js +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 +2 -2
- package/dist/admin/admin/src/pages/Settings/pages/InstalledPlugins.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/PurchaseAuditLogs.js +4 -3
- package/dist/admin/admin/src/pages/Settings/pages/PurchaseAuditLogs.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/PurchaseAuditLogs.mjs +5 -4
- package/dist/admin/admin/src/pages/Settings/pages/PurchaseAuditLogs.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/PurchaseContentHistory.js +4 -3
- package/dist/admin/admin/src/pages/Settings/pages/PurchaseContentHistory.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/PurchaseContentHistory.mjs +5 -4
- package/dist/admin/admin/src/pages/Settings/pages/PurchaseContentHistory.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/PurchaseSingleSignOn.js +4 -3
- package/dist/admin/admin/src/pages/Settings/pages/PurchaseSingleSignOn.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/PurchaseSingleSignOn.mjs +5 -4
- package/dist/admin/admin/src/pages/Settings/pages/PurchaseSingleSignOn.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.js +36 -32
- 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 +36 -32
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/ListPage.js +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 +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/ListPage.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/auth.js +13 -2
- package/dist/admin/admin/src/services/auth.js.map +1 -1
- package/dist/admin/admin/src/services/auth.mjs +12 -3
- package/dist/admin/admin/src/services/auth.mjs.map +1 -1
- package/dist/admin/admin/src/services/homepage.js +11 -4
- package/dist/admin/admin/src/services/homepage.js.map +1 -1
- package/dist/admin/admin/src/services/homepage.mjs +11 -4
- package/dist/admin/admin/src/services/homepage.mjs.map +1 -1
- package/dist/admin/admin/src/translations/en.json.js +7 -1
- package/dist/admin/admin/src/translations/en.json.js.map +1 -1
- package/dist/admin/admin/src/translations/en.json.mjs +7 -1
- package/dist/admin/admin/src/translations/en.json.mjs.map +1 -1
- package/dist/admin/admin/src/translations/uk.json.js +9 -9
- package/dist/admin/admin/src/translations/uk.json.mjs +9 -9
- package/dist/admin/admin/src/utils/resizeHandlers.js +109 -0
- package/dist/admin/admin/src/utils/resizeHandlers.js.map +1 -0
- package/dist/admin/admin/src/utils/resizeHandlers.mjs +100 -0
- package/dist/admin/admin/src/utils/resizeHandlers.mjs.map +1 -0
- package/dist/admin/admin/src/utils/widgetLayout.js +293 -0
- package/dist/admin/admin/src/utils/widgetLayout.js.map +1 -0
- package/dist/admin/admin/src/utils/widgetLayout.mjs +273 -0
- package/dist/admin/admin/src/utils/widgetLayout.mjs.map +1 -0
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.js +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 +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.mjs.map +1 -1
- package/dist/admin/ee/admin/src/services/ai.js +5 -2
- package/dist/admin/ee/admin/src/services/ai.js.map +1 -1
- package/dist/admin/ee/admin/src/services/ai.mjs +5 -2
- package/dist/admin/ee/admin/src/services/ai.mjs.map +1 -1
- package/dist/admin/index.js +11 -0
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs +4 -0
- package/dist/admin/index.mjs.map +1 -1
- package/dist/admin/src/components/DragLayer.d.ts +8 -4
- package/dist/admin/src/components/GapDropZone.d.ts +36 -0
- package/dist/admin/src/components/GuidedTour/Context.d.ts +4 -0
- package/dist/admin/src/components/GuidedTour/GuidedTourProvider.d.ts +6 -0
- package/dist/admin/src/components/LeftMenu.d.ts +2 -2
- package/dist/admin/src/components/MainNav/MainNavLinks.d.ts +11 -0
- package/dist/admin/src/components/MainNav/NavBurgerMenu.d.ts +9 -0
- package/dist/admin/src/components/MainNav/NavUser.d.ts +5 -4
- package/dist/admin/src/components/ResizeIndicator.d.ts +12 -0
- package/dist/admin/src/components/SubNav.d.ts +18 -5
- package/dist/admin/src/components/WidgetRoot.d.ts +14 -0
- package/dist/admin/src/constants/theme.d.ts +7 -0
- 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/features/Tracking.d.ts +1 -1
- package/dist/admin/src/features/Widgets.d.ts +29 -0
- package/dist/admin/src/hooks/useAdminRoles.d.ts +1 -1
- package/dist/admin/src/hooks/useDeviceType.d.ts +6 -0
- package/dist/admin/src/hooks/useMediaQuery.d.ts +21 -0
- package/dist/admin/src/hooks/useMenu.d.ts +9 -1
- package/dist/admin/src/index.d.ts +4 -0
- package/dist/admin/src/pages/Home/HomePage.d.ts +4 -5
- package/dist/admin/src/pages/Home/components/AddWidgetModal.d.ts +10 -0
- package/dist/admin/src/pages/Settings/components/SettingsNav.d.ts +3 -6
- 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 +21 -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/resizeHandlers.d.ts +58 -0
- package/dist/admin/src/utils/widgetLayout.d.ts +78 -0
- package/dist/admin/tests/utils.d.ts +1 -1
- package/dist/ee/admin/src/services/ai.d.ts +2 -2
- package/dist/ee/admin/src/services/auditLogs.d.ts +1 -1
- package/dist/ee/server/src/controllers/authentication-utils/middlewares.d.ts.map +1 -1
- package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.js +4 -2
- package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.js.map +1 -1
- package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.mjs +4 -2
- package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.mjs.map +1 -1
- package/dist/server/server/src/bootstrap.js +5 -0
- package/dist/server/server/src/bootstrap.js.map +1 -1
- package/dist/server/server/src/bootstrap.mjs +5 -0
- package/dist/server/server/src/bootstrap.mjs.map +1 -1
- package/dist/server/server/src/controllers/authenticated-user.js +15 -0
- package/dist/server/server/src/controllers/authenticated-user.js.map +1 -1
- package/dist/server/server/src/controllers/authenticated-user.mjs +15 -0
- package/dist/server/server/src/controllers/authenticated-user.mjs.map +1 -1
- package/dist/server/server/src/routes/users.js +10 -0
- package/dist/server/server/src/routes/users.js.map +1 -1
- package/dist/server/server/src/routes/users.mjs +10 -0
- package/dist/server/server/src/routes/users.mjs.map +1 -1
- package/dist/server/server/src/services/user.js +113 -1
- package/dist/server/server/src/services/user.js.map +1 -1
- package/dist/server/server/src/services/user.mjs +113 -1
- package/dist/server/server/src/services/user.mjs.map +1 -1
- package/dist/server/shared/utils/session-auth.js +4 -2
- package/dist/server/shared/utils/session-auth.js.map +1 -1
- package/dist/server/shared/utils/session-auth.mjs +4 -2
- package/dist/server/shared/utils/session-auth.mjs.map +1 -1
- package/dist/server/src/bootstrap.d.ts.map +1 -1
- package/dist/server/src/controllers/authenticated-user.d.ts +1 -0
- package/dist/server/src/controllers/authenticated-user.d.ts.map +1 -1
- package/dist/server/src/controllers/index.d.ts +1 -0
- package/dist/server/src/controllers/index.d.ts.map +1 -1
- package/dist/server/src/index.d.ts +5 -0
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/routes/users.d.ts.map +1 -1
- package/dist/server/src/services/index.d.ts +4 -0
- package/dist/server/src/services/index.d.ts.map +1 -1
- package/dist/server/src/services/user.d.ts +4 -0
- package/dist/server/src/services/user.d.ts.map +1 -1
- package/dist/shared/contracts/homepage.d.ts +8 -4
- package/dist/shared/contracts/homepage.d.ts.map +1 -1
- package/dist/shared/contracts/users.d.ts +16 -0
- package/dist/shared/contracts/users.d.ts.map +1 -1
- package/dist/shared/utils/session-auth.d.ts.map +1 -1
- package/package.json +7 -7
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
require('react');
|
|
5
|
+
var designSystem = require('@strapi/design-system');
|
|
6
|
+
var reactDnd = require('react-dnd');
|
|
7
|
+
var widgetLayout = require('../utils/widgetLayout.js');
|
|
8
|
+
|
|
9
|
+
function isWidgetDragItem(item) {
|
|
10
|
+
return typeof item === 'object' && item !== null && 'id' in item && typeof item.id === 'string' && 'originalIndex' in item && typeof item.originalIndex === 'number' && 'title' in item && 'component' in item;
|
|
11
|
+
}
|
|
12
|
+
function getStyle(initialOffset, currentOffset, mouseOffset, item) {
|
|
13
|
+
if (!initialOffset || !currentOffset || !mouseOffset) {
|
|
14
|
+
return {
|
|
15
|
+
display: 'none'
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
const { x, y } = mouseOffset;
|
|
19
|
+
// Only apply custom offset for widget drags
|
|
20
|
+
if (isWidgetDragItem(item)) {
|
|
21
|
+
// Calculate dynamic offset based on widget position and width
|
|
22
|
+
const widgetElement = widgetLayout.getWidgetElement(item.id);
|
|
23
|
+
const previewWidth = widgetElement?.clientWidth;
|
|
24
|
+
const offsetX = previewWidth ? -previewWidth + 20 : 0;
|
|
25
|
+
const offsetY = 20;
|
|
26
|
+
return {
|
|
27
|
+
transform: `translate(${x + offsetX}px, ${y + offsetY}px)`
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
// Default positioning for non-widget drags
|
|
31
|
+
return {
|
|
32
|
+
transform: `translate(${x}px, ${y}px)`
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
const DragLayer = ({ renderItem })=>{
|
|
36
|
+
const { itemType, isDragging, item, initialOffset, currentOffset, mouseOffset } = reactDnd.useDragLayer((monitor)=>({
|
|
37
|
+
item: monitor.getItem(),
|
|
38
|
+
itemType: monitor.getItemType(),
|
|
39
|
+
initialOffset: monitor.getInitialSourceClientOffset(),
|
|
40
|
+
currentOffset: monitor.getSourceClientOffset(),
|
|
41
|
+
isDragging: monitor.isDragging(),
|
|
42
|
+
mouseOffset: monitor.getClientOffset()
|
|
43
|
+
}));
|
|
44
|
+
if (!isDragging) {
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
|
|
48
|
+
height: "100%",
|
|
49
|
+
left: 0,
|
|
50
|
+
position: "fixed",
|
|
51
|
+
pointerEvents: "none",
|
|
52
|
+
top: 0,
|
|
53
|
+
zIndex: 100,
|
|
54
|
+
width: "100%",
|
|
55
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
|
|
56
|
+
style: getStyle(initialOffset, currentOffset, mouseOffset, item),
|
|
57
|
+
children: renderItem({
|
|
58
|
+
type: itemType,
|
|
59
|
+
item
|
|
60
|
+
})
|
|
61
|
+
})
|
|
62
|
+
});
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
exports.DragLayer = DragLayer;
|
|
66
|
+
exports.isWidgetDragItem = isWidgetDragItem;
|
|
67
|
+
//# sourceMappingURL=DragLayer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DragLayer.js","sources":["../../../../../admin/src/components/DragLayer.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box } from '@strapi/design-system';\nimport { DragLayerMonitor, XYCoord, useDragLayer } from 'react-dnd';\n\nimport { getWidgetElement } from '../utils/widgetLayout';\n\nimport type { WidgetArgs } from '../core/apis/Widgets';\n\nexport interface WidgetDragItem extends Pick<WidgetArgs, 'title' | 'icon' | 'link' | 'component'> {\n type: 'widget';\n id: string;\n originalIndex: number;\n}\n\nexport function isWidgetDragItem(item: unknown): item is WidgetDragItem {\n return (\n typeof item === 'object' &&\n item !== null &&\n 'id' in item &&\n typeof item.id === 'string' &&\n 'originalIndex' in item &&\n typeof item.originalIndex === 'number' &&\n 'title' in item &&\n 'component' in item\n );\n}\n\nfunction getStyle(\n initialOffset: XYCoord | null,\n currentOffset: XYCoord | null,\n mouseOffset: XYCoord | null,\n item?: unknown\n) {\n if (!initialOffset || !currentOffset || !mouseOffset) {\n return { display: 'none' };\n }\n\n const { x, y } = mouseOffset;\n\n // Only apply custom offset for widget drags\n if (isWidgetDragItem(item)) {\n // Calculate dynamic offset based on widget position and width\n const widgetElement = getWidgetElement(item.id);\n const previewWidth = widgetElement?.clientWidth;\n const offsetX = previewWidth ? -previewWidth + 20 : 0;\n const offsetY = 20;\n\n return {\n transform: `translate(${x + offsetX}px, ${y + offsetY}px)`,\n };\n }\n\n // Default positioning for non-widget drags\n return {\n transform: `translate(${x}px, ${y}px)`,\n };\n}\n\nexport interface DragLayerProps {\n renderItem: (item: {\n item: unknown;\n type: ReturnType<DragLayerMonitor['getItemType']>;\n }) => React.ReactNode;\n}\n\nconst DragLayer = ({ renderItem }: DragLayerProps) => {\n const { itemType, isDragging, item, initialOffset, currentOffset, mouseOffset } = useDragLayer(\n (monitor) => ({\n item: monitor.getItem(),\n itemType: monitor.getItemType(),\n initialOffset: monitor.getInitialSourceClientOffset(),\n currentOffset: monitor.getSourceClientOffset(),\n isDragging: monitor.isDragging(),\n mouseOffset: monitor.getClientOffset(),\n })\n );\n\n if (!isDragging) {\n return null;\n }\n\n return (\n <Box\n height=\"100%\"\n left={0}\n position=\"fixed\"\n pointerEvents=\"none\"\n top={0}\n zIndex={100}\n width=\"100%\"\n >\n <Box style={getStyle(initialOffset, currentOffset, mouseOffset, item)}>\n {renderItem({ type: itemType, item })}\n </Box>\n </Box>\n );\n};\n\nexport { DragLayer };\n"],"names":["isWidgetDragItem","item","id","originalIndex","getStyle","initialOffset","currentOffset","mouseOffset","display","x","y","widgetElement","getWidgetElement","previewWidth","clientWidth","offsetX","offsetY","transform","DragLayer","renderItem","itemType","isDragging","useDragLayer","monitor","getItem","getItemType","getInitialSourceClientOffset","getSourceClientOffset","getClientOffset","_jsx","Box","height","left","position","pointerEvents","top","zIndex","width","style","type"],"mappings":";;;;;;;;AAeO,SAASA,iBAAiBC,IAAa,EAAA;IAC5C,OACE,OAAOA,SAAS,QAChBA,IAAAA,IAAAA,KAAS,QACT,IAAQA,IAAAA,IAAAA,IACR,OAAOA,IAAKC,CAAAA,EAAE,KAAK,QACnB,IAAA,eAAA,IAAmBD,QACnB,OAAOA,IAAAA,CAAKE,aAAa,KAAK,QAAA,IAC9B,OAAWF,IAAAA,IAAAA,IACX,WAAeA,IAAAA,IAAAA;AAEnB;AAEA,SAASG,SACPC,aAA6B,EAC7BC,aAA6B,EAC7BC,WAA2B,EAC3BN,IAAc,EAAA;AAEd,IAAA,IAAI,CAACI,aAAAA,IAAiB,CAACC,aAAAA,IAAiB,CAACC,WAAa,EAAA;QACpD,OAAO;YAAEC,OAAS,EAAA;AAAO,SAAA;AAC3B;AAEA,IAAA,MAAM,EAAEC,CAAC,EAAEC,CAAC,EAAE,GAAGH,WAAAA;;AAGjB,IAAA,IAAIP,iBAAiBC,IAAO,CAAA,EAAA;;QAE1B,MAAMU,aAAAA,GAAgBC,6BAAiBX,CAAAA,IAAAA,CAAKC,EAAE,CAAA;AAC9C,QAAA,MAAMW,eAAeF,aAAeG,EAAAA,WAAAA;AACpC,QAAA,MAAMC,OAAUF,GAAAA,YAAAA,GAAe,CAACA,YAAAA,GAAe,EAAK,GAAA,CAAA;AACpD,QAAA,MAAMG,OAAU,GAAA,EAAA;QAEhB,OAAO;YACLC,SAAW,EAAA,CAAC,UAAU,EAAER,CAAIM,GAAAA,OAAAA,CAAQ,IAAI,EAAEL,CAAAA,GAAIM,OAAQ,CAAA,GAAG;AAC3D,SAAA;AACF;;IAGA,OAAO;QACLC,SAAW,EAAA,CAAC,UAAU,EAAER,CAAAA,CAAE,IAAI,EAAEC,CAAAA,CAAE,GAAG;AACvC,KAAA;AACF;AASA,MAAMQ,SAAY,GAAA,CAAC,EAAEC,UAAU,EAAkB,GAAA;AAC/C,IAAA,MAAM,EAAEC,QAAQ,EAAEC,UAAU,EAAEpB,IAAI,EAAEI,aAAa,EAAEC,aAAa,EAAEC,WAAW,EAAE,GAAGe,qBAChF,CAAA,CAACC,WAAa;AACZtB,YAAAA,IAAAA,EAAMsB,QAAQC,OAAO,EAAA;AACrBJ,YAAAA,QAAAA,EAAUG,QAAQE,WAAW,EAAA;AAC7BpB,YAAAA,aAAAA,EAAekB,QAAQG,4BAA4B,EAAA;AACnDpB,YAAAA,aAAAA,EAAeiB,QAAQI,qBAAqB,EAAA;AAC5CN,YAAAA,UAAAA,EAAYE,QAAQF,UAAU,EAAA;AAC9Bd,YAAAA,WAAAA,EAAagB,QAAQK,eAAe;SACtC,CAAA,CAAA;AAGF,IAAA,IAAI,CAACP,UAAY,EAAA;QACf,OAAO,IAAA;AACT;AAEA,IAAA,qBACEQ,cAACC,CAAAA,gBAAAA,EAAAA;QACCC,MAAO,EAAA,MAAA;QACPC,IAAM,EAAA,CAAA;QACNC,QAAS,EAAA,OAAA;QACTC,aAAc,EAAA,MAAA;QACdC,GAAK,EAAA,CAAA;QACLC,MAAQ,EAAA,GAAA;QACRC,KAAM,EAAA,MAAA;AAEN,QAAA,QAAA,gBAAAR,cAACC,CAAAA,gBAAAA,EAAAA;YAAIQ,KAAOlC,EAAAA,QAAAA,CAASC,aAAeC,EAAAA,aAAAA,EAAeC,WAAaN,EAAAA,IAAAA,CAAAA;sBAC7DkB,UAAW,CAAA;gBAAEoB,IAAMnB,EAAAA,QAAAA;AAAUnB,gBAAAA;AAAK,aAAA;;;AAI3C;;;;;"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import 'react';
|
|
3
|
+
import { Box } from '@strapi/design-system';
|
|
4
|
+
import { useDragLayer } from 'react-dnd';
|
|
5
|
+
import { getWidgetElement } from '../utils/widgetLayout.mjs';
|
|
6
|
+
|
|
7
|
+
function isWidgetDragItem(item) {
|
|
8
|
+
return typeof item === 'object' && item !== null && 'id' in item && typeof item.id === 'string' && 'originalIndex' in item && typeof item.originalIndex === 'number' && 'title' in item && 'component' in item;
|
|
9
|
+
}
|
|
10
|
+
function getStyle(initialOffset, currentOffset, mouseOffset, item) {
|
|
11
|
+
if (!initialOffset || !currentOffset || !mouseOffset) {
|
|
12
|
+
return {
|
|
13
|
+
display: 'none'
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
const { x, y } = mouseOffset;
|
|
17
|
+
// Only apply custom offset for widget drags
|
|
18
|
+
if (isWidgetDragItem(item)) {
|
|
19
|
+
// Calculate dynamic offset based on widget position and width
|
|
20
|
+
const widgetElement = getWidgetElement(item.id);
|
|
21
|
+
const previewWidth = widgetElement?.clientWidth;
|
|
22
|
+
const offsetX = previewWidth ? -previewWidth + 20 : 0;
|
|
23
|
+
const offsetY = 20;
|
|
24
|
+
return {
|
|
25
|
+
transform: `translate(${x + offsetX}px, ${y + offsetY}px)`
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
// Default positioning for non-widget drags
|
|
29
|
+
return {
|
|
30
|
+
transform: `translate(${x}px, ${y}px)`
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
const DragLayer = ({ renderItem })=>{
|
|
34
|
+
const { itemType, isDragging, item, initialOffset, currentOffset, mouseOffset } = useDragLayer((monitor)=>({
|
|
35
|
+
item: monitor.getItem(),
|
|
36
|
+
itemType: monitor.getItemType(),
|
|
37
|
+
initialOffset: monitor.getInitialSourceClientOffset(),
|
|
38
|
+
currentOffset: monitor.getSourceClientOffset(),
|
|
39
|
+
isDragging: monitor.isDragging(),
|
|
40
|
+
mouseOffset: monitor.getClientOffset()
|
|
41
|
+
}));
|
|
42
|
+
if (!isDragging) {
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
return /*#__PURE__*/ jsx(Box, {
|
|
46
|
+
height: "100%",
|
|
47
|
+
left: 0,
|
|
48
|
+
position: "fixed",
|
|
49
|
+
pointerEvents: "none",
|
|
50
|
+
top: 0,
|
|
51
|
+
zIndex: 100,
|
|
52
|
+
width: "100%",
|
|
53
|
+
children: /*#__PURE__*/ jsx(Box, {
|
|
54
|
+
style: getStyle(initialOffset, currentOffset, mouseOffset, item),
|
|
55
|
+
children: renderItem({
|
|
56
|
+
type: itemType,
|
|
57
|
+
item
|
|
58
|
+
})
|
|
59
|
+
})
|
|
60
|
+
});
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
export { DragLayer, isWidgetDragItem };
|
|
64
|
+
//# sourceMappingURL=DragLayer.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DragLayer.mjs","sources":["../../../../../admin/src/components/DragLayer.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box } from '@strapi/design-system';\nimport { DragLayerMonitor, XYCoord, useDragLayer } from 'react-dnd';\n\nimport { getWidgetElement } from '../utils/widgetLayout';\n\nimport type { WidgetArgs } from '../core/apis/Widgets';\n\nexport interface WidgetDragItem extends Pick<WidgetArgs, 'title' | 'icon' | 'link' | 'component'> {\n type: 'widget';\n id: string;\n originalIndex: number;\n}\n\nexport function isWidgetDragItem(item: unknown): item is WidgetDragItem {\n return (\n typeof item === 'object' &&\n item !== null &&\n 'id' in item &&\n typeof item.id === 'string' &&\n 'originalIndex' in item &&\n typeof item.originalIndex === 'number' &&\n 'title' in item &&\n 'component' in item\n );\n}\n\nfunction getStyle(\n initialOffset: XYCoord | null,\n currentOffset: XYCoord | null,\n mouseOffset: XYCoord | null,\n item?: unknown\n) {\n if (!initialOffset || !currentOffset || !mouseOffset) {\n return { display: 'none' };\n }\n\n const { x, y } = mouseOffset;\n\n // Only apply custom offset for widget drags\n if (isWidgetDragItem(item)) {\n // Calculate dynamic offset based on widget position and width\n const widgetElement = getWidgetElement(item.id);\n const previewWidth = widgetElement?.clientWidth;\n const offsetX = previewWidth ? -previewWidth + 20 : 0;\n const offsetY = 20;\n\n return {\n transform: `translate(${x + offsetX}px, ${y + offsetY}px)`,\n };\n }\n\n // Default positioning for non-widget drags\n return {\n transform: `translate(${x}px, ${y}px)`,\n };\n}\n\nexport interface DragLayerProps {\n renderItem: (item: {\n item: unknown;\n type: ReturnType<DragLayerMonitor['getItemType']>;\n }) => React.ReactNode;\n}\n\nconst DragLayer = ({ renderItem }: DragLayerProps) => {\n const { itemType, isDragging, item, initialOffset, currentOffset, mouseOffset } = useDragLayer(\n (monitor) => ({\n item: monitor.getItem(),\n itemType: monitor.getItemType(),\n initialOffset: monitor.getInitialSourceClientOffset(),\n currentOffset: monitor.getSourceClientOffset(),\n isDragging: monitor.isDragging(),\n mouseOffset: monitor.getClientOffset(),\n })\n );\n\n if (!isDragging) {\n return null;\n }\n\n return (\n <Box\n height=\"100%\"\n left={0}\n position=\"fixed\"\n pointerEvents=\"none\"\n top={0}\n zIndex={100}\n width=\"100%\"\n >\n <Box style={getStyle(initialOffset, currentOffset, mouseOffset, item)}>\n {renderItem({ type: itemType, item })}\n </Box>\n </Box>\n );\n};\n\nexport { DragLayer };\n"],"names":["isWidgetDragItem","item","id","originalIndex","getStyle","initialOffset","currentOffset","mouseOffset","display","x","y","widgetElement","getWidgetElement","previewWidth","clientWidth","offsetX","offsetY","transform","DragLayer","renderItem","itemType","isDragging","useDragLayer","monitor","getItem","getItemType","getInitialSourceClientOffset","getSourceClientOffset","getClientOffset","_jsx","Box","height","left","position","pointerEvents","top","zIndex","width","style","type"],"mappings":";;;;;;AAeO,SAASA,iBAAiBC,IAAa,EAAA;IAC5C,OACE,OAAOA,SAAS,QAChBA,IAAAA,IAAAA,KAAS,QACT,IAAQA,IAAAA,IAAAA,IACR,OAAOA,IAAKC,CAAAA,EAAE,KAAK,QACnB,IAAA,eAAA,IAAmBD,QACnB,OAAOA,IAAAA,CAAKE,aAAa,KAAK,QAAA,IAC9B,OAAWF,IAAAA,IAAAA,IACX,WAAeA,IAAAA,IAAAA;AAEnB;AAEA,SAASG,SACPC,aAA6B,EAC7BC,aAA6B,EAC7BC,WAA2B,EAC3BN,IAAc,EAAA;AAEd,IAAA,IAAI,CAACI,aAAAA,IAAiB,CAACC,aAAAA,IAAiB,CAACC,WAAa,EAAA;QACpD,OAAO;YAAEC,OAAS,EAAA;AAAO,SAAA;AAC3B;AAEA,IAAA,MAAM,EAAEC,CAAC,EAAEC,CAAC,EAAE,GAAGH,WAAAA;;AAGjB,IAAA,IAAIP,iBAAiBC,IAAO,CAAA,EAAA;;QAE1B,MAAMU,aAAAA,GAAgBC,gBAAiBX,CAAAA,IAAAA,CAAKC,EAAE,CAAA;AAC9C,QAAA,MAAMW,eAAeF,aAAeG,EAAAA,WAAAA;AACpC,QAAA,MAAMC,OAAUF,GAAAA,YAAAA,GAAe,CAACA,YAAAA,GAAe,EAAK,GAAA,CAAA;AACpD,QAAA,MAAMG,OAAU,GAAA,EAAA;QAEhB,OAAO;YACLC,SAAW,EAAA,CAAC,UAAU,EAAER,CAAIM,GAAAA,OAAAA,CAAQ,IAAI,EAAEL,CAAAA,GAAIM,OAAQ,CAAA,GAAG;AAC3D,SAAA;AACF;;IAGA,OAAO;QACLC,SAAW,EAAA,CAAC,UAAU,EAAER,CAAAA,CAAE,IAAI,EAAEC,CAAAA,CAAE,GAAG;AACvC,KAAA;AACF;AASA,MAAMQ,SAAY,GAAA,CAAC,EAAEC,UAAU,EAAkB,GAAA;AAC/C,IAAA,MAAM,EAAEC,QAAQ,EAAEC,UAAU,EAAEpB,IAAI,EAAEI,aAAa,EAAEC,aAAa,EAAEC,WAAW,EAAE,GAAGe,YAChF,CAAA,CAACC,WAAa;AACZtB,YAAAA,IAAAA,EAAMsB,QAAQC,OAAO,EAAA;AACrBJ,YAAAA,QAAAA,EAAUG,QAAQE,WAAW,EAAA;AAC7BpB,YAAAA,aAAAA,EAAekB,QAAQG,4BAA4B,EAAA;AACnDpB,YAAAA,aAAAA,EAAeiB,QAAQI,qBAAqB,EAAA;AAC5CN,YAAAA,UAAAA,EAAYE,QAAQF,UAAU,EAAA;AAC9Bd,YAAAA,WAAAA,EAAagB,QAAQK,eAAe;SACtC,CAAA,CAAA;AAGF,IAAA,IAAI,CAACP,UAAY,EAAA;QACf,OAAO,IAAA;AACT;AAEA,IAAA,qBACEQ,GAACC,CAAAA,GAAAA,EAAAA;QACCC,MAAO,EAAA,MAAA;QACPC,IAAM,EAAA,CAAA;QACNC,QAAS,EAAA,OAAA;QACTC,aAAc,EAAA,MAAA;QACdC,GAAK,EAAA,CAAA;QACLC,MAAQ,EAAA,GAAA;QACRC,KAAM,EAAA,MAAA;AAEN,QAAA,QAAA,gBAAAR,GAACC,CAAAA,GAAAA,EAAAA;YAAIQ,KAAOlC,EAAAA,QAAAA,CAASC,aAAeC,EAAAA,aAAAA,EAAeC,WAAaN,EAAAA,IAAAA,CAAAA;sBAC7DkB,UAAW,CAAA;gBAAEoB,IAAMnB,EAAAA,QAAAA;AAAUnB,gBAAAA;AAAK,aAAA;;;AAI3C;;;;"}
|
|
@@ -6,6 +6,7 @@ var icons = require('@strapi/icons');
|
|
|
6
6
|
var reactIntl = require('react-intl');
|
|
7
7
|
var reactRouterDom = require('react-router-dom');
|
|
8
8
|
var styled = require('styled-components');
|
|
9
|
+
var theme = require('../constants/theme.js');
|
|
9
10
|
var useClipboard = require('../hooks/useClipboard.js');
|
|
10
11
|
|
|
11
12
|
/**
|
|
@@ -30,16 +31,22 @@ ${error.stack}
|
|
|
30
31
|
alignItems: "center",
|
|
31
32
|
height: "100%",
|
|
32
33
|
justifyContent: "center",
|
|
34
|
+
paddingLeft: theme.RESPONSIVE_DEFAULT_SPACING,
|
|
35
|
+
paddingRight: theme.RESPONSIVE_DEFAULT_SPACING,
|
|
33
36
|
children: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
|
|
34
37
|
gap: 7,
|
|
35
|
-
padding:
|
|
38
|
+
padding: {
|
|
39
|
+
initial: 6,
|
|
40
|
+
small: 7,
|
|
41
|
+
medium: 8
|
|
42
|
+
},
|
|
36
43
|
direction: "column",
|
|
37
|
-
width: "
|
|
44
|
+
width: "100%",
|
|
45
|
+
maxWidth: "512px",
|
|
38
46
|
shadow: "tableShadow",
|
|
39
47
|
borderColor: "neutral150",
|
|
40
48
|
background: "neutral0",
|
|
41
49
|
hasRadius: true,
|
|
42
|
-
maxWidth: "512px",
|
|
43
50
|
children: [
|
|
44
51
|
/*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
|
|
45
52
|
direction: "column",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ErrorElement.js","sources":["../../../../../admin/src/components/ErrorElement.tsx"],"sourcesContent":["import {\n Alert,\n Button,\n Flex,\n Main,\n Typography,\n Link,\n TypographyComponent,\n} from '@strapi/design-system';\nimport { Duplicate, WarningCircle } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useRouteError } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useClipboard } from '../hooks/useClipboard';\n\n/**\n * @description this stops the app from going white, and instead shows the error message.\n * But it could be improved for sure.\n */\nconst ErrorElement = () => {\n const error = useRouteError();\n const { formatMessage } = useIntl();\n const { copy } = useClipboard();\n\n if (error instanceof Error) {\n console.error(error);\n\n const handleClick = async () => {\n await copy(`\n\\`\\`\\`\n${error.stack}\n\\`\\`\\`\n `);\n };\n\n return (\n <Main height=\"100%\">\n <Flex
|
|
1
|
+
{"version":3,"file":"ErrorElement.js","sources":["../../../../../admin/src/components/ErrorElement.tsx"],"sourcesContent":["import {\n Alert,\n Button,\n Flex,\n Main,\n Typography,\n Link,\n TypographyComponent,\n} from '@strapi/design-system';\nimport { Duplicate, WarningCircle } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useRouteError } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { RESPONSIVE_DEFAULT_SPACING } from '../constants/theme';\nimport { useClipboard } from '../hooks/useClipboard';\n\n/**\n * @description this stops the app from going white, and instead shows the error message.\n * But it could be improved for sure.\n */\nconst ErrorElement = () => {\n const error = useRouteError();\n const { formatMessage } = useIntl();\n const { copy } = useClipboard();\n\n if (error instanceof Error) {\n console.error(error);\n\n const handleClick = async () => {\n await copy(`\n\\`\\`\\`\n${error.stack}\n\\`\\`\\`\n `);\n };\n\n return (\n <Main height=\"100%\">\n <Flex\n alignItems=\"center\"\n height=\"100%\"\n justifyContent=\"center\"\n paddingLeft={RESPONSIVE_DEFAULT_SPACING}\n paddingRight={RESPONSIVE_DEFAULT_SPACING}\n >\n <Flex\n gap={7}\n padding={{\n initial: 6,\n small: 7,\n medium: 8,\n }}\n direction=\"column\"\n width=\"100%\"\n maxWidth=\"512px\"\n shadow=\"tableShadow\"\n borderColor=\"neutral150\"\n background=\"neutral0\"\n hasRadius\n >\n <Flex direction=\"column\" gap={2}>\n <WarningCircle width=\"32px\" height=\"32px\" fill=\"danger600\" />\n <Typography fontSize={4} fontWeight=\"bold\" textAlign=\"center\">\n {formatMessage({\n id: 'app.error',\n defaultMessage: 'Something went wrong',\n })}\n </Typography>\n <Typography variant=\"omega\" textAlign=\"center\">\n {formatMessage(\n {\n id: 'app.error.message',\n defaultMessage: `It seems like there is a bug in your instance, but we've got you covered. Please notify your technical team so they can investigate the source of the problem and report the issue to us by opening a bug report on {link}.`,\n },\n {\n link: (\n <Link\n isExternal\n // hack to get rid of the current endIcon, which should be removable by using `null`.\n endIcon\n href=\"https://github.com/strapi/strapi/issues/new?assignees=&labels=&projects=&template=BUG_REPORT.md\"\n >{`Strapi's GitHub`}</Link>\n ),\n }\n )}\n </Typography>\n </Flex>\n {/* the Alert component needs to make its close button optional as well as the icon. */}\n <Flex gap={4} direction=\"column\" width=\"100%\">\n <StyledAlert onClose={() => {}} width=\"100%\" closeLabel=\"\" variant=\"danger\">\n <ErrorType>{error.message}</ErrorType>\n </StyledAlert>\n <Button onClick={handleClick} variant=\"tertiary\" startIcon={<Duplicate />}>\n {formatMessage({\n id: 'app.error.copy',\n defaultMessage: 'Copy to clipboard',\n })}\n </Button>\n </Flex>\n </Flex>\n </Flex>\n </Main>\n );\n }\n\n throw error;\n};\n\nconst StyledAlert = styled(Alert)`\n & > div:first-child {\n display: none;\n }\n\n & > button {\n display: none;\n }\n`;\n\nconst ErrorType = styled<TypographyComponent>(Typography)`\n word-break: break-all;\n color: ${({ theme }) => theme.colors.danger600};\n`;\n\nexport { ErrorElement };\n"],"names":["ErrorElement","error","useRouteError","formatMessage","useIntl","copy","useClipboard","Error","console","handleClick","stack","_jsx","Main","height","Flex","alignItems","justifyContent","paddingLeft","RESPONSIVE_DEFAULT_SPACING","paddingRight","_jsxs","gap","padding","initial","small","medium","direction","width","maxWidth","shadow","borderColor","background","hasRadius","WarningCircle","fill","Typography","fontSize","fontWeight","textAlign","id","defaultMessage","variant","link","Link","isExternal","endIcon","href","StyledAlert","onClose","closeLabel","ErrorType","message","Button","onClick","startIcon","Duplicate","styled","Alert","theme","colors","danger600"],"mappings":"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"}
|
|
@@ -4,6 +4,7 @@ import { WarningCircle, Duplicate } from '@strapi/icons';
|
|
|
4
4
|
import { useIntl } from 'react-intl';
|
|
5
5
|
import { useRouteError } from 'react-router-dom';
|
|
6
6
|
import { styled } from 'styled-components';
|
|
7
|
+
import { RESPONSIVE_DEFAULT_SPACING } from '../constants/theme.mjs';
|
|
7
8
|
import { useClipboard } from '../hooks/useClipboard.mjs';
|
|
8
9
|
|
|
9
10
|
/**
|
|
@@ -28,16 +29,22 @@ ${error.stack}
|
|
|
28
29
|
alignItems: "center",
|
|
29
30
|
height: "100%",
|
|
30
31
|
justifyContent: "center",
|
|
32
|
+
paddingLeft: RESPONSIVE_DEFAULT_SPACING,
|
|
33
|
+
paddingRight: RESPONSIVE_DEFAULT_SPACING,
|
|
31
34
|
children: /*#__PURE__*/ jsxs(Flex, {
|
|
32
35
|
gap: 7,
|
|
33
|
-
padding:
|
|
36
|
+
padding: {
|
|
37
|
+
initial: 6,
|
|
38
|
+
small: 7,
|
|
39
|
+
medium: 8
|
|
40
|
+
},
|
|
34
41
|
direction: "column",
|
|
35
|
-
width: "
|
|
42
|
+
width: "100%",
|
|
43
|
+
maxWidth: "512px",
|
|
36
44
|
shadow: "tableShadow",
|
|
37
45
|
borderColor: "neutral150",
|
|
38
46
|
background: "neutral0",
|
|
39
47
|
hasRadius: true,
|
|
40
|
-
maxWidth: "512px",
|
|
41
48
|
children: [
|
|
42
49
|
/*#__PURE__*/ jsxs(Flex, {
|
|
43
50
|
direction: "column",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ErrorElement.mjs","sources":["../../../../../admin/src/components/ErrorElement.tsx"],"sourcesContent":["import {\n Alert,\n Button,\n Flex,\n Main,\n Typography,\n Link,\n TypographyComponent,\n} from '@strapi/design-system';\nimport { Duplicate, WarningCircle } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useRouteError } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useClipboard } from '../hooks/useClipboard';\n\n/**\n * @description this stops the app from going white, and instead shows the error message.\n * But it could be improved for sure.\n */\nconst ErrorElement = () => {\n const error = useRouteError();\n const { formatMessage } = useIntl();\n const { copy } = useClipboard();\n\n if (error instanceof Error) {\n console.error(error);\n\n const handleClick = async () => {\n await copy(`\n\\`\\`\\`\n${error.stack}\n\\`\\`\\`\n `);\n };\n\n return (\n <Main height=\"100%\">\n <Flex
|
|
1
|
+
{"version":3,"file":"ErrorElement.mjs","sources":["../../../../../admin/src/components/ErrorElement.tsx"],"sourcesContent":["import {\n Alert,\n Button,\n Flex,\n Main,\n Typography,\n Link,\n TypographyComponent,\n} from '@strapi/design-system';\nimport { Duplicate, WarningCircle } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useRouteError } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { RESPONSIVE_DEFAULT_SPACING } from '../constants/theme';\nimport { useClipboard } from '../hooks/useClipboard';\n\n/**\n * @description this stops the app from going white, and instead shows the error message.\n * But it could be improved for sure.\n */\nconst ErrorElement = () => {\n const error = useRouteError();\n const { formatMessage } = useIntl();\n const { copy } = useClipboard();\n\n if (error instanceof Error) {\n console.error(error);\n\n const handleClick = async () => {\n await copy(`\n\\`\\`\\`\n${error.stack}\n\\`\\`\\`\n `);\n };\n\n return (\n <Main height=\"100%\">\n <Flex\n alignItems=\"center\"\n height=\"100%\"\n justifyContent=\"center\"\n paddingLeft={RESPONSIVE_DEFAULT_SPACING}\n paddingRight={RESPONSIVE_DEFAULT_SPACING}\n >\n <Flex\n gap={7}\n padding={{\n initial: 6,\n small: 7,\n medium: 8,\n }}\n direction=\"column\"\n width=\"100%\"\n maxWidth=\"512px\"\n shadow=\"tableShadow\"\n borderColor=\"neutral150\"\n background=\"neutral0\"\n hasRadius\n >\n <Flex direction=\"column\" gap={2}>\n <WarningCircle width=\"32px\" height=\"32px\" fill=\"danger600\" />\n <Typography fontSize={4} fontWeight=\"bold\" textAlign=\"center\">\n {formatMessage({\n id: 'app.error',\n defaultMessage: 'Something went wrong',\n })}\n </Typography>\n <Typography variant=\"omega\" textAlign=\"center\">\n {formatMessage(\n {\n id: 'app.error.message',\n defaultMessage: `It seems like there is a bug in your instance, but we've got you covered. Please notify your technical team so they can investigate the source of the problem and report the issue to us by opening a bug report on {link}.`,\n },\n {\n link: (\n <Link\n isExternal\n // hack to get rid of the current endIcon, which should be removable by using `null`.\n endIcon\n href=\"https://github.com/strapi/strapi/issues/new?assignees=&labels=&projects=&template=BUG_REPORT.md\"\n >{`Strapi's GitHub`}</Link>\n ),\n }\n )}\n </Typography>\n </Flex>\n {/* the Alert component needs to make its close button optional as well as the icon. */}\n <Flex gap={4} direction=\"column\" width=\"100%\">\n <StyledAlert onClose={() => {}} width=\"100%\" closeLabel=\"\" variant=\"danger\">\n <ErrorType>{error.message}</ErrorType>\n </StyledAlert>\n <Button onClick={handleClick} variant=\"tertiary\" startIcon={<Duplicate />}>\n {formatMessage({\n id: 'app.error.copy',\n defaultMessage: 'Copy to clipboard',\n })}\n </Button>\n </Flex>\n </Flex>\n </Flex>\n </Main>\n );\n }\n\n throw error;\n};\n\nconst StyledAlert = styled(Alert)`\n & > div:first-child {\n display: none;\n }\n\n & > button {\n display: none;\n }\n`;\n\nconst ErrorType = styled<TypographyComponent>(Typography)`\n word-break: break-all;\n color: ${({ theme }) => theme.colors.danger600};\n`;\n\nexport { ErrorElement };\n"],"names":["ErrorElement","error","useRouteError","formatMessage","useIntl","copy","useClipboard","Error","console","handleClick","stack","_jsx","Main","height","Flex","alignItems","justifyContent","paddingLeft","RESPONSIVE_DEFAULT_SPACING","paddingRight","_jsxs","gap","padding","initial","small","medium","direction","width","maxWidth","shadow","borderColor","background","hasRadius","WarningCircle","fill","Typography","fontSize","fontWeight","textAlign","id","defaultMessage","variant","link","Link","isExternal","endIcon","href","StyledAlert","onClose","closeLabel","ErrorType","message","Button","onClick","startIcon","Duplicate","styled","Alert","theme","colors","danger600"],"mappings":"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"}
|
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var React = require('react');
|
|
5
|
+
var designSystem = require('@strapi/design-system');
|
|
6
|
+
var reactDnd = require('react-dnd');
|
|
7
|
+
var styled = require('styled-components');
|
|
8
|
+
var widgetLayout = require('../utils/widgetLayout.js');
|
|
9
|
+
|
|
10
|
+
function _interopNamespaceDefault(e) {
|
|
11
|
+
var n = Object.create(null);
|
|
12
|
+
if (e) {
|
|
13
|
+
Object.keys(e).forEach(function (k) {
|
|
14
|
+
if (k !== 'default') {
|
|
15
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
16
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
17
|
+
enumerable: true,
|
|
18
|
+
get: function () { return e[k]; }
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
n.default = e;
|
|
24
|
+
return Object.freeze(n);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
|
|
28
|
+
|
|
29
|
+
const DROP_ZONE_SIZE = 20;
|
|
30
|
+
const getRowInfo = (row)=>{
|
|
31
|
+
const firstWidgetElement = widgetLayout.getWidgetElement(row.widgets[0].uid);
|
|
32
|
+
const lastWidgetElement = widgetLayout.getWidgetElement(row.widgets[row.widgets.length - 1].uid);
|
|
33
|
+
const containerElement = widgetLayout.getWidgetGridContainer();
|
|
34
|
+
if (!firstWidgetElement || !lastWidgetElement || !containerElement) {
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
const firstRect = firstWidgetElement.getBoundingClientRect();
|
|
38
|
+
const lastRect = lastWidgetElement.getBoundingClientRect();
|
|
39
|
+
const containerRect = containerElement.getBoundingClientRect();
|
|
40
|
+
return {
|
|
41
|
+
firstWidgetElement,
|
|
42
|
+
lastWidgetElement,
|
|
43
|
+
containerElement,
|
|
44
|
+
firstRect,
|
|
45
|
+
lastRect,
|
|
46
|
+
containerRect,
|
|
47
|
+
rowHeight: Math.max(firstRect.height, lastRect.height),
|
|
48
|
+
rowTop: firstRect.top - containerRect.top
|
|
49
|
+
};
|
|
50
|
+
};
|
|
51
|
+
const addVerticalDropZones = (row, rowInfo, rowIndex)=>{
|
|
52
|
+
if (!rowInfo) return [];
|
|
53
|
+
const { containerRect, rowTop, rowHeight } = rowInfo;
|
|
54
|
+
const widgetCount = row.widgets.length;
|
|
55
|
+
// Get widget positions relative to container
|
|
56
|
+
const widgetPositions = row.widgets.map((widget)=>{
|
|
57
|
+
const element = widgetLayout.getWidgetElement(widget.uid);
|
|
58
|
+
if (!element) return null;
|
|
59
|
+
const rect = element.getBoundingClientRect();
|
|
60
|
+
return {
|
|
61
|
+
left: rect.left - containerRect.left,
|
|
62
|
+
width: rect.width
|
|
63
|
+
};
|
|
64
|
+
}).filter((pos)=>pos !== null);
|
|
65
|
+
if (widgetPositions.length !== widgetCount) return [];
|
|
66
|
+
const gapDropZones = [];
|
|
67
|
+
// Always add drop zone before the first widget
|
|
68
|
+
gapDropZones.push({
|
|
69
|
+
insertIndex: row.startIndex,
|
|
70
|
+
position: {
|
|
71
|
+
left: widgetPositions[0].left - DROP_ZONE_SIZE,
|
|
72
|
+
top: rowTop,
|
|
73
|
+
height: rowHeight,
|
|
74
|
+
width: DROP_ZONE_SIZE
|
|
75
|
+
},
|
|
76
|
+
isVisible: true,
|
|
77
|
+
type: 'vertical',
|
|
78
|
+
targetRowIndex: rowIndex
|
|
79
|
+
});
|
|
80
|
+
// Add drop zones between widgets
|
|
81
|
+
widgetPositions.slice(0, -1).forEach((currentWidget, i)=>{
|
|
82
|
+
gapDropZones.push({
|
|
83
|
+
insertIndex: row.startIndex + i + 1,
|
|
84
|
+
position: {
|
|
85
|
+
left: currentWidget.left + currentWidget.width,
|
|
86
|
+
top: rowTop,
|
|
87
|
+
height: rowHeight,
|
|
88
|
+
width: DROP_ZONE_SIZE
|
|
89
|
+
},
|
|
90
|
+
isVisible: true,
|
|
91
|
+
type: 'vertical',
|
|
92
|
+
targetRowIndex: rowIndex
|
|
93
|
+
});
|
|
94
|
+
});
|
|
95
|
+
// Always add drop zone after the last widget
|
|
96
|
+
const lastWidget = widgetPositions[widgetCount - 1];
|
|
97
|
+
gapDropZones.push({
|
|
98
|
+
insertIndex: row.endIndex + 1,
|
|
99
|
+
position: {
|
|
100
|
+
left: lastWidget.left + lastWidget.width,
|
|
101
|
+
top: rowTop,
|
|
102
|
+
height: rowHeight,
|
|
103
|
+
width: DROP_ZONE_SIZE
|
|
104
|
+
},
|
|
105
|
+
isVisible: true,
|
|
106
|
+
type: 'vertical',
|
|
107
|
+
targetRowIndex: rowIndex
|
|
108
|
+
});
|
|
109
|
+
return gapDropZones;
|
|
110
|
+
};
|
|
111
|
+
const addHorizontalDropZones = (row, rowIndex, rowInfo, widgetRows, filteredWidgets)=>{
|
|
112
|
+
if (!rowInfo) return [];
|
|
113
|
+
// Don't show horizontal drop zones if there's only one row with one widget
|
|
114
|
+
if (widgetRows.length === 1 && row.widgets.length === 1) return [];
|
|
115
|
+
const { containerRect } = rowInfo;
|
|
116
|
+
const containerWidth = containerRect.width;
|
|
117
|
+
const horizontalDropZoneHeight = DROP_ZONE_SIZE;
|
|
118
|
+
const gapDropZones = [];
|
|
119
|
+
// Add horizontal drop zone above the first row
|
|
120
|
+
if (rowIndex === 0) {
|
|
121
|
+
const firstRowRect = rowInfo.firstRect;
|
|
122
|
+
const firstRowTop = firstRowRect.top - containerRect.top;
|
|
123
|
+
gapDropZones.push({
|
|
124
|
+
insertIndex: 0,
|
|
125
|
+
position: {
|
|
126
|
+
left: 0,
|
|
127
|
+
top: firstRowTop - horizontalDropZoneHeight,
|
|
128
|
+
height: horizontalDropZoneHeight,
|
|
129
|
+
width: containerWidth
|
|
130
|
+
},
|
|
131
|
+
isVisible: true,
|
|
132
|
+
type: 'horizontal',
|
|
133
|
+
isHorizontalDrop: true
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
// Add horizontal drop zone below the current row (between rows or after last row)
|
|
137
|
+
if (rowIndex < widgetRows.length - 1) {
|
|
138
|
+
// Between rows: position above the next row
|
|
139
|
+
const nextRow = widgetRows[rowIndex + 1];
|
|
140
|
+
const nextRowFirstWidgetElement = widgetLayout.getWidgetElement(nextRow.widgets[0].uid);
|
|
141
|
+
if (nextRowFirstWidgetElement) {
|
|
142
|
+
const nextRowRect = nextRowFirstWidgetElement.getBoundingClientRect();
|
|
143
|
+
const nextRowTop = nextRowRect.top - containerRect.top;
|
|
144
|
+
gapDropZones.push({
|
|
145
|
+
insertIndex: row.endIndex + 1,
|
|
146
|
+
position: {
|
|
147
|
+
left: 0,
|
|
148
|
+
top: nextRowTop - horizontalDropZoneHeight,
|
|
149
|
+
height: horizontalDropZoneHeight,
|
|
150
|
+
width: containerWidth
|
|
151
|
+
},
|
|
152
|
+
isVisible: true,
|
|
153
|
+
type: 'horizontal',
|
|
154
|
+
isHorizontalDrop: true
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
} else {
|
|
158
|
+
// After the last row: position below the current row
|
|
159
|
+
const lastRowRect = rowInfo.lastRect;
|
|
160
|
+
const lastRowBottom = lastRowRect.bottom - containerRect.top;
|
|
161
|
+
gapDropZones.push({
|
|
162
|
+
insertIndex: filteredWidgets.length,
|
|
163
|
+
position: {
|
|
164
|
+
left: 0,
|
|
165
|
+
top: lastRowBottom,
|
|
166
|
+
height: horizontalDropZoneHeight,
|
|
167
|
+
width: containerWidth
|
|
168
|
+
},
|
|
169
|
+
isVisible: true,
|
|
170
|
+
type: 'horizontal',
|
|
171
|
+
isHorizontalDrop: true
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
return gapDropZones;
|
|
175
|
+
};
|
|
176
|
+
const GapDropZoneManager = ({ filteredWidgets, columnWidths, draggedWidgetId, moveWidget })=>{
|
|
177
|
+
const [positions, setPositions] = React__namespace.useState([]);
|
|
178
|
+
// Calculate widget rows
|
|
179
|
+
const widgetRows = React__namespace.useMemo(()=>{
|
|
180
|
+
return widgetLayout.calculateWidgetRows(filteredWidgets, columnWidths);
|
|
181
|
+
}, [
|
|
182
|
+
filteredWidgets,
|
|
183
|
+
columnWidths
|
|
184
|
+
]);
|
|
185
|
+
// Main function to calculate GapDropZone positions
|
|
186
|
+
const calculateGapDropZonePositions = React__namespace.useCallback(()=>{
|
|
187
|
+
const gapDropZones = [];
|
|
188
|
+
// Find which row the dragged widget is from
|
|
189
|
+
const draggedWidgetRow = draggedWidgetId ? widgetRows.find((row)=>row.widgets.some((widget)=>widget.uid === draggedWidgetId)) : null;
|
|
190
|
+
widgetRows.forEach((row, rowIndex)=>{
|
|
191
|
+
const rowInfo = getRowInfo(row);
|
|
192
|
+
if (!rowInfo) return;
|
|
193
|
+
const widgetCount = row.widgets.length;
|
|
194
|
+
// Determine if we should show vertical drop zones for this row
|
|
195
|
+
const isDraggingFromThisRow = draggedWidgetRow && draggedWidgetRow === row;
|
|
196
|
+
const isDraggingFromAnotherRow = draggedWidgetRow && draggedWidgetRow !== row;
|
|
197
|
+
const canAcceptMoreWidgets = widgetCount < 3;
|
|
198
|
+
const shouldShowVerticalDropZones = isDraggingFromThisRow || isDraggingFromAnotherRow && canAcceptMoreWidgets;
|
|
199
|
+
// Add vertical drop zones based on widget count
|
|
200
|
+
if (shouldShowVerticalDropZones) {
|
|
201
|
+
const verticalDropZones = addVerticalDropZones(row, rowInfo, rowIndex);
|
|
202
|
+
gapDropZones.push(...verticalDropZones);
|
|
203
|
+
}
|
|
204
|
+
// Add horizontal drop zones
|
|
205
|
+
const horizontalDropZones = addHorizontalDropZones(row, rowIndex, rowInfo, widgetRows, filteredWidgets);
|
|
206
|
+
gapDropZones.push(...horizontalDropZones);
|
|
207
|
+
});
|
|
208
|
+
return gapDropZones;
|
|
209
|
+
}, [
|
|
210
|
+
widgetRows,
|
|
211
|
+
draggedWidgetId,
|
|
212
|
+
filteredWidgets
|
|
213
|
+
]);
|
|
214
|
+
React__namespace.useLayoutEffect(()=>{
|
|
215
|
+
const updatePositions = ()=>{
|
|
216
|
+
const newPositions = calculateGapDropZonePositions();
|
|
217
|
+
setPositions(newPositions);
|
|
218
|
+
};
|
|
219
|
+
updatePositions();
|
|
220
|
+
// Update positions on container resize using ResizeObserver
|
|
221
|
+
const containerElement = widgetLayout.getWidgetGridContainer();
|
|
222
|
+
if (!containerElement) return;
|
|
223
|
+
const resizeObserver = new ResizeObserver(()=>{
|
|
224
|
+
updatePositions();
|
|
225
|
+
});
|
|
226
|
+
resizeObserver.observe(containerElement);
|
|
227
|
+
return ()=>{
|
|
228
|
+
resizeObserver.disconnect();
|
|
229
|
+
};
|
|
230
|
+
}, [
|
|
231
|
+
calculateGapDropZonePositions
|
|
232
|
+
]);
|
|
233
|
+
return positions.map((gapDropZone)=>/*#__PURE__*/ jsxRuntime.jsx(GapDropZone, {
|
|
234
|
+
insertIndex: gapDropZone.insertIndex,
|
|
235
|
+
position: gapDropZone.position,
|
|
236
|
+
isVisible: gapDropZone.isVisible,
|
|
237
|
+
type: gapDropZone.type,
|
|
238
|
+
moveWidget: moveWidget,
|
|
239
|
+
targetRowIndex: gapDropZone.targetRowIndex
|
|
240
|
+
}, `gap-drop-zone-${gapDropZone.type}-${gapDropZone.insertIndex}-${gapDropZone.targetRowIndex ?? 'no-row'}`));
|
|
241
|
+
};
|
|
242
|
+
const GapDropZoneContainer = styled.styled(designSystem.Box)`
|
|
243
|
+
background-color: ${({ $isOver, theme })=>$isOver ? `${theme.colors.primary100}` : 'transparent'};
|
|
244
|
+
border: ${({ $isOver, theme })=>$isOver ? `2px solid ${theme.colors.primary500}` : '2px solid transparent'};
|
|
245
|
+
opacity: ${({ $isOver })=>$isOver ? 1 : 0.6};
|
|
246
|
+
transition: all 0.2s ease-in-out;
|
|
247
|
+
cursor: pointer;
|
|
248
|
+
border-radius: ${({ theme })=>theme.borderRadius};
|
|
249
|
+
display: flex;
|
|
250
|
+
align-items: center;
|
|
251
|
+
justify-content: center;
|
|
252
|
+
position: absolute;
|
|
253
|
+
top: 0;
|
|
254
|
+
bottom: 0;
|
|
255
|
+
width: ${DROP_ZONE_SIZE}px;
|
|
256
|
+
z-index: 1;
|
|
257
|
+
`;
|
|
258
|
+
const GapDropZone = ({ insertIndex, position, isVisible, type, moveWidget, targetRowIndex })=>{
|
|
259
|
+
const isHorizontalDrop = type === 'horizontal';
|
|
260
|
+
const [{ isOver }, drop] = reactDnd.useDrop(()=>({
|
|
261
|
+
accept: 'widget',
|
|
262
|
+
drop: (item)=>{
|
|
263
|
+
moveWidget(item.id, insertIndex, targetRowIndex, isHorizontalDrop);
|
|
264
|
+
},
|
|
265
|
+
collect: (monitor)=>({
|
|
266
|
+
isOver: monitor.isOver()
|
|
267
|
+
})
|
|
268
|
+
}), [
|
|
269
|
+
insertIndex,
|
|
270
|
+
isHorizontalDrop,
|
|
271
|
+
moveWidget,
|
|
272
|
+
targetRowIndex
|
|
273
|
+
]);
|
|
274
|
+
if (!isVisible) {
|
|
275
|
+
return null;
|
|
276
|
+
}
|
|
277
|
+
return /*#__PURE__*/ jsxRuntime.jsx(GapDropZoneContainer, {
|
|
278
|
+
ref: drop,
|
|
279
|
+
$isOver: isOver,
|
|
280
|
+
style: {
|
|
281
|
+
transform: `translate(${position.left}px, ${position.top}px)`,
|
|
282
|
+
height: `${position.height}px`,
|
|
283
|
+
width: `${position.width}px`
|
|
284
|
+
}
|
|
285
|
+
});
|
|
286
|
+
};
|
|
287
|
+
|
|
288
|
+
exports.DROP_ZONE_SIZE = DROP_ZONE_SIZE;
|
|
289
|
+
exports.GapDropZoneManager = GapDropZoneManager;
|
|
290
|
+
exports.addHorizontalDropZones = addHorizontalDropZones;
|
|
291
|
+
exports.addVerticalDropZones = addVerticalDropZones;
|
|
292
|
+
//# sourceMappingURL=GapDropZone.js.map
|