@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.
Files changed (318) hide show
  1. package/dist/admin/admin/src/components/DragLayer.js +67 -0
  2. package/dist/admin/admin/src/components/DragLayer.js.map +1 -0
  3. package/dist/admin/admin/src/components/DragLayer.mjs +64 -0
  4. package/dist/admin/admin/src/components/DragLayer.mjs.map +1 -0
  5. package/dist/admin/admin/src/components/ErrorElement.js +10 -3
  6. package/dist/admin/admin/src/components/ErrorElement.js.map +1 -1
  7. package/dist/admin/admin/src/components/ErrorElement.mjs +10 -3
  8. package/dist/admin/admin/src/components/ErrorElement.mjs.map +1 -1
  9. package/dist/admin/admin/src/components/GapDropZone.js +292 -0
  10. package/dist/admin/admin/src/components/GapDropZone.js.map +1 -0
  11. package/dist/admin/admin/src/components/GapDropZone.mjs +268 -0
  12. package/dist/admin/admin/src/components/GapDropZone.mjs.map +1 -0
  13. package/dist/admin/admin/src/components/GuidedTour/Context.js +15 -0
  14. package/dist/admin/admin/src/components/GuidedTour/Context.js.map +1 -1
  15. package/dist/admin/admin/src/components/GuidedTour/Context.mjs +15 -0
  16. package/dist/admin/admin/src/components/GuidedTour/Context.mjs.map +1 -1
  17. package/dist/admin/admin/src/components/GuidedTour/GuidedTourProvider.js +15 -0
  18. package/dist/admin/admin/src/components/GuidedTour/GuidedTourProvider.js.map +1 -0
  19. package/dist/admin/admin/src/components/GuidedTour/GuidedTourProvider.mjs +13 -0
  20. package/dist/admin/admin/src/components/GuidedTour/GuidedTourProvider.mjs.map +1 -0
  21. package/dist/admin/admin/src/components/GuidedTour/Overview.js +2 -1
  22. package/dist/admin/admin/src/components/GuidedTour/Overview.js.map +1 -1
  23. package/dist/admin/admin/src/components/GuidedTour/Overview.mjs +2 -1
  24. package/dist/admin/admin/src/components/GuidedTour/Overview.mjs.map +1 -1
  25. package/dist/admin/admin/src/components/GuidedTour/Steps/ContentTypeBuilderSteps.js +2 -2
  26. package/dist/admin/admin/src/components/GuidedTour/Steps/ContentTypeBuilderSteps.js.map +1 -1
  27. package/dist/admin/admin/src/components/GuidedTour/Steps/ContentTypeBuilderSteps.mjs +2 -2
  28. package/dist/admin/admin/src/components/GuidedTour/Steps/ContentTypeBuilderSteps.mjs.map +1 -1
  29. package/dist/admin/admin/src/components/GuidedTour/Tours.js +1 -1
  30. package/dist/admin/admin/src/components/GuidedTour/Tours.js.map +1 -1
  31. package/dist/admin/admin/src/components/GuidedTour/Tours.mjs +1 -1
  32. package/dist/admin/admin/src/components/GuidedTour/Tours.mjs.map +1 -1
  33. package/dist/admin/admin/src/components/Layouts/ActionLayout.js +3 -2
  34. package/dist/admin/admin/src/components/Layouts/ActionLayout.js.map +1 -1
  35. package/dist/admin/admin/src/components/Layouts/ActionLayout.mjs +3 -2
  36. package/dist/admin/admin/src/components/Layouts/ActionLayout.mjs.map +1 -1
  37. package/dist/admin/admin/src/components/Layouts/ContentLayout.js +3 -2
  38. package/dist/admin/admin/src/components/Layouts/ContentLayout.js.map +1 -1
  39. package/dist/admin/admin/src/components/Layouts/ContentLayout.mjs +3 -2
  40. package/dist/admin/admin/src/components/Layouts/ContentLayout.mjs.map +1 -1
  41. package/dist/admin/admin/src/components/Layouts/HeaderLayout.js +65 -32
  42. package/dist/admin/admin/src/components/Layouts/HeaderLayout.js.map +1 -1
  43. package/dist/admin/admin/src/components/Layouts/HeaderLayout.mjs +66 -33
  44. package/dist/admin/admin/src/components/Layouts/HeaderLayout.mjs.map +1 -1
  45. package/dist/admin/admin/src/components/Layouts/Layout.js +29 -6
  46. package/dist/admin/admin/src/components/Layouts/Layout.js.map +1 -1
  47. package/dist/admin/admin/src/components/Layouts/Layout.mjs +30 -7
  48. package/dist/admin/admin/src/components/Layouts/Layout.mjs.map +1 -1
  49. package/dist/admin/admin/src/components/LeftMenu.js +147 -92
  50. package/dist/admin/admin/src/components/LeftMenu.js.map +1 -1
  51. package/dist/admin/admin/src/components/LeftMenu.mjs +131 -95
  52. package/dist/admin/admin/src/components/LeftMenu.mjs.map +1 -1
  53. package/dist/admin/admin/src/components/MainNav/MainNav.js +20 -6
  54. package/dist/admin/admin/src/components/MainNav/MainNav.js.map +1 -1
  55. package/dist/admin/admin/src/components/MainNav/MainNav.mjs +20 -6
  56. package/dist/admin/admin/src/components/MainNav/MainNav.mjs.map +1 -1
  57. package/dist/admin/admin/src/components/MainNav/MainNavLinks.js +157 -0
  58. package/dist/admin/admin/src/components/MainNav/MainNavLinks.js.map +1 -0
  59. package/dist/admin/admin/src/components/MainNav/MainNavLinks.mjs +154 -0
  60. package/dist/admin/admin/src/components/MainNav/MainNavLinks.mjs.map +1 -0
  61. package/dist/admin/admin/src/components/MainNav/NavBurgerMenu.js +65 -0
  62. package/dist/admin/admin/src/components/MainNav/NavBurgerMenu.js.map +1 -0
  63. package/dist/admin/admin/src/components/MainNav/NavBurgerMenu.mjs +63 -0
  64. package/dist/admin/admin/src/components/MainNav/NavBurgerMenu.mjs.map +1 -0
  65. package/dist/admin/admin/src/components/MainNav/NavLink.js +2 -1
  66. package/dist/admin/admin/src/components/MainNav/NavLink.js.map +1 -1
  67. package/dist/admin/admin/src/components/MainNav/NavLink.mjs +2 -1
  68. package/dist/admin/admin/src/components/MainNav/NavLink.mjs.map +1 -1
  69. package/dist/admin/admin/src/components/MainNav/NavUser.js +39 -22
  70. package/dist/admin/admin/src/components/MainNav/NavUser.js.map +1 -1
  71. package/dist/admin/admin/src/components/MainNav/NavUser.mjs +39 -22
  72. package/dist/admin/admin/src/components/MainNav/NavUser.mjs.map +1 -1
  73. package/dist/admin/admin/src/components/MainNav/TrialCountdown.js +8 -1
  74. package/dist/admin/admin/src/components/MainNav/TrialCountdown.js.map +1 -1
  75. package/dist/admin/admin/src/components/MainNav/TrialCountdown.mjs +9 -2
  76. package/dist/admin/admin/src/components/MainNav/TrialCountdown.mjs.map +1 -1
  77. package/dist/admin/admin/src/components/NpsSurvey.js +159 -119
  78. package/dist/admin/admin/src/components/NpsSurvey.js.map +1 -1
  79. package/dist/admin/admin/src/components/NpsSurvey.mjs +160 -120
  80. package/dist/admin/admin/src/components/NpsSurvey.mjs.map +1 -1
  81. package/dist/admin/admin/src/components/PageHelpers.js +1 -1
  82. package/dist/admin/admin/src/components/PageHelpers.js.map +1 -1
  83. package/dist/admin/admin/src/components/PageHelpers.mjs +1 -1
  84. package/dist/admin/admin/src/components/PageHelpers.mjs.map +1 -1
  85. package/dist/admin/admin/src/components/Providers.js +2 -4
  86. package/dist/admin/admin/src/components/Providers.js.map +1 -1
  87. package/dist/admin/admin/src/components/Providers.mjs +2 -4
  88. package/dist/admin/admin/src/components/Providers.mjs.map +1 -1
  89. package/dist/admin/admin/src/components/ResizeIndicator.js +353 -0
  90. package/dist/admin/admin/src/components/ResizeIndicator.js.map +1 -0
  91. package/dist/admin/admin/src/components/ResizeIndicator.mjs +332 -0
  92. package/dist/admin/admin/src/components/ResizeIndicator.mjs.map +1 -0
  93. package/dist/admin/admin/src/components/SubNav.js +98 -33
  94. package/dist/admin/admin/src/components/SubNav.js.map +1 -1
  95. package/dist/admin/admin/src/components/SubNav.mjs +99 -34
  96. package/dist/admin/admin/src/components/SubNav.mjs.map +1 -1
  97. package/dist/admin/admin/src/components/UpsellBanner.js +3 -2
  98. package/dist/admin/admin/src/components/UpsellBanner.js.map +1 -1
  99. package/dist/admin/admin/src/components/UpsellBanner.mjs +3 -2
  100. package/dist/admin/admin/src/components/UpsellBanner.mjs.map +1 -1
  101. package/dist/admin/admin/src/components/WidgetRoot.js +216 -0
  102. package/dist/admin/admin/src/components/WidgetRoot.js.map +1 -0
  103. package/dist/admin/admin/src/components/WidgetRoot.mjs +195 -0
  104. package/dist/admin/admin/src/components/WidgetRoot.mjs.map +1 -0
  105. package/dist/admin/admin/src/constants/theme.js +12 -0
  106. package/dist/admin/admin/src/constants/theme.js.map +1 -0
  107. package/dist/admin/admin/src/constants/theme.mjs +9 -0
  108. package/dist/admin/admin/src/constants/theme.mjs.map +1 -0
  109. package/dist/admin/admin/src/features/Notifications.js +14 -7
  110. package/dist/admin/admin/src/features/Notifications.js.map +1 -1
  111. package/dist/admin/admin/src/features/Notifications.mjs +15 -8
  112. package/dist/admin/admin/src/features/Notifications.mjs.map +1 -1
  113. package/dist/admin/admin/src/features/Tracking.js +5 -1
  114. package/dist/admin/admin/src/features/Tracking.js.map +1 -1
  115. package/dist/admin/admin/src/features/Tracking.mjs +5 -1
  116. package/dist/admin/admin/src/features/Tracking.mjs.map +1 -1
  117. package/dist/admin/admin/src/features/Widgets.js +276 -0
  118. package/dist/admin/admin/src/features/Widgets.js.map +1 -0
  119. package/dist/admin/admin/src/features/Widgets.mjs +255 -0
  120. package/dist/admin/admin/src/features/Widgets.mjs.map +1 -0
  121. package/dist/admin/admin/src/hooks/useAPIErrorHandler.js +1 -1
  122. package/dist/admin/admin/src/hooks/useAPIErrorHandler.js.map +1 -1
  123. package/dist/admin/admin/src/hooks/useAPIErrorHandler.mjs +1 -1
  124. package/dist/admin/admin/src/hooks/useAPIErrorHandler.mjs.map +1 -1
  125. package/dist/admin/admin/src/hooks/useDeviceType.js +43 -0
  126. package/dist/admin/admin/src/hooks/useDeviceType.js.map +1 -0
  127. package/dist/admin/admin/src/hooks/useDeviceType.mjs +22 -0
  128. package/dist/admin/admin/src/hooks/useDeviceType.mjs.map +1 -0
  129. package/dist/admin/admin/src/hooks/useMediaQuery.js +70 -0
  130. package/dist/admin/admin/src/hooks/useMediaQuery.js.map +1 -0
  131. package/dist/admin/admin/src/hooks/useMediaQuery.mjs +46 -0
  132. package/dist/admin/admin/src/hooks/useMediaQuery.mjs.map +1 -0
  133. package/dist/admin/admin/src/hooks/useMenu.js +19 -0
  134. package/dist/admin/admin/src/hooks/useMenu.js.map +1 -1
  135. package/dist/admin/admin/src/hooks/useMenu.mjs +19 -0
  136. package/dist/admin/admin/src/hooks/useMenu.mjs.map +1 -1
  137. package/dist/admin/admin/src/layouts/AuthenticatedLayout.js +15 -2
  138. package/dist/admin/admin/src/layouts/AuthenticatedLayout.js.map +1 -1
  139. package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs +15 -2
  140. package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs.map +1 -1
  141. package/dist/admin/admin/src/layouts/UnauthenticatedLayout.js +11 -7
  142. package/dist/admin/admin/src/layouts/UnauthenticatedLayout.js.map +1 -1
  143. package/dist/admin/admin/src/layouts/UnauthenticatedLayout.mjs +11 -7
  144. package/dist/admin/admin/src/layouts/UnauthenticatedLayout.mjs.map +1 -1
  145. package/dist/admin/admin/src/pages/Auth/components/Login.js +3 -0
  146. package/dist/admin/admin/src/pages/Auth/components/Login.js.map +1 -1
  147. package/dist/admin/admin/src/pages/Auth/components/Login.mjs +3 -0
  148. package/dist/admin/admin/src/pages/Auth/components/Login.mjs.map +1 -1
  149. package/dist/admin/admin/src/pages/Home/HomePage.js +200 -130
  150. package/dist/admin/admin/src/pages/Home/HomePage.js.map +1 -1
  151. package/dist/admin/admin/src/pages/Home/HomePage.mjs +202 -132
  152. package/dist/admin/admin/src/pages/Home/HomePage.mjs.map +1 -1
  153. package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.js +189 -0
  154. package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.js.map +1 -0
  155. package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.mjs +168 -0
  156. package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.mjs.map +1 -0
  157. package/dist/admin/admin/src/pages/ProfilePage.js +54 -51
  158. package/dist/admin/admin/src/pages/ProfilePage.js.map +1 -1
  159. package/dist/admin/admin/src/pages/ProfilePage.mjs +55 -52
  160. package/dist/admin/admin/src/pages/ProfilePage.mjs.map +1 -1
  161. package/dist/admin/admin/src/pages/Settings/Layout.js +42 -6
  162. package/dist/admin/admin/src/pages/Settings/Layout.js.map +1 -1
  163. package/dist/admin/admin/src/pages/Settings/Layout.mjs +43 -7
  164. package/dist/admin/admin/src/pages/Settings/Layout.mjs.map +1 -1
  165. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.js +44 -32
  166. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.js.map +1 -1
  167. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.mjs +45 -33
  168. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.mjs.map +1 -1
  169. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js +1 -1
  170. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js.map +1 -1
  171. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs +2 -2
  172. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs.map +1 -1
  173. package/dist/admin/admin/src/pages/Settings/pages/InstalledPlugins.js +1 -1
  174. package/dist/admin/admin/src/pages/Settings/pages/InstalledPlugins.js.map +1 -1
  175. package/dist/admin/admin/src/pages/Settings/pages/InstalledPlugins.mjs +2 -2
  176. package/dist/admin/admin/src/pages/Settings/pages/InstalledPlugins.mjs.map +1 -1
  177. package/dist/admin/admin/src/pages/Settings/pages/PurchaseAuditLogs.js +4 -3
  178. package/dist/admin/admin/src/pages/Settings/pages/PurchaseAuditLogs.js.map +1 -1
  179. package/dist/admin/admin/src/pages/Settings/pages/PurchaseAuditLogs.mjs +5 -4
  180. package/dist/admin/admin/src/pages/Settings/pages/PurchaseAuditLogs.mjs.map +1 -1
  181. package/dist/admin/admin/src/pages/Settings/pages/PurchaseContentHistory.js +4 -3
  182. package/dist/admin/admin/src/pages/Settings/pages/PurchaseContentHistory.js.map +1 -1
  183. package/dist/admin/admin/src/pages/Settings/pages/PurchaseContentHistory.mjs +5 -4
  184. package/dist/admin/admin/src/pages/Settings/pages/PurchaseContentHistory.mjs.map +1 -1
  185. package/dist/admin/admin/src/pages/Settings/pages/PurchaseSingleSignOn.js +4 -3
  186. package/dist/admin/admin/src/pages/Settings/pages/PurchaseSingleSignOn.js.map +1 -1
  187. package/dist/admin/admin/src/pages/Settings/pages/PurchaseSingleSignOn.mjs +5 -4
  188. package/dist/admin/admin/src/pages/Settings/pages/PurchaseSingleSignOn.mjs.map +1 -1
  189. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.js +36 -32
  190. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.js.map +1 -1
  191. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.mjs +36 -32
  192. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.mjs.map +1 -1
  193. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/ListPage.js +1 -1
  194. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/ListPage.js.map +1 -1
  195. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/ListPage.mjs +1 -1
  196. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/ListPage.mjs.map +1 -1
  197. package/dist/admin/admin/src/services/api.js +2 -1
  198. package/dist/admin/admin/src/services/api.js.map +1 -1
  199. package/dist/admin/admin/src/services/api.mjs +2 -1
  200. package/dist/admin/admin/src/services/api.mjs.map +1 -1
  201. package/dist/admin/admin/src/services/auth.js +13 -2
  202. package/dist/admin/admin/src/services/auth.js.map +1 -1
  203. package/dist/admin/admin/src/services/auth.mjs +12 -3
  204. package/dist/admin/admin/src/services/auth.mjs.map +1 -1
  205. package/dist/admin/admin/src/services/homepage.js +11 -4
  206. package/dist/admin/admin/src/services/homepage.js.map +1 -1
  207. package/dist/admin/admin/src/services/homepage.mjs +11 -4
  208. package/dist/admin/admin/src/services/homepage.mjs.map +1 -1
  209. package/dist/admin/admin/src/translations/en.json.js +7 -1
  210. package/dist/admin/admin/src/translations/en.json.js.map +1 -1
  211. package/dist/admin/admin/src/translations/en.json.mjs +7 -1
  212. package/dist/admin/admin/src/translations/en.json.mjs.map +1 -1
  213. package/dist/admin/admin/src/translations/uk.json.js +9 -9
  214. package/dist/admin/admin/src/translations/uk.json.mjs +9 -9
  215. package/dist/admin/admin/src/utils/resizeHandlers.js +109 -0
  216. package/dist/admin/admin/src/utils/resizeHandlers.js.map +1 -0
  217. package/dist/admin/admin/src/utils/resizeHandlers.mjs +100 -0
  218. package/dist/admin/admin/src/utils/resizeHandlers.mjs.map +1 -0
  219. package/dist/admin/admin/src/utils/widgetLayout.js +293 -0
  220. package/dist/admin/admin/src/utils/widgetLayout.js.map +1 -0
  221. package/dist/admin/admin/src/utils/widgetLayout.mjs +273 -0
  222. package/dist/admin/admin/src/utils/widgetLayout.mjs.map +1 -0
  223. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.js +1 -1
  224. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.js.map +1 -1
  225. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.mjs +1 -1
  226. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.mjs.map +1 -1
  227. package/dist/admin/ee/admin/src/services/ai.js +5 -2
  228. package/dist/admin/ee/admin/src/services/ai.js.map +1 -1
  229. package/dist/admin/ee/admin/src/services/ai.mjs +5 -2
  230. package/dist/admin/ee/admin/src/services/ai.mjs.map +1 -1
  231. package/dist/admin/index.js +11 -0
  232. package/dist/admin/index.js.map +1 -1
  233. package/dist/admin/index.mjs +4 -0
  234. package/dist/admin/index.mjs.map +1 -1
  235. package/dist/admin/src/components/DragLayer.d.ts +8 -4
  236. package/dist/admin/src/components/GapDropZone.d.ts +36 -0
  237. package/dist/admin/src/components/GuidedTour/Context.d.ts +4 -0
  238. package/dist/admin/src/components/GuidedTour/GuidedTourProvider.d.ts +6 -0
  239. package/dist/admin/src/components/LeftMenu.d.ts +2 -2
  240. package/dist/admin/src/components/MainNav/MainNavLinks.d.ts +11 -0
  241. package/dist/admin/src/components/MainNav/NavBurgerMenu.d.ts +9 -0
  242. package/dist/admin/src/components/MainNav/NavUser.d.ts +5 -4
  243. package/dist/admin/src/components/ResizeIndicator.d.ts +12 -0
  244. package/dist/admin/src/components/SubNav.d.ts +18 -5
  245. package/dist/admin/src/components/WidgetRoot.d.ts +14 -0
  246. package/dist/admin/src/constants/theme.d.ts +7 -0
  247. package/dist/admin/src/core/store/configure.d.ts +2 -2
  248. package/dist/admin/src/core/store/hooks.d.ts +2 -2
  249. package/dist/admin/src/features/Tracking.d.ts +1 -1
  250. package/dist/admin/src/features/Widgets.d.ts +29 -0
  251. package/dist/admin/src/hooks/useAdminRoles.d.ts +1 -1
  252. package/dist/admin/src/hooks/useDeviceType.d.ts +6 -0
  253. package/dist/admin/src/hooks/useMediaQuery.d.ts +21 -0
  254. package/dist/admin/src/hooks/useMenu.d.ts +9 -1
  255. package/dist/admin/src/index.d.ts +4 -0
  256. package/dist/admin/src/pages/Home/HomePage.d.ts +4 -5
  257. package/dist/admin/src/pages/Home/components/AddWidgetModal.d.ts +10 -0
  258. package/dist/admin/src/pages/Settings/components/SettingsNav.d.ts +3 -6
  259. package/dist/admin/src/pages/Settings/pages/Webhooks/hooks/useWebhooks.d.ts +4 -4
  260. package/dist/admin/src/selectors.d.ts +2 -2
  261. package/dist/admin/src/services/admin.d.ts +6 -6
  262. package/dist/admin/src/services/api.d.ts +1 -1
  263. package/dist/admin/src/services/apiTokens.d.ts +1 -1
  264. package/dist/admin/src/services/auth.d.ts +21 -12
  265. package/dist/admin/src/services/contentApi.d.ts +1 -1
  266. package/dist/admin/src/services/contentManager.d.ts +1 -1
  267. package/dist/admin/src/services/homepage.d.ts +3 -3
  268. package/dist/admin/src/services/transferTokens.d.ts +1 -1
  269. package/dist/admin/src/services/users.d.ts +8 -8
  270. package/dist/admin/src/services/webhooks.d.ts +2 -2
  271. package/dist/admin/src/utils/resizeHandlers.d.ts +58 -0
  272. package/dist/admin/src/utils/widgetLayout.d.ts +78 -0
  273. package/dist/admin/tests/utils.d.ts +1 -1
  274. package/dist/ee/admin/src/services/ai.d.ts +2 -2
  275. package/dist/ee/admin/src/services/auditLogs.d.ts +1 -1
  276. package/dist/ee/server/src/controllers/authentication-utils/middlewares.d.ts.map +1 -1
  277. package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.js +4 -2
  278. package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.js.map +1 -1
  279. package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.mjs +4 -2
  280. package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.mjs.map +1 -1
  281. package/dist/server/server/src/bootstrap.js +5 -0
  282. package/dist/server/server/src/bootstrap.js.map +1 -1
  283. package/dist/server/server/src/bootstrap.mjs +5 -0
  284. package/dist/server/server/src/bootstrap.mjs.map +1 -1
  285. package/dist/server/server/src/controllers/authenticated-user.js +15 -0
  286. package/dist/server/server/src/controllers/authenticated-user.js.map +1 -1
  287. package/dist/server/server/src/controllers/authenticated-user.mjs +15 -0
  288. package/dist/server/server/src/controllers/authenticated-user.mjs.map +1 -1
  289. package/dist/server/server/src/routes/users.js +10 -0
  290. package/dist/server/server/src/routes/users.js.map +1 -1
  291. package/dist/server/server/src/routes/users.mjs +10 -0
  292. package/dist/server/server/src/routes/users.mjs.map +1 -1
  293. package/dist/server/server/src/services/user.js +113 -1
  294. package/dist/server/server/src/services/user.js.map +1 -1
  295. package/dist/server/server/src/services/user.mjs +113 -1
  296. package/dist/server/server/src/services/user.mjs.map +1 -1
  297. package/dist/server/shared/utils/session-auth.js +4 -2
  298. package/dist/server/shared/utils/session-auth.js.map +1 -1
  299. package/dist/server/shared/utils/session-auth.mjs +4 -2
  300. package/dist/server/shared/utils/session-auth.mjs.map +1 -1
  301. package/dist/server/src/bootstrap.d.ts.map +1 -1
  302. package/dist/server/src/controllers/authenticated-user.d.ts +1 -0
  303. package/dist/server/src/controllers/authenticated-user.d.ts.map +1 -1
  304. package/dist/server/src/controllers/index.d.ts +1 -0
  305. package/dist/server/src/controllers/index.d.ts.map +1 -1
  306. package/dist/server/src/index.d.ts +5 -0
  307. package/dist/server/src/index.d.ts.map +1 -1
  308. package/dist/server/src/routes/users.d.ts.map +1 -1
  309. package/dist/server/src/services/index.d.ts +4 -0
  310. package/dist/server/src/services/index.d.ts.map +1 -1
  311. package/dist/server/src/services/user.d.ts +4 -0
  312. package/dist/server/src/services/user.d.ts.map +1 -1
  313. package/dist/shared/contracts/homepage.d.ts +8 -4
  314. package/dist/shared/contracts/homepage.d.ts.map +1 -1
  315. package/dist/shared/contracts/users.d.ts +16 -0
  316. package/dist/shared/contracts/users.d.ts.map +1 -1
  317. package/dist/shared/utils/session-auth.d.ts.map +1 -1
  318. 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: 7,
38
+ padding: {
39
+ initial: 6,
40
+ small: 7,
41
+ medium: 8
42
+ },
36
43
  direction: "column",
37
- width: "35%",
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 alignItems=\"center\" height=\"100%\" justifyContent=\"center\">\n <Flex\n gap={7}\n padding={7}\n direction=\"column\"\n width=\"35%\"\n shadow=\"tableShadow\"\n borderColor=\"neutral150\"\n background=\"neutral0\"\n hasRadius\n maxWidth=\"512px\"\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","_jsxs","gap","padding","direction","width","shadow","borderColor","background","hasRadius","maxWidth","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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"}
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: 7,
36
+ padding: {
37
+ initial: 6,
38
+ small: 7,
39
+ medium: 8
40
+ },
34
41
  direction: "column",
35
- width: "35%",
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 alignItems=\"center\" height=\"100%\" justifyContent=\"center\">\n <Flex\n gap={7}\n padding={7}\n direction=\"column\"\n width=\"35%\"\n shadow=\"tableShadow\"\n borderColor=\"neutral150\"\n background=\"neutral0\"\n hasRadius\n maxWidth=\"512px\"\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","_jsxs","gap","padding","direction","width","shadow","borderColor","background","hasRadius","maxWidth","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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"}
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